Compare commits

..

26 Commits

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


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


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


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


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

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

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