Compare commits

..
1 Commits
Author SHA1 Message Date
Jean-Philippe Lang 1faf02c9f5 tagged version 1.2.0
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/tags/1.2.0@5968 e93f8b46-1217-0410-a6f0-8f06a7374b81
2011-05-30 16:41:28 +00:00
203 changed files with 6032 additions and 3377 deletions
+1 -18
View File
@@ -1,24 +1,7 @@
# Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class ActivitiesController < ApplicationController class ActivitiesController < ApplicationController
menu_item :activity menu_item :activity
before_filter :find_optional_project before_filter :find_optional_project
accept_rss_auth :index accept_key_auth :index
def index def index
@days = Setting.activity_days_default.to_i @days = Setting.activity_days_default.to_i
+7 -37
View File
@@ -18,8 +18,6 @@
require 'uri' require 'uri'
require 'cgi' require 'cgi'
class Unauthorized < Exception; end
class ApplicationController < ActionController::Base class ApplicationController < ActionController::Base
include Redmine::I18n include Redmine::I18n
@@ -43,7 +41,6 @@ class ApplicationController < ActionController::Base
protect_from_forgery protect_from_forgery
rescue_from ActionController::InvalidAuthenticityToken, :with => :invalid_authenticity_token rescue_from ActionController::InvalidAuthenticityToken, :with => :invalid_authenticity_token
rescue_from ::Unauthorized, :with => :deny_access
include Redmine::Search::Controller include Redmine::Search::Controller
include Redmine::MenuManager::MenuController include Redmine::MenuManager::MenuController
@@ -71,11 +68,11 @@ class ApplicationController < ActionController::Base
user = User.try_to_autologin(cookies[:autologin]) user = User.try_to_autologin(cookies[:autologin])
session[:user_id] = user.id if user session[:user_id] = user.id if user
user user
elsif params[:format] == 'atom' && params[:key] && request.get? && accept_rss_auth? elsif params[:format] == 'atom' && params[:key] && accept_key_auth_actions.include?(params[:action])
# RSS key authentication does not start a session # RSS key authentication does not start a session
User.find_by_rss_key(params[:key]) User.find_by_rss_key(params[:key])
elsif Setting.rest_api_enabled? && accept_api_auth? elsif Setting.rest_api_enabled? && api_request?
if (key = api_key_from_request) if (key = api_key_from_request) && accept_key_auth_actions.include?(params[:action])
# Use API key # Use API key
User.find_by_api_key(key) User.find_by_api_key(key)
else else
@@ -332,41 +329,14 @@ class ApplicationController < ActionController::Base
@title = options[:title] || Setting.app_title @title = options[:title] || Setting.app_title
render :template => "common/feed.atom.rxml", :layout => false, :content_type => 'application/atom+xml' render :template => "common/feed.atom.rxml", :layout => false, :content_type => 'application/atom+xml'
end end
# TODO: remove in Redmine 1.4
def self.accept_key_auth(*actions) def self.accept_key_auth(*actions)
ActiveSupport::Deprecation.warn "ApplicationController.accept_key_auth is deprecated and will be removed in Redmine 1.4. Use accept_rss_auth (or accept_api_auth) instead." actions = actions.flatten.map(&:to_s)
accept_rss_auth(*actions) write_inheritable_attribute('accept_key_auth_actions', actions)
end end
# TODO: remove in Redmine 1.4
def accept_key_auth_actions def accept_key_auth_actions
ActiveSupport::Deprecation.warn "ApplicationController.accept_key_auth_actions is deprecated and will be removed in Redmine 1.4. Use accept_rss_auth (or accept_api_auth) instead." self.class.read_inheritable_attribute('accept_key_auth_actions') || []
self.class.accept_rss_auth
end
def self.accept_rss_auth(*actions)
if actions.any?
write_inheritable_attribute('accept_rss_auth_actions', actions)
else
read_inheritable_attribute('accept_rss_auth_actions') || []
end
end
def accept_rss_auth?(action=action_name)
self.class.accept_rss_auth.include?(action.to_sym)
end
def self.accept_api_auth(*actions)
if actions.any?
write_inheritable_attribute('accept_api_auth_actions', actions)
else
read_inheritable_attribute('accept_api_auth_actions') || []
end
end
def accept_api_auth?(action=action_name)
self.class.accept_api_auth.include?(action.to_sym)
end end
# Returns the number of objects that should be displayed # Returns the number of objects that should be displayed
+3 -3
View File
@@ -1,5 +1,5 @@
# Redmine - project management software # redMine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang # Copyright (C) 2006-2007 Jean-Philippe Lang
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License
@@ -18,7 +18,7 @@
class BoardsController < ApplicationController class BoardsController < ApplicationController
default_search_scope :messages default_search_scope :messages
before_filter :find_project, :find_board_if_available, :authorize before_filter :find_project, :find_board_if_available, :authorize
accept_rss_auth :index, :show accept_key_auth :index, :show
helper :messages helper :messages
include MessagesHelper include MessagesHelper
@@ -1,4 +1,4 @@
# Redmine - project management software # redMine - project management software
# Copyright (C) 2006-2007 Jean-Philippe Lang # Copyright (C) 2006-2007 Jean-Philippe Lang
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
+2 -3
View File
@@ -27,8 +27,7 @@ class IssuesController < ApplicationController
before_filter :find_optional_project, :only => [:index] before_filter :find_optional_project, :only => [:index]
before_filter :check_for_default_issue_status, :only => [:new, :create] before_filter :check_for_default_issue_status, :only => [:new, :create]
before_filter :build_new_issue_from_params, :only => [:new, :create] before_filter :build_new_issue_from_params, :only => [:new, :create]
accept_rss_auth :index, :show accept_key_auth :index, :show, :create, :update, :destroy
accept_api_auth :index, :show, :create, :update, :destroy
rescue_from Query::StatementInvalid, :with => :query_statement_invalid rescue_from Query::StatementInvalid, :with => :query_statement_invalid
@@ -302,7 +301,6 @@ private
end end
@issue.project = @project @issue.project = @project
@issue.author = User.current
# Tracker must be set before custom field values # Tracker must be set before custom field values
@issue.tracker ||= @project.trackers.find((params[:issue] && params[:issue][:tracker_id]) || params[:tracker_id] || :first) @issue.tracker ||= @project.trackers.find((params[:issue] && params[:issue][:tracker_id]) || params[:tracker_id] || :first)
if @issue.tracker.nil? if @issue.tracker.nil?
@@ -316,6 +314,7 @@ private
@issue.watcher_user_ids = params[:issue]['watcher_user_ids'] @issue.watcher_user_ids = params[:issue]['watcher_user_ids']
end end
end end
@issue.author = User.current
@priorities = IssuePriority.all @priorities = IssuePriority.all
@allowed_statuses = @issue.new_statuses_allowed_to(User.current, true) @allowed_statuses = @issue.new_statuses_allowed_to(User.current, true)
end end
+1 -1
View File
@@ -20,7 +20,7 @@ class JournalsController < ApplicationController
before_filter :find_issue, :only => [:new] before_filter :find_issue, :only => [:new]
before_filter :find_optional_project, :only => [:index] before_filter :find_optional_project, :only => [:index]
before_filter :authorize, :only => [:new, :edit, :diff] before_filter :authorize, :only => [:new, :edit, :diff]
accept_rss_auth :index accept_key_auth :index
menu_item :issues menu_item :issues
helper :issues helper :issues
+1 -2
View File
@@ -23,8 +23,7 @@ class NewsController < ApplicationController
before_filter :find_project, :only => [:new, :create] before_filter :find_project, :only => [:new, :create]
before_filter :authorize, :except => [:index] before_filter :authorize, :except => [:index]
before_filter :find_optional_project, :only => :index before_filter :find_optional_project, :only => :index
accept_rss_auth :index accept_key_auth :index
accept_api_auth :index
helper :watchers helper :watchers
+1 -2
View File
@@ -24,8 +24,7 @@ class ProjectsController < ApplicationController
before_filter :authorize, :except => [ :index, :list, :new, :create, :copy, :archive, :unarchive, :destroy] before_filter :authorize, :except => [ :index, :list, :new, :create, :copy, :archive, :unarchive, :destroy]
before_filter :authorize_global, :only => [:new, :create] before_filter :authorize_global, :only => [:new, :create]
before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy ] before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy ]
accept_rss_auth :index accept_key_auth :index, :show, :create, :update, :destroy
accept_api_auth :index, :show, :create, :update, :destroy
after_filter :only => [:create, :edit, :update, :archive, :unarchive, :destroy] do |controller| after_filter :only => [:create, :edit, :update, :archive, :unarchive, :destroy] do |controller|
if controller.request.post? if controller.request.post?
+2 -2
View File
@@ -30,7 +30,7 @@ class RepositoriesController < ApplicationController
before_filter :find_repository, :except => :edit before_filter :find_repository, :except => :edit
before_filter :find_project, :only => :edit before_filter :find_project, :only => :edit
before_filter :authorize before_filter :authorize
accept_rss_auth :revisions accept_key_auth :revisions
rescue_from Redmine::Scm::Adapters::CommandFailed, :with => :show_error_command_failed rescue_from Redmine::Scm::Adapters::CommandFailed, :with => :show_error_command_failed
@@ -208,7 +208,7 @@ class RepositoriesController < ApplicationController
User.current.preference.save User.current.preference.save
end end
@cache_key = "repositories/diff/#{@repository.id}/" + @cache_key = "repositories/diff/#{@repository.id}/" +
Digest::MD5.hexdigest("#{@path}-#{@rev}-#{@rev_to}-#{@diff_type}-#{current_language}") Digest::MD5.hexdigest("#{@path}-#{@rev}-#{@rev_to}-#{@diff_type}")
unless read_fragment(@cache_key) unless read_fragment(@cache_key)
@diff = @repository.diff(@path, @rev, @rev_to) @diff = @repository.diff(@path, @rev, @rev_to)
show_error_not_found unless @diff show_error_not_found unless @diff
+4 -4
View File
@@ -1,5 +1,5 @@
# Redmine - project management software # redMine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang # Copyright (C) 2006 Jean-Philippe Lang
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License
@@ -24,8 +24,8 @@ class SearchController < ApplicationController
def index def index
@question = params[:q] || "" @question = params[:q] || ""
@question.strip! @question.strip!
@all_words = params[:all_words] ? params[:all_words].present? : true @all_words = params[:all_words] || (params[:submit] ? false : true)
@titles_only = params[:titles_only] ? params[:titles_only].present? : false @titles_only = !params[:titles_only].nil?
projects_to_search = projects_to_search =
case params[:scope] case params[:scope]
+2 -3
View File
@@ -1,5 +1,5 @@
# Redmine - project management software # Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang # Copyright (C) 2006-2010 Jean-Philippe Lang
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License
@@ -22,8 +22,7 @@ class TimelogController < ApplicationController
before_filter :find_time_entries, :only => [:bulk_edit, :bulk_update, :destroy] before_filter :find_time_entries, :only => [:bulk_edit, :bulk_update, :destroy]
before_filter :authorize, :except => [:index] before_filter :authorize, :except => [:index]
before_filter :find_optional_project, :only => [:index] before_filter :find_optional_project, :only => [:index]
accept_rss_auth :index accept_key_auth :index, :show, :create, :update, :destroy
accept_api_auth :index, :show, :create, :update, :destroy
helper :sort helper :sort
include SortHelper include SortHelper
+1 -1
View File
@@ -20,7 +20,7 @@ class UsersController < ApplicationController
before_filter :require_admin, :except => :show before_filter :require_admin, :except => :show
before_filter :find_user, :only => [:show, :edit, :update, :destroy, :edit_membership, :destroy_membership] before_filter :find_user, :only => [:show, :edit, :update, :destroy, :edit_membership, :destroy_membership]
accept_api_auth :index, :show, :create, :update, :destroy accept_key_auth :index, :show, :create, :update, :destroy
helper :sort helper :sort
include SortHelper include SortHelper
+3 -12
View File
@@ -550,20 +550,15 @@ module ApplicationHelper
if page =~ /^(.+?)\#(.+)$/ if page =~ /^(.+?)\#(.+)$/
page, anchor = $1, $2 page, anchor = $1, $2
end end
anchor = sanitize_anchor_name(anchor) if anchor.present?
# check if page exists # check if page exists
wiki_page = link_project.wiki.find_page(page) wiki_page = link_project.wiki.find_page(page)
url = if anchor.present? && wiki_page.present? && (obj.is_a?(WikiContent) || obj.is_a?(WikiContent::Version)) && obj.page == wiki_page url = case options[:wiki_links]
"##{anchor}" when :local; "#{title}.html"
else
case options[:wiki_links]
when :local; "#{page.present? ? Wiki.titleize(page) : ''}.html" + (anchor.present? ? "##{anchor}" : '')
when :anchor; "##{title}" # used for single-file wiki export when :anchor; "##{title}" # used for single-file wiki export
else else
wiki_page_id = page.present? ? Wiki.titleize(page) : nil wiki_page_id = page.present? ? Wiki.titleize(page) : nil
url_for(:only_path => only_path, :controller => 'wiki', :action => 'show', :project_id => link_project, :id => wiki_page_id, :anchor => anchor) url_for(:only_path => only_path, :controller => 'wiki', :action => 'show', :project_id => link_project, :id => wiki_page_id, :anchor => anchor)
end end
end
link_to((title || page), url, :class => ('wiki-page' + (wiki_page ? '' : ' new'))) link_to((title || page), url, :class => ('wiki-page' + (wiki_page ? '' : ' new')))
else else
# project or wiki doesn't exist # project or wiki doesn't exist
@@ -708,7 +703,7 @@ module ApplicationHelper
text.gsub!(HEADING_RE) do text.gsub!(HEADING_RE) do
level, attrs, content = $1.to_i, $2, $3 level, attrs, content = $1.to_i, $2, $3
item = strip_tags(content).strip item = strip_tags(content).strip
anchor = sanitize_anchor_name(item) anchor = item.gsub(%r{[^\w\s\-]}, '').gsub(%r{\s+(\-+\s*)?}, '-')
@parsed_headings << [level, anchor, item] @parsed_headings << [level, anchor, item]
"<a name=\"#{anchor}\"></a>\n<h#{level} #{attrs}>#{content}<a href=\"##{anchor}\" class=\"wiki-anchor\">&para;</a></h#{level}>" "<a name=\"#{anchor}\"></a>\n<h#{level} #{attrs}>#{content}<a href=\"##{anchor}\" class=\"wiki-anchor\">&para;</a></h#{level}>"
end end
@@ -894,10 +889,6 @@ module ApplicationHelper
end end
end end
def sanitize_anchor_name(anchor)
anchor.gsub(%r{[^\w\s\-]}, '').gsub(%r{\s+(\-+\s*)?}, '-')
end
# Returns the javascript tags that are included in the html layout head # Returns the javascript tags that are included in the html layout head
def javascript_heads def javascript_heads
tags = javascript_include_tag(:defaults) tags = javascript_include_tag(:defaults)
-1
View File
@@ -70,7 +70,6 @@ module QueriesHelper
cond = "project_id IS NULL" cond = "project_id IS NULL"
cond << " OR project_id = #{@project.id}" if @project cond << " OR project_id = #{@project.id}" if @project
@query = Query.find(params[:query_id], :conditions => cond) @query = Query.find(params[:query_id], :conditions => cond)
raise ::Unauthorized unless @query.visible?
@query.project = @project @query.project = @project
session[:query] = {:id => @query.id, :project_id => @query.project_id} session[:query] = {:id => @query.id, :project_id => @query.project_id}
sort_clear sort_clear
+3 -3
View File
@@ -1,5 +1,5 @@
# Redmine - project management software # redMine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang # Copyright (C) 2006-2007 Jean-Philippe Lang
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License
@@ -57,7 +57,7 @@ module SearchHelper
c = results_by_type[t] c = results_by_type[t]
next if c == 0 next if c == 0
text = "#{type_label(t)} (#{c})" text = "#{type_label(t)} (#{c})"
links << link_to(text, :q => params[:q], :titles_only => params[:titles_only], :all_words => params[:all_words], :scope => params[:scope], t => 1) links << link_to(text, :q => params[:q], :titles_only => params[:title_only], :all_words => params[:all_words], :scope => params[:scope], t => 1)
end end
('<ul>' + links.map {|link| content_tag('li', link)}.join(' ') + '</ul>') unless links.empty? ('<ul>' + links.map {|link| content_tag('li', link)}.join(' ') + '</ul>') unless links.empty?
end end
+1 -1
View File
@@ -193,7 +193,7 @@ class Changeset < ActiveRecord::Base
def fix_issue(issue) def fix_issue(issue)
status = IssueStatus.find_by_id(Setting.commit_fix_status_id.to_i) status = IssueStatus.find_by_id(Setting.commit_fix_status_id.to_i)
if status.nil? if status.nil?
logger.warn("No status matches commit_fix_status_id setting (#{Setting.commit_fix_status_id})") if logger logger.warn("No status macthes commit_fix_status_id setting (#{Setting.commit_fix_status_id})") if logger
return issue return issue
end end
+1 -9
View File
@@ -42,14 +42,6 @@ class CustomField < ActiveRecord::Base
errors.add(:possible_values, :invalid) unless self.possible_values.is_a? Array errors.add(:possible_values, :invalid) unless self.possible_values.is_a? Array
end end
if regexp.present?
begin
Regexp.new(regexp)
rescue
errors.add(:regexp, :invalid)
end
end
# validate default value # validate default value
v = CustomValue.new(:custom_field => self.clone, :value => default_value, :customized => nil) v = CustomValue.new(:custom_field => self.clone, :value => default_value, :customized => nil)
v.custom_field.is_required = false v.custom_field.is_required = false
@@ -64,7 +56,7 @@ class CustomField < ActiveRecord::Base
when 'user' when 'user'
obj.project.users.sort.collect {|u| [u.to_s, u.id.to_s]} obj.project.users.sort.collect {|u| [u.to_s, u.id.to_s]}
when 'version' when 'version'
obj.project.shared_versions.sort.collect {|u| [u.to_s, u.id.to_s]} obj.project.versions.sort.collect {|u| [u.to_s, u.id.to_s]}
end end
elsif obj.is_a?(Array) elsif obj.is_a?(Array)
obj.collect {|o| possible_values_options(o)}.inject {|memo, v| memo & v} obj.collect {|o| possible_values_options(o)}.inject {|memo, v| memo & v}
-1
View File
@@ -32,7 +32,6 @@ class Enumeration < ActiveRecord::Base
named_scope :shared, :conditions => { :project_id => nil } named_scope :shared, :conditions => { :project_id => nil }
named_scope :active, :conditions => { :active => true } named_scope :active, :conditions => { :active => true }
named_scope :named, lambda {|arg| { :conditions => ["LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip]}}
def self.default def self.default
# Creates a fake default scope so Enumeration.default will check # Creates a fake default scope so Enumeration.default will check
+1 -12
View File
@@ -227,13 +227,6 @@ class Issue < ActiveRecord::Base
@custom_field_values = nil @custom_field_values = nil
result result
end end
def description=(arg)
if arg.is_a?(String)
arg = arg.gsub(/(\r\n|\n|\r)/, "\r\n")
end
write_attribute(:description, arg)
end
# Overrides attributes= so that tracker_id gets assigned first # Overrides attributes= so that tracker_id gets assigned first
def attributes_with_tracker_first=(new_attributes, *args) def attributes_with_tracker_first=(new_attributes, *args)
@@ -449,7 +442,6 @@ class Issue < ActiveRecord::Base
def assignable_users def assignable_users
users = project.assignable_users users = project.assignable_users
users << author if author users << author if author
users << assigned_to if assigned_to
users.uniq.sort users.uniq.sort
end end
@@ -878,13 +870,10 @@ class Issue < ActiveRecord::Base
if @current_journal if @current_journal
# attributes changes # attributes changes
(Issue.column_names - %w(id root_id lft rgt lock_version created_on updated_on)).each {|c| (Issue.column_names - %w(id root_id lft rgt lock_version created_on updated_on)).each {|c|
before = @issue_before_change.send(c)
after = send(c)
next if before == after || (before.blank? && after.blank?)
@current_journal.details << JournalDetail.new(:property => 'attr', @current_journal.details << JournalDetail.new(:property => 'attr',
:prop_key => c, :prop_key => c,
:old_value => @issue_before_change.send(c), :old_value => @issue_before_change.send(c),
:value => send(c)) :value => send(c)) unless send(c)==@issue_before_change.send(c)
} }
# custom fields changes # custom fields changes
custom_values.each {|c| custom_values.each {|c|
+2 -4
View File
@@ -1,5 +1,5 @@
# Redmine - project management software # redMine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang # Copyright (C) 2006 Jean-Philippe Lang
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License
@@ -24,8 +24,6 @@ class IssueCategory < ActiveRecord::Base
validates_uniqueness_of :name, :scope => [:project_id] validates_uniqueness_of :name, :scope => [:project_id]
validates_length_of :name, :maximum => 30 validates_length_of :name, :maximum => 30
named_scope :named, lambda {|arg| { :conditions => ["LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip]}}
alias :destroy_without_reassign :destroy alias :destroy_without_reassign :destroy
# Destroy the category # Destroy the category
+1 -6
View File
@@ -47,12 +47,7 @@ class IssueRelation < ActiveRecord::Base
if issue_from && issue_to if issue_from && issue_to
errors.add :issue_to_id, :invalid if issue_from_id == issue_to_id errors.add :issue_to_id, :invalid if issue_from_id == issue_to_id
errors.add :issue_to_id, :not_same_project unless issue_from.project_id == issue_to.project_id || Setting.cross_project_issue_relations? errors.add :issue_to_id, :not_same_project unless issue_from.project_id == issue_to.project_id || Setting.cross_project_issue_relations?
#detect circular dependencies depending wether the relation should be reversed errors.add_to_base :circular_dependency if issue_to.all_dependent_issues.include? issue_from
if TYPES.has_key?(relation_type) && TYPES[relation_type][:reverse]
errors.add_to_base :circular_dependency if issue_from.all_dependent_issues.include? issue_to
else
errors.add_to_base :circular_dependency if issue_to.all_dependent_issues.include? issue_from
end
errors.add_to_base :cant_link_an_issue_with_a_descendant if issue_from.is_descendant_of?(issue_to) || issue_from.is_ancestor_of?(issue_to) errors.add_to_base :cant_link_an_issue_with_a_descendant if issue_from.is_descendant_of?(issue_to) || issue_from.is_ancestor_of?(issue_to)
end end
end end
+8 -12
View File
@@ -26,8 +26,6 @@ class IssueStatus < ActiveRecord::Base
validates_uniqueness_of :name validates_uniqueness_of :name
validates_length_of :name, :maximum => 30 validates_length_of :name, :maximum => 30
validates_inclusion_of :default_done_ratio, :in => 0..100, :allow_nil => true validates_inclusion_of :default_done_ratio, :in => 0..100, :allow_nil => true
named_scope :named, lambda {|arg| { :conditions => ["LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip]}}
def after_save def after_save
IssueStatus.update_all("is_default=#{connection.quoted_false}", ['id <> ?', id]) if self.is_default? IssueStatus.update_all("is_default=#{connection.quoted_false}", ['id <> ?', id]) if self.is_default?
@@ -58,7 +56,8 @@ class IssueStatus < ActiveRecord::Base
transitions = workflows.select do |w| transitions = workflows.select do |w|
role_ids.include?(w.role_id) && role_ids.include?(w.role_id) &&
w.tracker_id == tracker.id && w.tracker_id == tracker.id &&
((!w.author && !w.assignee) || (author && w.author) || (assignee && w.assignee)) (author || !w.author) &&
(assignee || !w.assignee)
end end
transitions.collect{|w| w.new_status}.compact.sort transitions.collect{|w| w.new_status}.compact.sort
else else
@@ -69,17 +68,14 @@ class IssueStatus < ActiveRecord::Base
# Same thing as above but uses a database query # Same thing as above but uses a database query
# More efficient than the previous method if called just once # More efficient than the previous method if called just once
def find_new_statuses_allowed_to(roles, tracker, author=false, assignee=false) def find_new_statuses_allowed_to(roles, tracker, author=false, assignee=false)
if roles.present? && tracker if roles && tracker
conditions = "(author = :false AND assignee = :false)" conditions = {:role_id => roles.collect(&:id), :tracker_id => tracker.id}
conditions << " OR author = :true" if author conditions[:author] = false unless author
conditions << " OR assignee = :true" if assignee conditions[:assignee] = false unless assignee
workflows.find(:all, workflows.find(:all,
:include => :new_status, :include => :new_status,
:conditions => ["role_id IN (:role_ids) AND tracker_id = :tracker_id AND (#{conditions})", :conditions => conditions).collect{|w| w.new_status}.compact.sort
{:role_ids => roles.collect(&:id), :tracker_id => tracker.id, :true => true, :false => false}
]
).collect{|w| w.new_status}.compact.sort
else else
[] []
end end
+6 -6
View File
@@ -198,7 +198,7 @@ class MailHandler < ActionMailer::Base
end end
def add_attachments(obj) def add_attachments(obj)
if email.attachments && email.attachments.any? if email.has_attachments?
email.attachments.each do |attachment| email.attachments.each do |attachment|
Attachment.create(:container => obj, Attachment.create(:container => obj,
:file => attachment, :file => attachment,
@@ -265,12 +265,12 @@ class MailHandler < ActionMailer::Base
assigned_to = nil if assigned_to && !issue.assignable_users.include?(assigned_to) assigned_to = nil if assigned_to && !issue.assignable_users.include?(assigned_to)
attrs = { attrs = {
'tracker_id' => (k = get_keyword(:tracker)) && issue.project.trackers.named(k).first.try(:id), 'tracker_id' => (k = get_keyword(:tracker)) && issue.project.trackers.find_by_name(k).try(:id),
'status_id' => (k = get_keyword(:status)) && IssueStatus.named(k).first.try(:id), 'status_id' => (k = get_keyword(:status)) && IssueStatus.find_by_name(k).try(:id),
'priority_id' => (k = get_keyword(:priority)) && IssuePriority.named(k).first.try(:id), 'priority_id' => (k = get_keyword(:priority)) && IssuePriority.find_by_name(k).try(:id),
'category_id' => (k = get_keyword(:category)) && issue.project.issue_categories.named(k).first.try(:id), 'category_id' => (k = get_keyword(:category)) && issue.project.issue_categories.find_by_name(k).try(:id),
'assigned_to_id' => assigned_to.try(:id), 'assigned_to_id' => assigned_to.try(:id),
'fixed_version_id' => (k = get_keyword(:fixed_version, :override => true)) && issue.project.shared_versions.named(k).first.try(:id), 'fixed_version_id' => (k = get_keyword(:fixed_version, :override => true)) && issue.project.shared_versions.find_by_name(k).try(:id),
'start_date' => get_keyword(:start_date, :override => true, :format => '\d{4}-\d{2}-\d{2}'), 'start_date' => get_keyword(:start_date, :override => true, :format => '\d{4}-\d{2}-\d{2}'),
'due_date' => get_keyword(:due_date, :override => true, :format => '\d{4}-\d{2}-\d{2}'), 'due_date' => get_keyword(:due_date, :override => true, :format => '\d{4}-\d{2}-\d{2}'),
'estimated_hours' => get_keyword(:estimated_hours, :override => true), 'estimated_hours' => get_keyword(:estimated_hours, :override => true),
+1 -26
View File
@@ -118,11 +118,6 @@ class Project < ActiveRecord::Base
visible(user).find(:all, :limit => count, :order => "created_on DESC") visible(user).find(:all, :limit => count, :order => "created_on DESC")
end end
# Returns true if the project is visible to +user+ or to the current user.
def visible?(user=User.current)
user.allowed_to?(:view_project, self)
end
def self.visible_by(user=nil) def self.visible_by(user=nil)
ActiveSupport::Deprecation.warn "Project.visible_by is deprecated and will be removed in Redmine 1.3.0. Use Project.visible_condition instead." ActiveSupport::Deprecation.warn "Project.visible_by is deprecated and will be removed in Redmine 1.3.0. Use Project.visible_condition instead."
visible_condition(user || User.current) visible_condition(user || User.current)
@@ -549,27 +544,7 @@ class Project < ActiveRecord::Base
def enabled_module_names def enabled_module_names
enabled_modules.collect(&:name) enabled_modules.collect(&:name)
end end
# Enable a specific module
#
# Examples:
# project.enable_module!(:issue_tracking)
# project.enable_module!("issue_tracking")
def enable_module!(name)
enabled_modules << EnabledModule.new(:name => name.to_s) unless module_enabled?(name)
end
# Disable a module if it exists
#
# Examples:
# project.disable_module!(:issue_tracking)
# project.disable_module!("issue_tracking")
# project.disable_module!(project.enabled_modules.first)
def disable_module!(target)
target = enabled_modules.detect{|mod| target.to_s == mod.name} unless enabled_modules.include?(target)
target.destroy unless target.blank?
end
safe_attributes 'name', safe_attributes 'name',
'description', 'description',
'homepage', 'homepage',
+10 -18
View File
@@ -165,11 +165,6 @@ class Query < ActiveRecord::Base
["o", "c", "!*", "*", "t", "w"].include? operator_for(field) ["o", "c", "!*", "*", "t", "w"].include? operator_for(field)
end if filters end if filters
end end
# Returns true if the query is visible to +user+ or the current user.
def visible?(user=User.current)
self.is_public? || self.user_id == user.id
end
def editable_by?(user) def editable_by?(user)
return false unless user return false unless user
@@ -333,17 +328,14 @@ class Query < ActiveRecord::Base
end end
def columns def columns
# preserve the column_names order if has_default_columns?
(has_default_columns? ? default_columns_names : column_names).collect do |name| available_columns.select do |c|
available_columns.find { |col| col.name == name } # Adds the project column by default for cross-project lists
end.compact Setting.issue_list_default_columns.include?(c.name.to_s) || (c.name == :project && project.nil?)
end end
else
def default_columns_names # preserve the column_names order
@default_columns_names ||= begin column_names.collect {|name| available_columns.find {|col| col.name == name}}.compact
default_columns = Setting.issue_list_default_columns.map(&:to_sym)
project.present? ? default_columns : [:project] | default_columns
end end
end end
@@ -352,7 +344,7 @@ class Query < ActiveRecord::Base
names = names.select {|n| n.is_a?(Symbol) || !n.blank? } names = names.select {|n| n.is_a?(Symbol) || !n.blank? }
names = names.collect {|n| n.is_a?(Symbol) ? n : n.to_sym } names = names.collect {|n| n.is_a?(Symbol) ? n : n.to_sym }
# Set column_names to nil if default columns # Set column_names to nil if default columns
if names == default_columns_names if names.map(&:to_s) == Setting.issue_list_default_columns
names = nil names = nil
end end
end end
@@ -521,7 +513,7 @@ class Query < ActiveRecord::Base
# Returns the issue count # Returns the issue count
def issue_count def issue_count
Issue.visible.count(:include => [:status, :project], :conditions => statement) Issue.count(:include => [:status, :project], :conditions => statement)
rescue ::ActiveRecord::StatementInvalid => e rescue ::ActiveRecord::StatementInvalid => e
raise StatementInvalid.new(e.message) raise StatementInvalid.new(e.message)
end end
+4 -4
View File
@@ -117,7 +117,7 @@ class Repository < ActiveRecord::Base
end end
def default_branch def default_branch
nil scm.default_branch
end end
def properties(path, identifier=nil) def properties(path, identifier=nil)
@@ -276,7 +276,7 @@ class Repository < ActiveRecord::Base
ret = "" ret = ""
begin begin
ret = self.scm_adapter_class.client_command if self.scm_adapter_class ret = self.scm_adapter_class.client_command if self.scm_adapter_class
rescue Exception => e rescue Redmine::Scm::Adapters::CommandFailed => e
logger.error "scm: error during get command: #{e.message}" logger.error "scm: error during get command: #{e.message}"
end end
ret ret
@@ -286,7 +286,7 @@ class Repository < ActiveRecord::Base
ret = "" ret = ""
begin begin
ret = self.scm_adapter_class.client_version_string if self.scm_adapter_class ret = self.scm_adapter_class.client_version_string if self.scm_adapter_class
rescue Exception => e rescue Redmine::Scm::Adapters::CommandFailed => e
logger.error "scm: error during get version string: #{e.message}" logger.error "scm: error during get version string: #{e.message}"
end end
ret ret
@@ -296,7 +296,7 @@ class Repository < ActiveRecord::Base
ret = false ret = false
begin begin
ret = self.scm_adapter_class.client_available if self.scm_adapter_class ret = self.scm_adapter_class.client_available if self.scm_adapter_class
rescue Exception => e rescue Redmine::Scm::Adapters::CommandFailed => e
logger.error "scm: error during get scm available: #{e.message}" logger.error "scm: error during get scm available: #{e.message}"
end end
ret ret
-15
View File
@@ -75,10 +75,6 @@ class Repository::Git < Repository
scm.tags scm.tags
end end
def default_branch
scm.default_branch
end
def find_changeset_by_name(name) def find_changeset_by_name(name)
return nil if name.nil? || name.empty? return nil if name.nil? || name.empty?
e = changesets.find(:first, :conditions => ['revision = ?', name.to_s]) e = changesets.find(:first, :conditions => ['revision = ?', name.to_s])
@@ -92,17 +88,6 @@ class Repository::Git < Repository
options = {:report_last_commit => extra_report_last_commit}) options = {:report_last_commit => extra_report_last_commit})
end end
# With SCMs that have a sequential commit numbering,
# such as Subversion and Mercurial,
# Redmine is able to be clever and only fetch changesets
# going forward from the most recent one it knows about.
#
# However, Git does not have a sequential commit numbering.
#
# In order to fetch only new adding revisions,
# Redmine needs to parse revisions per branch.
# Branch "last_scmid" is for this requirement.
#
# In Git and Mercurial, revisions are not in date order. # In Git and Mercurial, revisions are not in date order.
# Redmine Mercurial fixed issues. # Redmine Mercurial fixed issues.
# * Redmine Takes Too Long On Large Mercurial Repository # * Redmine Takes Too Long On Large Mercurial Repository
-1
View File
@@ -123,7 +123,6 @@ class Repository::Mercurial < Repository
private :latest_changesets_cond private :latest_changesets_cond
def fetch_changesets def fetch_changesets
return if scm.info.nil?
scm_rev = scm.info.lastrev.revision.to_i scm_rev = scm.info.lastrev.revision.to_i
db_rev = latest_changeset ? latest_changeset.revision.to_i : -1 db_rev = latest_changeset ? latest_changeset.revision.to_i : -1
return unless db_rev < scm_rev # already up-to-date return unless db_rev < scm_rev # already up-to-date
-2
View File
@@ -32,8 +32,6 @@ class Tracker < ActiveRecord::Base
validates_uniqueness_of :name validates_uniqueness_of :name
validates_length_of :name, :maximum => 30 validates_length_of :name, :maximum => 30
named_scope :named, lambda {|arg| { :conditions => ["LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip]}}
def to_s; name end def to_s; name end
def <=>(tracker) def <=>(tracker)
-1
View File
@@ -33,7 +33,6 @@ class Version < ActiveRecord::Base
validates_inclusion_of :status, :in => VERSION_STATUSES validates_inclusion_of :status, :in => VERSION_STATUSES
validates_inclusion_of :sharing, :in => VERSION_SHARINGS validates_inclusion_of :sharing, :in => VERSION_SHARINGS
named_scope :named, lambda {|arg| { :conditions => ["LOWER(#{table_name}.name) = LOWER(?)", arg.to_s.strip]}}
named_scope :open, :conditions => {:status => 'open'} named_scope :open, :conditions => {:status => 'open'}
named_scope :visible, lambda {|*args| { :include => :project, named_scope :visible, lambda {|*args| { :include => :project,
:conditions => Project.allowed_to_condition(args.first || User.current, :view_issues) } } :conditions => Project.allowed_to_condition(args.first || User.current, :view_issues) } }
+2 -6
View File
@@ -30,7 +30,7 @@ class WikiPage < ActiveRecord::Base
:datetime => :created_on, :datetime => :created_on,
:url => Proc.new {|o| {:controller => 'wiki', :action => 'show', :project_id => o.wiki.project, :id => o.title}} :url => Proc.new {|o| {:controller => 'wiki', :action => 'show', :project_id => o.wiki.project, :id => o.title}}
acts_as_searchable :columns => ['title', "#{WikiContent.table_name}.text"], acts_as_searchable :columns => ['title', 'text'],
:include => [{:wiki => :project}, :content], :include => [{:wiki => :project}, :content],
:permission => :view_wiki_pages, :permission => :view_wiki_pages,
:project_key => "#{Wiki.table_name}.project_id" :project_key => "#{Wiki.table_name}.project_id"
@@ -212,10 +212,6 @@ class WikiAnnotate
break unless @lines.detect { |line| line[0].nil? } break unless @lines.detect { |line| line[0].nil? }
current = current.previous current = current.previous
end end
@lines.each { |line| @lines.each { |line| line[0] ||= current.version }
line[0] ||= current.version
# if the last known version is > 1 (eg. history was cleared), we don't know the author
line[1] ||= current.author if current.version == 1
}
end end
end end
+2 -2
View File
@@ -89,8 +89,8 @@ class Workflow < ActiveRecord::Base
else else
transaction do transaction do
delete_all :tracker_id => target_tracker.id, :role_id => target_role.id delete_all :tracker_id => target_tracker.id, :role_id => target_role.id
connection.insert "INSERT INTO #{Workflow.table_name} (tracker_id, role_id, old_status_id, new_status_id, author, assignee)" + connection.insert "INSERT INTO #{Workflow.table_name} (tracker_id, role_id, old_status_id, new_status_id)" +
" SELECT #{target_tracker.id}, #{target_role.id}, old_status_id, new_status_id, author, assignee" + " SELECT #{target_tracker.id}, #{target_role.id}, old_status_id, new_status_id" +
" FROM #{Workflow.table_name}" + " FROM #{Workflow.table_name}" +
" WHERE tracker_id = #{source_tracker.id} AND role_id = #{source_role.id}" " WHERE tracker_id = #{source_tracker.id} AND role_id = #{source_role.id}"
end end
+4 -4
View File
@@ -15,10 +15,10 @@
<tbody> <tbody>
<% for source in @auth_sources %> <% for source in @auth_sources %>
<tr class="<%= cycle("odd", "even") %>"> <tr class="<%= cycle("odd", "even") %>">
<td><%= link_to(h(source.name), :action => 'edit', :id => source)%></td> <td><%= link_to source.name, :action => 'edit', :id => source%></td>
<td align="center"><%= h source.auth_method_name %></td> <td align="center"><%= source.auth_method_name %></td>
<td align="center"><%= h source.host %></td> <td align="center"><%= source.host %></td>
<td align="center"><%= h source.users.count %></td> <td align="center"><%= source.users.count %></td>
<td class="buttons"> <td class="buttons">
<%= link_to l(:button_test), :action => 'test_connection', :id => source %> <%= link_to l(:button_test), :action => 'test_connection', :id => source %>
<%= link_to l(:button_delete), { :action => 'destroy', :id => source }, <%= link_to l(:button_delete), { :action => 'destroy', :id => source },
+1 -1
View File
@@ -5,7 +5,7 @@ api.array :projects, api_meta(:total_count => @project_count, :offset => @offset
api.name project.name api.name project.name
api.identifier project.identifier api.identifier project.identifier
api.description project.description api.description project.description
api.parent(:id => project.parent.id, :name => project.parent.name) if project.parent && project.parent.visible? api.parent(:id => project.parent_id, :name => project.parent.name) unless project.parent.nil?
render_api_custom_values project.visible_custom_field_values, api render_api_custom_values project.visible_custom_field_values, api
-1
View File
@@ -4,7 +4,6 @@ api.project do
api.identifier @project.identifier api.identifier @project.identifier
api.description @project.description api.description @project.description
api.homepage @project.homepage api.homepage @project.homepage
api.parent(:id => @project.parent.id, :name => @project.parent.name) if @project.parent && @project.parent.visible?
render_api_custom_values @project.visible_custom_field_values, api render_api_custom_values @project.visible_custom_field_values, api
-2
View File
@@ -5,9 +5,7 @@
<p><%= text_field_tag 'q', @question, :size => 60, :id => 'search-input' %> <p><%= text_field_tag 'q', @question, :size => 60, :id => 'search-input' %>
<%= javascript_tag "Field.focus('search-input')" %> <%= javascript_tag "Field.focus('search-input')" %>
<%= project_select_tag %> <%= project_select_tag %>
<%= hidden_field_tag 'all_words', '', :id => nil %>
<label><%= check_box_tag 'all_words', 1, @all_words %> <%= l(:label_all_words) %></label> <label><%= check_box_tag 'all_words', 1, @all_words %> <%= l(:label_all_words) %></label>
<%= hidden_field_tag 'titles_only', '', :id => nil %>
<label><%= check_box_tag 'titles_only', 1, @titles_only %> <%= l(:label_search_titles_only) %></label> <label><%= check_box_tag 'titles_only', 1, @titles_only %> <%= l(:label_search_titles_only) %></label>
</p> </p>
<p> <p>
-1
View File
@@ -32,7 +32,6 @@
</div> </div>
<% content_for :header_tags do %> <% content_for :header_tags do %>
<%= stylesheet_link_tag 'scm' %>
<%= auto_discovery_link_tag(:atom, {:controller => 'news', :action => 'index', :key => User.current.rss_key, :format => 'atom'}, <%= auto_discovery_link_tag(:atom, {:controller => 'news', :action => 'index', :key => User.current.rss_key, :format => 'atom'},
:title => "#{Setting.app_title}: #{l(:label_news_latest)}") %> :title => "#{Setting.app_title}: #{l(:label_news_latest)}") %>
<%= auto_discovery_link_tag(:atom, {:controller => 'activities', :action => 'index', :key => User.current.rss_key, :format => 'atom'}, <%= auto_discovery_link_tag(:atom, {:controller => 'activities', :action => 'index', :key => User.current.rss_key, :format => 'atom'},
+7 -15
View File
@@ -89,7 +89,7 @@ default:
authentication: :login authentication: :login
user_name: "redmine@example.net" user_name: "redmine@example.net"
password: "redmine" password: "redmine"
# Absolute path to the directory where attachments are stored. # Absolute path to the directory where attachments are stored.
# The default is the 'files' directory in your Redmine instance. # The default is the 'files' directory in your Redmine instance.
# Your Redmine instance needs to have write permission on this # Your Redmine instance needs to have write permission on this
@@ -98,7 +98,7 @@ default:
# attachments_storage_path: /var/redmine/files # attachments_storage_path: /var/redmine/files
# attachments_storage_path: D:/redmine/files # attachments_storage_path: D:/redmine/files
attachments_storage_path: attachments_storage_path:
# Configuration of the autologin cookie. # Configuration of the autologin cookie.
# autologin_cookie_name: the name of the cookie (default: autologin) # autologin_cookie_name: the name of the cookie (default: autologin)
# autologin_cookie_path: the cookie path (default: /) # autologin_cookie_path: the cookie path (default: /)
@@ -106,17 +106,10 @@ default:
autologin_cookie_name: autologin_cookie_name:
autologin_cookie_path: autologin_cookie_path:
autologin_cookie_secure: autologin_cookie_secure:
# Configuration of SCM executable command. # Configuration of SCM executable command.
#
# Absolute path (e.g. /usr/local/bin/hg) or command name (e.g. hg.exe, bzr.exe) # Absolute path (e.g. /usr/local/bin/hg) or command name (e.g. hg.exe, bzr.exe)
# On Windows + CRuby, *.cmd, *.bat (e.g. hg.cmd, bzr.bat) does not work. # On Windows, *.cmd, *.bat (e.g. hg.cmd, bzr.bat) does not work.
#
# On Windows + JRuby 1.6.2, path which contains spaces does not work.
# For example, "C:\Program Files\TortoiseHg\hg.exe".
# If you want to this feature, you need to install to the path which does not contains spaces.
# For example, "C:\TortoiseHg\hg.exe".
#
# Examples: # Examples:
# scm_subversion_command: svn # (default: svn) # scm_subversion_command: svn # (default: svn)
# scm_mercurial_command: C:\Program Files\TortoiseHg\hg.exe # (default: hg) # scm_mercurial_command: C:\Program Files\TortoiseHg\hg.exe # (default: hg)
@@ -124,14 +117,13 @@ default:
# scm_cvs_command: cvs # (default: cvs) # scm_cvs_command: cvs # (default: cvs)
# scm_bazaar_command: bzr.exe # (default: bzr) # scm_bazaar_command: bzr.exe # (default: bzr)
# scm_darcs_command: darcs-1.0.9-i386-linux # (default: darcs) # scm_darcs_command: darcs-1.0.9-i386-linux # (default: darcs)
#
scm_subversion_command: scm_subversion_command:
scm_mercurial_command: scm_mercurial_command:
scm_git_command: scm_git_command:
scm_cvs_command: scm_cvs_command:
scm_bazaar_command: scm_bazaar_command:
scm_darcs_command: scm_darcs_command:
# Key used to encrypt sensitive data in the database (SCM and LDAP passwords). # Key used to encrypt sensitive data in the database (SCM and LDAP passwords).
# If you don't want to enable data encryption, just leave it blank. # If you don't want to enable data encryption, just leave it blank.
# WARNING: losing/changing this key will make encrypted data unreadable. # WARNING: losing/changing this key will make encrypted data unreadable.
@@ -144,8 +136,8 @@ default:
# * decrypt data using 'rake db:decrypt RAILS_ENV=production' first # * decrypt data using 'rake db:decrypt RAILS_ENV=production' first
# * change the cipher key here in your configuration file # * change the cipher key here in your configuration file
# * encrypt data using 'rake db:encrypt RAILS_ENV=production' # * encrypt data using 'rake db:encrypt RAILS_ENV=production'
database_cipher_key: database_cipher_key:
# specific configuration options for production environment # specific configuration options for production environment
# that overrides the default ones # that overrides the default ones
production: production:
+1 -1
View File
@@ -7,7 +7,7 @@ module ActiveRecord
# Translate attribute names for validation errors display # Translate attribute names for validation errors display
def self.human_attribute_name(attr) def self.human_attribute_name(attr)
l("field_#{attr.to_s.gsub(/_id$/, '')}", :default => attr) l("field_#{attr.to_s.gsub(/_id$/, '')}")
end end
end end
end end
+35 -37
View File
@@ -1,6 +1,5 @@
# German translations for Ruby on Rails # German translations for Ruby on Rails
# by Clemens Kofler (clemens@railway.at) # by Clemens Kofler (clemens@railway.at)
# additions for Redmine 1.2 by Jens Martsch (jmartsch@gmail.com)
de: de:
direction: ltr direction: ltr
@@ -950,48 +949,47 @@ de:
field_member_of_group: Zuständigkeitsgruppe field_member_of_group: Zuständigkeitsgruppe
field_assigned_to_role: Zuständigkeitsrolle field_assigned_to_role: Zuständigkeitsrolle
field_visible: Sichtbar field_visible: Sichtbar
setting_emails_header: E-Mail Betreffzeile setting_emails_header: Emailkopf
setting_commit_logtime_activity_id: Aktivität für die Zeiterfassung setting_commit_logtime_activity_id: Aktivität für die Zeiterfassung
text_time_logged_by_changeset: Angewendet in Changeset %{value}. text_time_logged_by_changeset: Angewendet in Changeset %{value}.
setting_commit_logtime_enabled: Aktiviere Zeitlogging setting_commit_logtime_enabled: Aktiviere Zeitlogging
notice_gantt_chart_truncated: Die Grafik ist unvollständig, da das Maximum der anzeigbaren Aufgaben überschritten wurde (%{max}) notice_gantt_chart_truncated: Die Grafik ist unvollständig, da das Maximum der anzeigbaren Aufgaben überschritten wurde (%{max})
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.
field_warn_on_leaving_unsaved: vor dem Verlassen einer Seite mit ungesichertem Text im Editor warnen field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
text_warn_on_leaving_unsaved: Die aktuellen Änderungen gehen verloren, wenn Sie diese Seite verlassen. text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
label_my_queries: Meine eigenen Abfragen label_my_queries: My custom queries
text_journal_changed_no_detail: "%{label} aktualisiert" text_journal_changed_no_detail: "%{label} updated"
label_news_comment_added: Kommentar zu einer News hinzugefügt label_news_comment_added: Comment added to a news
button_expand_all: Alle ausklappen button_expand_all: Expand all
button_collapse_all: Alle einklappen button_collapse_all: Collapse all
label_additional_workflow_transitions_for_assignee: Zusätzliche Berechtigungen wenn der Benutzer der Zugewiesene ist label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
label_additional_workflow_transitions_for_author: Zusätzliche Berechtigungen wenn der Benutzer der Autor ist label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author
label_bulk_edit_selected_time_entries: Ausgewählte Zeitaufwände bearbeiten label_bulk_edit_selected_time_entries: Bulk edit selected time entries
text_time_entries_destroy_confirmation: Sind Sie sicher, dass Sie die ausgewählten Zeitaufwände löschen möchten? text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)?
label_role_anonymous: Anonymous label_role_anonymous: Anonymous
label_role_non_member: Nichtmitglied label_role_non_member: Non member
label_issue_note_added: Notiz hinzugefügt label_issue_note_added: Note added
label_issue_status_updated: Status aktualisiert label_issue_status_updated: Status updated
label_issue_priority_updated: Priorität aktualisiert label_issue_priority_updated: Priority updated
label_issues_visibility_own: Tickets die folgender User erstellt hat oder die ihm zugewiesen sind label_issues_visibility_own: Issues created by or assigned to the user
field_issues_visibility: Ticket Sichtbarkeit field_issues_visibility: Issues visibility
label_issues_visibility_all: Alle Tickets label_issues_visibility_all: All issues
permission_set_own_issues_private: Eigene Tickets privat oder öffentlich markieren permission_set_own_issues_private: Set own issues public or private
field_is_private: Privat field_is_private: Private
permission_set_issues_private: Tickets privat oder öffentlich markieren permission_set_issues_private: Set issues public or private
label_issues_visibility_public: Alle öffentlichen Tickets label_issues_visibility_public: All non private issues
text_issues_destroy_descendants_confirmation: Dies wird auch %{count} Unteraufgabe/n löschen. text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s).
field_commit_logs_encoding: Kodierung der Commit-Log-Meldungen field_commit_logs_encoding: Kodierung der Commit-Log-Meldungen
field_scm_path_encoding: Pfad Kodierung field_scm_path_encoding: Path encoding
text_scm_path_encoding_note: "Standard: UTF-8" text_scm_path_encoding_note: "Default: UTF-8"
field_path_to_repository: Pfad zum repository field_path_to_repository: Path to repository
field_root_directory: Wurzelverzeichnis field_root_directory: Root directory
field_cvs_module: Modul field_cvs_module: Module
field_cvsroot: CVSROOT field_cvsroot: CVSROOT
text_git_repository_note: Bare und lokales repository (e.g. /gitrepo, c:\gitrepo) text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo)
text_mercurial_repository_note: Lokales repository (e.g. /hgrepo, c:\hgrepo) text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo)
text_scm_command: Kommando text_scm_command: Command
text_scm_command_version: Version text_scm_command_version: Version
label_git_report_last_commit: Bericht des letzten Commits für Dateien und Verzeichnisse label_git_report_last_commit: Report last commit for files and directories
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_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
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 command is not available. Please check settings on the administration panel.
+42 -42
View File
@@ -132,7 +132,7 @@ es:
greater_than_start_date: "debe ser posterior a la fecha de comienzo" greater_than_start_date: "debe ser posterior a la fecha de comienzo"
not_same_project: "no pertenece al mismo proyecto" not_same_project: "no pertenece al mismo proyecto"
circular_dependency: "Esta relación podría crear una dependencia circular" circular_dependency: "Esta relación podría crear una dependencia circular"
cant_link_an_issue_with_a_descendant: "Esta petición no puede ser ligada a una de estas tareas" cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
# Append your own errors here or at the model/attributes scope. # Append your own errors here or at the model/attributes scope.
@@ -970,46 +970,46 @@ es:
field_visible: Visible field_visible: Visible
setting_emails_header: Encabezado de Correos setting_emails_header: Encabezado de Correos
setting_commit_logtime_activity_id: Actividad de los tiempos registrados setting_commit_logtime_activity_id: Activity for logged time
text_time_logged_by_changeset: Aplicado en los cambios %{value}. text_time_logged_by_changeset: Applied in changeset %{value}.
setting_commit_logtime_enabled: Habilitar registro de horas setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: Se recortó el diagrama porque excede el número máximo de elementos que pueden ser mostrados (%{max}) notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Número máximo de elementos mostrados en el diagrama de Gantt setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
field_warn_on_leaving_unsaved: Avisarme cuando vaya a abandonar una página con texto no guardado field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
text_warn_on_leaving_unsaved: Esta página contiene texto no guardado y si la abandona sus cambios se perderán text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
label_my_queries: Mis consultas personalizadas label_my_queries: My custom queries
text_journal_changed_no_detail: "Se actualizó %{label}" text_journal_changed_no_detail: "%{label} updated"
label_news_comment_added: Comentario añadido a noticia label_news_comment_added: Comment added to a news
button_expand_all: Expandir todo button_expand_all: Expand all
button_collapse_all: Contraer todo button_collapse_all: Collapse all
label_additional_workflow_transitions_for_assignee: Transiciones adicionales permitidas cuando la petición está asignada al usuario label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
label_additional_workflow_transitions_for_author: Transiciones adicionales permitidas cuando el usuario es autor de la petición label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author
label_bulk_edit_selected_time_entries: Editar en bloque las horas seleccionadas label_bulk_edit_selected_time_entries: Bulk edit selected time entries
text_time_entries_destroy_confirmation: ¿Está seguro de querer eliminar (la hora seleccionada/las horas seleccionadas)? text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)?
label_role_anonymous: Anónimo label_role_anonymous: Anonymous
label_role_non_member: No miembro label_role_non_member: Non member
label_issue_note_added: Nota añadida label_issue_note_added: Note added
label_issue_status_updated: Estado actualizado label_issue_status_updated: Status updated
label_issue_priority_updated: Prioridad actualizada label_issue_priority_updated: Priority updated
label_issues_visibility_own: Peticiones creadas por el usuario o asignadas a él label_issues_visibility_own: Issues created by or assigned to the user
field_issues_visibility: Visibilidad de las peticiones field_issues_visibility: Issues visibility
label_issues_visibility_all: Todas las peticiones label_issues_visibility_all: All issues
permission_set_own_issues_private: Poner las peticiones propias como públicas o privadas permission_set_own_issues_private: Set own issues public or private
field_is_private: Privada field_is_private: Private
permission_set_issues_private: Poner peticiones como públicas o privadas permission_set_issues_private: Set issues public or private
label_issues_visibility_public: Todas las peticiones no privadas label_issues_visibility_public: All non private issues
text_issues_destroy_descendants_confirmation: Se procederá a borrar también %{count} subtarea(s). text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s).
field_commit_logs_encoding: Codificación de los mensajes de commit field_commit_logs_encoding: Codificación de los mensajes de commit
field_scm_path_encoding: Codificación de las rutas field_scm_path_encoding: Path encoding
text_scm_path_encoding_note: "Por defecto: UTF-8" text_scm_path_encoding_note: "Default: UTF-8"
field_path_to_repository: Ruta al repositorio field_path_to_repository: Path to repository
field_root_directory: Directorio raíz field_root_directory: Root directory
field_cvs_module: Módulo field_cvs_module: Module
field_cvsroot: CVSROOT field_cvsroot: CVSROOT
text_git_repository_note: Repositorio local (bare repository) (e.g. /gitrepo, c:\gitrepo) text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo)
text_mercurial_repository_note: Repositorio local (e.g. /hgrepo, c:\hgrepo) text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo)
text_scm_command: Orden text_scm_command: Command
text_scm_command_version: Versión text_scm_command_version: Version
label_git_report_last_commit: Informar del último commit para ficheros y directorios label_git_report_last_commit: Report last commit for files and directories
text_scm_config: Puede configurar las órdenes de cada scm en configuration/configuration.yml. Por favor, reinicie la aplicación después de editarlo 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: La orden para el Scm no está disponible. Por favor, compruebe la configuración en el panel de administración. text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
+53 -53
View File
@@ -34,40 +34,40 @@
distance_in_words: distance_in_words:
half_a_minute: 'fél perc' half_a_minute: 'fél perc'
less_than_x_seconds: less_than_x_seconds:
# zero: 'kevesebb, mint 1 másodperce' # zero: 'kevesebb, mint 1 másodperc'
one: 'kevesebb, mint 1 másodperce' one: 'kevesebb, mint 1 másodperc'
other: 'kevesebb, mint %{count} másodperce' other: 'kevesebb, mint %{count} másodperc'
x_seconds: x_seconds:
one: '1 másodperce' one: '1 másodperc'
other: '%{count} másodperce' other: '%{count} másodperc'
less_than_x_minutes: less_than_x_minutes:
# zero: 'kevesebb, mint 1 perce' # zero: 'kevesebb, mint 1 perc'
one: 'kevesebb, mint 1 perce' one: 'kevesebb, mint 1 perc'
other: 'kevesebb, mint %{count} perce' other: 'kevesebb, mint %{count} perc'
x_minutes: x_minutes:
one: '1 perce' one: '1 perc'
other: '%{count} perce' other: '%{count} perc'
about_x_hours: about_x_hours:
one: 'csaknem 1 órája' one: 'majdnem 1 óra'
other: 'csaknem %{count} órája' other: 'majdnem %{count} óra'
x_days: x_days:
one: '1 napja' one: '1 nap'
other: '%{count} napja' other: '%{count} nap'
about_x_months: about_x_months:
one: 'csaknem 1 hónapja' one: 'majdnem 1 hónap'
other: 'csaknem %{count} hónapja' other: 'majdnem %{count} hónap'
x_months: x_months:
one: '1 hónapja' one: '1 hónap'
other: '%{count} hónapja' other: '%{count} hónap'
about_x_years: about_x_years:
one: 'csaknem 1 éve' one: 'majdnem 1 év'
other: 'csaknem %{count} éve' other: 'majdnem %{count} év'
over_x_years: over_x_years:
one: 'több, mint 1 éve' one: 'több, mint 1 év'
other: 'több, mint %{count} éve' other: 'több, mint %{count} év'
almost_x_years: almost_x_years:
one: "csaknem 1 éve" one: "közel 1 év"
other: "csaknem %{count} éve" other: "közel %{count} év"
prompts: prompts:
year: "Év" year: "Év"
month: "Hónap" month: "Hónap"
@@ -264,7 +264,7 @@
field_attr_mail: E-mail field_attr_mail: E-mail
field_onthefly: On-the-fly felhasználó létrehozás field_onthefly: On-the-fly felhasználó létrehozás
field_start_date: Kezdés dátuma field_start_date: Kezdés dátuma
field_done_ratio: Készültség (%) field_done_ratio: Elkészült (%)
field_auth_source: Azonosítási mód field_auth_source: Azonosítási mód
field_hide_mail: Rejtse el az e-mail címem field_hide_mail: Rejtse el az e-mail címem
field_comments: Megjegyzés field_comments: Megjegyzés
@@ -280,7 +280,7 @@
field_delay: Késés field_delay: Késés
field_assignable: Feladat rendelhető ehhez a szerepkörhöz field_assignable: Feladat rendelhető ehhez a szerepkörhöz
field_redirect_existing_links: Létező linkek átirányítása field_redirect_existing_links: Létező linkek átirányítása
field_estimated_hours: Becsült időigény field_estimated_hours: Becsült idő
field_column_names: Oszlopok field_column_names: Oszlopok
field_time_zone: Időzóna field_time_zone: Időzóna
field_searchable: Kereshető field_searchable: Kereshető
@@ -326,7 +326,7 @@
project_module_documents: Dokumentumok project_module_documents: Dokumentumok
project_module_files: Fájlok project_module_files: Fájlok
project_module_wiki: Wiki project_module_wiki: Wiki
project_module_repository: Forráskód project_module_repository: Tároló
project_module_boards: Fórumok project_module_boards: Fórumok
label_user: Felhasználó label_user: Felhasználó
@@ -391,7 +391,7 @@
label_assigned_to_me_issues: A nekem kiosztott feladatok label_assigned_to_me_issues: A nekem kiosztott feladatok
label_last_login: Utolsó bejelentkezés label_last_login: Utolsó bejelentkezés
label_registered_on: Regisztrált label_registered_on: Regisztrált
label_activity: Történések label_activity: Tevékenységek
label_overall_activity: Teljes aktivitás label_overall_activity: Teljes aktivitás
label_new: Új label_new: Új
label_logged_as: Bejelentkezve, mint label_logged_as: Bejelentkezve, mint
@@ -510,8 +510,8 @@
label_contains: tartalmazza label_contains: tartalmazza
label_not_contains: nem tartalmazza label_not_contains: nem tartalmazza
label_day_plural: nap label_day_plural: nap
label_repository: Forráskód label_repository: Tároló
label_repository_plural: Forráskódok label_repository_plural: Tárolók
label_browse: Tallóz label_browse: Tallóz
label_modification: "%{count} változás" label_modification: "%{count} változás"
label_modification_plural: "%{count} változás" label_modification_plural: "%{count} változás"
@@ -600,10 +600,10 @@
label_language_based: A felhasználó nyelve alapján label_language_based: A felhasználó nyelve alapján
label_sort_by: "%{value} szerint rendezve" label_sort_by: "%{value} szerint rendezve"
label_send_test_email: Teszt e-mail küldése label_send_test_email: Teszt e-mail küldése
label_feeds_access_key_created_on: "RSS hozzáférési kulcs létrehozva %{value}" label_feeds_access_key_created_on: "RSS hozzáférési kulcs létrehozva ennyivel ezelőtt: %{value}"
label_module_plural: Modulok label_module_plural: Modulok
label_added_time_by: "%{author} adta hozzá %{age}" label_added_time_by: "%{author} adta hozzá ennyivel ezelőtt: %{age}"
label_updated_time: "Utolsó módosítás %{value}" label_updated_time: "Utolsó módosítás ennyivel ezelőtt: %{value}"
label_jump_to_a_project: Ugrás projekthez... label_jump_to_a_project: Ugrás projekthez...
label_file_plural: Fájlok label_file_plural: Fájlok
label_changeset_plural: Changesets label_changeset_plural: Changesets
@@ -695,11 +695,11 @@
text_unallowed_characters: Tiltott karakterek text_unallowed_characters: Tiltott karakterek
text_comma_separated: Több érték megengedett (vesszővel elválasztva) text_comma_separated: Több érték megengedett (vesszővel elválasztva)
text_issues_ref_in_commit_messages: Hivatkozás feladatokra, feladatok javítása a commit üzenetekben text_issues_ref_in_commit_messages: Hivatkozás feladatokra, feladatok javítása a commit üzenetekben
text_issue_added: "%{author} új feladatot hozott létre %{id} sorszámmal." text_issue_added: "A feladatot %{id} bejelentette: %{author}."
text_issue_updated: "%{author} módosította a %{id} sorszámú feladatot." text_issue_updated: "A feladatot %{id} módosította: %{author}."
text_wiki_destroy_confirmation: Biztosan törölni szeretné ezt a wiki-t minden tartalmával együtt ? text_wiki_destroy_confirmation: Biztosan törölni szeretné ezt a wiki-t minden tartalmával együtt ?
text_issue_category_destroy_question: "Néhány feladat (%{count}) hozzá van rendelve ehhez a kategóriához. Mit szeretne tenni?" text_issue_category_destroy_question: "Néhány feladat (%{count}) hozzá van rendelve ehhez a kategóriához. Mit szeretne tenni ?"
text_issue_category_destroy_assignments: Kategória hozzárendelés megszüntetése text_issue_category_destroy_assignments: Kategória hozzárendelés megszűntetése
text_issue_category_reassign_to: Feladatok újra hozzárendelése másik kategóriához text_issue_category_reassign_to: Feladatok újra hozzárendelése másik kategóriához
text_user_mail_option: "A nem kiválasztott projektekről csak akkor kap értesítést, ha figyelést kér rá, vagy részt vesz benne (pl. Ön a létrehozó, vagy a hozzárendelő)" text_user_mail_option: "A nem kiválasztott projektekről csak akkor kap értesítést, ha figyelést kér rá, vagy részt vesz benne (pl. Ön a létrehozó, vagy a hozzárendelő)"
text_no_configuration_data: "Szerepkörök, feladat típusok, feladat státuszok, és workflow adatok még nincsenek konfigurálva.\nErősen ajánlott, az alapértelmezett konfiguráció betöltése, és utána módosíthatja azt." text_no_configuration_data: "Szerepkörök, feladat típusok, feladat státuszok, és workflow adatok még nincsenek konfigurálva.\nErősen ajánlott, az alapértelmezett konfiguráció betöltése, és utána módosíthatja azt."
@@ -709,8 +709,8 @@
text_select_project_modules: 'Válassza ki az engedélyezett modulokat ehhez a projekthez:' text_select_project_modules: 'Válassza ki az engedélyezett modulokat ehhez a projekthez:'
text_default_administrator_account_changed: Alapértelmezett adminisztrátor fiók megváltoztatva text_default_administrator_account_changed: Alapértelmezett adminisztrátor fiók megváltoztatva
text_file_repository_writable: Fájl tároló írható text_file_repository_writable: Fájl tároló írható
text_rmagick_available: RMagick elérhető (nem kötelező) text_rmagick_available: RMagick elérhető (opcionális)
text_destroy_time_entries_question: "%{hours} órányi munka van rögzítve a feladatokon, amiket törölni szeretne. Mit szeretne tenni?" text_destroy_time_entries_question: "%{hours} órányi munka van rögzítve a feladatokon, amiket törölni szeretne. Mit szeretne tenni ?"
text_destroy_time_entries: A rögzített órák törlése text_destroy_time_entries: A rögzített órák törlése
text_assign_time_entries_to_project: A rögzített órák hozzárendelése a projekthez text_assign_time_entries_to_project: A rögzített órák hozzárendelése a projekthez
text_reassign_time_entries: 'A rögzített órák újra hozzárendelése másik feladathoz:' text_reassign_time_entries: 'A rögzített órák újra hozzárendelése másik feladathoz:'
@@ -720,7 +720,7 @@
default_role_reporter: Bejelentő default_role_reporter: Bejelentő
default_tracker_bug: Hiba default_tracker_bug: Hiba
default_tracker_feature: Fejlesztés default_tracker_feature: Fejlesztés
default_tracker_support: Támogatás default_tracker_support: Support
default_issue_status_new: Új default_issue_status_new: Új
default_issue_status_in_progress: Folyamatban default_issue_status_in_progress: Folyamatban
default_issue_status_resolved: Megoldva default_issue_status_resolved: Megoldva
@@ -741,7 +741,7 @@
enumeration_doc_categories: Dokumentum kategóriák enumeration_doc_categories: Dokumentum kategóriák
enumeration_activities: Tevékenységek (idő rögzítés) enumeration_activities: Tevékenységek (idő rögzítés)
mail_body_reminder: "%{count} neked kiosztott feladat határidős az elkövetkező %{days} napban:" mail_body_reminder: "%{count} neked kiosztott feladat határidős az elkövetkező %{days} napban:"
mail_subject_reminder: "%{count} feladat határidős az elkövetkező %{days} napban" mail_subject_reminder: "%{count} feladat határidős az elkövetkező %{days} napokban"
text_user_wrote: "%{value} írta:" text_user_wrote: "%{value} írta:"
label_duplicated_by: duplikálta label_duplicated_by: duplikálta
setting_enabled_scm: Forráskódkezelő (SCM) engedélyezése setting_enabled_scm: Forráskódkezelő (SCM) engedélyezése
@@ -812,14 +812,14 @@
permission_edit_own_messages: Saját üzenetek szerkesztése permission_edit_own_messages: Saját üzenetek szerkesztése
permission_delete_own_messages: Saját üzenetek törlése permission_delete_own_messages: Saját üzenetek törlése
label_user_activity: "%{value} tevékenységei" label_user_activity: "%{value} tevékenységei"
label_updated_time_by: "Módosította %{author} %{age}" label_updated_time_by: "Módosította %{author} ennyivel ezelőtt: %{age}"
text_diff_truncated: '... A diff fájl vége nem jelenik meg, mert hosszab, mint a megjeleníthető sorok száma.' text_diff_truncated: '... A diff fájl vége nem jelenik meg, mert hosszab, mint a megjeleníthető sorok száma.'
setting_diff_max_lines_displayed: A megjelenítendő sorok száma (maximum) a diff fájloknál setting_diff_max_lines_displayed: A megjelenítendő sorok száma (maximum) a diff fájloknál
text_plugin_assets_writable: Plugin eszközök könyvtár írható text_plugin_assets_writable: Plugin eszközök könyvtár írható
warning_attachments_not_saved: "%{count} fájl mentése nem sikerült." warning_attachments_not_saved: "%{count} fájl mentése nem sikerült."
button_create_and_continue: Létrehozás és folytatás button_create_and_continue: Létrehozás és folytatás
text_custom_field_possible_values_info: 'Értékenként egy sor' text_custom_field_possible_values_info: 'Értékenként egy sor'
label_display: Megmutat label_display: Megjelenés
field_editable: Szerkeszthető field_editable: Szerkeszthető
setting_repository_log_display_limit: Maximum hány revíziót mutasson meg a log megjelenítésekor setting_repository_log_display_limit: Maximum hány revíziót mutasson meg a log megjelenítésekor
setting_file_max_size_displayed: Maximum mekkora szövegfájlokat jelenítsen meg soronkénti összehasonlításnál setting_file_max_size_displayed: Maximum mekkora szövegfájlokat jelenítsen meg soronkénti összehasonlításnál
@@ -835,40 +835,40 @@
label_greater_or_equal: ">=" label_greater_or_equal: ">="
label_less_or_equal: "<=" label_less_or_equal: "<="
text_wiki_page_destroy_question: Ennek az oldalnak %{descendants} gyermek-, és leszármazott oldala van. Mit szeretne tenni? text_wiki_page_destroy_question: Ennek az oldalnak %{descendants} gyermek-, és leszármazott oldala van. Mit szeretne tenni?
text_wiki_page_reassign_children: Aloldalak hozzárendelése ehhez a szülő oldalhoz text_wiki_page_reassign_children: Az aloldalak hozzárendelése ehhez a szülő oldalhoz
text_wiki_page_nullify_children: Aloldalak átalakítása főoldallá text_wiki_page_nullify_children: Az aloldalak megtartása, mint főoldalak
text_wiki_page_destroy_children: Minden aloldal és leszármazottjának törlése text_wiki_page_destroy_children: Minden aloldal és leszármazottjának törlése
setting_password_min_length: Minimum jelszó hosszúság setting_password_min_length: Minimum jelszó hosszúság
field_group_by: Szerint csoportosítva field_group_by: Szerint csoportosítva
mail_subject_wiki_content_updated: "'%{id}' wiki oldal frissítve" mail_subject_wiki_content_updated: "'%{id}' wiki oldal frissítve"
label_wiki_content_added: Wiki oldal hozzáadva label_wiki_content_added: Wiki oldal hozzáadva
mail_subject_wiki_content_added: "Új wiki oldal: '%{id}'" mail_subject_wiki_content_added: "Új wiki oldal: '%{id}'"
mail_body_wiki_content_added: %{author} létrehozta a '%{id}' wiki oldalt. mail_body_wiki_content_added: A '%{id}' wiki oldalt %{author} hozta létre.
label_wiki_content_updated: Wiki oldal frissítve label_wiki_content_updated: Wiki oldal frissítve
mail_body_wiki_content_updated: %{author} frissítette a '%{id}' wiki oldalt. mail_body_wiki_content_updated: A '%{id}' wiki oldalt %{author} frissítette.
permission_add_project: Projekt létrehozása permission_add_project: Projekt létrehozása
setting_new_project_user_role_id: Projekt létrehozási jog nem adminisztrátor felhasználóknak setting_new_project_user_role_id: Projekt létrehozási jog nem adminisztrátor felhasználóknak
label_view_all_revisions: Összes verzió label_view_all_revisions: Minden revízió megtekintése
label_tag: Tag label_tag: Tag
label_branch: Branch label_branch: Branch
error_no_tracker_in_project: Nincs feladat típus hozzárendelve ehhez a projekthez. Kérem ellenőrizze a projekt beállításait. error_no_tracker_in_project: Nincs feladat típus hozzárendelve ehhez a projekthez. Kérem ellenőrizze a projekt beállításait.
error_no_default_issue_status: Nincs alapértelmezett feladat státusz beállítva. Kérem ellenőrizze a beállításokat (Itt találja "Adminisztráció -> Feladat státuszok"). error_no_default_issue_status: Nincs alapértelmezett feladat státusz beállítva. Kérem ellenőrizze a beállításokat (Itt találja "Adminisztráció -> Feladat státuszok").
text_journal_changed: "%{label} megváltozott, %{old} helyett %{new} lett" text_journal_changed: "%{label} változott erről: %{old} erre: %{new}"
text_journal_set_to: "%{label} új értéke: %{value}" text_journal_set_to: "%{label} új értéke: %{value}"
text_journal_deleted: "%{label} törölve lett (%{old})" text_journal_deleted: "%{label} törölve (%{old})"
label_group_plural: Csoportok label_group_plural: Csoportok
label_group: Csoport label_group: Csoport
label_group_new: Új csoport label_group_new: Új csoport
label_time_entry_plural: Időráfordítás label_time_entry_plural: Rögzített idő
text_journal_added: "%{label} %{value} hozzáadva" text_journal_added: "%{label} %{value} hozzáadva"
field_active: Aktív field_active: Aktív
enumeration_system_activity: Rendszertevékenység enumeration_system_activity: Rendszer Tevékenység
permission_delete_issue_watchers: Megfigyelők törlése permission_delete_issue_watchers: Megfigyelők törlése
version_status_closed: lezárt version_status_closed: lezárt
version_status_locked: zárolt version_status_locked: zárolt
version_status_open: nyitott version_status_open: nyitott
error_can_not_reopen_issue_on_closed_version: Lezárt verzióhoz rendelt feladatot nem lehet újranyitni error_can_not_reopen_issue_on_closed_version: Lezárt verzióhoz rendelt feladatot nem lehet újranyitni
label_user_anonymous: Névtelen label_user_anonymous: Anonymous
button_move_and_follow: Mozgatás és követés button_move_and_follow: Mozgatás és követés
setting_default_projects_modules: Alapértelmezett modulok az új projektekhez setting_default_projects_modules: Alapértelmezett modulok az új projektekhez
setting_gravatar_default: Alapértelmezett Gravatar kép setting_gravatar_default: Alapértelmezett Gravatar kép
+36 -36
View File
@@ -939,41 +939,41 @@ it:
setting_commit_logtime_enabled: Abilita registrazione del tempo di collegamento setting_commit_logtime_enabled: Abilita registrazione del tempo di collegamento
notice_gantt_chart_truncated: Il grafico è stato troncato perchè eccede il numero di oggetti (%{max}) da visualizzare notice_gantt_chart_truncated: Il grafico è stato troncato perchè eccede il numero di oggetti (%{max}) da visualizzare
setting_gantt_items_limit: Massimo numero di oggetti da visualizzare sul diagramma di gantt setting_gantt_items_limit: Massimo numero di oggetti da visualizzare sul diagramma di gantt
field_warn_on_leaving_unsaved: Avvisami quando lascio una pagina con testo non salvato field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
text_warn_on_leaving_unsaved: La pagina corrente contiene del testo non salvato che verrà perso se lasci questa pagina. text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
label_my_queries: Le mie queries personalizzate label_my_queries: My custom queries
text_journal_changed_no_detail: "%{label} aggiornato" text_journal_changed_no_detail: "%{label} updated"
label_news_comment_added: Commento aggiunto a una notizia label_news_comment_added: Comment added to a news
button_expand_all: Espandi tutto button_expand_all: Expand all
button_collapse_all: Comprimi tutto button_collapse_all: Collapse all
label_additional_workflow_transitions_for_assignee: Transizioni supplementari consentite quando l'utente è l'assegnatario label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
label_additional_workflow_transitions_for_author: Transizioni supplementari consentite quando l'utente è l'autore label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author
label_bulk_edit_selected_time_entries: Modifica massiva delle ore segnalate selezionate label_bulk_edit_selected_time_entries: Bulk edit selected time entries
text_time_entries_destroy_confirmation: Sei sicuro di voler eliminare l'ora\e selezionata\e? text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)?
label_role_anonymous: Anonimo label_role_anonymous: Anonymous
label_role_non_member: Non membro label_role_non_member: Non member
label_issue_note_added: Nota aggiunta label_issue_note_added: Note added
label_issue_status_updated: Stato aggiornato label_issue_status_updated: Status updated
label_issue_priority_updated: Priorità aggiornata label_issue_priority_updated: Priority updated
label_issues_visibility_own: Segnalazioni create o assegnate all'utente label_issues_visibility_own: Issues created by or assigned to the user
field_issues_visibility: Visibilità segnalazioni field_issues_visibility: Issues visibility
label_issues_visibility_all: Tutte le segnalazioni label_issues_visibility_all: All issues
permission_set_own_issues_private: Imposta le proprie segnalazioni pubbliche o private permission_set_own_issues_private: Set own issues public or private
field_is_private: Privato field_is_private: Private
permission_set_issues_private: Imposta le segnalazioni pubbliche o private permission_set_issues_private: Set issues public or private
label_issues_visibility_public: Tutte le segnalazioni non private label_issues_visibility_public: All non private issues
text_issues_destroy_descendants_confirmation: Questo eliminerà anche %{count} sottoattività. text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s).
field_commit_logs_encoding: Codifica dei messaggi di commit field_commit_logs_encoding: Codifica dei messaggi di commit
field_scm_path_encoding: Codifica del percorso field_scm_path_encoding: Path encoding
text_scm_path_encoding_note: "Predefinito: UTF-8" text_scm_path_encoding_note: "Default: UTF-8"
field_path_to_repository: Percorso del repository field_path_to_repository: Path to repository
field_root_directory: Directory radice field_root_directory: Root directory
field_cvs_module: Modulo field_cvs_module: Module
field_cvsroot: CVSROOT field_cvsroot: CVSROOT
text_git_repository_note: Repository centrale e locale (es. /gitrepo, c:\gitrepo) text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo)
text_mercurial_repository_note: Repository locale (es. /hgrepo, c:\hgrepo) text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo)
text_scm_command: Comando text_scm_command: Command
text_scm_command_version: Versione text_scm_command_version: Version
label_git_report_last_commit: Riporta l'ultimo commit per files e directories label_git_report_last_commit: Report last commit for files and directories
text_scm_config: Puoi configurare i comandi scm nel file config/configuration.yml. E' necessario riavviare l'applicazione dopo averlo modificato. 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: Il comando scm non è disponibile. Controllare le impostazioni nel pannello di amministrazione. text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
-8
View File
@@ -158,14 +158,6 @@ ja:
general_csv_separator: ',' general_csv_separator: ','
general_csv_decimal_separator: '.' general_csv_decimal_separator: '.'
general_csv_encoding: CP932 general_csv_encoding: CP932
## Redmine 1.2.0 現在、この値によって、pdfの出力のフォントを切り替えています。
## CRuby では CP932 にしてください。
## JRuby 1.6.2 (ruby-1.8.7-p330) では、CP932 ですと
## Iconv::InvalidEncoding例外が発生します。
## JRuby では、SJIS か Shift_JIS にしてください。
## ご存知の通り、CP932 と SJIS は別物ですが、
## そこまでの検証はしていません。
# general_pdf_encoding: SJIS
general_pdf_encoding: CP932 general_pdf_encoding: CP932
general_first_day_of_week: '7' general_first_day_of_week: '7'
+9 -9
View File
@@ -123,7 +123,7 @@ nl:
greater_than_start_date: "moet na de startdatum liggen" greater_than_start_date: "moet na de startdatum liggen"
not_same_project: "hoort niet bij hetzelfde project" not_same_project: "hoort niet bij hetzelfde project"
circular_dependency: "Deze relatie zou een circulaire afhankelijkheid tot gevolg hebben" circular_dependency: "Deze relatie zou een circulaire afhankelijkheid tot gevolg hebben"
cant_link_an_issue_with_a_descendant: "Een issue kan niet gelinked worden met een subtask" cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: Selecteer actionview_instancetag_blank_option: Selecteer
@@ -703,7 +703,7 @@ nl:
setting_bcc_recipients: Blind carbon copy ontvangers (bcc) setting_bcc_recipients: Blind carbon copy ontvangers (bcc)
setting_commit_fix_keywords: Gefixeerde trefwoorden setting_commit_fix_keywords: Gefixeerde trefwoorden
setting_commit_ref_keywords: Refererende trefwoorden setting_commit_ref_keywords: Refererende trefwoorden
setting_cross_project_issue_relations: Sta cross-project issuerelaties toe setting_cross_project_issue_relations: Sta crossproject issuerelaties toe
setting_date_format: Datumformaat setting_date_format: Datumformaat
setting_default_language: Standaard taal setting_default_language: Standaard taal
setting_default_projects_public: Nieuwe projecten zijn standaard publiek setting_default_projects_public: Nieuwe projecten zijn standaard publiek
@@ -908,8 +908,8 @@ nl:
label_user_mail_option_only_my_events: Alleen voor dingen die ik volg of bij betrokken ben label_user_mail_option_only_my_events: Alleen voor dingen die ik volg of bij betrokken ben
label_user_mail_option_only_assigned: Alleen voor dingen die aan mij zijn toegewezen label_user_mail_option_only_assigned: Alleen voor dingen die aan mij zijn toegewezen
label_user_mail_option_none: Bij geen enkele gebeurtenis label_user_mail_option_none: Bij geen enkele gebeurtenis
field_member_of_group: Groep van toegewezene field_member_of_group: Assignee's group
field_assigned_to_role: Rol van toegewezene field_assigned_to_role: Assignee's role
notice_not_authorized_archived_project: Het project dat u wilt bezoeken is gearchiveerd. notice_not_authorized_archived_project: Het project dat u wilt bezoeken is gearchiveerd.
label_principal_search: "Zoek naar gebruiker of groep:" label_principal_search: "Zoek naar gebruiker of groep:"
label_user_search: "Zoek naar gebruiker:" label_user_search: "Zoek naar gebruiker:"
@@ -925,10 +925,10 @@ nl:
label_my_queries: Mijn aangepaste zoekopdrachten label_my_queries: Mijn aangepaste zoekopdrachten
text_journal_changed_no_detail: "%{label} updated" text_journal_changed_no_detail: "%{label} updated"
label_news_comment_added: Commentaar toegevoegd aan een nieuwsitem label_news_comment_added: Commentaar toegevoegd aan een nieuwsitem
button_expand_all: Klap uit button_expand_all: Expand all
button_collapse_all: Klap in button_collapse_all: Collapse all
label_additional_workflow_transitions_for_assignee: Aanvullende veranderingen toegestaan wanneer de gebruiker de toegewezene is label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
label_additional_workflow_transitions_for_author: Aanvullende veranderingen toegestaan wanneer de gebruiker de auteur is 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 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)? text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)?
label_role_anonymous: Anonymous label_role_anonymous: Anonymous
@@ -946,7 +946,7 @@ nl:
text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s). text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s).
field_commit_logs_encoding: Encodering van commit berichten field_commit_logs_encoding: Encodering van commit berichten
field_scm_path_encoding: Path encoding field_scm_path_encoding: Path encoding
text_scm_path_encoding_note: "Standaard: UTF-8" text_scm_path_encoding_note: "Default: UTF-8"
field_path_to_repository: Path to repository field_path_to_repository: Path to repository
field_root_directory: Root directory field_root_directory: Root directory
field_cvs_module: Module field_cvs_module: Module
+223 -225
View File
@@ -114,7 +114,7 @@
greater_than_start_date: "må være større enn startdato" greater_than_start_date: "må være større enn startdato"
not_same_project: "hører ikke til samme prosjekt" not_same_project: "hører ikke til samme prosjekt"
circular_dependency: "Denne relasjonen ville lagd en sirkulær avhengighet" circular_dependency: "Denne relasjonen ville lagd en sirkulær avhengighet"
cant_link_an_issue_with_a_descendant: "En sak kan ikke kobles mot en av sine undersaker" cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: Vennligst velg actionview_instancetag_blank_option: Vennligst velg
@@ -212,7 +212,7 @@
field_role: Rolle field_role: Rolle
field_homepage: Hjemmeside field_homepage: Hjemmeside
field_is_public: Offentlig field_is_public: Offentlig
field_parent: Underprosjekt av field_parent: Underprosjekt til
field_is_in_roadmap: Vises i veikart field_is_in_roadmap: Vises i veikart
field_login: Brukernavn field_login: Brukernavn
field_mail_notification: E-post-varsling field_mail_notification: E-post-varsling
@@ -236,8 +236,8 @@
field_onthefly: On-the-fly brukeropprettelse field_onthefly: On-the-fly brukeropprettelse
field_start_date: Start field_start_date: Start
field_done_ratio: "% Ferdig" field_done_ratio: "% Ferdig"
field_auth_source: Autentiseringskilde field_auth_source: Autentifikasjonsmodus
field_hide_mail: Skjul min epost-adresse field_hide_mail: Skjul min e-post-adresse
field_comments: Kommentarer field_comments: Kommentarer
field_url: URL field_url: URL
field_start_page: Startside field_start_page: Startside
@@ -247,7 +247,7 @@
field_spent_on: Dato field_spent_on: Dato
field_identifier: Identifikasjon field_identifier: Identifikasjon
field_is_filter: Brukes som filter field_is_filter: Brukes som filter
field_issue_to: Relaterte saker field_issue_to: Relatert saker
field_delay: Forsinkelse field_delay: Forsinkelse
field_assignable: Saker kan tildeles denne rollen field_assignable: Saker kan tildeles denne rollen
field_redirect_existing_links: Viderekoble eksisterende lenker field_redirect_existing_links: Viderekoble eksisterende lenker
@@ -266,24 +266,24 @@
setting_self_registration: Selvregistrering setting_self_registration: Selvregistrering
setting_attachment_max_size: Maks. størrelse vedlegg setting_attachment_max_size: Maks. størrelse vedlegg
setting_issues_export_limit: Eksportgrense for saker setting_issues_export_limit: Eksportgrense for saker
setting_mail_from: Avsenders epost setting_mail_from: Avsenders e-post
setting_bcc_recipients: Blindkopi (bcc) til mottakere setting_bcc_recipients: Blindkopi (bcc) til mottakere
setting_host_name: Vertsnavn setting_host_name: Vertsnavn
setting_text_formatting: Tekstformattering setting_text_formatting: Tekstformattering
setting_wiki_compression: Komprimering av Wiki-historikk setting_wiki_compression: Komprimering av Wiki-historikk
setting_feeds_limit: Innholdsgrense for Feed setting_feeds_limit: Innholdsgrense for Feed
setting_default_projects_public: Nye prosjekter er offentlige som standard setting_default_projects_public: Nye prosjekter er offentlige som standard
setting_autofetch_changesets: Autohenting av endringssett setting_autofetch_changesets: Autohenting av innsendinger
setting_sys_api_enabled: Aktiver webservice for depot-administrasjon setting_sys_api_enabled: Aktiver webservice for depot-administrasjon
setting_commit_ref_keywords: Nøkkelord for referanse setting_commit_ref_keywords: Nøkkelord for referanse
setting_commit_fix_keywords: Nøkkelord for retting setting_commit_fix_keywords: Nøkkelord for retting
setting_autologin: Autoinnlogging setting_autologin: Autoinnlogging
setting_date_format: Datoformat setting_date_format: Datoformat
setting_time_format: Tidsformat setting_time_format: Tidsformat
setting_cross_project_issue_relations: Tillat saksrelasjoner på kryss av prosjekter setting_cross_project_issue_relations: Tillat saksrelasjoner mellom prosjekter
setting_issue_list_default_columns: Standardkolonner vist i sakslisten setting_issue_list_default_columns: Standardkolonner vist i sakslisten
setting_repositories_encodings: Depot-tegnsett setting_repositories_encodings: Depot-tegnsett
setting_emails_footer: Epost-signatur setting_emails_footer: E-post-signatur
setting_protocol: Protokoll setting_protocol: Protokoll
setting_per_page_options: Alternativer, objekter pr. side setting_per_page_options: Alternativer, objekter pr. side
setting_user_format: Visningsformat, brukere setting_user_format: Visningsformat, brukere
@@ -291,8 +291,8 @@
setting_display_subprojects_issues: Vis saker fra underprosjekter på hovedprosjekt som standard setting_display_subprojects_issues: Vis saker fra underprosjekter på hovedprosjekt som standard
setting_enabled_scm: Aktiviserte SCM setting_enabled_scm: Aktiviserte SCM
project_module_issue_tracking: Sakshåndtering project_module_issue_tracking: Sakssporing
project_module_time_tracking: Tidsregistrering project_module_time_tracking: Tidssporing
project_module_news: Nyheter project_module_news: Nyheter
project_module_documents: Dokumenter project_module_documents: Dokumenter
project_module_files: Filer project_module_files: Filer
@@ -326,7 +326,7 @@
label_role: Rolle label_role: Rolle
label_role_plural: Roller label_role_plural: Roller
label_role_new: Ny rolle label_role_new: Ny rolle
label_role_and_permissions: Roller og rettigheter label_role_and_permissions: Roller og tillatelser
label_member: Medlem label_member: Medlem
label_member_new: Nytt medlem label_member_new: Nytt medlem
label_member_plural: Medlemmer label_member_plural: Medlemmer
@@ -343,7 +343,7 @@
label_custom_field: Eget felt label_custom_field: Eget felt
label_custom_field_plural: Egne felt label_custom_field_plural: Egne felt
label_custom_field_new: Nytt eget felt label_custom_field_new: Nytt eget felt
label_enumerations: Listeverdier label_enumerations: Kodelister
label_enumeration_new: Ny verdi label_enumeration_new: Ny verdi
label_information: Informasjon label_information: Informasjon
label_information_plural: Informasjon label_information_plural: Informasjon
@@ -367,10 +367,10 @@
label_new: Ny label_new: Ny
label_logged_as: Innlogget som label_logged_as: Innlogget som
label_environment: Miljø label_environment: Miljø
label_authentication: Autentisering label_authentication: Autentifikasjon
label_auth_source: Autentiseringskilde label_auth_source: Autentifikasjonsmodus
label_auth_source_new: Ny autentiseringskilde label_auth_source_new: Ny autentifikasjonmodus
label_auth_source_plural: Autentiseringskilder label_auth_source_plural: Autentifikasjonsmoduser
label_subproject_plural: Underprosjekter label_subproject_plural: Underprosjekter
label_and_its_subprojects: "%{value} og dets underprosjekter" label_and_its_subprojects: "%{value} og dets underprosjekter"
label_min_max_length: Min.-maks. lengde label_min_max_length: Min.-maks. lengde
@@ -423,13 +423,13 @@
one: 1 åpen one: 1 åpen
other: "%{count} åpne" other: "%{count} åpne"
label_x_closed_issues_abbr: label_x_closed_issues_abbr:
zero: 0 lukket zero: 0 lukka
one: 1 lukket one: 1 lukka
other: "%{count} lukket" other: "%{count} lukka"
label_total: Totalt label_total: Totalt
label_permissions: Rettigheter label_permissions: Godkjenninger
label_current_status: Nåværende status label_current_status: Nåværende status
label_new_statuses_allowed: Tillate nye statuser label_new_statuses_allowed: Tillatte nye statuser
label_all: alle label_all: alle
label_none: ingen label_none: ingen
label_nobody: ingen label_nobody: ingen
@@ -437,7 +437,7 @@
label_previous: Forrige label_previous: Forrige
label_used_by: Brukt av label_used_by: Brukt av
label_details: Detaljer label_details: Detaljer
label_add_note: Legg til notat label_add_note: Legg til notis
label_per_page: Pr. side label_per_page: Pr. side
label_calendar: Kalender label_calendar: Kalender
label_months_from: måneder fra label_months_from: måneder fra
@@ -449,7 +449,7 @@
label_comment: Kommentar label_comment: Kommentar
label_comment_plural: Kommentarer label_comment_plural: Kommentarer
label_x_comments: label_x_comments:
zero: ingen kommentarer zero: no kommentarer
one: 1 kommentar one: 1 kommentar
other: "%{count} kommentarer" other: "%{count} kommentarer"
label_comment_add: Legg til kommentar label_comment_add: Legg til kommentar
@@ -518,11 +518,11 @@
label_preview: Forhåndsvis label_preview: Forhåndsvis
label_feed_plural: Feeder label_feed_plural: Feeder
label_changes_details: Detaljer om alle endringer label_changes_details: Detaljer om alle endringer
label_issue_tracking: Sakshåndtering label_issue_tracking: Sakssporing
label_spent_time: Brukt tid label_spent_time: Brukt tid
label_f_hour: "%{value} time" label_f_hour: "%{value} time"
label_f_hour_plural: "%{value} timer" label_f_hour_plural: "%{value} timer"
label_time_tracking: Tidsregistrering label_time_tracking: Tidssporing
label_change_plural: Endringer label_change_plural: Endringer
label_statistics: Statistikk label_statistics: Statistikk
label_commits_per_month: Innsendinger pr. måned label_commits_per_month: Innsendinger pr. måned
@@ -532,7 +532,7 @@
label_diff_side_by_side: side ved side label_diff_side_by_side: side ved side
label_options: Alternativer label_options: Alternativer
label_copy_workflow_from: Kopier arbeidsflyt fra label_copy_workflow_from: Kopier arbeidsflyt fra
label_permissions_report: Rettighetsrapport label_permissions_report: Godkjenningsrapport
label_watched_issues: Overvåkede saker label_watched_issues: Overvåkede saker
label_related_issues: Relaterte saker label_related_issues: Relaterte saker
label_applied_status: Gitt status label_applied_status: Gitt status
@@ -571,7 +571,7 @@
label_date_to: Til label_date_to: Til
label_language_based: Basert på brukerens språk label_language_based: Basert på brukerens språk
label_sort_by: "Sorter etter %{value}" label_sort_by: "Sorter etter %{value}"
label_send_test_email: Send en epost-test label_send_test_email: Send en e-post-test
label_feeds_access_key_created_on: "RSS tilgangsnøkkel opprettet for %{value} siden" label_feeds_access_key_created_on: "RSS tilgangsnøkkel opprettet for %{value} siden"
label_module_plural: Moduler label_module_plural: Moduler
label_added_time_by: "Lagt til av %{author} for %{age} siden" label_added_time_by: "Lagt til av %{author} for %{age} siden"
@@ -598,7 +598,7 @@
label_more: Mer label_more: Mer
label_scm: SCM label_scm: SCM
label_plugins: Tillegg label_plugins: Tillegg
label_ldap_authentication: LDAP-autentisering label_ldap_authentication: LDAP-autentifikasjon
label_downloads_abbr: Nedl. label_downloads_abbr: Nedl.
label_optional_description: Valgfri beskrivelse label_optional_description: Valgfri beskrivelse
label_add_another_file: Legg til en fil til label_add_another_file: Legg til en fil til
@@ -650,7 +650,7 @@
status_locked: låst status_locked: låst
text_select_mail_notifications: Velg hendelser som skal varsles med e-post. text_select_mail_notifications: Velg hendelser som skal varsles med e-post.
text_regexp_info: f.eks. ^[A-Z0-9]+$ text_regexp_info: eg. ^[A-Z0-9]+$
text_min_max_length_info: 0 betyr ingen begrensning text_min_max_length_info: 0 betyr ingen begrensning
text_project_destroy_confirmation: Er du sikker på at du vil slette dette prosjekter og alle relatert data ? text_project_destroy_confirmation: Er du sikker på at du vil slette dette prosjekter og alle relatert data ?
text_subprojects_destroy_warning: "Underprojekt(ene): %{value} vil også bli slettet." text_subprojects_destroy_warning: "Underprojekt(ene): %{value} vil også bli slettet."
@@ -667,8 +667,8 @@
text_unallowed_characters: Ugyldige tegn text_unallowed_characters: Ugyldige tegn
text_comma_separated: Flere verdier tillat (kommaseparert). text_comma_separated: Flere verdier tillat (kommaseparert).
text_issues_ref_in_commit_messages: Referering og retting av saker i innsendingsmelding text_issues_ref_in_commit_messages: Referering og retting av saker i innsendingsmelding
text_issue_added: "Sak %{id} er innrapportert av %{author}." text_issue_added: "Issue %{id} has been reported by %{author}."
text_issue_updated: "Sak %{id} er oppdatert av %{author}." text_issue_updated: "Issue %{id} has been updated by %{author}."
text_wiki_destroy_confirmation: Er du sikker på at du vil slette denne wikien og alt innholdet ? text_wiki_destroy_confirmation: Er du sikker på at du vil slette denne wikien og alt innholdet ?
text_issue_category_destroy_question: "Noen saker (%{count}) er lagt til i denne kategorien. Hva vil du gjøre ?" text_issue_category_destroy_question: "Noen saker (%{count}) er lagt til i denne kategorien. Hva vil du gjøre ?"
text_issue_category_destroy_assignments: Fjern bruk av kategorier text_issue_category_destroy_assignments: Fjern bruk av kategorier
@@ -695,12 +695,12 @@
default_tracker_feature: Funksjon default_tracker_feature: Funksjon
default_tracker_support: Support default_tracker_support: Support
default_issue_status_new: Ny default_issue_status_new: Ny
default_issue_status_in_progress: Pågår default_issue_status_in_progress: In Progress
default_issue_status_resolved: Avklart default_issue_status_resolved: Avklart
default_issue_status_feedback: Tilbakemelding default_issue_status_feedback: Tilbakemelding
default_issue_status_closed: Lukket default_issue_status_closed: Lukket
default_issue_status_rejected: Avvist default_issue_status_rejected: Avvist
default_doc_category_user: Brukerdokumentasjon default_doc_category_user: Bruker-dokumentasjon
default_doc_category_tech: Teknisk dokumentasjon default_doc_category_tech: Teknisk dokumentasjon
default_priority_low: Lav default_priority_low: Lav
default_priority_normal: Normal default_priority_normal: Normal
@@ -711,16 +711,16 @@
default_activity_development: Utvikling default_activity_development: Utvikling
enumeration_issue_priorities: Sakssprioriteringer enumeration_issue_priorities: Sakssprioriteringer
enumeration_doc_categories: Dokumentkategorier enumeration_doc_categories: Dokument-kategorier
enumeration_activities: Aktiviteter (tidsregistrering) enumeration_activities: Aktiviteter (tidssporing)
text_enumeration_category_reassign_to: 'Endre dem til denne verdien:' text_enumeration_category_reassign_to: 'Endre dem til denne verdien:'
text_enumeration_destroy_question: "%{count} objekter er endret til denne verdien." text_enumeration_destroy_question: "%{count} objekter er endret til denne verdien."
label_incoming_emails: Innkommende e-post label_incoming_emails: Innkommende e-post
label_generate_key: Generer en nøkkel label_generate_key: Generer en nøkkel
setting_mail_handler_api_enabled: Skru på WS for innkommende epost setting_mail_handler_api_enabled: Skru på WS for innkommende e-post
setting_mail_handler_api_key: API-nøkkel setting_mail_handler_api_key: API-nøkkel
text_email_delivery_not_configured: "Levering av epost er ikke satt opp, og varsler er skrudd av.\nStill inn din SMTP-tjener i config/configuration.yml og start programmet på nytt for å skru det på." text_email_delivery_not_configured: "Levering av e-post er ikke satt opp, og varsler er skrudd av.\nStill inn din SMTP-tjener i config/configuration.yml og start programmet på nytt for å skru det på."
field_parent_title: Overordnet side field_parent_title: Foreldreside
label_issue_watchers: Overvåkere label_issue_watchers: Overvåkere
button_quote: Sitat button_quote: Sitat
setting_sequential_project_identifiers: Generer sekvensielle prosjekt-IDer setting_sequential_project_identifiers: Generer sekvensielle prosjekt-IDer
@@ -731,39 +731,39 @@
permission_view_files: Vise filer permission_view_files: Vise filer
permission_edit_issues: Redigere saker permission_edit_issues: Redigere saker
permission_edit_own_time_entries: Redigere egne timelister permission_edit_own_time_entries: Redigere egne timelister
permission_manage_public_queries: Administrere delte søk permission_manage_public_queries: Behandle delte søk
permission_add_issues: Legge inn saker permission_add_issues: Legge inn saker
permission_log_time: Loggføre timer permission_log_time: Loggføre timer
permission_view_changesets: Vise endringssett permission_view_changesets: Vise endringssett
permission_view_time_entries: Vise brukte timer permission_view_time_entries: Vise brukte timer
permission_manage_versions: Administrere versjoner permission_manage_versions: Behandle versjoner
permission_manage_wiki: Administrere wiki permission_manage_wiki: Behandle wiki
permission_manage_categories: Administrere kategorier for saker permission_manage_categories: Behandle kategorier for saker
permission_protect_wiki_pages: Beskytte wiki-sider permission_protect_wiki_pages: Beskytte wiki-sider
permission_comment_news: Kommentere nyheter permission_comment_news: Kommentere nyheter
permission_delete_messages: Slette meldinger permission_delete_messages: Slette meldinger
permission_select_project_modules: Velge prosjektmoduler permission_select_project_modules: Velge prosjekt-moduler
permission_manage_documents: Administrere dokumenter permission_manage_documents: Behandle dokumenter
permission_edit_wiki_pages: Redigere wiki-sider permission_edit_wiki_pages: Redigere wiki-sider
permission_add_issue_watchers: Legge til overvåkere permission_add_issue_watchers: Legge til overvåkere
permission_view_gantt: Vise gantt-diagram permission_view_gantt: Vise gantt-diagram
permission_move_issues: Flytte saker permission_move_issues: Flytte saker
permission_manage_issue_relations: Administrere saksrelasjoner permission_manage_issue_relations: Behandle saksrelasjoner
permission_delete_wiki_pages: Slette wiki-sider permission_delete_wiki_pages: Slette wiki-sider
permission_manage_boards: Administrere forum permission_manage_boards: Behandle forum
permission_delete_wiki_pages_attachments: Slette vedlegg permission_delete_wiki_pages_attachments: Slette vedlegg
permission_view_wiki_edits: Vise wiki-historie permission_view_wiki_edits: Vise wiki-historie
permission_add_messages: Sende meldinger permission_add_messages: Sende meldinger
permission_view_messages: Vise meldinger permission_view_messages: Vise meldinger
permission_manage_files: Administrere filer permission_manage_files: Behandle filer
permission_edit_issue_notes: Redigere notater permission_edit_issue_notes: Redigere notater
permission_manage_news: Administrere nyheter permission_manage_news: Behandle nyheter
permission_view_calendar: Vise kalender permission_view_calendar: Vise kalender
permission_manage_members: Administrere medlemmer permission_manage_members: Behandle medlemmer
permission_edit_messages: Redigere meldinger permission_edit_messages: Redigere meldinger
permission_delete_issues: Slette saker permission_delete_issues: Slette saker
permission_view_issue_watchers: Vise liste over overvåkere permission_view_issue_watchers: Vise liste over overvåkere
permission_manage_repository: Administrere depot permission_manage_repository: Behandle depot
permission_commit_access: Tilgang til innsending permission_commit_access: Tilgang til innsending
permission_browse_repository: Bla gjennom depot permission_browse_repository: Bla gjennom depot
permission_view_documents: Vise dokumenter permission_view_documents: Vise dokumenter
@@ -777,191 +777,189 @@
setting_gravatar_enabled: Bruk Gravatar-brukerikoner setting_gravatar_enabled: Bruk Gravatar-brukerikoner
label_example: Eksempel label_example: Eksempel
text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
permission_edit_own_messages: Rediger egne meldinger permission_edit_own_messages: Edit own messages
permission_delete_own_messages: Slett egne meldinger permission_delete_own_messages: Delete own messages
label_user_activity: "%{value}s aktivitet" label_user_activity: "%{value}'s activity"
label_updated_time_by: "Oppdatert av %{author} for %{age} siden" label_updated_time_by: "Updated by %{author} %{age} ago"
text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.'
setting_diff_max_lines_displayed: Max number of diff lines displayed setting_diff_max_lines_displayed: Max number of diff lines displayed
text_plugin_assets_writable: Plugin assets directory writable text_plugin_assets_writable: Plugin assets directory writable
warning_attachments_not_saved: "%{count} fil(er) kunne ikke lagres." warning_attachments_not_saved: "%{count} file(s) could not be saved."
button_create_and_continue: Opprett og fortsett button_create_and_continue: Create and continue
text_custom_field_possible_values_info: 'En linje for hver verdi' text_custom_field_possible_values_info: 'One line for each value'
label_display: Visning label_display: Display
field_editable: Redigerbar field_editable: Editable
setting_repository_log_display_limit: Maks antall revisjoner vist i fil-loggen setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Max size of text files displayed inline setting_file_max_size_displayed: Max size of text files displayed inline
field_watcher: Overvåker field_watcher: Watcher
setting_openid: Tillat OpenID innlogging og registrering setting_openid: Allow OpenID login and registration
field_identity_url: OpenID URL field_identity_url: OpenID URL
label_login_with_open_id_option: eller logg inn med OpenID label_login_with_open_id_option: or login with OpenID
field_content: Innhold field_content: Content
label_descending: Synkende label_descending: Descending
label_sort: Sorter label_sort: Sort
label_ascending: Stigende label_ascending: Ascending
label_date_from_to: Fra %{start} til %{end} label_date_from_to: From %{start} to %{end}
label_greater_or_equal: ">=" label_greater_or_equal: ">="
label_less_or_equal: <= label_less_or_equal: <=
text_wiki_page_destroy_question: Denne siden har %{descendants} underside(r). Hva ønsker du å gjøre? text_wiki_page_destroy_question: This page has %{descendants} child page(s) and descendant(s). What do you want to do?
text_wiki_page_reassign_children: Tilknytt undersider til denne overordnede siden text_wiki_page_reassign_children: Reassign child pages to this parent page
text_wiki_page_nullify_children: Behold undersider som rotsider text_wiki_page_nullify_children: Keep child pages as root pages
text_wiki_page_destroy_children: Slett undersider og alle deres underliggende sider text_wiki_page_destroy_children: Delete child pages and all their descendants
setting_password_min_length: Minimum passordlengde setting_password_min_length: Minimum password length
field_group_by: Grupper resultater etter field_group_by: Group results by
mail_subject_wiki_content_updated: "Wiki-side '%{id}' er oppdatert" mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated"
label_wiki_content_added: Wiki-side opprettet label_wiki_content_added: Wiki page added
mail_subject_wiki_content_added: "Wiki-side '%{id}' er opprettet" mail_subject_wiki_content_added: "'%{id}' wiki page has been added"
mail_body_wiki_content_added: Wiki-siden '%{id}' ble opprettet av %{author}. mail_body_wiki_content_added: The '%{id}' wiki page has been added by %{author}.
label_wiki_content_updated: Wiki-side oppdatert label_wiki_content_updated: Wiki page updated
mail_body_wiki_content_updated: Wiki-siden '%{id}' ble oppdatert av %{author}. mail_body_wiki_content_updated: The '%{id}' wiki page has been updated by %{author}.
permission_add_project: Opprett prosjekt permission_add_project: Create project
setting_new_project_user_role_id: Rolle gitt en ikke-administratorbruker som oppretter et prosjekt setting_new_project_user_role_id: Role given to a non-admin user who creates a project
label_view_all_revisions: Se alle revisjoner label_view_all_revisions: View all revisions
label_tag: Tag label_tag: Tag
label_branch: Gren label_branch: Branch
error_no_tracker_in_project: Ingen sakstyper er tilknyttet dette prosjektet. Vennligst kontroller prosjektets innstillinger. error_no_tracker_in_project: No tracker is associated to this project. Please check the Project settings.
error_no_default_issue_status: Ingen standard saksstatus er angitt. Vennligst kontroller konfigurasjonen (Gå til "Administrasjon -> Saksstatuser"). error_no_default_issue_status: No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").
text_journal_changed: "%{label} endret fra %{old} til %{new}" text_journal_changed: "%{label} changed from %{old} to %{new}"
text_journal_set_to: "%{label} satt til %{value}" text_journal_set_to: "%{label} set to %{value}"
text_journal_deleted: "%{label} slettet (%{old})" text_journal_deleted: "%{label} deleted (%{old})"
label_group_plural: Grupper label_group_plural: Groups
label_group: Gruppe label_group: Group
label_group_new: Ny gruppe label_group_new: New group
label_time_entry_plural: Brukt tid label_time_entry_plural: Spent time
text_journal_added: "%{label} %{value} lagt til" text_journal_added: "%{label} %{value} added"
field_active: Aktiv field_active: Active
enumeration_system_activity: Systemaktivitet enumeration_system_activity: System Activity
permission_delete_issue_watchers: Slett overvåkere permission_delete_issue_watchers: Delete watchers
version_status_closed: stengt version_status_closed: closed
version_status_locked: låst version_status_locked: locked
version_status_open: åpen version_status_open: open
error_can_not_reopen_issue_on_closed_version: En sak tilknyttet en stengt versjon kan ikke gjenåpnes. error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened
label_user_anonymous: Anonym label_user_anonymous: Anonymous
button_move_and_follow: Flytt og følg etter button_move_and_follow: Move and follow
setting_default_projects_modules: Standard aktiverte moduler for nye prosjekter setting_default_projects_modules: Default enabled modules for new projects
setting_gravatar_default: Standard Gravatar-bilde setting_gravatar_default: Default Gravatar image
field_sharing: Deling field_sharing: Sharing
label_version_sharing_hierarchy: Med prosjekt-hierarki label_version_sharing_hierarchy: With project hierarchy
label_version_sharing_system: Med alle prosjekter label_version_sharing_system: With all projects
label_version_sharing_descendants: Med underprosjekter label_version_sharing_descendants: With subprojects
label_version_sharing_tree: Med prosjekt-tre label_version_sharing_tree: With project tree
label_version_sharing_none: Ikke delt label_version_sharing_none: Not shared
error_can_not_archive_project: Dette prosjektet kan ikke arkiveres error_can_not_archive_project: This project can not be archived
button_duplicate: Duplikat button_duplicate: Duplicate
button_copy_and_follow: Kopier og følg etter button_copy_and_follow: Copy and follow
label_copy_source: Kilde label_copy_source: Source
setting_issue_done_ratio: Kalkuler ferdigstillingsprosent ut i fra setting_issue_done_ratio: Calculate the issue done ratio with
setting_issue_done_ratio_issue_status: Bruk saksstatuser setting_issue_done_ratio_issue_status: Use the issue status
error_issue_done_ratios_not_updated: Ferdigstillingsprosent oppdateres ikke. error_issue_done_ratios_not_updated: Issue done ratios not updated.
error_workflow_copy_target: Vennligst velg sakstype(r) og rolle(r) error_workflow_copy_target: Please select target tracker(s) and role(s)
setting_issue_done_ratio_issue_field: Bruk felt fra saker setting_issue_done_ratio_issue_field: Use the issue field
label_copy_same_as_target: Samme som mål label_copy_same_as_target: Same as target
label_copy_target: Mål label_copy_target: Target
notice_issue_done_ratios_updated: Ferdigstillingsprosent oppdatert. notice_issue_done_ratios_updated: Issue done ratios updated.
error_workflow_copy_source: Vennligst velg en kilde-sakstype eller rolle. error_workflow_copy_source: Please select a source tracker or role
label_update_issue_done_ratios: Oppdatert ferdigstillingsprosent label_update_issue_done_ratios: Update issue done ratios
setting_start_of_week: Start kalender på setting_start_of_week: Start calendars on
permission_view_issues: Se på saker permission_view_issues: View Issues
label_display_used_statuses_only: Vis kun statuser som brukes av denne sakstypen label_display_used_statuses_only: Only display statuses that are used by this tracker
label_revision_id: Revision %{value} label_revision_id: Revision %{value}
label_api_access_key: API tilgangsnøkkel label_api_access_key: API access key
label_api_access_key_created_on: API tilgangsnøkkel opprettet for %{value} siden label_api_access_key_created_on: API access key created %{value} ago
label_feeds_access_key: RSS tilgangsnøkkel label_feeds_access_key: RSS access key
notice_api_access_key_reseted: Din API tilgangsnøkkel ble resatt. notice_api_access_key_reseted: Your API access key was reset.
setting_rest_api_enabled: Aktiver REST webservice setting_rest_api_enabled: Enable REST web service
label_missing_api_access_key: Mangler en API tilgangsnøkkel label_missing_api_access_key: Missing an API access key
label_missing_feeds_access_key: Mangler en RSS tilgangsnøkkel label_missing_feeds_access_key: Missing a RSS access key
button_show: Vis button_show: Show
text_line_separated: Flere verdier er tillatt (en linje per verdi). text_line_separated: Multiple values allowed (one line for each value).
setting_mail_handler_body_delimiters: Avkort epost etter en av disse linjene setting_mail_handler_body_delimiters: Truncate emails after one of these lines
permission_add_subprojects: Opprett underprosjekt permission_add_subprojects: Create subprojects
label_subproject_new: Nytt underprosjekt label_subproject_new: New subproject
text_own_membership_delete_confirmation: |- text_own_membership_delete_confirmation: |-
Du er i ferd med å fjerne noen eller alle rettigheter og vil kanskje ikke være i stand til å redigere dette prosjektet etterpå. You are about to remove some or all of your permissions and may no longer be able to edit this project after that.
Er du sikker på at du vil fortsette? Are you sure you want to continue?
label_close_versions: Steng fullførte versjoner label_close_versions: Close completed versions
label_board_sticky: Fast label_board_sticky: Sticky
label_board_locked: Låst label_board_locked: Locked
permission_export_wiki_pages: Eksporter wiki-sider permission_export_wiki_pages: Export wiki pages
setting_cache_formatted_text: Mellomlagre formattert tekst setting_cache_formatted_text: Cache formatted text
permission_manage_project_activities: Administrere prosjektaktiviteter permission_manage_project_activities: Manage project activities
error_unable_delete_issue_status: Kan ikke slette saksstatus error_unable_delete_issue_status: Unable to delete issue status
label_profile: Profil label_profile: Profile
permission_manage_subtasks: Administrere undersaker permission_manage_subtasks: Manage subtasks
field_parent_issue: Overordnet sak field_parent_issue: Parent task
label_subtask_plural: Undersaker label_subtask_plural: Subtasks
label_project_copy_notifications: Send epost-varslinger under prosjektkopiering label_project_copy_notifications: Send email notifications during the project copy
error_can_not_delete_custom_field: Kan ikke slette eget felt error_can_not_delete_custom_field: Unable to delete custom field
error_unable_to_connect: Kunne ikke koble til (%{value}) error_unable_to_connect: Unable to connect (%{value})
error_can_not_remove_role: Denne rollen er i bruk og kan ikke slettes. error_can_not_remove_role: This role is in use and can not be deleted.
error_can_not_delete_tracker: Denne sakstypen inneholder saker og kan ikke slettes. error_can_not_delete_tracker: This tracker contains issues and can't be deleted.
field_principal: Principal field_principal: Principal
label_my_page_block: Min side felt label_my_page_block: My page block
notice_failed_to_save_members: "Feil ved lagring av medlem(mer): %{errors}." notice_failed_to_save_members: "Failed to save member(s): %{errors}."
text_zoom_out: Zoom ut text_zoom_out: Zoom out
text_zoom_in: Zoom inn text_zoom_in: Zoom in
notice_unable_delete_time_entry: Kan ikke slette oppføring fra timeliste. notice_unable_delete_time_entry: Unable to delete time log entry.
label_overall_spent_time: All tidsbruk label_overall_spent_time: Overall spent time
field_time_entries: Loggfør tid field_time_entries: Log time
project_module_gantt: Gantt project_module_gantt: Gantt
project_module_calendar: Kalender project_module_calendar: Calendar
button_edit_associated_wikipage: "Rediger tilhørende Wiki-side: %{page_title}" button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}"
text_are_you_sure_with_children: Slett sak og alle undersaker? text_are_you_sure_with_children: Delete issue and all child issues?
field_text: Tekstfelt field_text: Text field
label_user_mail_option_only_owner: Kun for ting jeg eier label_user_mail_option_only_owner: Only for things I am the owner of
setting_default_notification_option: Standardvalg for varslinger setting_default_notification_option: Default notification option
label_user_mail_option_only_my_events: Kun for ting jeg overvåker eller er involvert i label_user_mail_option_only_my_events: Only for things I watch or I'm involved in
label_user_mail_option_only_assigned: Kun for ting jeg er tildelt label_user_mail_option_only_assigned: Only for things I am assigned to
label_user_mail_option_none: Ingen hendelser label_user_mail_option_none: No events
field_member_of_group: Den tildeltes gruppe field_member_of_group: Assignee's group
field_assigned_to_role: Den tildeltes rolle field_assigned_to_role: Assignee's role
notice_not_authorized_archived_project: Prosjektet du forsøker å åpne er blitt arkivert. notice_not_authorized_archived_project: The project you're trying to access has been archived.
label_principal_search: "Søk etter bruker eller gruppe:" label_principal_search: "Search for user or group:"
label_user_search: "Søk etter bruker:" label_user_search: "Search for user:"
field_visible: Synlig field_visible: Visible
setting_emails_header: Eposthode setting_emails_header: Emails header
setting_commit_logtime_activity_id: Aktivitet for logget tid. setting_commit_logtime_activity_id: Activity for logged time
text_time_logged_by_changeset: Lagt til i endringssett %{value}. text_time_logged_by_changeset: Applied in changeset %{value}.
setting_commit_logtime_enabled: Muliggjør loggføring av tid setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: Diagrammet ble avkortet fordi det overstiger det maksimale antall elementer som kan vises (%{max}) notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Maksimalt antall elementer vist på gantt-diagrammet setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
field_warn_on_leaving_unsaved: Vis meg en advarsel når jeg forlater en side med ikke lagret tekst field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
text_warn_on_leaving_unsaved: Den gjeldende siden inneholder tekst som ikke er lagret, som vil bli tapt hvis du forlater denne siden. text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
label_my_queries: Mine egne spørringer label_my_queries: My custom queries
text_journal_changed_no_detail: "%{label} oppdatert" text_journal_changed_no_detail: "%{label} updated"
label_news_comment_added: Kommentar lagt til en nyhet label_news_comment_added: Comment added to a news
button_expand_all: Utvid alle button_expand_all: Expand all
button_collapse_all: Kollaps alle button_collapse_all: Collapse all
label_additional_workflow_transitions_for_assignee: Ytterligere overganger tillatt når brukeren er sakens tildelte label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
label_additional_workflow_transitions_for_author: Ytterligere overganger tillatt når brukeren er den som har opprettet saken label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author
label_bulk_edit_selected_time_entries: Masserediger valgte timeliste-oppføringer label_bulk_edit_selected_time_entries: Bulk edit selected time entries
text_time_entries_destroy_confirmation: Er du sikker på du vil slette de(n) valgte timeliste-oppføringen(e)? text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)?
label_role_anonymous: Anonym label_role_anonymous: Anonymous
label_role_non_member: Ikke medlem label_role_non_member: Non member
label_issue_note_added: Notat lagt til label_issue_note_added: Note added
label_issue_status_updated: Status oppdatert label_issue_status_updated: Status updated
label_issue_priority_updated: Prioritet oppdatert label_issue_priority_updated: Priority updated
label_issues_visibility_own: Saker opprettet av eller tildelt brukeren label_issues_visibility_own: Issues created by or assigned to the user
field_issues_visibility: Synlighet på saker field_issues_visibility: Issues visibility
label_issues_visibility_all: Alle saker label_issues_visibility_all: All issues
permission_set_own_issues_private: Gjør egne saker offentlige eller private permission_set_own_issues_private: Set own issues public or private
field_is_private: Privat field_is_private: Private
permission_set_issues_private: Gjør saker offentlige eller private permission_set_issues_private: Set issues public or private
label_issues_visibility_public: Alle ikke-private saker label_issues_visibility_public: All non private issues
text_issues_destroy_descendants_confirmation: Dette vil også slette %{count} undersak(er). text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s).
field_commit_logs_encoding: Tegnkoding for innsendingsmeldinger field_commit_logs_encoding: Tegnkoding for innsendingsmeldinger
field_scm_path_encoding: Koding av sti field_scm_path_encoding: Path encoding
text_scm_path_encoding_note: "Standard: UTF-8" text_scm_path_encoding_note: "Default: UTF-8"
field_path_to_repository: Sti til depot field_path_to_repository: Path to repository
field_root_directory: Rotkatalog field_root_directory: Root directory
field_cvs_module: Modul field_cvs_module: Module
field_cvsroot: CVSROOT field_cvsroot: CVSROOT
text_mercurial_repository_note: Lokalt depot (f.eks. /hgrepo, c:\hgrepo) text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo)
text_scm_command: Kommando text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo)
text_scm_command_version: Versjon text_scm_command: Command
label_git_report_last_commit: Rapporter siste innsending for filer og kataloger text_scm_command_version: Version
text_scm_config: Du kan konfigurere scm kommandoer i config/configuration.yml. Vennligst restart applikasjonen etter å ha redigert filen. label_git_report_last_commit: Report last commit for files and directories
text_scm_command_not_available: Scm kommando er ikke tilgjengelig. Vennligst kontroller innstillingene i administrasjonspanelet. 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_git_repository_note: Depot er bart og lokalt (f.eks. /gitrepo, c:\gitrepo)
+29 -30
View File
@@ -938,7 +938,7 @@ pt-BR:
text_zoom_in: Aproximar zoom text_zoom_in: Aproximar zoom
notice_unable_delete_time_entry: Não foi possível excluir a entrada no registro de horas trabalhadas. notice_unable_delete_time_entry: Não foi possível excluir a entrada no registro de horas trabalhadas.
label_overall_spent_time: Tempo gasto geral label_overall_spent_time: Tempo gasto geral
field_time_entries: Registro de horas field_time_entries: Log time
project_module_gantt: Gantt project_module_gantt: Gantt
project_module_calendar: Calendário project_module_calendar: Calendário
button_edit_associated_wikipage: "Editar página wiki relacionada: %{page_title}" button_edit_associated_wikipage: "Editar página wiki relacionada: %{page_title}"
@@ -961,39 +961,38 @@ pt-BR:
setting_commit_logtime_enabled: Habilitar registro de horas setting_commit_logtime_enabled: Habilitar registro de horas
notice_gantt_chart_truncated: O gráfico foi cortado por exceder o tamanho máximo de linhas que podem ser exibidas (%{max}) notice_gantt_chart_truncated: O gráfico foi cortado por exceder o tamanho máximo de linhas que podem ser exibidas (%{max})
setting_gantt_items_limit: Número máximo de itens exibidos no gráfico gatt setting_gantt_items_limit: Número máximo de itens exibidos no gráfico gatt
field_warn_on_leaving_unsaved: Alertar-me ao sair de uma página sem salvar o texto field_warn_on_leaving_unsaved: Alertar-me ao sarir de uma página sem salvar o texto
text_warn_on_leaving_unsaved: A página atual contem texto que não foi salvo e será perdido se você sair desta página. text_warn_on_leaving_unsaved: A página atual contem texto que não foi salvo e será perdido se você sair desta página.
label_my_queries: Minhas consultas personalizadas label_my_queries: Minhas consultas personalizadas
text_journal_changed_no_detail: "%{label} atualizado(a)" text_journal_changed_no_detail: "%{label} atualizado(a)"
label_news_comment_added: Notícia recebeu um comentário label_news_comment_added: Notícia recebeu um comentário
button_expand_all: Expandir tudo button_expand_all: Expand all
button_collapse_all: Recolher tudo button_collapse_all: Collapse all
label_additional_workflow_transitions_for_assignee: Transições adicionais permitidas quando o usuário é o responsável pela tarefa label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
label_additional_workflow_transitions_for_author: Transições adicionais permitidas quando o usuário é o autor 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
label_bulk_edit_selected_time_entries: Alteração em massa do registro de horas text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)?
text_time_entries_destroy_confirmation: Tem certeza que quer excluir o(s) registro(s) de horas selecionado(s)? label_role_anonymous: Anonymous
label_role_anonymous: Anônimo label_role_non_member: Non member
label_role_non_member: Não Membro label_issues_visibility_own: Issues created by or assigned to the user
label_issues_visibility_own: Tarefas criadas ou atribuídas ao usuário field_issues_visibility: Issues visibility
field_issues_visibility: Visibilidade das tarefas label_issues_visibility_all: All issues
label_issues_visibility_all: Todas as tarefas permission_set_own_issues_private: Set own issues public or private
permission_set_own_issues_private: Alterar as próprias tarefas para públicas ou privadas field_is_private: Private
field_is_private: Privado permission_set_issues_private: Set issues public or private
permission_set_issues_private: Alterar tarefas para públicas ou privadas label_issues_visibility_public: All non private issues
label_issues_visibility_public: Todas as tarefas não privadas text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s).
text_issues_destroy_descendants_confirmation: Isto também irá excluir %{count} subtarefa(s).
field_commit_logs_encoding: Codificação das mensagens de commit field_commit_logs_encoding: Codificação das mensagens de commit
field_scm_path_encoding: Codificação do caminho field_scm_path_encoding: Path encoding
text_scm_path_encoding_note: "Padrão: UTF-8" text_scm_path_encoding_note: "Default: UTF-8"
field_path_to_repository: Caminho para o repositório field_path_to_repository: Path to repository
field_root_directory: Diretório raiz field_root_directory: Root directory
field_cvs_module: Módulo field_cvs_module: Module
field_cvsroot: CVSROOT field_cvsroot: CVSROOT
text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo) text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo)
text_mercurial_repository_note: "repositório local (ex.: /hgrepo, c:\hgrepo)" text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo)
text_scm_command: Comando text_scm_command: Command
text_scm_command_version: Versão text_scm_command_version: Version
label_git_report_last_commit: Relatar última alteração para arquivos e diretórios label_git_report_last_commit: Report last commit for files and directories
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_config: You can configure your scm commands in config/configuration.yml. Please restart the application after editing it.
text_scm_command_not_available: Comando de versionamento não disponível. Por favor verifique as configurações no painel de administração. text_scm_command_not_available: Scm command is not available. Please check settings on the administration panel.
+2 -2
View File
@@ -511,7 +511,7 @@ ru:
label_filter_add: Добавить фильтр label_filter_add: Добавить фильтр
label_filter_plural: Фильтры label_filter_plural: Фильтры
label_float: С плавающей точкой label_float: С плавающей точкой
label_follows: предыдущая label_follows: следующая
label_gantt: Диаграмма Ганта label_gantt: Диаграмма Ганта
label_general: Общее label_general: Общее
label_generate_key: Сгенерировать ключ label_generate_key: Сгенерировать ключ
@@ -617,7 +617,7 @@ ru:
label_planning: Планирование label_planning: Планирование
label_please_login: Пожалуйста, войдите. label_please_login: Пожалуйста, войдите.
label_plugins: Модули label_plugins: Модули
label_precedes: следующая label_precedes: предыдущая
label_preferences: Предпочтения label_preferences: Предпочтения
label_preview: Предварительный просмотр label_preview: Предварительный просмотр
label_previous: Предыдущий label_previous: Предыдущий
+234 -236
View File
@@ -9,12 +9,12 @@ sl:
short: "%b %d" short: "%b %d"
long: "%B %d, %Y" long: "%B %d, %Y"
day_names: [Nedelja, Ponedeljek, Torek, Sreda, Četrtek, Petek, Sobota] day_names: [Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday]
abbr_day_names: [Ned, Pon, To, Sr, Čet, Pet, Sob] abbr_day_names: [Sun, Mon, Tue, Wed, Thu, Fri, Sat]
# Don't forget the nil at the beginning; there's no such thing as a 0th month # Don't forget the nil at the beginning; there's no such thing as a 0th month
month_names: [~, Januar, Februar, Marec, April, Maj, Junij, Julij, Avgust, September, Oktober, November, December] month_names: [~, January, February, March, April, May, June, July, August, September, October, November, December]
abbr_month_names: [~, Jan, Feb, Mar, Apr, Maj, Jun, Jul, Aug, Sep, Okt, Nov, Dec] abbr_month_names: [~, Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec]
# Used in date_select and datime_select. # Used in date_select and datime_select.
order: order:
- :year - :year
@@ -32,40 +32,40 @@ sl:
datetime: datetime:
distance_in_words: distance_in_words:
half_a_minute: "pol minute" half_a_minute: "half a minute"
less_than_x_seconds: less_than_x_seconds:
one: "manj kot 1. sekundo" one: "less than 1 second"
other: "manj kot %{count} sekund" other: "less than %{count} seconds"
x_seconds: x_seconds:
one: "1. sekunda" one: "1 second"
other: "%{count} sekund" other: "%{count} seconds"
less_than_x_minutes: less_than_x_minutes:
one: "manj kot minuto" one: "less than a minute"
other: "manj kot %{count} minut" other: "less than %{count} minutes"
x_minutes: x_minutes:
one: "1 minuta" one: "1 minute"
other: "%{count} minut" other: "%{count} minutes"
about_x_hours: about_x_hours:
one: "okrog 1. ure" one: "about 1 hour"
other: "okrog %{count} ur" other: "about %{count} hours"
x_days: x_days:
one: "1 dan" one: "1 day"
other: "%{count} dni" other: "%{count} days"
about_x_months: about_x_months:
one: "okrog 1. mesec" one: "about 1 month"
other: "okrog %{count} mesecev" other: "about %{count} months"
x_months: x_months:
one: "1 mesec" one: "1 month"
other: "%{count} mesecev" other: "%{count} months"
about_x_years: about_x_years:
one: "okrog 1. leto" one: "about 1 year"
other: "okrog %{count} let" other: "about %{count} years"
over_x_years: over_x_years:
one: "več kot 1. leto" one: "over 1 year"
other: "več kot %{count} let" other: "over %{count} years"
almost_x_years: almost_x_years:
one: "skoraj 1. leto" one: "almost 1 year"
other: "skoraj %{count} let" other: "almost %{count} years"
number: number:
format: format:
@@ -90,15 +90,15 @@ sl:
# Used in array.to_sentence. # Used in array.to_sentence.
support: support:
array: array:
sentence_connector: "in" sentence_connector: "and"
skip_last_comma: false skip_last_comma: false
activerecord: activerecord:
errors: errors:
template: template:
header: header:
one: "1. napaka je preprečila temu %{model} da bi se shranil" one: "1 error prohibited this %{model} from being saved"
other: "%{count} napak je preprečilo temu %{model} da bi se shranil" other: "%{count} errors prohibited this %{model} from being saved"
messages: messages:
inclusion: "ni vključen na seznamu" inclusion: "ni vključen na seznamu"
exclusion: "je rezerviran" exclusion: "je rezerviran"
@@ -113,17 +113,17 @@ sl:
taken: "je že zaseden" taken: "je že zaseden"
not_a_number: "ni število" not_a_number: "ni število"
not_a_date: "ni veljaven datum" not_a_date: "ni veljaven datum"
greater_than: "mora biti večji kot %{count}" greater_than: "must be greater than %{count}"
greater_than_or_equal_to: "mora biti večji ali enak kot %{count}" greater_than_or_equal_to: "must be greater than or equal to %{count}"
equal_to: "mora biti enak kot %{count}" equal_to: "must be equal to %{count}"
less_than: "mora biti manjši kot %{count}" less_than: "must be less than %{count}"
less_than_or_equal_to: "mora biti manjši ali enak kot %{count}" less_than_or_equal_to: "must be less than or equal to %{count}"
odd: "mora biti sodo" odd: "must be odd"
even: "mora biti liho" even: "must be even"
greater_than_start_date: "mora biti kasnejši kot začetni datum" greater_than_start_date: "mora biti kasnejši kot začeten datum"
not_same_project: "ne pripada istemu projektu" not_same_project: "ne pripada istemu projektu"
circular_dependency: "Ta odnos bi povzročil krožno odvisnost" circular_dependency: "Ta odnos bi povzročil krožno odvisnost"
cant_link_an_issue_with_a_descendant: "Zahtevek ne more biti povezan s svojo podnalogo" cant_link_an_issue_with_a_descendant: "An issue can not be linked to one of its subtasks"
actionview_instancetag_blank_option: Prosimo izberite actionview_instancetag_blank_option: Prosimo izberite
@@ -372,9 +372,9 @@ sl:
label_project_new: Nov projekt label_project_new: Nov projekt
label_project_plural: Projekti label_project_plural: Projekti
label_x_projects: label_x_projects:
zero: ni projektov zero: no projects
one: 1 projekt one: 1 project
other: "%{count} projektov" other: "%{count} projects"
label_project_all: Vsi projekti label_project_all: Vsi projekti
label_project_latest: Zadnji projekti label_project_latest: Zadnji projekti
label_issue: Zahtevek label_issue: Zahtevek
@@ -476,22 +476,22 @@ sl:
label_export_to: 'Na razpolago tudi v:' label_export_to: 'Na razpolago tudi v:'
label_read: Preberi... label_read: Preberi...
label_public_projects: Javni projekti label_public_projects: Javni projekti
label_open_issues: odprt zahtevek label_open_issues: odpri zahtevek
label_open_issues_plural: odprti zahtevki label_open_issues_plural: odpri zahtevke
label_closed_issues: zaprt zahtevek label_closed_issues: zapri zahtevek
label_closed_issues_plural: zaprti zahtevki label_closed_issues_plural: zapri zahtevke
label_x_open_issues_abbr_on_total: label_x_open_issues_abbr_on_total:
zero: 0 odprtih / %{total} zero: 0 open / %{total}
one: 1 odprt / %{total} one: 1 open / %{total}
other: "%{count} odprtih / %{total}" other: "%{count} open / %{total}"
label_x_open_issues_abbr: label_x_open_issues_abbr:
zero: 0 odprtih zero: 0 open
one: 1 odprt one: 1 open
other: "%{count} odprtih" other: "%{count} open"
label_x_closed_issues_abbr: label_x_closed_issues_abbr:
zero: 0 zaprtih zero: 0 closed
one: 1 zaprt one: 1 closed
other: "%{count} zaprtih" other: "%{count} closed"
label_total: Skupaj label_total: Skupaj
label_permissions: Dovoljenja label_permissions: Dovoljenja
label_current_status: Trenutno stanje label_current_status: Trenutno stanje
@@ -507,7 +507,7 @@ sl:
label_per_page: Na stran label_per_page: Na stran
label_calendar: Koledar label_calendar: Koledar
label_months_from: mesecev od label_months_from: mesecev od
label_gantt: Gantogram label_gantt: Gantt
label_internal: Notranji label_internal: Notranji
label_last_changes: "zadnjih %{count} sprememb" label_last_changes: "zadnjih %{count} sprememb"
label_change_view_all: Poglej vse spremembe label_change_view_all: Poglej vse spremembe
@@ -515,9 +515,9 @@ sl:
label_comment: Komentar label_comment: Komentar
label_comment_plural: Komentarji label_comment_plural: Komentarji
label_x_comments: label_x_comments:
zero: ni komentarjev zero: no comments
one: 1 komentar one: 1 comment
other: "%{count} komentarjev" other: "%{count} comments"
label_comment_add: Dodaj komentar label_comment_add: Dodaj komentar
label_comment_added: Komentar dodan label_comment_added: Komentar dodan
label_comment_delete: Izbriši komentarje label_comment_delete: Izbriši komentarje
@@ -774,7 +774,7 @@ sl:
default_tracker_feature: Funkcija default_tracker_feature: Funkcija
default_tracker_support: Podpora default_tracker_support: Podpora
default_issue_status_new: Nov default_issue_status_new: Nov
default_issue_status_in_progress: V teku default_issue_status_in_progress: In Progress
default_issue_status_resolved: Rešen default_issue_status_resolved: Rešen
default_issue_status_feedback: Povratna informacija default_issue_status_feedback: Povratna informacija
default_issue_status_closed: Zaključen default_issue_status_closed: Zaključen
@@ -792,185 +792,183 @@ sl:
enumeration_issue_priorities: Prioritete zahtevkov enumeration_issue_priorities: Prioritete zahtevkov
enumeration_doc_categories: Kategorije dokumentov enumeration_doc_categories: Kategorije dokumentov
enumeration_activities: Aktivnosti (sledenje časa) enumeration_activities: Aktivnosti (sledenje časa)
warning_attachments_not_saved: "%{count} datotek(e) ni bilo mogoče shraniti." warning_attachments_not_saved: "%{count} file(s) could not be saved."
field_editable: Uredljivo field_editable: Editable
text_plugin_assets_writable: Zapisljiva mapa za vtičnike text_plugin_assets_writable: Plugin assets directory writable
label_display: Prikaz label_display: Display
button_create_and_continue: Ustvari in nadaljuj button_create_and_continue: Create and continue
text_custom_field_possible_values_info: 'Ena vrstica za vsako vrednost' text_custom_field_possible_values_info: 'One line for each value'
setting_repository_log_display_limit: Največje število prikazanih revizij v log datoteki setting_repository_log_display_limit: Maximum number of revisions displayed on file log
setting_file_max_size_displayed: Največja velikost besedilnih datotek v vključenem prikazu setting_file_max_size_displayed: Max size of text files displayed inline
field_watcher: Opazovalec field_watcher: Watcher
setting_openid: Dovoli OpenID prijavo in registracijo setting_openid: Allow OpenID login and registration
field_identity_url: OpenID URL field_identity_url: OpenID URL
label_login_with_open_id_option: ali se prijavi z OpenID label_login_with_open_id_option: or login with OpenID
field_content: Vsebina field_content: Content
label_descending: Padajoče label_descending: Descending
label_sort: Razvrsti label_sort: Sort
label_ascending: Naraščajoče label_ascending: Ascending
label_date_from_to: Od %{start} do %{end} label_date_from_to: From %{start} to %{end}
label_greater_or_equal: ">=" label_greater_or_equal: ">="
label_less_or_equal: <= label_less_or_equal: <=
text_wiki_page_destroy_question: Ta stran ima %{descendants} podstran(i) in naslednik(ov). Kaj želite storiti? text_wiki_page_destroy_question: This page has %{descendants} child page(s) and descendant(s). What do you want to do?
text_wiki_page_reassign_children: Znova dodeli podstrani tej glavni strani text_wiki_page_reassign_children: Reassign child pages to this parent page
text_wiki_page_nullify_children: Obdrži podstrani kot glavne strani text_wiki_page_nullify_children: Keep child pages as root pages
text_wiki_page_destroy_children: Izbriši podstrani in vse njihove naslednike text_wiki_page_destroy_children: Delete child pages and all their descendants
setting_password_min_length: Minimalna dolžina gesla setting_password_min_length: Minimum password length
field_group_by: Združi rezultate po field_group_by: Group results by
mail_subject_wiki_content_updated: "'%{id}' wiki stran je bila posodobljena" mail_subject_wiki_content_updated: "'%{id}' wiki page has been updated"
label_wiki_content_added: Wiki stran dodana label_wiki_content_added: Wiki page added
mail_subject_wiki_content_added: "'%{id}' wiki stran je bila dodana" mail_subject_wiki_content_added: "'%{id}' wiki page has been added"
mail_body_wiki_content_added: %{author} je dodal '%{id}' wiki stran mail_body_wiki_content_added: The '%{id}' wiki page has been added by %{author}.
label_wiki_content_updated: Wiki stran posodobljena label_wiki_content_updated: Wiki page updated
mail_body_wiki_content_updated: %{author} je posodobil '%{id}' wiki stran. mail_body_wiki_content_updated: The '%{id}' wiki page has been updated by %{author}.
permission_add_project: Ustvari projekt permission_add_project: Create project
setting_new_project_user_role_id: Vloga, dodeljena neadministratorskemu uporabniku, ki je ustvaril projekt setting_new_project_user_role_id: Role given to a non-admin user who creates a project
label_view_all_revisions: Poglej vse revizije label_view_all_revisions: View all revisions
label_tag: Oznaka label_tag: Tag
label_branch: Veja label_branch: Branch
error_no_tracker_in_project: Noben sledilnik ni povezan s tem projektom. Prosimo preverite nastavitve projekta. error_no_tracker_in_project: No tracker is associated to this project. Please check the Project settings.
error_no_default_issue_status: Privzeti zahtevek ni definiran. Prosimo preverite svoje nastavitve (Pojdite na "Administracija -> Stanje zahtevkov"). error_no_default_issue_status: No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").
text_journal_changed: "%{label} se je spremenilo iz %{old} v %{new}" text_journal_changed: "%{label} changed from %{old} to %{new}"
text_journal_set_to: "%{label} nastavljeno na %{value}" text_journal_set_to: "%{label} set to %{value}"
text_journal_deleted: "%{label} izbrisan (%{old})" text_journal_deleted: "%{label} deleted (%{old})"
label_group_plural: Skupine label_group_plural: Groups
label_group: Skupina label_group: Group
label_group_new: Nova skupina label_group_new: New group
label_time_entry_plural: Porabljen čas label_time_entry_plural: Spent time
text_journal_added: "%{label} %{value} dodan" text_journal_added: "%{label} %{value} added"
field_active: Aktiven field_active: Active
enumeration_system_activity: Sistemska aktivnost enumeration_system_activity: System Activity
permission_delete_issue_watchers: Izbriši opazovalce permission_delete_issue_watchers: Delete watchers
version_status_closed: zaprt version_status_closed: closed
version_status_locked: zaklenjen version_status_locked: locked
version_status_open: odprt version_status_open: open
error_can_not_reopen_issue_on_closed_version: Zahtevek dodeljen zaprti verziji ne more biti ponovno odprt error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened
label_user_anonymous: Anonimni label_user_anonymous: Anonymous
button_move_and_follow: Premakni in sledi button_move_and_follow: Move and follow
setting_default_projects_modules: Privzeti moduli za nove projekte setting_default_projects_modules: Default enabled modules for new projects
setting_gravatar_default: Privzeta Gravatar slika setting_gravatar_default: Default Gravatar image
field_sharing: Deljenje field_sharing: Sharing
label_version_sharing_hierarchy: S projektno hierarhijo label_version_sharing_hierarchy: With project hierarchy
label_version_sharing_system: Z vsemi projekti label_version_sharing_system: With all projects
label_version_sharing_descendants: S podprojekti label_version_sharing_descendants: With subprojects
label_version_sharing_tree: Z drevesom projekta label_version_sharing_tree: With project tree
label_version_sharing_none: Ni deljeno label_version_sharing_none: Not shared
error_can_not_archive_project: Ta projekt ne more biti arhiviran error_can_not_archive_project: This project can not be archived
button_duplicate: Podvoji button_duplicate: Duplicate
button_copy_and_follow: Kopiraj in sledi button_copy_and_follow: Copy and follow
label_copy_source: Vir label_copy_source: Source
setting_issue_done_ratio: Izračunaj razmerje opravljenega zahtevka z setting_issue_done_ratio: Calculate the issue done ratio with
setting_issue_done_ratio_issue_status: Uporabi stanje zahtevka setting_issue_done_ratio_issue_status: Use the issue status
error_issue_done_ratios_not_updated: Razmerje opravljenega zahtevka ni bilo posodobljeno. error_issue_done_ratios_not_updated: Issue done ratios not updated.
error_workflow_copy_target: Prosimo izberite ciljni(e) sledilnik(e) in vlogo(e) error_workflow_copy_target: Please select target tracker(s) and role(s)
setting_issue_done_ratio_issue_field: Uporabi polje zahtevka setting_issue_done_ratio_issue_field: Use the issue field
label_copy_same_as_target: Enako kot cilj label_copy_same_as_target: Same as target
label_copy_target: Cilj label_copy_target: Target
notice_issue_done_ratios_updated: Razmerje opravljenega zahtevka posodobljeno. notice_issue_done_ratios_updated: Issue done ratios updated.
error_workflow_copy_source: Prosimo izberite vir zahtevka ali vlogo error_workflow_copy_source: Please select a source tracker or role
label_update_issue_done_ratios: Posodobi razmerje opravljenega zahtevka label_update_issue_done_ratios: Update issue done ratios
setting_start_of_week: Začni koledarje z setting_start_of_week: Start calendars on
permission_view_issues: Poglej zahtevke permission_view_issues: View Issues
label_display_used_statuses_only: Prikaži samo stanja ki uporabljajo ta sledilnik label_display_used_statuses_only: Only display statuses that are used by this tracker
label_revision_id: Revizija %{value} label_revision_id: Revision %{value}
label_api_access_key: API dostopni ključ label_api_access_key: API access key
label_api_access_key_created_on: API dostopni ključ ustvarjen pred %{value} label_api_access_key_created_on: API access key created %{value} ago
label_feeds_access_key: RSS dostopni ključ label_feeds_access_key: RSS access key
notice_api_access_key_reseted: Vaš API dostopni ključ je bil ponastavljen. notice_api_access_key_reseted: Your API access key was reset.
setting_rest_api_enabled: Omogoči REST spletni servis setting_rest_api_enabled: Enable REST web service
label_missing_api_access_key: Manjkajoč API dostopni ključ label_missing_api_access_key: Missing an API access key
label_missing_feeds_access_key: Manjkajoč RSS dostopni ključ label_missing_feeds_access_key: Missing a RSS access key
button_show: Prikaži button_show: Show
text_line_separated: Dovoljenih več vrednosti (ena vrstica za vsako vrednost). text_line_separated: Multiple values allowed (one line for each value).
setting_mail_handler_body_delimiters: Odreži e-pošto po eni od teh vrstic setting_mail_handler_body_delimiters: Truncate emails after one of these lines
permission_add_subprojects: Ustvari podprojekte permission_add_subprojects: Create subprojects
label_subproject_new: Nov podprojekt label_subproject_new: New subproject
text_own_membership_delete_confirmation: |- text_own_membership_delete_confirmation: |-
Odstranili boste nekatere ali vse od dovoljenj zaradi česar morda ne boste mogli več urejati tega projekta. You are about to remove some or all of your permissions and may no longer be able to edit this project after that.
Ali ste prepričani, da želite nadaljevati? Are you sure you want to continue?
label_close_versions: Zapri dokončane verzije label_close_versions: Close completed versions
label_board_sticky: Lepljivo label_board_sticky: Sticky
label_board_locked: Zaklenjeno label_board_locked: Locked
permission_export_wiki_pages: Izvozi wiki strani permission_export_wiki_pages: Export wiki pages
setting_cache_formatted_text: Predpomni oblikovano besedilo setting_cache_formatted_text: Cache formatted text
permission_manage_project_activities: Uredi aktivnosti projekta permission_manage_project_activities: Manage project activities
error_unable_delete_issue_status: Stanja zahtevka ni bilo možno spremeniti error_unable_delete_issue_status: Unable to delete issue status
label_profile: Profil label_profile: Profile
permission_manage_subtasks: Uredi podnaloge permission_manage_subtasks: Manage subtasks
field_parent_issue: Nadrejena naloga field_parent_issue: Parent task
label_subtask_plural: Podnaloge label_subtask_plural: Subtasks
label_project_copy_notifications: Med kopiranjem projekta pošlji e-poštno sporočilo label_project_copy_notifications: Send email notifications during the project copy
error_can_not_delete_custom_field: Polja po meri ni mogoče izbrisati error_can_not_delete_custom_field: Unable to delete custom field
error_unable_to_connect: Povezava ni mogoča (%{value}) error_unable_to_connect: Unable to connect (%{value})
error_can_not_remove_role: Ta vloga je v uporabi in je ni mogoče izbrisati. error_can_not_remove_role: This role is in use and can not be deleted.
error_can_not_delete_tracker: Ta sledilnik vsebuje zahtevke in se ga ne more izbrisati. error_can_not_delete_tracker: This tracker contains issues and can't be deleted.
field_principal: Upravnik varnosti field_principal: Principal
label_my_page_block: Moj gradnik strani label_my_page_block: My page block
notice_failed_to_save_members: "Shranjevanje uporabnika(ov) ni uspelo: %{errors}." notice_failed_to_save_members: "Failed to save member(s): %{errors}."
text_zoom_out: Približaj text_zoom_out: Zoom out
text_zoom_in: Oddalji text_zoom_in: Zoom in
notice_unable_delete_time_entry: Brisanje dnevnika porabljenaga časa ni mogoče. notice_unable_delete_time_entry: Unable to delete time log entry.
label_overall_spent_time: Skupni porabljeni čas label_overall_spent_time: Overall spent time
field_time_entries: Beleži porabljeni čas field_time_entries: Log time
project_module_gantt: Gantogram project_module_gantt: Gantt
project_module_calendar: Koledear project_module_calendar: Calendar
button_edit_associated_wikipage: "Uredi povezano Wiki stran: %{page_title}" button_edit_associated_wikipage: "Edit associated Wiki page: %{page_title}"
text_are_you_sure_with_children: Izbriši zahtevek in vse podazahtevke? text_are_you_sure_with_children: Delete issue and all child issues?
field_text: Besedilno polje field_text: Text field
label_user_mail_option_only_owner: Samo za stvari katerih lastnik sem label_user_mail_option_only_owner: Only for things I am the owner of
setting_default_notification_option: Privzeta možnost obveščanja setting_default_notification_option: Default notification option
label_user_mail_option_only_my_events: Samo za stvari, ki jih opazujem ali sem v njih vpleten label_user_mail_option_only_my_events: Only for things I watch or I'm involved in
label_user_mail_option_only_assigned: Samo za stvari, ki smo mi dodeljene label_user_mail_option_only_assigned: Only for things I am assigned to
label_user_mail_option_none: Noben dogodek label_user_mail_option_none: No events
field_member_of_group: Pooblaščenčeva skupina field_member_of_group: Assignee's group
field_assigned_to_role: Pooblaščenčeva vloga field_assigned_to_role: Assignee's role
notice_not_authorized_archived_project: Projekt, do katerega poskušate dostopati, je bil arhiviran. notice_not_authorized_archived_project: The project you're trying to access has been archived.
label_principal_search: "Poišči uporabnika ali skupino:" label_principal_search: "Search for user or group:"
label_user_search: "Poišči uporabnikia:" label_user_search: "Search for user:"
field_visible: Viden field_visible: Visible
setting_emails_header: Glava e-pošte setting_emails_header: Emails header
setting_commit_logtime_activity_id: Aktivnost zabeleženega časa setting_commit_logtime_activity_id: Activity for logged time
text_time_logged_by_changeset: Uporabljeno v spremembi %{value}. text_time_logged_by_changeset: Applied in changeset %{value}.
setting_commit_logtime_enabled: Omogoči beleženje časa setting_commit_logtime_enabled: Enable time logging
notice_gantt_chart_truncated: Graf je bil odrezan, ker je prekoračil največje dovoljeno število elementov, ki se jih lahko prikaže (%{max}) notice_gantt_chart_truncated: The chart was truncated because it exceeds the maximum number of items that can be displayed (%{max})
setting_gantt_items_limit: Največje število elementov prikazano na gantogramu setting_gantt_items_limit: Maximum number of items displayed on the gantt chart
field_warn_on_leaving_unsaved: Opozori me, kadar zapuščam stran z neshranjenim besedilom field_warn_on_leaving_unsaved: Warn me when leaving a page with unsaved text
text_warn_on_leaving_unsaved: Trenutna stran vsebuje neshranjeno besedilo ki bo izgubljeno, če zapustite to stran. text_warn_on_leaving_unsaved: The current page contains unsaved text that will be lost if you leave this page.
label_my_queries: Moje poizvedbe po meri label_my_queries: My custom queries
text_journal_changed_no_detail: "%{label} posodobljen" text_journal_changed_no_detail: "%{label} updated"
label_news_comment_added: Komentar dodan novici label_news_comment_added: Comment added to a news
button_expand_all: Razširi vse button_expand_all: Expand all
button_collapse_all: Skrči vse button_collapse_all: Collapse all
label_additional_workflow_transitions_for_assignee: Dovoljeni dodatni prehodi kadar je uporabnik pooblaščenec label_additional_workflow_transitions_for_assignee: Additional transitions allowed when the user is the assignee
label_additional_workflow_transitions_for_author: Dovoljeni dodatni prehodi kadar je uporabnik avtor label_additional_workflow_transitions_for_author: Additional transitions allowed when the user is the author
label_bulk_edit_selected_time_entries: Skupinsko urejanje izbranih časovnih zapisov label_bulk_edit_selected_time_entries: Bulk edit selected time entries
text_time_entries_destroy_confirmation: Ali ste prepričani, da želite izbristai izbran(e) časovn(i/e) zapis(e)? text_time_entries_destroy_confirmation: Are you sure you want to delete the selected time entr(y/ies)?
label_role_anonymous: Anonimni label_role_anonymous: Anonymous
label_role_non_member: Nečlan label_role_non_member: Non member
label_issue_note_added: Dodan zaznamek label_issue_note_added: Note added
label_issue_status_updated: Status posodobljen label_issue_status_updated: Status updated
label_issue_priority_updated: Prioriteta posodobljena label_issue_priority_updated: Priority updated
label_issues_visibility_own: Zahtevek ustvarjen s strani uporabnika ali dodeljen uporabniku label_issues_visibility_own: Issues created by or assigned to the user
field_issues_visibility: Vidljivost zahtevkov field_issues_visibility: Issues visibility
label_issues_visibility_all: Vsi zahtevki label_issues_visibility_all: All issues
permission_set_own_issues_private: Nastavi lastne zahtevke kot javne ali zasebne permission_set_own_issues_private: Set own issues public or private
field_is_private: Zaseben field_is_private: Private
permission_set_issues_private: Nastavi zahtevke kot javne ali zasebne permission_set_issues_private: Set issues public or private
label_issues_visibility_public: Vsi nezasebni zahtevki label_issues_visibility_public: All non private issues
text_issues_destroy_descendants_confirmation: To bo izbrisalo tudi %{count} podnalog(o). text_issues_destroy_descendants_confirmation: This will also delete %{count} subtask(s).
field_commit_logs_encoding: Kodiranje sporočil ob predaji field_commit_logs_encoding: Kodiranje sporočil ob predaji
field_scm_path_encoding: Pot do kodiranja field_scm_path_encoding: Path encoding
text_scm_path_encoding_note: "Privzeto: UTF-8" text_scm_path_encoding_note: "Default: UTF-8"
field_path_to_repository: Pot do shrambe field_path_to_repository: Path to repository
field_root_directory: Korenska mapa field_root_directory: Root directory
field_cvs_module: Modul field_cvs_module: Module
field_cvsroot: CVSROOT field_cvsroot: CVSROOT
text_mercurial_repository_note: Lokalna shramba (npr. /hgrepo, c:\hgrepo) text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo)
text_scm_command: Ukaz text_mercurial_repository_note: Local repository (e.g. /hgrepo, c:\hgrepo)
text_scm_command_version: Verzija text_scm_command: Command
label_git_report_last_commit: Sporoči zadnje uveljavljanje datotek in map text_scm_command_version: Version
text_scm_config: Svoje SCM ukaze lahko nastavite v datoteki config/configuration.yml. Po urejanju prosimo ponovno zaženite aplikacijo. label_git_report_last_commit: Report last commit for files and directories
text_scm_command_not_available: SCM ukaz ni na voljo. Prosimo preverite nastavitve v upravljalskem podoknu. 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_git_repository_note: Shramba je prazna in lokalna (npr. /gitrepo, c:\gitrepo)
+14 -14
View File
@@ -351,12 +351,6 @@ sv:
field_warn_on_leaving_unsaved: Varna om jag lämnar en sida med osparad text field_warn_on_leaving_unsaved: Varna om jag lämnar en sida med osparad text
field_issues_visibility: Ärendesynlighet field_issues_visibility: Ärendesynlighet
field_is_private: Privat field_is_private: Privat
field_commit_logs_encoding: Teckenuppsättning för commit-meddelanden
field_scm_path_encoding: Sökvägskodning
field_path_to_repository: Sökväg till versionsarkiv
field_root_directory: Rotmapp
field_cvsroot: CVSROOT
field_cvs_module: Modul
setting_app_title: Applikationsrubrik setting_app_title: Applikationsrubrik
setting_app_subtitle: Applikationsunderrubrik setting_app_subtitle: Applikationsunderrubrik
@@ -861,7 +855,6 @@ sv:
label_issues_visibility_all: Alla ärenden label_issues_visibility_all: Alla ärenden
label_issues_visibility_public: Alla icke-privata ärenden label_issues_visibility_public: Alla icke-privata ärenden
label_issues_visibility_own: Ärenden skapade av eller tilldelade till användaren label_issues_visibility_own: Ärenden skapade av eller tilldelade till användaren
label_git_report_last_commit: Rapportera senaste commit av filer och mappar
button_login: Logga in button_login: Logga in
button_submit: Skicka button_submit: Skicka
@@ -983,13 +976,6 @@ sv:
text_zoom_out: Zooma ut text_zoom_out: Zooma ut
text_zoom_in: Zooma in text_zoom_in: Zooma in
text_warn_on_leaving_unsaved: Nuvarande sida innehåller osparad text som kommer försvinna om du lämnar sidan. text_warn_on_leaving_unsaved: Nuvarande sida innehåller osparad text som kommer försvinna om du lämnar sidan.
text_scm_path_encoding_note: "Standard: UTF-8"
text_git_repository_note: Naket och lokalt versionsarkiv (t.ex. /gitrepo, c:\gitrepo)
text_mercurial_repository_note: Lokalt versionsarkiv (t.ex. /hgrepo, c:\hgrepo)
text_scm_command: Kommando
text_scm_command_version: Version
text_scm_config: Du kan konfigurera dina scm-kommando i config/configuration.yml. Vänligen starta om applikationen när ändringar gjorts.
text_scm_command_not_available: Scm-kommando är inte tillgängligt. Vänligen kontrollera inställningarna i administratörspanelen.
default_role_manager: Projektledare default_role_manager: Projektledare
default_role_developer: Utvecklare default_role_developer: Utvecklare
@@ -1017,3 +1003,17 @@ sv:
enumeration_doc_categories: Dokumentkategorier enumeration_doc_categories: Dokumentkategorier
enumeration_activities: Aktiviteter (tidsuppföljning) enumeration_activities: Aktiviteter (tidsuppföljning)
enumeration_system_activity: Systemaktivitet enumeration_system_activity: Systemaktivitet
field_commit_logs_encoding: Teckenuppsättning för commit-meddelanden
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_cvsroot: CVSROOT
text_git_repository_note: Bare and local repository (e.g. /gitrepo, c:\gitrepo)
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.
+395 -395
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -180,7 +180,7 @@ vi:
last_word_connector: ", và " last_word_connector: ", và "
actionview_instancetag_blank_option: Vui lòng chọn actionview_instancetag_blank_option: Vui lòng chọn
general_text_No: 'Không' general_text_No: 'Không'
general_text_Yes: 'Có' general_text_Yes: 'Có'
general_text_no: 'không' general_text_no: 'không'
@@ -191,7 +191,7 @@ vi:
general_csv_encoding: UTF-8 general_csv_encoding: UTF-8
general_pdf_encoding: UTF-8 general_pdf_encoding: UTF-8
general_first_day_of_week: '1' general_first_day_of_week: '1'
notice_account_updated: Cập nhật tài khoản thành công. notice_account_updated: Cập nhật tài khoản thành công.
notice_account_invalid_creditentials: Tài khoản hoặc mật mã không hợp lệ notice_account_invalid_creditentials: Tài khoản hoặc mật mã không hợp lệ
notice_account_password_updated: Cập nhật mật mã thành công. notice_account_password_updated: Cập nhật mật mã thành công.
+2 -2
View File
@@ -1028,8 +1028,6 @@
text_mercurial_repository_note: "本機儲存機制 (e.g. /hgrepo, c:\hgrepo)" text_mercurial_repository_note: "本機儲存機制 (e.g. /hgrepo, c:\hgrepo)"
text_scm_command: 命令 text_scm_command: 命令
text_scm_command_version: 版本 text_scm_command_version: 版本
text_scm_config: 您可以在 config/configuration.yml 中設定 SCM 命令。請在編輯該檔案之後重新啟動 Redmine 應用程式。
text_scm_command_not_available: SCM 命令無法使用。請檢查管理面板中的設定。
default_role_manager: 管理人員 default_role_manager: 管理人員
default_role_developer: 開發人員 default_role_developer: 開發人員
@@ -1057,3 +1055,5 @@
enumeration_doc_categories: 文件分類 enumeration_doc_categories: 文件分類
enumeration_activities: 活動 (時間追蹤) enumeration_activities: 活動 (時間追蹤)
enumeration_system_activity: 系統活動 enumeration_system_activity: 系統活動
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.
+7 -52
View File
@@ -4,51 +4,6 @@ Redmine - project management software
Copyright (C) 2006-2011 Jean-Philippe Lang Copyright (C) 2006-2011 Jean-Philippe Lang
http://www.redmine.org/ http://www.redmine.org/
== 2011-11-11 v1.2.2
* Defect #3276: Incorrect handling of anchors in Wiki to HTML export
* Defect #7215: Wiki formatting mangles links to internal headers
* Defect #7613: Generated test instances may share the same attribute value object
* Defect #8411: Can't remove "Project" column on custom query
* Defect #8615: Custom 'version' fields don't show shared versions
* Defect #8633: Pagination counts non visible issues
* Defect #8651: Email attachments are not added to issues any more in v1.2
* Defect #8825: JRuby + Windows: SCMs do not work on Redmine 1.2
* Defect #8836: Additional workflow transitions not available when set to both author and assignee
* Defect #8865: Custom field regular expression is not validated
* Defect #8880: Error deleting issue with grandchild
* Defect #8884: Assignee is cleared when updating issue with locked assignee
* Defect #8892: Unused fonts in rfpdf plugin folder
* Defect #9161: pt-BR field_warn_on_leaving_unsaved has a small gramatical error
* Defect #9308: Search fails when a role haven't "view wiki" permission
* Defect #9465: Mercurial: can't browse named branch below Mercurial 1.5
== 2011-07-11 v1.2.1
* Defect #5089: i18N error on truncated revision diff view
* Defect #7501: Search options get lost after clicking on a specific result type
* Defect #8229: "project.xml" response does not include the parent ID
* Defect #8449: Wiki annotated page does not display author of version 1
* Defect #8467: Missing german translation - Warn me when leaving a page with unsaved text
* Defect #8468: No warning when leaving page with unsaved text that has not lost focus
* Defect #8472: Private checkbox ignored on issue creation with "Set own issues public or private" permission
* Defect #8510: JRuby: Can't open administrator panel if scm command is not available
* Defect #8512: Syntax highlighter on Welcome page
* Defect #8554: Translation missing error on custom field validation
* Defect #8565: JRuby: Japanese PDF export error
* Defect #8566: Exported PDF UTF-8 Vietnamese not correct
* Defect #8569: JRuby: PDF export error with TypeError
* Defect #8576: Missing german translation - different things
* Defect #8616: Circular relations
* Defect #8646: Russian translation "label_follows" and "label_follows" are wrong
* Defect #8712: False 'Description updated' journal details messages
* Defect #8729: Not-public queries are not private
* Defect #8737: Broken line of long issue description on issue PDF.
* Defect #8738: Missing revision number/id of associated revisions on issue PDF
* Defect #8739: Workflow copy does not copy advanced workflow settings
* Defect #8759: Setting issue attributes from mail should be case-insensitive
* Defect #8777: Mercurial: Not able to Resetting Redmine project respository
== 2011-05-30 v1.2.0 == 2011-05-30 v1.2.0
* Defect #61: Broken character encoding in pdf export * Defect #61: Broken character encoding in pdf export
@@ -436,7 +391,7 @@ http://www.redmine.org/
* #819: Add a body ID and class to all pages * #819: Add a body ID and class to all pages
* #871: Commit new CSS styles! * #871: Commit new CSS styles!
* #3301: Add favicon to base layout * #3301: Add favicon to base layout
* #4656: On Issue#show page, clicking on “Add related issueâ€� should focus on the input * #4656: On Issue#show page, clicking on “Add related issue” should focus on the input
* #4896: Project identifier should be a limited field * #4896: Project identifier should be a limited field
* #5084: Filter all isssues by projects * #5084: Filter all isssues by projects
* #5477: Replace Test::Unit::TestCase with ActiveSupport::TestCase * #5477: Replace Test::Unit::TestCase with ActiveSupport::TestCase
@@ -1445,7 +1400,7 @@ http://www.redmine.org/
* Search engines now supports pagination. Results are sorted in reverse chronological order * Search engines now supports pagination. Results are sorted in reverse chronological order
* Added "Estimated hours" attribute on issues * Added "Estimated hours" attribute on issues
* A category with assigned issue can now be deleted. 2 options are proposed: remove assignments or reassign issues to another category * A category with assigned issue can now be deleted. 2 options are proposed: remove assignments or reassign issues to another category
* Forum notifications are now also sent to the authors of the thread, even if they don�t watch the board * Forum notifications are now also sent to the authors of the thread, even if they don�t watch the board
* Added an application setting to specify the application protocol (http or https) used to generate urls in emails * Added an application setting to specify the application protocol (http or https) used to generate urls in emails
* Gantt chart: now starts at the current month by default * Gantt chart: now starts at the current month by default
* Gantt chart: month count and zoom factor are automatically saved as user preferences * Gantt chart: month count and zoom factor are automatically saved as user preferences
@@ -1453,7 +1408,7 @@ http://www.redmine.org/
* Added wiki index by date * Added wiki index by date
* Added preview on add/edit issue form * Added preview on add/edit issue form
* Emails footer can now be customized from the admin interface (Admin -> Email notifications) * Emails footer can now be customized from the admin interface (Admin -> Email notifications)
* Default encodings for repository files can now be set in application settings (used to convert files content and diff to UTF-8 so that they�re properly displayed) * Default encodings for repository files can now be set in application settings (used to convert files content and diff to UTF-8 so that they�re properly displayed)
* Calendar: first day of week can now be set in lang files * Calendar: first day of week can now be set in lang files
* Automatic closing of duplicate issues * Automatic closing of duplicate issues
* Added a cross-project issue list * Added a cross-project issue list
@@ -1465,7 +1420,7 @@ http://www.redmine.org/
* Added some accesskeys * Added some accesskeys
* Added "Float" as a custom field format * Added "Float" as a custom field format
* Added basic Theme support * Added basic Theme support
* Added the ability to set the �done ratio� of issues fixed by commit (Nikolay Solakov) * Added the ability to set the �done ratio� of issues fixed by commit (Nikolay Solakov)
* Added custom fields in issue related mail notifications * Added custom fields in issue related mail notifications
* Email notifications are now sent in plain text and html * Email notifications are now sent in plain text and html
* Gantt chart can now be exported to a graphic file (png). This functionality is only available if RMagick is installed. * Gantt chart can now be exported to a graphic file (png). This functionality is only available if RMagick is installed.
@@ -1498,7 +1453,7 @@ http://www.redmine.org/
* Added Korean translation (Choi Jong Yoon) * Added Korean translation (Choi Jong Yoon)
* Fixed: the link to delete issue relations is displayed even if the user is not authorized to delete relations * Fixed: the link to delete issue relations is displayed even if the user is not authorized to delete relations
* Performance improvement on calendar and gantt * Performance improvement on calendar and gantt
* Fixed: wiki preview doesn�t work on long entries * Fixed: wiki preview doesn�t work on long entries
* Fixed: queries with multiple custom fields return no result * Fixed: queries with multiple custom fields return no result
* Fixed: Can not authenticate user against LDAP if its DN contains non-ascii characters * Fixed: Can not authenticate user against LDAP if its DN contains non-ascii characters
* Fixed: URL with ~ broken in wiki formatting * Fixed: URL with ~ broken in wiki formatting
@@ -1509,7 +1464,7 @@ http://www.redmine.org/
* per project forums added * per project forums added
* added the ability to archive projects * added the ability to archive projects
* added �Watch� functionality on issues. It allows users to receive notifications about issue changes * added �Watch� functionality on issues. It allows users to receive notifications about issue changes
* custom fields for issues can now be used as filters on issue list * custom fields for issues can now be used as filters on issue list
* added per user custom queries * added per user custom queries
* commit messages are now scanned for referenced or fixed issue IDs (keywords defined in Admin -> Settings) * commit messages are now scanned for referenced or fixed issue IDs (keywords defined in Admin -> Settings)
@@ -1550,7 +1505,7 @@ http://www.redmine.org/
* added swedish translation (Thomas Habets) * added swedish translation (Thomas Habets)
* italian translation update (Alessio Spadaro) * italian translation update (Alessio Spadaro)
* japanese translation update (Satoru Kurashiki) * japanese translation update (Satoru Kurashiki)
* fixed: error on history atom feed when there�s no notes on an issue change * fixed: error on history atom feed when there�s no notes on an issue change
* fixed: error in journalizing an issue with longtext custom fields (Postgresql) * fixed: error in journalizing an issue with longtext custom fields (Postgresql)
* fixed: creation of Oracle schema * fixed: creation of Oracle schema
* fixed: last day of the month not included in project activity * fixed: last day of the month not included in project activity
+1 -2
View File
@@ -9,9 +9,8 @@ Running Tests
Run `rake --tasks test` to see available tests. Run `rake --tasks test` to see available tests.
`rake test` will run the entire testsuite. `rake test` will run the entire testsuite.
You can run `ruby test/unit/issue_test.rb` for an each test.
Before running tests, you need to configure both development Before running `rake test` you need to configure both development
and test databases. and test databases.
Creating test repositories Creating test repositories
+1 -24
View File
@@ -208,7 +208,7 @@ sub access_handler {
my $project_id = get_project_identifier($r); my $project_id = get_project_identifier($r);
$r->set_handlers(PerlAuthenHandler => [\&OK]) $r->set_handlers(PerlAuthenHandler => [\&OK])
if is_public_project($project_id, $r) && anonymous_role_allows_browse_repository($r); if is_public_project($project_id, $r);
return OK return OK
} }
@@ -280,29 +280,6 @@ sub is_public_project {
$ret; $ret;
} }
sub anonymous_role_allows_browse_repository {
my $r = shift;
my $dbh = connect_database($r);
my $sth = $dbh->prepare(
"SELECT permissions FROM roles WHERE builtin = 2;"
);
$sth->execute();
my $ret = 0;
if (my @row = $sth->fetchrow_array) {
if ($row[0] =~ /:browse_repository/) {
$ret = 1;
}
}
$sth->finish();
undef $sth;
$dbh->disconnect();
undef $dbh;
$ret;
}
# perhaps we should use repository right (other read right) to check public access. # perhaps we should use repository right (other read right) to check public access.
# it could be faster BUT it doesn't work for the moment. # it could be faster BUT it doesn't work for the moment.
# sub is_public_project_by_file { # sub is_public_project_by_file {
+1 -1
View File
@@ -938,7 +938,7 @@ class RedCloth3 < String
stln,algn,atts,url,title,href,href_a1,href_a2 = $~[1..8] stln,algn,atts,url,title,href,href_a1,href_a2 = $~[1..8]
htmlesc title htmlesc title
atts = pba( atts ) atts = pba( atts )
atts = " src=\"#{ htmlesc url.dup }\"#{ atts }" atts = " src=\"#{ url }\"#{ atts }"
atts << " title=\"#{ title }\"" if title atts << " title=\"#{ title }\"" if title
atts << " alt=\"#{ title }\"" atts << " alt=\"#{ title }\""
# size = @getimagesize($url); # size = @getimagesize($url);
-7
View File
@@ -11,13 +11,6 @@ module Redmine
str = str.encode("US-ASCII", :invalid => :replace, str = str.encode("US-ASCII", :invalid => :replace,
:undef => :replace, :replace => '?').encode("UTF-8") :undef => :replace, :replace => '?').encode("UTF-8")
end end
elsif RUBY_PLATFORM == 'java'
begin
ic = Iconv.new('UTF-8', 'UTF-8')
str = ic.iconv(str)
rescue
str = str.gsub(%r{[^\r\n\t\x20-\x7e]}, '?')
end
else else
ic = Iconv.new('UTF-8', 'UTF-8') ic = Iconv.new('UTF-8', 'UTF-8')
txtar = "" txtar = ""
+39 -51
View File
@@ -40,39 +40,33 @@ module Redmine
@ic = Iconv.new(pdf_encoding, 'UTF-8') @ic = Iconv.new(pdf_encoding, 'UTF-8')
end end
super('P', 'mm', 'A4', (pdf_encoding == 'UTF-8'), pdf_encoding) super('P', 'mm', 'A4', (pdf_encoding == 'UTF-8'), pdf_encoding)
case current_language.to_s.downcase case pdf_encoding
when 'vi' when 'UTF-8'
@font_for_content = 'DejaVuSans' @font_for_content = 'FreeSans'
@font_for_footer = 'DejaVuSans' @font_for_footer = 'FreeSans'
when 'CP949'
extend(PDF_Korean)
AddUHCFont()
@font_for_content = 'UHC'
@font_for_footer = 'UHC'
when 'CP932'
extend(PDF_Japanese)
AddSJISFont()
@font_for_content = 'SJIS'
@font_for_footer = 'SJIS'
when 'GB18030'
extend(PDF_Chinese)
AddGBFont()
@font_for_content = 'GB'
@font_for_footer = 'GB'
when 'BIG5'
extend(PDF_Chinese)
AddBig5Font()
@font_for_content = 'Big5'
@font_for_footer = 'Big5'
else else
case pdf_encoding @font_for_content = 'Arial'
when 'UTF-8' @font_for_footer = 'Helvetica'
@font_for_content = 'FreeSans'
@font_for_footer = 'FreeSans'
when 'CP949'
extend(PDF_Korean)
AddUHCFont()
@font_for_content = 'UHC'
@font_for_footer = 'UHC'
when 'CP932', 'SJIS', 'SHIFT_JIS'
extend(PDF_Japanese)
AddSJISFont()
@font_for_content = 'SJIS'
@font_for_footer = 'SJIS'
when 'GB18030'
extend(PDF_Chinese)
AddGBFont()
@font_for_content = 'GB'
@font_for_footer = 'GB'
when 'BIG5'
extend(PDF_Chinese)
AddBig5Font()
@font_for_content = 'Big5'
@font_for_footer = 'Big5'
else
@font_for_content = 'Arial'
@font_for_footer = 'Helvetica'
end
end end
SetCreator(Redmine::Info.app_name) SetCreator(Redmine::Info.app_name)
SetFont(@font_for_content) SetFont(@font_for_content)
@@ -107,12 +101,12 @@ module Redmine
RDMPdfEncoding::rdm_pdf_iconv(@ic, txt) RDMPdfEncoding::rdm_pdf_iconv(@ic, txt)
end end
def RDMCell(w ,h=0, txt='', border=0, ln=0, align='', fill=0, link='') def RDMCell(w,h=0,txt='',border=0,ln=0,align='',fill=0,link='')
Cell(w, h, fix_text_encoding(txt), border, ln, align, fill, link) Cell(w,h,fix_text_encoding(txt),border,ln,align,fill,link)
end end
def RDMMultiCell(w, h=0, txt='', border=0, align='', fill=0, ln=1) def RDMMultiCell(w,h=0,txt='',border=0,align='',fill=0)
MultiCell(w, h, fix_text_encoding(txt), border, align, fill, ln) MultiCell(w,h,fix_text_encoding(txt),border,align,fill)
end end
def Footer def Footer
@@ -282,6 +276,8 @@ module Redmine
"#{issue.project} - #{issue.tracker} # #{issue.id}: #{issue.subject}") "#{issue.project} - #{issue.tracker} # #{issue.id}: #{issue.subject}")
pdf.Ln pdf.Ln
y0 = pdf.GetY
pdf.SetFontStyle('B',9) pdf.SetFontStyle('B',9)
pdf.RDMCell(35,5, l(:field_status) + ":","LT") pdf.RDMCell(35,5, l(:field_status) + ":","LT")
pdf.SetFontStyle('',9) pdf.SetFontStyle('',9)
@@ -329,18 +325,18 @@ module Redmine
pdf.RDMMultiCell(155,5, (show_value custom_value),"R") pdf.RDMMultiCell(155,5, (show_value custom_value),"R")
end end
y0 = pdf.GetY
pdf.SetFontStyle('B',9) pdf.SetFontStyle('B',9)
pdf.RDMCell(35,5, l(:field_subject) + ":","LT") pdf.RDMCell(35,5, l(:field_subject) + ":","LT")
pdf.SetFontStyle('',9) pdf.SetFontStyle('',9)
pdf.RDMMultiCell(155,5, issue.subject,"RT") pdf.RDMMultiCell(155,5, issue.subject,"RT")
pdf.Line(pdf.GetX, y0, pdf.GetX, pdf.GetY)
pdf.SetFontStyle('B',9) pdf.SetFontStyle('B',9)
pdf.RDMCell(35+155, 5, l(:field_description), "LRT", 1) pdf.RDMCell(35,5, l(:field_description) + ":","LT")
pdf.SetFontStyle('',9) pdf.SetFontStyle('',9)
pdf.RDMMultiCell(35+155, 5, issue.description.to_s, "LRB") pdf.RDMMultiCell(155,5, issue.description.to_s,"RT")
pdf.Line(pdf.GetX, y0, pdf.GetX, pdf.GetY)
pdf.Line(pdf.GetX, pdf.GetY, pdf.GetX + 190, pdf.GetY)
pdf.Ln pdf.Ln
if issue.changesets.any? && if issue.changesets.any? &&
@@ -350,9 +346,8 @@ module Redmine
pdf.Ln pdf.Ln
for changeset in issue.changesets for changeset in issue.changesets
pdf.SetFontStyle('B',8) pdf.SetFontStyle('B',8)
csstr = "#{l(:label_revision)} #{changeset.format_identifier} - " pdf.RDMCell(190,5,
csstr += format_time(changeset.committed_on) + " - " + changeset.author.to_s format_time(changeset.committed_on) + " - " + changeset.author.to_s)
pdf.RDMCell(190, 5, csstr)
pdf.Ln pdf.Ln
unless changeset.comments.blank? unless changeset.comments.blank?
pdf.SetFontStyle('',8) pdf.SetFontStyle('',8)
@@ -413,13 +408,6 @@ module Redmine
txt = Redmine::CodesetUtil.replace_invalid_utf8(txt) txt = Redmine::CodesetUtil.replace_invalid_utf8(txt)
end end
txt.force_encoding('ASCII-8BIT') txt.force_encoding('ASCII-8BIT')
elsif RUBY_PLATFORM == 'java'
begin
ic ||= Iconv.new(l(:general_pdf_encoding), 'UTF-8')
txt = ic.iconv(txt)
rescue
txt = txt.gsub(%r{[^\r\n\t\x20-\x7e]}, '?')
end
else else
ic ||= Iconv.new(l(:general_pdf_encoding), 'UTF-8') ic ||= Iconv.new(l(:general_pdf_encoding), 'UTF-8')
txtar = "" txtar = ""
+22 -22
View File
@@ -1,16 +1,16 @@
# Redmine - project management software # Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang # Copyright (C) 2006-2008 Jean-Philippe Lang
# #
# This program is free software; you can redistribute it and/or # This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License # modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2 # as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version. # of the License, or (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
@@ -22,7 +22,7 @@ module Redmine
@@listener_classes = [] @@listener_classes = []
@@listeners = nil @@listeners = nil
@@hook_listeners = {} @@hook_listeners = {}
class << self class << self
# Adds a listener class. # Adds a listener class.
# Automatically called when a class inherits from Redmine::Hook::Listener. # Automatically called when a class inherits from Redmine::Hook::Listener.
@@ -31,29 +31,29 @@ module Redmine
@@listener_classes << klass @@listener_classes << klass
clear_listeners_instances clear_listeners_instances
end end
# Returns all the listerners instances. # Returns all the listerners instances.
def listeners def listeners
@@listeners ||= @@listener_classes.collect {|listener| listener.instance} @@listeners ||= @@listener_classes.collect {|listener| listener.instance}
end end
# Returns the listeners instances for the given hook. # Returns the listeners instances for the given hook.
def hook_listeners(hook) def hook_listeners(hook)
@@hook_listeners[hook] ||= listeners.select {|listener| listener.respond_to?(hook)} @@hook_listeners[hook] ||= listeners.select {|listener| listener.respond_to?(hook)}
end end
# Clears all the listeners. # Clears all the listeners.
def clear_listeners def clear_listeners
@@listener_classes = [] @@listener_classes = []
clear_listeners_instances clear_listeners_instances
end end
# Clears all the listeners instances. # Clears all the listeners instances.
def clear_listeners_instances def clear_listeners_instances
@@listeners = nil @@listeners = nil
@@hook_listeners = {} @@hook_listeners = {}
end end
# Calls a hook. # Calls a hook.
# Returns the listeners response. # Returns the listeners response.
def call_hook(hook, context={}) def call_hook(hook, context={})
@@ -101,11 +101,11 @@ module Redmine
def self.default_url_options def self.default_url_options
{:only_path => true } {:only_path => true }
end end
# Helper method to directly render a partial using the context: # Helper method to directly render a partial using the context:
# #
# class MyHook < Redmine::Hook::ViewListener # class MyHook < Redmine::Hook::ViewListener
# render_on :view_issues_show_details_bottom, :partial => "show_more_data" # render_on :view_issues_show_details_bottom, :partial => "show_more_data"
# end # end
# #
def self.render_on(hook, options={}) def self.render_on(hook, options={})
@@ -115,25 +115,25 @@ module Redmine
end end
end end
# Helper module included in ApplicationHelper and ActionController so that # Helper module included in ApplicationHelper and ActionControllerso that
# hooks can be called in views like this: # hooks can be called in views like this:
# #
# <%= call_hook(:some_hook) %> # <%= call_hook(:some_hook) %>
# <%= call_hook(:another_hook, :foo => 'bar') %> # <%= call_hook(:another_hook, :foo => 'bar' %>
# #
# Or in controllers like: # Or in controllers like:
# call_hook(:some_hook) # call_hook(:some_hook)
# call_hook(:another_hook, :foo => 'bar') # call_hook(:another_hook, :foo => 'bar'
# #
# Hooks added to views will be concatenated into a string. Hooks added to # Hooks added to views will be concatenated into a string. Hooks added to
# controllers will return an array of results. # controllers will return an array of results.
# #
# Several objects are automatically added to the call context: # Several objects are automatically added to the call context:
# #
# * project => current project # * project => current project
# * request => Request instance # * request => Request instance
# * controller => current Controller instance # * controller => current Controller instance
# #
module Helper module Helper
def call_hook(hook, context={}) def call_hook(hook, context={})
if is_a?(ActionController::Base) if is_a?(ActionController::Base)
@@ -142,7 +142,7 @@ module Redmine
else else
default_context = {:controller => controller, :project => @project, :request => request} default_context = {:controller => controller, :project => @project, :request => request}
Redmine::Hook.call_hook(hook, default_context.merge(context)).join(' ') Redmine::Hook.call_hook(hook, default_context.merge(context)).join(' ')
end end
end end
end end
end end
+3 -23
View File
@@ -29,14 +29,6 @@ module Redmine
"" ""
end end
def shell_quote_command
if Redmine::Platform.mswin? && RUBY_PLATFORM == 'java'
client_command
else
shell_quote(client_command)
end
end
# Returns the version of the scm client # Returns the version of the scm client
# Eg: [1, 5, 0] or [] if unknown # Eg: [1, 5, 0] or [] if unknown
def client_version def client_version
@@ -207,9 +199,7 @@ module Redmine
end end
def self.shellout(cmd, &block) def self.shellout(cmd, &block)
if logger && logger.debug? logger.debug "Shelling out: #{strip_credential(cmd)}" if logger && logger.debug?
logger.debug "Shelling out: #{strip_credential(cmd)}"
end
if Rails.env == 'development' if Rails.env == 'development'
# Capture stderr when running in dev environment # Capture stderr when running in dev environment
cmd = "#{cmd} 2>>#{RAILS_ROOT}/log/scm.stderr.log" cmd = "#{cmd} 2>>#{RAILS_ROOT}/log/scm.stderr.log"
@@ -224,20 +214,10 @@ module Redmine
io.close_write io.close_write
block.call(io) if block_given? block.call(io) if block_given?
end end
## If scm command does not exist, rescue Errno::ENOENT => e
## Linux JRuby 1.6.2 (ruby-1.8.7-p330) raises java.io.IOException
## in production environment.
# rescue Errno::ENOENT => e
rescue Exception => e
msg = strip_credential(e.message) msg = strip_credential(e.message)
# The command failed, log it and re-raise # The command failed, log it and re-raise
logmsg = "SCM command failed, " logger.error("SCM command failed, make sure that your SCM binary (eg. svn) is in PATH (#{ENV['PATH']}): #{strip_credential(cmd)}\n with: #{msg}")
logmsg += "make sure that your SCM command (e.g. svn) is "
logmsg += "in PATH (#{ENV['PATH']})\n"
logmsg += "You can configure your scm commands in config/configuration.yml.\n"
logmsg += "#{strip_credential(cmd)}\n"
logmsg += "with: #{msg}"
logger.error(logmsg)
raise CommandFailed.new(msg) raise CommandFailed.new(msg)
end end
end end
+1 -1
View File
@@ -31,7 +31,7 @@ module Redmine
end end
def sq_bin def sq_bin
@@sq_bin ||= shell_quote_command @@sq_bin ||= shell_quote(BZR_BIN)
end end
def client_version def client_version
+3 -6
View File
@@ -34,7 +34,7 @@ module Redmine
end end
def sq_bin def sq_bin
@@sq_bin ||= shell_quote_command @@sq_bin ||= shell_quote(CVS_BIN)
end end
def client_version def client_version
@@ -379,16 +379,13 @@ module Redmine
end end
def scm_cmd(*args, &block) def scm_cmd(*args, &block)
full_args = ['-d', root_url] full_args = [CVS_BIN, '-d', root_url]
full_args += args full_args += args
full_args_locale = [] full_args_locale = []
full_args.map do |e| full_args.map do |e|
full_args_locale << scm_iconv(@path_encoding, 'UTF-8', e) full_args_locale << scm_iconv(@path_encoding, 'UTF-8', e)
end end
ret = shellout( ret = shellout(full_args_locale.map { |e| shell_quote e.to_s }.join(' '), &block)
self.class.sq_bin + ' ' + full_args_locale.map { |e| shell_quote e.to_s }.join(' '),
&block
)
if $? && $?.exitstatus != 0 if $? && $?.exitstatus != 0
raise ScmCommandAborted, "cvs exited with non-zero status: #{$?.exitstatus}" raise ScmCommandAborted, "cvs exited with non-zero status: #{$?.exitstatus}"
end end
+1 -1
View File
@@ -31,7 +31,7 @@ module Redmine
end end
def sq_bin def sq_bin
@@sq_bin ||= shell_quote_command @@sq_bin ||= shell_quote(DARCS_BIN)
end end
def client_version def client_version
+3 -6
View File
@@ -34,7 +34,7 @@ module Redmine
end end
def sq_bin def sq_bin
@@sq_bin ||= shell_quote_command @@sq_bin ||= shell_quote(GIT_BIN)
end end
def client_version def client_version
@@ -359,16 +359,13 @@ module Redmine
def scm_cmd(*args, &block) def scm_cmd(*args, &block)
repo_path = root_url || url repo_path = root_url || url
full_args = ['--git-dir', repo_path] full_args = [GIT_BIN, '--git-dir', repo_path]
if self.class.client_version_above?([1, 7, 2]) if self.class.client_version_above?([1, 7, 2])
full_args << '-c' << 'core.quotepath=false' full_args << '-c' << 'core.quotepath=false'
full_args << '-c' << 'log.decorate=no' full_args << '-c' << 'log.decorate=no'
end end
full_args += args full_args += args
ret = shellout( ret = shellout(full_args.map { |e| shell_quote e.to_s }.join(' '), &block)
self.class.sq_bin + ' ' + full_args.map { |e| shell_quote e.to_s }.join(' '),
&block
)
if $? && $?.exitstatus != 0 if $? && $?.exitstatus != 0
raise ScmCommandAborted, "git exited with non-zero status: #{$?.exitstatus}" raise ScmCommandAborted, "git exited with non-zero status: #{$?.exitstatus}"
end end
@@ -0,0 +1,12 @@
changeset = 'This template must be used with --debug option\n'
changeset_quiet = 'This template must be used with --debug option\n'
changeset_verbose = 'This template must be used with --debug option\n'
changeset_debug = '<logentry revision="{rev}" node="{node|short}">\n<author>{author|escape}</author>\n<date>{date|isodate}</date>\n<paths>\n{files}{file_adds}{file_dels}{file_copies}</paths>\n<msg>{desc|escape}</msg>\n{tags}</logentry>\n\n'
file = '<path action="M">{file|urlescape}</path>\n'
file_add = '<path action="A">{file_add|urlescape}</path>\n'
file_del = '<path action="D">{file_del|urlescape}</path>\n'
file_copy = '<path-copied copyfrom-path="{source|urlescape}">{name|urlescape}</path-copied>\n'
tag = '<tag>{tag|escape}</tag>\n'
header='<?xml version="1.0" encoding="UTF-8" ?>\n<log>\n\n'
# footer="</log>"
@@ -46,7 +46,7 @@ Output example of rhmanifest::
</rhmanifest> </rhmanifest>
""" """
import re, time, cgi, urllib import re, time, cgi, urllib
from mercurial import cmdutil, commands, node, error, hg from mercurial import cmdutil, commands, node, error
_x = cgi.escape _x = cgi.escape
_u = lambda s: cgi.escape(urllib.quote(s)) _u = lambda s: cgi.escape(urllib.quote(s))
@@ -146,10 +146,7 @@ def rhlog(ui, repo, *pats, **opts):
bra = urllib.unquote_plus(opts.pop('rhbranch', None)) bra = urllib.unquote_plus(opts.pop('rhbranch', None))
from_rev = from_rev.replace('"', '\\"') from_rev = from_rev.replace('"', '\\"')
to_rev = to_rev.replace('"', '\\"') to_rev = to_rev.replace('"', '\\"')
if hg.util.version() >= '1.6': opts['rev'] = ['"%s":"%s"' % (from_rev, to_rev)]
opts['rev'] = ['"%s":"%s"' % (from_rev, to_rev)]
else:
opts['rev'] = ['%s:%s' % (from_rev, to_rev)]
opts['branch'] = [bra] opts['branch'] = [bra]
return commands.log(ui, repo, *map(urllib.unquote_plus, pats), **opts) return commands.log(ui, repo, *map(urllib.unquote_plus, pats), **opts)
@@ -199,21 +196,21 @@ cmdtable = {
[ [
('r', 'rev', [], 'show the specified revision'), ('r', 'rev', [], 'show the specified revision'),
('b', 'branch', [], ('b', 'branch', [],
'show changesets within the given named branch'), 'show changesets within the given named branch', 'BRANCH'),
('l', 'limit', '', ('l', 'limit', '',
'limit number of changes displayed'), 'limit number of changes displayed', 'NUM'),
('d', 'date', '', ('d', 'date', '',
'show revisions matching date spec'), 'show revisions matching date spec', 'DATE'),
('u', 'user', [], ('u', 'user', [],
'revisions committed by user'), 'revisions committed by user', 'USER'),
('', 'from', '', ('', 'from', '',
''), '', ''),
('', 'to', '', ('', 'to', '',
''), '', ''),
('', 'rhbranch', '', ('', 'rhbranch', '',
''), '', ''),
('', 'template', '', ('', 'template', '',
'display with template')], 'display with template', 'TEMPLATE')],
'hg rhlog [OPTION]... [FILE]'), 'hg rhlog [OPTION]... [FILE]'),
'rhmanifest': (rhmanifest, 'rhmanifest': (rhmanifest,
[('r', 'rev', '', 'show the specified revision')], [('r', 'rev', '', 'show the specified revision')],
+11 -14
View File
@@ -39,7 +39,7 @@ module Redmine
end end
def sq_bin def sq_bin
@@sq_bin ||= shell_quote_command @@sq_bin ||= shell_quote(HG_BIN)
end end
def client_version def client_version
@@ -47,7 +47,7 @@ module Redmine
end end
def client_available def client_available
client_version_above?([1, 2]) client_version_above?([0, 9, 5])
end end
def hgversion def hgversion
@@ -72,7 +72,12 @@ module Redmine
end end
def template_path_for(version) def template_path_for(version)
"#{HELPERS_DIR}/#{TEMPLATE_NAME}-1.0.#{TEMPLATE_EXTENSION}" if ((version <=> [0,9,5]) > 0) || version.empty?
ver = "1.0"
else
ver = "0.9.5"
end
"#{HELPERS_DIR}/#{TEMPLATE_NAME}-#{ver}.#{TEMPLATE_EXTENSION}"
end end
end end
@@ -90,10 +95,6 @@ module Redmine
Info.new(:root_url => CGI.unescape(summary['repository']['root']), Info.new(:root_url => CGI.unescape(summary['repository']['root']),
:lastrev => Revision.new(:revision => tip['revision'], :lastrev => Revision.new(:revision => tip['revision'],
:scmid => tip['node'])) :scmid => tip['node']))
# rescue HgCommandAborted
rescue Exception => e
logger.error "hg: error during getting info: #{e.message}"
nil
end end
def tags def tags
@@ -275,8 +276,7 @@ module Redmine
end end
blame blame
rescue HgCommandAborted rescue HgCommandAborted
# means not found or cannot be annotated nil # means not found or cannot be annotated
Annotate.new
end end
class Revision < Redmine::Scm::Adapters::Revision class Revision < Redmine::Scm::Adapters::Revision
@@ -289,14 +289,11 @@ module Redmine
# Runs 'hg' command with the given args # Runs 'hg' command with the given args
def hg(*args, &block) def hg(*args, &block)
repo_path = root_url || url repo_path = root_url || url
full_args = ['-R', repo_path, '--encoding', 'utf-8'] full_args = [HG_BIN, '-R', repo_path, '--encoding', 'utf-8']
full_args << '--config' << "extensions.redminehelper=#{HG_HELPER_EXT}" full_args << '--config' << "extensions.redminehelper=#{HG_HELPER_EXT}"
full_args << '--config' << 'diff.git=false' full_args << '--config' << 'diff.git=false'
full_args += args full_args += args
ret = shellout( ret = shellout(full_args.map { |e| shell_quote e.to_s }.join(' '), &block)
self.class.sq_bin + ' ' + full_args.map { |e| shell_quote e.to_s }.join(' '),
&block
)
if $? && $?.exitstatus != 0 if $? && $?.exitstatus != 0
raise HgCommandAborted, "hg exited with non-zero status: #{$?.exitstatus}" raise HgCommandAborted, "hg exited with non-zero status: #{$?.exitstatus}"
end end
@@ -32,7 +32,7 @@ module Redmine
end end
def sq_bin def sq_bin
@@sq_bin ||= shell_quote_command @@sq_bin ||= shell_quote(SVN_BIN)
end end
def client_version def client_version
+1 -1
View File
@@ -4,7 +4,7 @@ module Redmine
module VERSION #:nodoc: module VERSION #:nodoc:
MAJOR = 1 MAJOR = 1
MINOR = 2 MINOR = 2
TINY = 2 TINY = 0
# Branch values: # Branch values:
# * official release: nil # * official release: nil
+2 -2
View File
@@ -100,14 +100,14 @@ Processed emails control options:
Examples: Examples:
# No project specified. Emails MUST contain the 'Project' keyword: # No project specified. Emails MUST contain the 'Project' keyword:
rake redmine:email:receive_imap RAILS_ENV="production" \\ rake redmine:email:receive_iamp RAILS_ENV="production" \\
host=imap.foo.bar username=redmine@example.net password=xxx host=imap.foo.bar username=redmine@example.net password=xxx
# Fixed project and default tracker specified, but emails can override # Fixed project and default tracker specified, but emails can override
# both tracker and priority attributes: # both tracker and priority attributes:
rake redmine:email:receive_imap RAILS_ENV="production" \\ rake redmine:email:receive_iamp RAILS_ENV="production" \\
host=imap.foo.bar username=redmine@example.net password=xxx ssl=1 \\ host=imap.foo.bar username=redmine@example.net password=xxx ssl=1 \\
project=foo \\ project=foo \\
tracker=bug \\ tracker=bug \\
-1
View File
@@ -309,7 +309,6 @@ var WarnLeavingUnsaved = Class.create({
}, },
unload: function(){ unload: function(){
this.observedElements.each(function(el) {el.blur();})
if(this.changedForms) if(this.changedForms)
return this.message; return this.message;
}, },
+6 -1
View File
@@ -1,4 +1,9 @@
class AuthSource < ActiveRecord::Base class AuthSource < ActiveRecord::Base
generator_for :name, :start => 'Auth0' generator_for :name, :method => :next_name
def self.next_name
@last_name ||= 'Auth0'
@last_name.succ!
@last_name
end
end end
+14 -2
View File
@@ -1,8 +1,20 @@
class Board < ActiveRecord::Base class Board < ActiveRecord::Base
generator_for :name, :start => 'A Forum' generator_for :name, :method => :next_name
generator_for :description, :start => 'Some description here' generator_for :description, :method => :next_description
generator_for :project, :method => :generate_project generator_for :project, :method => :generate_project
def self.next_name
@last_name ||= 'A Forum'
@last_name.succ!
@last_name
end
def self.next_description
@last_description ||= 'Some description here'
@last_description.succ!
@last_description
end
def self.generate_project def self.generate_project
Project.generate! Project.generate!
end end
+7 -1
View File
@@ -1,8 +1,14 @@
class Change < ActiveRecord::Base class Change < ActiveRecord::Base
generator_for :action => 'A' generator_for :action => 'A'
generator_for :path, :start => 'test/dir/aaa0001' generator_for :path, :method => :next_path
generator_for :changeset, :method => :generate_changeset generator_for :changeset, :method => :generate_changeset
def self.next_path
@last_path ||= 'test/dir/aaa0001'
@last_path.succ!
@last_path
end
def self.generate_changeset def self.generate_changeset
Changeset.generate! Changeset.generate!
end end
+7 -1
View File
@@ -1,8 +1,14 @@
class Changeset < ActiveRecord::Base class Changeset < ActiveRecord::Base
generator_for :revision, :start => '1' generator_for :revision, :method => :next_revision
generator_for :committed_on => Date.today generator_for :committed_on => Date.today
generator_for :repository, :method => :generate_repository generator_for :repository, :method => :generate_repository
def self.next_revision
@last_revision ||= '1'
@last_revision.succ!
@last_revision
end
def self.generate_repository def self.generate_repository
Repository::Subversion.generate! Repository::Subversion.generate!
end end
+6 -1
View File
@@ -1,5 +1,10 @@
class CustomField < ActiveRecord::Base class CustomField < ActiveRecord::Base
generator_for :name, :start => 'CustomField0' generator_for :name, :method => :next_name
generator_for :field_format => 'string' generator_for :field_format => 'string'
def self.next_name
@last_name ||= 'CustomField0'
@last_name.succ!
@last_name
end
end end
+6 -1
View File
@@ -1,5 +1,10 @@
class DocumentCategory < Enumeration class DocumentCategory < Enumeration
generator_for :name, :start => 'DocumentCategory0' generator_for :name, :method => :next_name
generator_for :type => 'DocumentCategory' generator_for :type => 'DocumentCategory'
def self.next_name
@last_name ||= 'DocumentCategory0'
@last_name.succ!
@last_name
end
end end
+6 -1
View File
@@ -1,4 +1,9 @@
class Document < ActiveRecord::Base class Document < ActiveRecord::Base
generator_for :title, :start => 'Document001' generator_for :title, :method => :next_title
def self.next_title
@last_title ||= 'Document001'
@last_title.succ!
@last_title
end
end end
+7 -1
View File
@@ -1,4 +1,10 @@
class EnabledModule < ActiveRecord::Base class EnabledModule < ActiveRecord::Base
generator_for :name, :start => 'module_001' generator_for :name, :method => :next_name
def self.next_name
@last_name ||= 'module_001'
@last_name.succ!
@last_name
end
end end
+6 -1
View File
@@ -1,5 +1,10 @@
class Enumeration < ActiveRecord::Base class Enumeration < ActiveRecord::Base
generator_for :name, :start => 'Enumeration0' generator_for :name, :method => :next_name
generator_for :type => 'TimeEntryActivity' generator_for :type => 'TimeEntryActivity'
def self.next_name
@last_name ||= 'Enumeration0'
@last_name.succ!
@last_name
end
end end
+7 -1
View File
@@ -1,4 +1,10 @@
class Group < Principal class Group < Principal
generator_for :lastname, :start => 'Group' generator_for :lastname, :method => :next_lastname
def self.next_lastname
@last_lastname ||= 'Group'
@last_lastname.succ!
@last_lastname
end
end end
+7 -2
View File
@@ -1,4 +1,9 @@
class IssueCategory < ActiveRecord::Base class IssueCategory < ActiveRecord::Base
generator_for :name, :start => 'Category 0001' generator_for :name, :method => :next_name
def self.next_name
@last_name ||= 'Category 0001'
@last_name.succ!
@last_name
end
end end
+8 -1
View File
@@ -1,7 +1,13 @@
class Issue < ActiveRecord::Base class Issue < ActiveRecord::Base
generator_for :subject, :start => 'Subject 0' generator_for :subject, :method => :next_subject
generator_for :author, :method => :next_author generator_for :author, :method => :next_author
generator_for :priority, :method => :fetch_priority generator_for :priority, :method => :fetch_priority
def self.next_subject
@last_subject ||= 'Subject 0'
@last_subject.succ!
@last_subject
end
def self.next_author def self.next_author
User.generate_with_protected! User.generate_with_protected!
@@ -10,4 +16,5 @@ class Issue < ActiveRecord::Base
def self.fetch_priority def self.fetch_priority
IssuePriority.first || IssuePriority.generate! IssuePriority.first || IssuePriority.generate!
end end
end end
+6 -1
View File
@@ -1,5 +1,10 @@
class IssuePriority < Enumeration class IssuePriority < Enumeration
generator_for :name, :start => 'IssuePriority0' generator_for :name, :method => :next_name
generator_for :type => 'IssuePriority' generator_for :type => 'IssuePriority'
def self.next_name
@last_name ||= 'IssuePriority0'
@last_name.succ!
@last_name
end
end end
+6 -1
View File
@@ -1,4 +1,9 @@
class IssueStatus < ActiveRecord::Base class IssueStatus < ActiveRecord::Base
generator_for :name, :start => 'Status 0' generator_for :name, :method => :next_name
def self.next_name
@last_name ||= 'Status 0'
@last_name.succ!
@last_name
end
end end
+14 -2
View File
@@ -1,8 +1,20 @@
class Message < ActiveRecord::Base class Message < ActiveRecord::Base
generator_for :subject, :start => 'A Message' generator_for :subject, :method => :next_subject
generator_for :content, :start => 'Some content here' generator_for :content, :method => :next_content
generator_for :board, :method => :generate_board generator_for :board, :method => :generate_board
def self.next_subject
@last_subject ||= 'A Message'
@last_subject.succ!
@last_subject
end
def self.next_content
@last_content ||= 'Some content here'
@last_content.succ!
@last_content
end
def self.generate_board def self.generate_board
Board.generate! Board.generate!
end end
+13 -2
View File
@@ -1,5 +1,16 @@
class News < ActiveRecord::Base class News < ActiveRecord::Base
generator_for :title, :start => 'A New Item' generator_for :title, :method => :next_title
generator_for :description, :start => 'Some content here' generator_for :description, :method => :next_description
def self.next_title
@last_title ||= 'A New Item'
@last_title.succ!
@last_title
end
def self.next_description
@last_description ||= 'Some content here'
@last_description.succ!
@last_description
end
end end
+15 -2
View File
@@ -1,8 +1,21 @@
class Project < ActiveRecord::Base class Project < ActiveRecord::Base
generator_for :name, :start => 'Project 0' generator_for :name, :method => :next_name
generator_for :identifier, :start => 'project-0000' generator_for :identifier, :method => :next_identifier_from_object_daddy
generator_for :enabled_modules, :method => :all_modules generator_for :enabled_modules, :method => :all_modules
generator_for :trackers, :method => :next_tracker generator_for :trackers, :method => :next_tracker
def self.next_name
@last_name ||= 'Project 0'
@last_name.succ!
@last_name
end
# Project#next_identifier is defined on Redmine
def self.next_identifier_from_object_daddy
@last_identifier ||= 'project-0000'
@last_identifier.succ!
@last_identifier
end
def self.all_modules def self.all_modules
[].tap do |modules| [].tap do |modules|
+6 -1
View File
@@ -1,4 +1,9 @@
class Query < ActiveRecord::Base class Query < ActiveRecord::Base
generator_for :name, :start => 'Query 0' generator_for :name, :method => :next_name
def self.next_name
@last_name ||= 'Query 0'
@last_name.succ!
@last_name
end
end end
+7 -1
View File
@@ -1,5 +1,11 @@
class Repository < ActiveRecord::Base class Repository < ActiveRecord::Base
generator_for :type => 'Subversion' generator_for :type => 'Subversion'
generator_for :url, :start => 'file:///test/svn' generator_for :url, :method => :next_url
def self.next_url
@last_url ||= 'file:///test/svn'
@last_url.succ!
@last_url
end
end end
+5 -1
View File
@@ -1,4 +1,8 @@
class Role < ActiveRecord::Base class Role < ActiveRecord::Base
generator_for :name, :start => 'Role0' generator_for :name, :method => :next_name
def self.next_name
@last_name ||= 'Role0'
@last_name.succ!
end
end end
@@ -1,5 +1,11 @@
class Repository::Subversion < Repository class Repository::Subversion < Repository
generator_for :type, :method => 'Subversion' generator_for :type, :method => 'Subversion'
generator_for :url, :start => 'file:///test/svn' generator_for :url, :method => :next_url
def self.next_url
@last_url ||= 'file:///test/svn'
@last_url.succ!
@last_url
end
end end
+6 -1
View File
@@ -1,5 +1,10 @@
class TimeEntryActivity < Enumeration class TimeEntryActivity < Enumeration
generator_for :name, :start => 'TimeEntryActivity0' generator_for :name, :method => :next_name
generator_for :type => 'TimeEntryActivity' generator_for :type => 'TimeEntryActivity'
def self.next_name
@last_name ||= 'TimeEntryActivity0'
@last_name.succ!
@last_name
end
end end
+1
View File
@@ -6,4 +6,5 @@ class TimeEntry < ActiveRecord::Base
def self.generate_user def self.generate_user
User.generate_with_protected! User.generate_with_protected!
end end
end end
+6 -1
View File
@@ -1,4 +1,9 @@
class Tracker < ActiveRecord::Base class Tracker < ActiveRecord::Base
generator_for :name, :start => 'Tracker 0' generator_for :name, :method => :next_name
def self.next_name
@last_name ||= 'Tracker 0'
@last_name.succ!
@last_name
end
end end
+22 -4
View File
@@ -1,12 +1,30 @@
class User < Principal class User < Principal
generator_for :login, :start => 'user1' generator_for :login, :method => :next_login
generator_for :mail, :method => :next_email generator_for :mail, :method => :next_email
generator_for :firstname, :start => 'Bob' generator_for :firstname, :method => :next_firstname
generator_for :lastname, :start => 'Doe' generator_for :lastname, :method => :next_lastname
def self.next_login
@gen_login ||= 'user1'
@gen_login.succ!
@gen_login
end
def self.next_email def self.next_email
@last_email ||= 'user1' @last_email ||= 'user1'
@last_email.succ! @last_email.succ!
"#{@last_email}@example.com" "#{@last_email}@example.com"
end end
def self.next_firstname
@last_firstname ||= 'Bob'
@last_firstname.succ!
@last_firstname
end
def self.next_lastname
@last_lastname ||= 'Doe'
@last_lastname.succ!
@last_lastname
end
end end
+7 -1
View File
@@ -1,5 +1,11 @@
class Version < ActiveRecord::Base class Version < ActiveRecord::Base
generator_for :name, :start => 'Version 1.0.0' generator_for :name, :method => :next_name
generator_for :status => 'open' generator_for :status => 'open'
def self.next_name
@last_name ||= 'Version 1.0.0'
@last_name.succ!
@last_name
end
end end
+7 -1
View File
@@ -1,7 +1,13 @@
class WikiPage < ActiveRecord::Base class WikiPage < ActiveRecord::Base
generator_for :title, :start => 'AWikiPage' generator_for :title, :method => :next_title
generator_for :wiki, :method => :generate_wiki generator_for :wiki, :method => :generate_wiki
def self.next_title
@last_title ||= 'AWikiPage'
@last_title.succ!
@last_title
end
def self.generate_wiki def self.generate_wiki
Wiki.generate! Wiki.generate!
end end
+14 -2
View File
@@ -1,8 +1,20 @@
class WikiRedirect < ActiveRecord::Base class WikiRedirect < ActiveRecord::Base
generator_for :title, :start => 'AWikiPage' generator_for :title, :method => :next_title
generator_for :redirects_to, :start => '/a/path/000001' generator_for :redirects_to, :method => :next_redirects_to
generator_for :wiki, :method => :generate_wiki generator_for :wiki, :method => :generate_wiki
def self.next_title
@last_title ||= 'AWikiPage'
@last_title.succ!
@last_title
end
def self.next_redirects_to
@last_redirect ||= '/a/path/000001'
@last_redirect.succ!
@last_redirect
end
def self.generate_wiki def self.generate_wiki
Wiki.generate! Wiki.generate!
end end

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