diff --git a/app/controllers/activities_controller.rb b/app/controllers/activities_controller.rb new file mode 100644 index 000000000..ae6a67369 --- /dev/null +++ b/app/controllers/activities_controller.rb @@ -0,0 +1,59 @@ +class ActivitiesController < ApplicationController + menu_item :activity + before_filter :find_optional_project + accept_key_auth :index + + def index + @days = Setting.activity_days_default.to_i + + if params[:from] + begin; @date_to = params[:from].to_date + 1; rescue; end + end + + @date_to ||= Date.today + 1 + @date_from = @date_to - @days + @with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1') + @author = (params[:user_id].blank? ? nil : User.active.find(params[:user_id])) + + @activity = Redmine::Activity::Fetcher.new(User.current, :project => @project, + :with_subprojects => @with_subprojects, + :author => @author) + @activity.scope_select {|t| !params["show_#{t}"].nil?} + @activity.scope = (@author.nil? ? :default : :all) if @activity.scope.empty? + + events = @activity.events(@date_from, @date_to) + + if events.empty? || stale?(:etag => [events.first, User.current]) + respond_to do |format| + format.html { + @events_by_day = events.group_by(&:event_date) + render :layout => false if request.xhr? + } + format.atom { + title = l(:label_activity) + if @author + title = @author.name + elsif @activity.scope.size == 1 + title = l("label_#{@activity.scope.first.singularize}_plural") + end + render_feed(events, :title => "#{@project || Setting.app_title}: #{title}") + } + end + end + + rescue ActiveRecord::RecordNotFound + render_404 + end + + private + + # TODO: refactor, duplicated in projects_controller + def find_optional_project + return true unless params[:id] + @project = Project.find(params[:id]) + authorize + rescue ActiveRecord::RecordNotFound + render_404 + end + +end diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index c00b6ba42..725bde788 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -201,7 +201,23 @@ class ApplicationController < ActionController::Base def self.model_object(model) write_inheritable_attribute('model_object', model) end - + + # Filter for bulk issue operations + def find_issues + @issues = Issue.find_all_by_id(params[:id] || params[:ids]) + raise ActiveRecord::RecordNotFound if @issues.empty? + projects = @issues.collect(&:project).compact.uniq + if projects.size == 1 + @project = projects.first + else + # TODO: let users bulk edit/move/destroy issues from different projects + render_error 'Can not bulk edit/move/destroy issues from different projects' + return false + end + rescue ActiveRecord::RecordNotFound + render_404 + end + # make sure that the user is a member of the project (or admin) if project is private # used as a before_filter for actions that do not require any particular permission on the project def check_project_privacy @@ -242,7 +258,7 @@ class ApplicationController < ActionController::Base def render_403 @project = nil respond_to do |format| - format.html { render :template => "common/403", :layout => (request.xhr? ? false : 'base'), :status => 403 } + format.html { render :template => "common/403", :layout => use_layout, :status => 403 } format.atom { head 403 } format.xml { head 403 } format.js { head 403 } @@ -253,7 +269,7 @@ class ApplicationController < ActionController::Base def render_404 respond_to do |format| - format.html { render :template => "common/404", :layout => !request.xhr?, :status => 404 } + format.html { render :template => "common/404", :layout => use_layout, :status => 404 } format.atom { head 404 } format.xml { head 404 } format.js { head 404 } @@ -266,7 +282,7 @@ class ApplicationController < ActionController::Base respond_to do |format| format.html { flash.now[:error] = msg - render :text => '', :layout => !request.xhr?, :status => 500 + render :text => '', :layout => use_layout, :status => 500 } format.atom { head 500 } format.xml { head 500 } @@ -274,6 +290,13 @@ class ApplicationController < ActionController::Base format.json { head 500 } end end + + # Picks which layout to use based on the request + # + # @return [boolean, string] name of the layout to use or false for no layout + def use_layout + request.xhr? ? false : 'base' + end def invalid_authenticity_token if api_request? @@ -349,6 +372,21 @@ class ApplicationController < ActionController::Base flash[:warning] = l(:warning_attachments_not_saved, obj.unsaved_attachments.size) if obj.unsaved_attachments.present? end + # Sets the `flash` notice or error based the number of issues that did not save + # + # @param [Array, Issue] issues all of the saved and unsaved Issues + # @param [Array, Integer] unsaved_issue_ids the issue ids that were not saved + def set_flash_from_bulk_issue_save(issues, unsaved_issue_ids) + if unsaved_issue_ids.empty? + flash[:notice] = l(:notice_successful_update) unless issues.empty? + else + flash[:error] = l(:notice_failed_to_save_issues, + :count => unsaved_issue_ids.size, + :total => issues.size, + :ids => '#' + unsaved_issue_ids.join(', #')) + end + end + # Rescues an invalid query statement. Just in case... def query_statement_invalid(exception) logger.error "Query::StatementInvalid: #{exception.message}" if logger diff --git a/app/controllers/auto_completes_controller.rb b/app/controllers/auto_completes_controller.rb new file mode 100644 index 000000000..1438106f6 --- /dev/null +++ b/app/controllers/auto_completes_controller.rb @@ -0,0 +1,25 @@ +class AutoCompletesController < ApplicationController + before_filter :find_project + + def issues + @issues = [] + q = params[:q].to_s + if q.match(/^\d+$/) + @issues << @project.issues.visible.find_by_id(q.to_i) + end + unless q.blank? + @issues += @project.issues.visible.find(:all, :conditions => ["LOWER(#{Issue.table_name}.subject) LIKE ?", "%#{q.downcase}%"], :limit => 10) + end + render :layout => false + end + + private + + def find_project + project_id = (params[:issue] && params[:issue][:project_id]) || params[:project_id] + @project = Project.find(project_id) + rescue ActiveRecord::RecordNotFound + render_404 + end + +end diff --git a/app/controllers/boards_controller.rb b/app/controllers/boards_controller.rb index 541fefada..fa82218de 100644 --- a/app/controllers/boards_controller.rb +++ b/app/controllers/boards_controller.rb @@ -18,6 +18,7 @@ class BoardsController < ApplicationController default_search_scope :messages before_filter :find_project, :find_board_if_available, :authorize + accept_key_auth :index, :show helper :messages include MessagesHelper diff --git a/app/controllers/calendars_controller.rb b/app/controllers/calendars_controller.rb index f2af58086..febacd075 100644 --- a/app/controllers/calendars_controller.rb +++ b/app/controllers/calendars_controller.rb @@ -1,4 +1,5 @@ class CalendarsController < ApplicationController + menu_item :calendar before_filter :find_optional_project rescue_from Query::StatementInvalid, :with => :query_statement_invalid @@ -31,8 +32,11 @@ class CalendarsController < ApplicationController @calendar.events = events end - render :layout => false if request.xhr? + render :action => 'show', :layout => false if request.xhr? end + def update + show + end end diff --git a/app/controllers/context_menus_controller.rb b/app/controllers/context_menus_controller.rb new file mode 100644 index 000000000..442f85b37 --- /dev/null +++ b/app/controllers/context_menus_controller.rb @@ -0,0 +1,33 @@ +class ContextMenusController < ApplicationController + helper :watchers + + def issues + @issues = Issue.find_all_by_id(params[:ids], :include => :project) + if (@issues.size == 1) + @issue = @issues.first + @allowed_statuses = @issue.new_statuses_allowed_to(User.current) + end + projects = @issues.collect(&:project).compact.uniq + @project = projects.first if projects.size == 1 + + @can = {:edit => (@project && User.current.allowed_to?(:edit_issues, @project)), + :log_time => (@project && User.current.allowed_to?(:log_time, @project)), + :update => (@project && (User.current.allowed_to?(:edit_issues, @project) || (User.current.allowed_to?(:change_status, @project) && @allowed_statuses && !@allowed_statuses.empty?))), + :move => (@project && User.current.allowed_to?(:move_issues, @project)), + :copy => (@issue && @project.trackers.include?(@issue.tracker) && User.current.allowed_to?(:add_issues, @project)), + :delete => (@project && User.current.allowed_to?(:delete_issues, @project)) + } + if @project + @assignables = @project.assignable_users + @assignables << @issue.assigned_to if @issue && @issue.assigned_to && !@assignables.include?(@issue.assigned_to) + @trackers = @project.trackers + end + + @priorities = IssuePriority.all.reverse + @statuses = IssueStatus.find(:all, :order => 'position') + @back = back_url + + render :layout => false + end + +end diff --git a/app/controllers/gantts_controller.rb b/app/controllers/gantts_controller.rb index e762c19c8..6a6071e86 100644 --- a/app/controllers/gantts_controller.rb +++ b/app/controllers/gantts_controller.rb @@ -1,4 +1,5 @@ class GanttsController < ApplicationController + menu_item :gantt before_filter :find_optional_project rescue_from Query::StatementInvalid, :with => :query_statement_invalid @@ -42,4 +43,8 @@ class GanttsController < ApplicationController end end + def update + show + end + end diff --git a/app/controllers/issue_moves_controller.rb b/app/controllers/issue_moves_controller.rb new file mode 100644 index 000000000..6ac46a1ee --- /dev/null +++ b/app/controllers/issue_moves_controller.rb @@ -0,0 +1,65 @@ +class IssueMovesController < ApplicationController + default_search_scope :issues + before_filter :find_issues + before_filter :authorize + + def new + prepare_for_issue_move + render :layout => false if request.xhr? + end + + def create + prepare_for_issue_move + + if request.post? + new_tracker = params[:new_tracker_id].blank? ? nil : @target_project.trackers.find_by_id(params[:new_tracker_id]) + unsaved_issue_ids = [] + moved_issues = [] + @issues.each do |issue| + issue.reload + issue.init_journal(User.current) + call_hook(:controller_issues_move_before_save, { :params => params, :issue => issue, :target_project => @target_project, :copy => !!@copy }) + if r = issue.move_to_project(@target_project, new_tracker, {:copy => @copy, :attributes => extract_changed_attributes_for_move(params)}) + moved_issues << r + else + unsaved_issue_ids << issue.id + end + end + set_flash_from_bulk_issue_save(@issues, unsaved_issue_ids) + + if params[:follow] + if @issues.size == 1 && moved_issues.size == 1 + redirect_to :controller => 'issues', :action => 'show', :id => moved_issues.first + else + redirect_to :controller => 'issues', :action => 'index', :project_id => (@target_project || @project) + end + else + redirect_to :controller => 'issues', :action => 'index', :project_id => @project + end + return + end + end + + private + + def prepare_for_issue_move + @issues.sort! + @copy = params[:copy_options] && params[:copy_options][:copy] + @allowed_projects = Issue.allowed_target_projects_on_move + @target_project = @allowed_projects.detect {|p| p.id.to_s == params[:new_project_id]} if params[:new_project_id] + @target_project ||= @project + @trackers = @target_project.trackers + @available_statuses = Workflow.available_statuses(@project) + end + + def extract_changed_attributes_for_move(params) + changed_attributes = {} + [:assigned_to_id, :status_id, :start_date, :due_date].each do |valid_attribute| + unless params[valid_attribute].blank? + changed_attributes[valid_attribute] = (params[valid_attribute] == 'none' ? nil : params[valid_attribute]) + end + end + changed_attributes + end + +end diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 46c61ea0f..0364e307c 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -19,14 +19,14 @@ class IssuesController < ApplicationController menu_item :new_issue, :only => [:new, :create] default_search_scope :issues - before_filter :find_issue, :only => [:show, :edit, :update, :reply] - before_filter :find_issues, :only => [:bulk_edit, :move, :perform_move, :destroy] - before_filter :find_project, :only => [:new, :create, :update_form, :preview, :auto_complete] - before_filter :authorize, :except => [:index, :changes, :preview, :context_menu] - before_filter :find_optional_project, :only => [:index, :changes] + before_filter :find_issue, :only => [:show, :edit, :update] + before_filter :find_issues, :only => [:bulk_edit, :bulk_update, :move, :perform_move, :destroy] + before_filter :find_project, :only => [:new, :create] + before_filter :authorize, :except => [:index] + before_filter :find_optional_project, :only => [:index] before_filter :check_for_default_issue_status, :only => [:new, :create] before_filter :build_new_issue_from_params, :only => [:new, :create] - accept_key_auth :index, :show, :changes + accept_key_auth :index, :show rescue_from Query::StatementInvalid, :with => :query_statement_invalid @@ -54,6 +54,7 @@ class IssuesController < ApplicationController :render => { :nothing => true, :status => :method_not_allowed } verify :method => :post, :only => :create, :render => {:nothing => true, :status => :method_not_allowed } + verify :method => :post, :only => :bulk_update, :render => {:nothing => true, :status => :method_not_allowed } verify :method => :put, :only => :update, :render => {:nothing => true, :status => :method_not_allowed } def index @@ -95,21 +96,6 @@ class IssuesController < ApplicationController render_404 end - def changes - retrieve_query - sort_init 'id', 'desc' - sort_update(@query.sortable_columns) - - if @query.valid? - @journals = @query.journals(:order => "#{Journal.table_name}.created_on DESC", - :limit => 25) - end - @title = (@project ? @project.name : Setting.app_title) + ": " + (@query.new_record? ? l(:label_changes_details) : @query.name) - render :layout => false, :content_type => 'application/atom+xml' - rescue ActiveRecord::RecordNotFound - render_404 - end - def show @journals = @issue.journals.find(:all, :include => [:user, :details], :order => "#{Journal.table_name}.created_on ASC") @journals.each_with_index {|j,i| j.indice = i+1} @@ -124,7 +110,7 @@ class IssuesController < ApplicationController format.html { render :template => 'issues/show.rhtml' } format.xml { render :layout => false } format.json { render :text => @issue.to_json, :layout => false } - format.atom { render :action => 'changes', :layout => false, :content_type => 'application/atom+xml' } + format.atom { render :template => 'journals/index', :layout => false, :content_type => 'application/atom+xml' } format.pdf { send_data(issue_to_pdf(@issue), :type => 'application/pdf', :filename => "#{@project.identifier}-#{@issue.id}.pdf") } end end @@ -132,7 +118,10 @@ class IssuesController < ApplicationController # Add a new issue # The new issue will be created from an existing one if copy_from parameter is given def new - render :action => 'new', :layout => !request.xhr? + respond_to do |format| + format.html { render :action => 'new', :layout => !request.xhr? } + format.js { render :partial => 'attributes' } + end end def create @@ -200,92 +189,30 @@ class IssuesController < ApplicationController end end - def reply - journal = Journal.find(params[:journal_id]) if params[:journal_id] - if journal - user = journal.user - text = journal.notes - else - user = @issue.author - text = @issue.description - end - # Replaces pre blocks with [...] - text = text.to_s.strip.gsub(%r{
((.|\s)*?)
}m, '[...]') - content = "#{ll(Setting.default_language, :text_user_wrote, user)}\n> " - content << text.gsub(/(\r?\n|\r\n?)/, "\n> ") + "\n\n" - - render(:update) { |page| - page.<< "$('notes').value = \"#{escape_javascript content}\";" - page.show 'update' - page << "Form.Element.focus('notes');" - page << "Element.scrollTo('update');" - page << "$('notes').scrollTop = $('notes').scrollHeight - $('notes').clientHeight;" - } - end - # Bulk edit a set of issues def bulk_edit @issues.sort! - if request.post? - attributes = (params[:issue] || {}).reject {|k,v| v.blank?} - attributes.keys.each {|k| attributes[k] = '' if attributes[k] == 'none'} - attributes[:custom_field_values].reject! {|k,v| v.blank?} if attributes[:custom_field_values] - - unsaved_issue_ids = [] - @issues.each do |issue| - issue.reload - journal = issue.init_journal(User.current, params[:notes]) - issue.safe_attributes = attributes - call_hook(:controller_issues_bulk_edit_before_save, { :params => params, :issue => issue }) - unless issue.save - # Keep unsaved issue ids to display them in flash error - unsaved_issue_ids << issue.id - end - end - set_flash_from_bulk_issue_save(@issues, unsaved_issue_ids) - redirect_back_or_default({:controller => 'issues', :action => 'index', :project_id => @project}) - return - end @available_statuses = Workflow.available_statuses(@project) @custom_fields = @project.all_issue_custom_fields end - def move - prepare_for_issue_move - render :layout => false if request.xhr? - end + def bulk_update + @issues.sort! + attributes = parse_params_for_bulk_issue_attributes(params) - # TODO: more descriptive name? move to separate controller like IssueMovesController? - def perform_move - prepare_for_issue_move - - if request.post? - new_tracker = params[:new_tracker_id].blank? ? nil : @target_project.trackers.find_by_id(params[:new_tracker_id]) - unsaved_issue_ids = [] - moved_issues = [] - @issues.each do |issue| - issue.reload - issue.init_journal(User.current) - call_hook(:controller_issues_move_before_save, { :params => params, :issue => issue, :target_project => @target_project, :copy => !!@copy }) - if r = issue.move_to_project(@target_project, new_tracker, {:copy => @copy, :attributes => extract_changed_attributes_for_move(params)}) - moved_issues << r - else - unsaved_issue_ids << issue.id - end + unsaved_issue_ids = [] + @issues.each do |issue| + issue.reload + journal = issue.init_journal(User.current, params[:notes]) + issue.safe_attributes = attributes + call_hook(:controller_issues_bulk_edit_before_save, { :params => params, :issue => issue }) + unless issue.save + # Keep unsaved issue ids to display them in flash error + unsaved_issue_ids << issue.id end - set_flash_from_bulk_issue_save(@issues, unsaved_issue_ids) - - if params[:follow] - if @issues.size == 1 && moved_issues.size == 1 - redirect_to :controller => 'issues', :action => 'show', :id => moved_issues.first - else - redirect_to :controller => 'issues', :action => 'index', :project_id => (@target_project || @project) - end - else - redirect_to :controller => 'issues', :action => 'index', :project_id => @project - end - return end + set_flash_from_bulk_issue_save(@issues, unsaved_issue_ids) + redirect_back_or_default({:controller => 'issues', :action => 'index', :project_id => @project}) end def destroy @@ -318,77 +245,7 @@ class IssuesController < ApplicationController format.json { head :ok } end end - - def context_menu - @issues = Issue.find_all_by_id(params[:ids], :include => :project) - if (@issues.size == 1) - @issue = @issues.first - @allowed_statuses = @issue.new_statuses_allowed_to(User.current) - end - projects = @issues.collect(&:project).compact.uniq - @project = projects.first if projects.size == 1 - @can = {:edit => (@project && User.current.allowed_to?(:edit_issues, @project)), - :log_time => (@project && User.current.allowed_to?(:log_time, @project)), - :update => (@project && (User.current.allowed_to?(:edit_issues, @project) || (User.current.allowed_to?(:change_status, @project) && @allowed_statuses && !@allowed_statuses.empty?))), - :move => (@project && User.current.allowed_to?(:move_issues, @project)), - :copy => (@issue && @project.trackers.include?(@issue.tracker) && User.current.allowed_to?(:add_issues, @project)), - :delete => (@project && User.current.allowed_to?(:delete_issues, @project)) - } - if @project - @assignables = @project.assignable_users - @assignables << @issue.assigned_to if @issue && @issue.assigned_to && !@assignables.include?(@issue.assigned_to) - @trackers = @project.trackers - end - - @priorities = IssuePriority.all.reverse - @statuses = IssueStatus.find(:all, :order => 'position') - @back = back_url - - render :layout => false - end - - def update_form - if params[:id].blank? - @issue = Issue.new - @issue.project = @project - else - @issue = @project.issues.visible.find(params[:id]) - end - @issue.attributes = params[:issue] - @allowed_statuses = ([@issue.status] + @issue.status.find_new_statuses_allowed_to(User.current.roles_for_project(@project), @issue.tracker)).uniq - @priorities = IssuePriority.all - - render :partial => 'attributes' - end - - def preview - @issue = @project.issues.find_by_id(params[:id]) unless params[:id].blank? - if @issue - @attachements = @issue.attachments - @description = params[:issue] && params[:issue][:description] - if @description && @description.gsub(/(\r?\n|\n\r?)/, "\n") == @issue.description.to_s.gsub(/(\r?\n|\n\r?)/, "\n") - @description = nil - end - @notes = params[:notes] - else - @description = (params[:issue] ? params[:issue][:description] : nil) - end - render :layout => false - end - - def auto_complete - @issues = [] - q = params[:q].to_s - if q.match(/^\d+$/) - @issues << @project.issues.visible.find_by_id(q.to_i) - end - unless q.blank? - @issues += @project.issues.visible.find(:all, :conditions => ["LOWER(#{Issue.table_name}.subject) LIKE ?", "%#{q.downcase}%"], :limit => 10) - end - render :layout => false - end - private def find_issue @issue = Issue.find(params[:id], :include => [:project, :tracker, :status, :author, :priority, :category]) @@ -397,22 +254,6 @@ private render_404 end - # Filter for bulk operations - def find_issues - @issues = Issue.find_all_by_id(params[:id] || params[:ids]) - raise ActiveRecord::RecordNotFound if @issues.empty? - projects = @issues.collect(&:project).compact.uniq - if projects.size == 1 - @project = projects.first - else - # TODO: let users bulk edit/move/destroy issues from different projects - render_error 'Can not bulk edit/move/destroy issues from different projects' - return false - end - rescue ActiveRecord::RecordNotFound - render_404 - end - def find_project project_id = (params[:issue] && params[:issue][:project_id]) || params[:project_id] @project = Project.find(project_id) @@ -429,7 +270,7 @@ private @edit_allowed = User.current.allowed_to?(:edit_issues, @project) @time_entry = TimeEntry.new - @notes = params[:notes] + @notes = params[:notes] || (params[:issue].present? ? params[:issue][:notes] : nil) @issue.init_journal(User.current, @notes) # User can change issue attributes only if he has :edit permission or if a workflow transition is allowed if (@edit_allowed || !@allowed_statuses.empty?) && params[:issue] @@ -443,8 +284,14 @@ private # TODO: Refactor, lots of extra code in here def build_new_issue_from_params - @issue = Issue.new - @issue.copy_from(params[:copy_from]) if params[:copy_from] + if params[:id].blank? + @issue = Issue.new + @issue.copy_from(params[:copy_from]) if params[:copy_from] + @issue.project = @project + else + @issue = @project.issues.visible.find(params[:id]) + end + @issue.project = @project # Tracker must be set before custom field values @issue.tracker ||= @project.trackers.find((params[:issue] && params[:issue][:tracker_id]) || params[:tracker_id] || :first) @@ -462,27 +309,6 @@ private @allowed_statuses = @issue.new_statuses_allowed_to(User.current, true) end - def prepare_for_issue_move - @issues.sort! - @copy = params[:copy_options] && params[:copy_options][:copy] - @allowed_projects = Issue.allowed_target_projects_on_move - @target_project = @allowed_projects.detect {|p| p.id.to_s == params[:new_project_id]} if params[:new_project_id] - @target_project ||= @project - @trackers = @target_project.trackers - @available_statuses = Workflow.available_statuses(@project) - end - - def set_flash_from_bulk_issue_save(issues, unsaved_issue_ids) - if unsaved_issue_ids.empty? - flash[:notice] = l(:notice_successful_update) unless issues.empty? - else - flash[:error] = l(:notice_failed_to_save_issues, - :count => unsaved_issue_ids.size, - :total => issues.size, - :ids => '#' + unsaved_issue_ids.join(', #')) - end - end - def check_for_default_issue_status if IssueStatus.default.nil? render_error l(:error_no_default_issue_status) @@ -490,13 +316,10 @@ private end end - def extract_changed_attributes_for_move(params) - changed_attributes = {} - [:assigned_to_id, :status_id, :start_date, :due_date].each do |valid_attribute| - unless params[valid_attribute].blank? - changed_attributes[valid_attribute] = (params[valid_attribute] == 'none' ? nil : params[valid_attribute]) - end - end - changed_attributes + def parse_params_for_bulk_issue_attributes(params) + attributes = (params[:issue] || {}).reject {|k,v| v.blank?} + attributes.keys.each {|k| attributes[k] = '' if attributes[k] == 'none'} + attributes[:custom_field_values].reject! {|k,v| v.blank?} if attributes[:custom_field_values] + attributes end end diff --git a/app/controllers/journals_controller.rb b/app/controllers/journals_controller.rb index e9fe9099d..a3b1abde4 100644 --- a/app/controllers/journals_controller.rb +++ b/app/controllers/journals_controller.rb @@ -16,7 +16,54 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. class JournalsController < ApplicationController - before_filter :find_journal + before_filter :find_journal, :only => [:edit] + before_filter :find_issue, :only => [:new] + before_filter :find_optional_project, :only => [:index] + accept_key_auth :index + + helper :issues + helper :queries + include QueriesHelper + helper :sort + include SortHelper + + def index + retrieve_query + sort_init 'id', 'desc' + sort_update(@query.sortable_columns) + + if @query.valid? + @journals = @query.journals(:order => "#{Journal.table_name}.created_on DESC", + :limit => 25) + end + @title = (@project ? @project.name : Setting.app_title) + ": " + (@query.new_record? ? l(:label_changes_details) : @query.name) + render :layout => false, :content_type => 'application/atom+xml' + rescue ActiveRecord::RecordNotFound + render_404 + end + + def new + journal = Journal.find(params[:journal_id]) if params[:journal_id] + if journal + user = journal.user + text = journal.notes + else + user = @issue.author + text = @issue.description + end + # Replaces pre blocks with [...] + text = text.to_s.strip.gsub(%r{
((.|\s)*?)
}m, '[...]') + content = "#{ll(Setting.default_language, :text_user_wrote, user)}\n> " + content << text.gsub(/(\r?\n|\r\n?)/, "\n> ") + "\n\n" + + render(:update) { |page| + page.<< "$('notes').value = \"#{escape_javascript content}\";" + page.show 'update' + page << "Form.Element.focus('notes');" + page << "Element.scrollTo('update');" + page << "$('notes').scrollTop = $('notes').scrollHeight - $('notes').clientHeight;" + } + end def edit if request.post? @@ -38,4 +85,12 @@ private rescue ActiveRecord::RecordNotFound render_404 end + + # TODO: duplicated in IssuesController + def find_issue + @issue = Issue.find(params[:id], :include => [:project, :tracker, :status, :author, :priority, :category]) + @project = @issue.project + rescue ActiveRecord::RecordNotFound + render_404 + end end diff --git a/app/controllers/previews_controller.rb b/app/controllers/previews_controller.rb new file mode 100644 index 000000000..e1c644653 --- /dev/null +++ b/app/controllers/previews_controller.rb @@ -0,0 +1,28 @@ +class PreviewsController < ApplicationController + before_filter :find_project + + def issue + @issue = @project.issues.find_by_id(params[:id]) unless params[:id].blank? + if @issue + @attachements = @issue.attachments + @description = params[:issue] && params[:issue][:description] + if @description && @description.gsub(/(\r?\n|\n\r?)/, "\n") == @issue.description.to_s.gsub(/(\r?\n|\n\r?)/, "\n") + @description = nil + end + @notes = params[:notes] + else + @description = (params[:issue] ? params[:issue][:description] : nil) + end + render :layout => false + end + + private + + def find_project + project_id = (params[:issue] && params[:issue][:project_id]) || params[:project_id] + @project = Project.find(project_id) + rescue ActiveRecord::RecordNotFound + render_404 + end + +end diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 44071d214..845ab3c15 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -17,17 +17,15 @@ class ProjectsController < ApplicationController menu_item :overview - menu_item :activity, :only => :activity menu_item :roadmap, :only => :roadmap menu_item :files, :only => [:list_files, :add_file] menu_item :settings, :only => :settings - before_filter :find_project, :except => [ :index, :list, :add, :copy, :activity ] - before_filter :find_optional_project, :only => :activity - before_filter :authorize, :except => [ :index, :list, :add, :copy, :archive, :unarchive, :destroy, :activity ] + before_filter :find_project, :except => [ :index, :list, :add, :copy ] + before_filter :authorize, :except => [ :index, :list, :add, :copy, :archive, :unarchive, :destroy] before_filter :authorize_global, :only => :add before_filter :require_admin, :only => [ :copy, :archive, :unarchive, :destroy ] - accept_key_auth :activity, :index + accept_key_auth :index after_filter :only => [:add, :edit, :archive, :unarchive, :destroy] do |controller| if controller.request.post? @@ -289,72 +287,6 @@ class ProjectsController < ApplicationController render :layout => !request.xhr? end - def roadmap - @trackers = @project.trackers.find(:all, :order => 'position') - retrieve_selected_tracker_ids(@trackers, @trackers.select {|t| t.is_in_roadmap?}) - @with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1') - project_ids = @with_subprojects ? @project.self_and_descendants.collect(&:id) : [@project.id] - - @versions = @project.shared_versions || [] - @versions += @project.rolled_up_versions.visible if @with_subprojects - @versions = @versions.uniq.sort - @versions.reject! {|version| version.closed? || version.completed? } unless params[:completed] - - @issues_by_version = {} - unless @selected_tracker_ids.empty? - @versions.each do |version| - issues = version.fixed_issues.visible.find(:all, - :include => [:project, :status, :tracker, :priority], - :conditions => {:tracker_id => @selected_tracker_ids, :project_id => project_ids}, - :order => "#{Project.table_name}.lft, #{Tracker.table_name}.position, #{Issue.table_name}.id") - @issues_by_version[version] = issues - end - end - @versions.reject! {|version| !project_ids.include?(version.project_id) && @issues_by_version[version].blank?} - end - - def activity - @days = Setting.activity_days_default.to_i - - if params[:from] - begin; @date_to = params[:from].to_date + 1; rescue; end - end - - @date_to ||= Date.today + 1 - @date_from = @date_to - @days - @with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1') - @author = (params[:user_id].blank? ? nil : User.active.find(params[:user_id])) - - @activity = Redmine::Activity::Fetcher.new(User.current, :project => @project, - :with_subprojects => @with_subprojects, - :author => @author) - @activity.scope_select {|t| !params["show_#{t}"].nil?} - @activity.scope = (@author.nil? ? :default : :all) if @activity.scope.empty? - - events = @activity.events(@date_from, @date_to) - - if events.empty? || stale?(:etag => [events.first, User.current]) - respond_to do |format| - format.html { - @events_by_day = events.group_by(&:event_date) - render :layout => false if request.xhr? - } - format.atom { - title = l(:label_activity) - if @author - title = @author.name - elsif @activity.scope.size == 1 - title = l("label_#{@activity.scope.first.singularize}_plural") - end - render_feed(events, :title => "#{@project || Setting.app_title}: #{title}") - } - end - end - - rescue ActiveRecord::RecordNotFound - render_404 - end - private def find_optional_project return true unless params[:id] @@ -364,14 +296,6 @@ private render_404 end - def retrieve_selected_tracker_ids(selectable_trackers, default_trackers=nil) - if ids = params[:tracker_ids] - @selected_tracker_ids = (ids.is_a? Array) ? ids.collect { |id| id.to_i.to_s } : ids.split('/').collect { |id| id.to_i.to_s } - else - @selected_tracker_ids = (default_trackers || selectable_trackers).collect {|t| t.id.to_s } - end - end - # Validates parent_id param according to user's permissions # TODO: move it to Project model in a validation that depends on User.current def validate_parent_id diff --git a/app/controllers/versions_controller.rb b/app/controllers/versions_controller.rb index 46b4778d4..dd01da95b 100644 --- a/app/controllers/versions_controller.rb +++ b/app/controllers/versions_controller.rb @@ -18,13 +18,37 @@ class VersionsController < ApplicationController menu_item :roadmap model_object Version - before_filter :find_model_object, :except => [:new, :close_completed] - before_filter :find_project_from_association, :except => [:new, :close_completed] - before_filter :find_project, :only => [:new, :close_completed] + before_filter :find_model_object, :except => [:index, :new, :close_completed] + before_filter :find_project_from_association, :except => [:index, :new, :close_completed] + before_filter :find_project, :only => [:index, :new, :close_completed] before_filter :authorize helper :custom_fields helper :projects + + def index + @trackers = @project.trackers.find(:all, :order => 'position') + retrieve_selected_tracker_ids(@trackers, @trackers.select {|t| t.is_in_roadmap?}) + @with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1') + project_ids = @with_subprojects ? @project.self_and_descendants.collect(&:id) : [@project.id] + + @versions = @project.shared_versions || [] + @versions += @project.rolled_up_versions.visible if @with_subprojects + @versions = @versions.uniq.sort + @versions.reject! {|version| version.closed? || version.completed? } unless params[:completed] + + @issues_by_version = {} + unless @selected_tracker_ids.empty? + @versions.each do |version| + issues = version.fixed_issues.visible.find(:all, + :include => [:project, :status, :tracker, :priority], + :conditions => {:tracker_id => @selected_tracker_ids, :project_id => project_ids}, + :order => "#{Project.table_name}.lft, #{Tracker.table_name}.position, #{Issue.table_name}.id") + @issues_by_version[version] = issues + end + end + @versions.reject! {|version| !project_ids.include?(version.project_id) && @issues_by_version[version].blank?} + end def show @issues = @version.fixed_issues.visible.find(:all, @@ -105,4 +129,13 @@ private rescue ActiveRecord::RecordNotFound render_404 end + + def retrieve_selected_tracker_ids(selectable_trackers, default_trackers=nil) + if ids = params[:tracker_ids] + @selected_tracker_ids = (ids.is_a? Array) ? ids.collect { |id| id.to_i.to_s } : ids.split('/').collect { |id| id.to_i.to_s } + else + @selected_tracker_ids = (default_trackers || selectable_trackers).collect {|t| t.id.to_s } + end + end + end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 2c334b7f0..19dd654db 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -737,6 +737,11 @@ module ApplicationHelper javascript_include_tag('context_menu') + stylesheet_link_tag('context_menu') end + if l(:direction) == 'rtl' + content_for :header_tags do + stylesheet_link_tag('context_menu_rtl') + end + end @context_menu_included = true end javascript_tag "new ContextMenu('#{ url_for(url) }')" diff --git a/app/helpers/calendars_helper.rb b/app/helpers/calendars_helper.rb new file mode 100644 index 000000000..08e665dcd --- /dev/null +++ b/app/helpers/calendars_helper.rb @@ -0,0 +1,45 @@ +module CalendarsHelper + def link_to_previous_month(year, month, options={}) + target_year, target_month = if month == 1 + [year - 1, 12] + else + [year, month - 1] + end + + name = if target_month == 12 + "#{month_name(target_month)} #{target_year}" + else + "#{month_name(target_month)}" + end + + link_to_month(('« ' + name), target_year, target_month, options) + end + + def link_to_next_month(year, month, options={}) + target_year, target_month = if month == 12 + [year + 1, 1] + else + [year, month + 1] + end + + name = if target_month == 1 + "#{month_name(target_month)} #{target_year}" + else + "#{month_name(target_month)}" + end + + link_to_month((name + ' »'), target_year, target_month, options) + end + + def link_to_month(link_name, year, month, options={}) + project_id = options[:project].present? ? options[:project].to_param : nil + + link_target = calendar_path(:year => year, :month => month, :project_id => project_id) + + link_to_remote(link_name, + {:update => "content", :url => link_target, :method => :put}, + {:href => link_target}) + + end + +end diff --git a/app/helpers/issue_moves_helper.rb b/app/helpers/issue_moves_helper.rb new file mode 100644 index 000000000..b58b4ce5a --- /dev/null +++ b/app/helpers/issue_moves_helper.rb @@ -0,0 +1,2 @@ +module IssueMovesHelper +end diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb index 60798fedf..617822986 100644 --- a/app/helpers/issues_helper.rb +++ b/app/helpers/issues_helper.rb @@ -30,12 +30,14 @@ module IssuesHelper end def render_issue_tooltip(issue) + @cached_label_status ||= l(:field_status) @cached_label_start_date ||= l(:field_start_date) @cached_label_due_date ||= l(:field_due_date) @cached_label_assigned_to ||= l(:field_assigned_to) @cached_label_priority ||= l(:field_priority) link_to_issue(issue) + "

" + + "#{@cached_label_status}: #{issue.status.name}
" + "#{@cached_label_start_date}: #{format_date(issue.start_date)}
" + "#{@cached_label_due_date}: #{format_date(issue.due_date)}
" + "#{@cached_label_assigned_to}: #{issue.assigned_to}
" + diff --git a/app/helpers/journals_helper.rb b/app/helpers/journals_helper.rb index cf8772430..c8d53f253 100644 --- a/app/helpers/journals_helper.rb +++ b/app/helpers/journals_helper.rb @@ -22,7 +22,7 @@ module JournalsHelper links = [] if !journal.notes.blank? links << link_to_remote(image_tag('comment.png'), - { :url => {:controller => 'issues', :action => 'reply', :id => issue, :journal_id => journal} }, + { :url => {:controller => 'journals', :action => 'new', :id => issue, :journal_id => journal} }, :title => l(:button_quote)) if options[:reply_links] links << link_to_in_place_notes_editor(image_tag('edit.png'), "journal-#{journal.id}-notes", { :controller => 'journals', :action => 'edit', :id => journal }, diff --git a/app/views/projects/activity.rhtml b/app/views/activities/index.html.erb similarity index 100% rename from app/views/projects/activity.rhtml rename to app/views/activities/index.html.erb diff --git a/app/views/issues/auto_complete.html.erb b/app/views/auto_completes/issues.html.erb similarity index 100% rename from app/views/issues/auto_complete.html.erb rename to app/views/auto_completes/issues.html.erb diff --git a/app/views/boards/index.rhtml b/app/views/boards/index.rhtml index 7cc6a0e2f..6310f942e 100644 --- a/app/views/boards/index.rhtml +++ b/app/views/boards/index.rhtml @@ -30,11 +30,11 @@ <% other_formats_links do |f| %> - <%= f.link_to 'Atom', :url => {:controller => 'projects', :action => 'activity', :id => @project, :show_messages => 1, :key => User.current.rss_key} %> + <%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => @project, :show_messages => 1, :key => User.current.rss_key} %> <% end %> <% content_for :header_tags do %> - <%= auto_discovery_link_tag(:atom, {:controller => 'projects', :action => 'activity', :id => @project, :format => 'atom', :show_messages => 1, :key => User.current.rss_key}) %> + <%= auto_discovery_link_tag(:atom, {:controller => 'activities', :action => 'index', :id => @project, :format => 'atom', :show_messages => 1, :key => User.current.rss_key}) %> <% end %> <% html_title l(:label_board_plural) %> diff --git a/app/views/calendars/show.html.erb b/app/views/calendars/show.html.erb index 4541cc0c8..530416661 100644 --- a/app/views/calendars/show.html.erb +++ b/app/views/calendars/show.html.erb @@ -1,6 +1,7 @@

<%= l(:label_calendar) %>

-<% form_tag({}, :id => 'query_form') do %> +<% form_tag(calendar_path, :method => :put, :id => 'query_form') do %> + <%= hidden_field_tag('project_id', @project.to_param) if @project%>
<%= l(:label_filter_plural) %>
@@ -9,14 +10,7 @@

-<%= link_to_remote ('« ' + (@month==1 ? "#{month_name(12)} #{@year-1}" : "#{month_name(@month-1)}")), - {:update => "content", :url => { :year => (@month==1 ? @year-1 : @year), :month =>(@month==1 ? 12 : @month-1) }}, - {:href => url_for(:action => 'show', :year => (@month==1 ? @year-1 : @year), :month =>(@month==1 ? 12 : @month-1))} - %> | -<%= link_to_remote ((@month==12 ? "#{month_name(1)} #{@year+1}" : "#{month_name(@month+1)}") + ' »'), - {:update => "content", :url => { :year => (@month==12 ? @year+1 : @year), :month =>(@month==12 ? 1 : @month+1) }}, - {:href => url_for(:action => 'show', :year => (@month==12 ? @year+1 : @year), :month =>(@month==12 ? 1 : @month+1))} - %> + <%= link_to_previous_month(@year, @month, :project => @project) %> | <%= link_to_next_month(@year, @month, :project => @project) %>

diff --git a/app/views/issues/context_menu.rhtml b/app/views/context_menus/issues.html.erb similarity index 95% rename from app/views/issues/context_menu.rhtml rename to app/views/context_menus/issues.html.erb index d9e92a4f8..dc11b5fdb 100644 --- a/app/views/issues/context_menu.rhtml +++ b/app/views/context_menus/issues.html.erb @@ -102,9 +102,9 @@

  • <%= context_menu_link l(:button_duplicate), {:controller => 'issues', :action => 'new', :project_id => @project, :copy_from => @issue}, :class => 'icon-duplicate', :disabled => !@can[:copy] %>
  • <% end %> -
  • <%= context_menu_link l(:button_copy), {:controller => 'issues', :action => 'move', :ids => @issues.collect(&:id), :copy_options => {:copy => 't'}}, +
  • <%= context_menu_link l(:button_copy), new_issue_move_path(:ids => @issues.collect(&:id), :copy_options => {:copy => 't'}), :class => 'icon-copy', :disabled => !@can[:move] %>
  • -
  • <%= context_menu_link l(:button_move), {:controller => 'issues', :action => 'move', :ids => @issues.collect(&:id)}, +
  • <%= context_menu_link l(:button_move), new_issue_move_path(:ids => @issues.collect(&:id)), :class => 'icon-move', :disabled => !@can[:move] %>
  • <%= context_menu_link l(:button_delete), {:controller => 'issues', :action => 'destroy', :ids => @issues.collect(&:id)}, :method => :post, :confirm => l(:text_issues_destroy_confirmation), :class => 'icon-del', :disabled => !@can[:delete] %>
  • diff --git a/app/views/gantts/show.html.erb b/app/views/gantts/show.html.erb index 653a41d41..5d4ef0dbf 100644 --- a/app/views/gantts/show.html.erb +++ b/app/views/gantts/show.html.erb @@ -1,6 +1,7 @@

    <%= l(:label_gantt) %>

    -<% form_tag(params.merge(:month => nil, :year => nil, :months => nil), :id => 'query_form') do %> +<% form_tag(gantt_path(:month => params[:month], :year => params[:year], :months => params[:months]), :method => :put, :id => 'query_form') do %> + <%= hidden_field_tag('project_id', @project.to_param) if @project%>
    <%= l(:label_filter_plural) %>
    diff --git a/app/views/issues/move.rhtml b/app/views/issue_moves/new.rhtml similarity index 96% rename from app/views/issues/move.rhtml rename to app/views/issue_moves/new.rhtml index c216cba7c..2dc971df2 100644 --- a/app/views/issues/move.rhtml +++ b/app/views/issue_moves/new.rhtml @@ -6,14 +6,14 @@ <% end -%> -<% form_tag({:action => 'perform_move'}, :id => 'move_form') do %> +<% form_tag({:action => 'create'}, :id => 'move_form') do %> <%= @issues.collect {|i| hidden_field_tag('ids[]', i.id)}.join %>

    <%= select_tag "new_project_id", project_tree_options_for_select(@allowed_projects, :selected => @target_project), - :onchange => remote_function(:url => { :action => 'move' }, + :onchange => remote_function(:url => { :action => 'new' }, :method => :get, :update => 'content', :with => "Form.serialize('move_form')") %>

    diff --git a/app/views/issues/_action_menu.rhtml b/app/views/issues/_action_menu.rhtml index 693b49237..c5d17511a 100644 --- a/app/views/issues/_action_menu.rhtml +++ b/app/views/issues/_action_menu.rhtml @@ -4,7 +4,7 @@ <% replace_watcher ||= 'watcher' %> <%= watcher_tag(@issue, User.current, {:id => replace_watcher, :replace => ['watcher','watcher2']}) %> <%= link_to_if_authorized l(:button_duplicate), {:controller => 'issues', :action => 'new', :project_id => @project, :copy_from => @issue }, :class => 'icon icon-duplicate' %> -<%= link_to_if_authorized l(:button_copy), {:controller => 'issues', :action => 'move', :id => @issue, :copy_options => {:copy => 't'} }, :class => 'icon icon-copy' %> -<%= link_to_if_authorized l(:button_move), {:controller => 'issues', :action => 'move', :id => @issue }, :class => 'icon icon-move' %> +<%= link_to_if_authorized l(:button_copy), new_issue_move_path(:id => @issue, :copy_options => {:copy => 't'}), :class => 'icon icon-copy' %> +<%= link_to_if_authorized l(:button_move), new_issue_move_path(:id => @issue), :class => 'icon icon-move' %> <%= link_to_if_authorized l(:button_delete), {:controller => 'issues', :action => 'destroy', :id => @issue}, :confirm => l(:text_are_you_sure), :method => :post, :class => 'icon icon-del' %>
    diff --git a/app/views/issues/_edit.rhtml b/app/views/issues/_edit.rhtml index 0c01f80be..ec36b1459 100644 --- a/app/views/issues/_edit.rhtml +++ b/app/views/issues/_edit.rhtml @@ -44,7 +44,7 @@ <%= f.hidden_field :lock_version %> <%= submit_tag l(:button_submit) %> <%= link_to_remote l(:label_preview), - { :url => { :controller => 'issues', :action => 'preview', :project_id => @project, :id => @issue }, + { :url => preview_issue_path(:project_id => @project, :id => @issue), :method => 'post', :update => 'preview', :with => 'Form.serialize("issue-form")', diff --git a/app/views/issues/_form.rhtml b/app/views/issues/_form.rhtml index 1e3beaf85..2bee7d36c 100644 --- a/app/views/issues/_form.rhtml +++ b/app/views/issues/_form.rhtml @@ -1,6 +1,6 @@
    >

    <%= f.select :tracker_id, @project.trackers.collect {|t| [t.name, t.id]}, :required => true %>

    -<%= observe_field :issue_tracker_id, :url => { :action => :update_form, :project_id => @project, :id => @issue }, +<%= observe_field :issue_tracker_id, :url => { :action => :new, :project_id => @project, :id => @issue }, :update => :attributes, :with => "Form.serialize('issue-form')" %> @@ -9,10 +9,7 @@ <% unless (@issue.new_record? && @issue.parent_issue_id.nil?) || !User.current.allowed_to?(:manage_subtasks, @project) %>

    <%= f.text_field :parent_issue_id, :size => 10 %>

    -<%= javascript_tag "observeParentIssueField('#{url_for(:controller => :issues, - :action => :auto_complete, - :id => @issue, - :project_id => @project) }')" %> +<%= javascript_tag "observeParentIssueField('#{auto_complete_issues_path(:id => @issue, :project_id => @project) }')" %> <% end %>

    <%= f.text_area :description, diff --git a/app/views/issues/_sidebar.rhtml b/app/views/issues/_sidebar.rhtml index bcf0837f8..db85f97b9 100644 --- a/app/views/issues/_sidebar.rhtml +++ b/app/views/issues/_sidebar.rhtml @@ -6,7 +6,7 @@ <%= call_hook(:view_issues_sidebar_issues_bottom) %> <% if User.current.allowed_to?(:view_calendar, @project, :global => true) %> - <%= link_to(l(:label_calendar), :controller => 'issues', :action => 'calendar', :project_id => @project) %>
    + <%= link_to(l(:label_calendar), :controller => 'calendars', :action => 'show', :project_id => @project) %>
    <% end %> <% if User.current.allowed_to?(:view_gantt, @project, :global => true) %> <%= link_to(l(:label_gantt), :controller => 'gantts', :action => 'show', :project_id => @project) %>
    diff --git a/app/views/issues/bulk_edit.rhtml b/app/views/issues/bulk_edit.rhtml index b01128840..5fdfd58a6 100644 --- a/app/views/issues/bulk_edit.rhtml +++ b/app/views/issues/bulk_edit.rhtml @@ -2,7 +2,7 @@

      <%= @issues.collect {|i| content_tag('li', link_to(h("#{i.tracker} ##{i.id}"), { :action => 'show', :id => i }) + h(": #{i.subject}")) }.join("\n") %>
    -<% form_tag() do %> +<% form_tag(:action => 'bulk_update') do %> <%= @issues.collect {|i| hidden_field_tag('ids[]', i.id)}.join %>
    diff --git a/app/views/issues/index.rhtml b/app/views/issues/index.rhtml index 1778f4d64..ee6514d0b 100644 --- a/app/views/issues/index.rhtml +++ b/app/views/issues/index.rhtml @@ -78,7 +78,7 @@ <% content_for :header_tags do %> <%= auto_discovery_link_tag(:atom, {:query_id => @query, :format => 'atom', :page => nil, :key => User.current.rss_key}, :title => l(:label_issue_plural)) %> - <%= auto_discovery_link_tag(:atom, {:action => 'changes', :query_id => @query, :format => 'atom', :page => nil, :key => User.current.rss_key}, :title => l(:label_changes_details)) %> + <%= auto_discovery_link_tag(:atom, {:controller => 'journals', :action => 'index', :query_id => @query, :format => 'atom', :page => nil, :key => User.current.rss_key}, :title => l(:label_changes_details)) %> <% end %> -<%= context_menu :controller => 'issues', :action => 'context_menu' %> +<%= context_menu issues_context_menu_path %> diff --git a/app/views/issues/new.rhtml b/app/views/issues/new.rhtml index 839286bdb..310085d7c 100644 --- a/app/views/issues/new.rhtml +++ b/app/views/issues/new.rhtml @@ -9,7 +9,7 @@ <%= submit_tag l(:button_create) %> <%= submit_tag l(:button_create_and_continue), :name => 'continue' %> <%= link_to_remote l(:label_preview), - { :url => { :controller => 'issues', :action => 'preview', :project_id => @project }, + { :url => preview_issue_path(:project_id => @project), :method => 'post', :update => 'preview', :with => "Form.serialize('issue-form')", diff --git a/app/views/issues/show.rhtml b/app/views/issues/show.rhtml index b48ff2cd1..b3493cf7c 100644 --- a/app/views/issues/show.rhtml +++ b/app/views/issues/show.rhtml @@ -128,6 +128,7 @@ <%= stylesheet_link_tag 'scm' %> <%= javascript_include_tag 'context_menu' %> <%= stylesheet_link_tag 'context_menu' %> + <%= stylesheet_link_tag 'context_menu_rtl' if l(:direction) == 'rtl' %> <% end %> -<%= javascript_tag "new ContextMenu('#{url_for(:controller => 'issues', :action => 'context_menu')}')" %> +<%= javascript_tag "new ContextMenu('#{issues_context_menu_path}')" %> diff --git a/app/views/issues/changes.rxml b/app/views/journals/index.rxml similarity index 100% rename from app/views/issues/changes.rxml rename to app/views/journals/index.rxml diff --git a/app/views/layouts/base.rhtml b/app/views/layouts/base.rhtml index 2daae7cb9..0393815b0 100644 --- a/app/views/layouts/base.rhtml +++ b/app/views/layouts/base.rhtml @@ -7,6 +7,7 @@ <%= favicon %> <%= stylesheet_link_tag 'application', :media => 'all' %> +<%= stylesheet_link_tag 'rtl', :media => 'all' if l(:direction) == 'rtl' %> <%= javascript_include_tag :defaults %> <%= heads_for_wiki_formatter %> -<% form_tag({}, :method => 'get') do %> +<% form_tag({:path => @path}, :method => 'get') do %> <%= hidden_field_tag('rev', params[:rev]) if params[:rev] %> <%= hidden_field_tag('rev_to', params[:rev_to]) if params[:rev_to] %>

    diff --git a/app/views/users/show.rhtml b/app/views/users/show.rhtml index df5aec825..a2f90226c 100644 --- a/app/views/users/show.rhtml +++ b/app/views/users/show.rhtml @@ -35,7 +35,7 @@

    <% unless @events_by_day.empty? %> -

    <%= link_to l(:label_activity), :controller => 'projects', :action => 'activity', :id => nil, :user_id => @user, :from => @events_by_day.keys.first %>

    +

    <%= link_to l(:label_activity), :controller => 'activities', :action => 'index', :id => nil, :user_id => @user, :from => @events_by_day.keys.first %>

    <%=l(:label_reported_issues)%>: <%= Issue.count(:conditions => ["author_id=?", @user.id]) %> @@ -57,11 +57,11 @@

    <% other_formats_links do |f| %> - <%= f.link_to 'Atom', :url => {:controller => 'projects', :action => 'activity', :id => nil, :user_id => @user, :key => User.current.rss_key} %> + <%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => nil, :user_id => @user, :key => User.current.rss_key} %> <% end %> <% content_for :header_tags do %> - <%= auto_discovery_link_tag(:atom, :controller => 'projects', :action => 'activity', :user_id => @user, :format => :atom, :key => User.current.rss_key) %> + <%= auto_discovery_link_tag(:atom, :controller => 'activities', :action => 'index', :user_id => @user, :format => :atom, :key => User.current.rss_key) %> <% end %> <% end %> <%= call_hook :view_account_right_bottom, :user => @user %> diff --git a/app/views/projects/roadmap.rhtml b/app/views/versions/index.html.erb similarity index 100% rename from app/views/projects/roadmap.rhtml rename to app/views/versions/index.html.erb diff --git a/app/views/welcome/index.rhtml b/app/views/welcome/index.rhtml index 6ac09c153..982d6da52 100644 --- a/app/views/welcome/index.rhtml +++ b/app/views/welcome/index.rhtml @@ -34,6 +34,6 @@ <% content_for :header_tags do %> <%= auto_discovery_link_tag(:atom, {:controller => 'news', :action => 'index', :key => User.current.rss_key, :format => 'atom'}, :title => "#{Setting.app_title}: #{l(:label_news_latest)}") %> -<%= auto_discovery_link_tag(:atom, {:controller => 'projects', :action => 'activity', :key => User.current.rss_key, :format => 'atom'}, +<%= auto_discovery_link_tag(:atom, {:controller => 'activities', :action => 'index', :key => User.current.rss_key, :format => 'atom'}, :title => "#{Setting.app_title}: #{l(:label_activity)}") %> <% end %> diff --git a/app/views/wiki/special_date_index.rhtml b/app/views/wiki/special_date_index.rhtml index 228737a5e..b34fb8464 100644 --- a/app/views/wiki/special_date_index.rhtml +++ b/app/views/wiki/special_date_index.rhtml @@ -23,11 +23,11 @@ <% unless @pages.empty? %> <% other_formats_links do |f| %> - <%= f.link_to 'Atom', :url => {:controller => 'projects', :action => 'activity', :id => @project, :show_wiki_edits => 1, :key => User.current.rss_key} %> + <%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :key => User.current.rss_key} %> <%= f.link_to('HTML', :url => {:action => 'special', :page => 'export'}) if User.current.allowed_to?(:export_wiki_pages, @project) %> <% end %> <% end %> <% content_for :header_tags do %> -<%= auto_discovery_link_tag(:atom, :controller => 'projects', :action => 'activity', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key) %> +<%= auto_discovery_link_tag(:atom, :controller => 'activities', :action => 'index', :id => @project, :show_wiki_edits => 1, :format => 'atom', :key => User.current.rss_key) %> <% end %> diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 8b2b23704..d4fd50c93 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -1,4 +1,5 @@ bg: + direction: ltr date: formats: # Use the strftime parameters for formats. @@ -63,7 +64,11 @@ bg: one: "almost 1 year" other: "almost {{count}} years" - number: + number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: precision: 1 @@ -71,13 +76,13 @@ bg: storage_units: format: "%n %u" units: - kb: KB - tb: TB - gb: GB byte: one: Byte other: Bytes - mb: 'MB' + kb: "KB" + mb: "MB" + gb: "GB" + tb: "TB" # Used in array.to_sentence. support: @@ -898,3 +903,6 @@ bg: text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/bs.yml b/config/locales/bs.yml index 3d476ae13..6d729b0ce 100644 --- a/config/locales/bs.yml +++ b/config/locales/bs.yml @@ -1,6 +1,7 @@ #Ernad Husremovic hernad@bring.out.ba bs: + direction: ltr date: formats: default: "%d.%m.%Y" @@ -922,3 +923,6 @@ bs: text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 1e47d3d66..80d857e9e 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -1,4 +1,5 @@ ca: + direction: ltr date: formats: # Use the strftime parameters for formats. @@ -64,6 +65,10 @@ ca: other: "almost {{count}} years" number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: delimiter: "" @@ -901,3 +906,6 @@ ca: text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/cs.yml b/config/locales/cs.yml index de4ad44c5..f1abeff5b 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -1,4 +1,5 @@ cs: + direction: ltr date: formats: # Use the strftime parameters for formats. @@ -63,7 +64,11 @@ cs: one: "almost 1 year" other: "almost {{count}} years" - number: + number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: precision: 1 @@ -904,3 +909,6 @@ cs: text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/da.yml b/config/locales/da.yml index b241a52d8..45b33d810 100644 --- a/config/locales/da.yml +++ b/config/locales/da.yml @@ -3,6 +3,7 @@ # updated and upgraded to 0.9 by Morten Krogh Andersen (http://www.krogh.net) da: + direction: ltr date: formats: default: "%d.%m.%Y" @@ -924,3 +925,6 @@ da: text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/de.yml b/config/locales/de.yml index f7f9043c4..78cc99d4a 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -2,6 +2,7 @@ # by Clemens Kofler (clemens@railway.at) de: + direction: ltr date: formats: # Use the strftime parameters for formats. @@ -67,10 +68,11 @@ de: other: "fast {{count}} Jahren" number: + # Default format for numbers format: - precision: 2 separator: ',' delimiter: '.' + precision: 2 currency: format: unit: '€' @@ -213,6 +215,7 @@ de: mail_body_wiki_content_added: "Die Wiki-Seite '{{page}}' wurde von {{author}} hinzugefügt." mail_subject_wiki_content_updated: "Wiki-Seite '{{page}}' erfolgreich aktualisiert" mail_body_wiki_content_updated: "Die Wiki-Seite '{{page}}' wurde von {{author}} aktualisiert." + gui_validation_error: 1 Fehler gui_validation_error_plural: "{{count}} Fehler" @@ -251,7 +254,7 @@ de: field_priority: Priorität field_fixed_version: Zielversion field_user: Benutzer - field_principal: Principal + field_principal: Auftraggeber field_role: Rolle field_homepage: Projekt-Homepage field_is_public: Öffentlich @@ -296,6 +299,7 @@ de: field_redirect_existing_links: Existierende Links umleiten field_estimated_hours: Geschätzter Aufwand field_column_names: Spalten + field_time_entries: Logzeit field_time_zone: Zeitzone field_searchable: Durchsuchbar field_default_value: Standardwert @@ -427,6 +431,8 @@ de: project_module_wiki: Wiki project_module_repository: Projektarchiv project_module_boards: Foren + project_module_calendar: Kalender + project_module_gantt: Gantt label_user: Benutzer label_user_plural: Benutzer @@ -484,7 +490,7 @@ de: label_my_page: Meine Seite label_my_account: Mein Konto label_my_projects: Meine Projekte - label_my_page_block: My page block + label_my_page_block: Bereich "Meine Seite" label_administration: Administration label_login: Anmelden label_logout: Abmelden @@ -498,7 +504,7 @@ de: label_user_activity: "Aktivität von {{value}}" label_new: Neu label_logged_as: Angemeldet als - label_environment: Environment + label_environment: Umgebung label_authentication: Authentifizierung label_auth_source: Authentifizierungs-Modus label_auth_source_new: Neuer Authentifizierungs-Modus @@ -830,7 +836,7 @@ de: button_quote: Zitieren button_duplicate: Duplizieren button_show: Anzeigen - + status_active: aktiv status_registered: angemeldet status_locked: gesperrt @@ -839,7 +845,7 @@ de: version_status_locked: gesperrt version_status_closed: abgeschlossen - field_active: Activ + field_active: Aktiv text_select_mail_notifications: Bitte wählen Sie die Aktionen aus, für die eine Mailbenachrichtigung gesendet werden soll. text_regexp_info: z. B. ^[A-Z0-9]+$ diff --git a/config/locales/el.yml b/config/locales/el.yml index a9146a611..d9e224e9f 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -2,6 +2,7 @@ # by Vaggelis Typaldos (vtypal@gmail.com), Spyros Raptis (spirosrap@gmail.com) el: + direction: ltr date: formats: # Use the strftime parameters for formats. @@ -66,7 +67,11 @@ el: one: "almost 1 year" other: "almost {{count}} years" - number: + number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: precision: 1 @@ -904,3 +909,6 @@ el: text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml index 2872df15e..bc4cb08e8 100644 --- a/config/locales/en-GB.yml +++ b/config/locales/en-GB.yml @@ -1,4 +1,5 @@ en-GB: + direction: ltr date: formats: # Use the strftime parameters for formats. @@ -64,6 +65,11 @@ en-GB: other: "almost {{count}} years" number: + format: + separator: "." + delimiter: " " + precision: 3 + currency: format: format: "%u%n" @@ -907,3 +913,6 @@ en-GB: error_can_not_delete_tracker: This tracker contains issues and can't be deleted. notice_failed_to_save_members: "Failed to save member(s): {{errors}}." label_project_copy_notifications: Send email notifications during the project copy + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/en.yml b/config/locales/en.yml index b3d87515d..555043a8f 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1,4 +1,6 @@ en: + # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) + direction: ltr date: formats: # Use the strftime parameters for formats. @@ -64,6 +66,11 @@ en: other: "almost {{count}} years" number: + # Default format for numbers + format: + separator: "." + delimiter: "" + precision: 3 human: format: delimiter: "" @@ -273,6 +280,7 @@ en: field_redirect_existing_links: Redirect existing links field_estimated_hours: Estimated time field_column_names: Columns + field_time_entries: Log time field_time_zone: Time zone field_searchable: Searchable field_default_value: Default value @@ -404,6 +412,8 @@ en: project_module_wiki: Wiki project_module_repository: Repository project_module_boards: Boards + project_module_calendar: Calendar + project_module_gantt: Gantt label_user: User label_user_plural: Users diff --git a/config/locales/es.yml b/config/locales/es.yml index bc345dcb5..4783db721 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -1,7 +1,7 @@ # Spanish translations for Rails # by Francisco Fernando García Nieto (ffgarcianieto@gmail.com) # Redmine spanish translation: -# by J. Cayetano Delgado (jcdelgado _at_ ingenia.es) +# by J. Cayetano Delgado (Cayetano _dot_ Delgado _at_ ioko _dot_ com) es: number: @@ -141,6 +141,7 @@ es: attributes: # Overrides model and default messages. + direction: ltr date: formats: # Use the strftime parameters for formats. @@ -926,25 +927,28 @@ es: Está a punto de eliminar algún o todos sus permisos y podría perder la posibilidad de modificar este proyecto tras hacerlo. ¿Está seguro de querer continuar? label_close_versions: Cerrar versiones completadas - label_board_sticky: Sticky - label_board_locked: Locked - permission_export_wiki_pages: Export wiki pages - setting_cache_formatted_text: Cache formatted text - permission_manage_project_activities: Manage project activities - error_unable_delete_issue_status: Unable to delete issue status - label_profile: Profile - permission_manage_subtasks: Manage subtasks - field_parent_issue: Parent task - label_subtask_plural: Subtasks - label_project_copy_notifications: Send email notifications during the project copy - error_can_not_delete_custom_field: Unable to delete custom field - error_unable_to_connect: Unable to connect ({{value}}) - error_can_not_remove_role: This role is in use and can not be deleted. - error_can_not_delete_tracker: This tracker contains issues and can't be deleted. + label_board_sticky: Pegajoso + label_board_locked: Bloqueado + permission_export_wiki_pages: Exportar páginas wiki + setting_cache_formatted_text: Cachear texto formateado + permission_manage_project_activities: Gestionar actividades del proyecto + error_unable_delete_issue_status: Fue imposible eliminar el estado de la petición + label_profile: Perfil + permission_manage_subtasks: Gestionar subtareas + field_parent_issue: Tarea padre + label_subtask_plural: Subtareas + label_project_copy_notifications: Enviar notificaciones por correo electrónico durante la copia del proyecto + error_can_not_delete_custom_field: Fue imposible eliminar el campo personalizado + error_unable_to_connect: Fue imposible conectar con ({{value}}) + error_can_not_remove_role: Este rol está en uso y no puede ser eliminado. + error_can_not_delete_tracker: Este tipo contiene peticiones y no puede ser eliminado. field_principal: Principal - label_my_page_block: My page block - notice_failed_to_save_members: "Failed to save member(s): {{errors}}." - text_zoom_out: Zoom out - text_zoom_in: Zoom in - notice_unable_delete_time_entry: Unable to delete time log entry. - label_overall_spent_time: Overall spent time + label_my_page_block: Bloque Mi página + notice_failed_to_save_members: "Fallo al guardar miembro(s): {{errors}}." + text_zoom_out: Alejar + text_zoom_in: Acercar + notice_unable_delete_time_entry: Fue imposible eliminar la entrada de tiempo dedicado. + label_overall_spent_time: Tiempo total dedicado + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/eu.yml b/config/locales/eu.yml index 741d3298f..80fcc63d0 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -3,6 +3,7 @@ # 2010-01-25 # Distributed under the same terms as the Redmine itself. eu: + direction: ltr date: formats: # Use the strftime parameters for formats. @@ -68,6 +69,10 @@ eu: other: "ia {{count}} urte" number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: delimiter: "" @@ -908,3 +913,6 @@ eu: text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/fi.yml b/config/locales/fi.yml index b6b48bac0..3bde5975b 100644 --- a/config/locales/fi.yml +++ b/config/locales/fi.yml @@ -2,6 +2,7 @@ # by Marko Seppä (marko.seppa@gmail.com) fi: + direction: ltr date: formats: default: "%e. %Bta %Y" @@ -934,3 +935,6 @@ fi: text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 8eb82ad73..24b70ad21 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -4,6 +4,7 @@ # contributor: Thibaut Cuvelier - Developpez.com fr: + direction: ltr date: formats: default: "%d/%m/%Y" @@ -927,3 +928,6 @@ fr: text_zoom_in: Zoom avant notice_unable_delete_time_entry: Impossible de supprimer le temps passé. label_overall_spent_time: Temps passé global + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/gl.yml b/config/locales/gl.yml index 2a1d97ed7..7daebd074 100644 --- a/config/locales/gl.yml +++ b/config/locales/gl.yml @@ -45,6 +45,7 @@ gl: tb: "TB" + direction: ltr date: formats: default: "%e/%m/%Y" @@ -924,3 +925,6 @@ gl: text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/he.yml b/config/locales/he.yml index 532c60195..59fa6888d 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -3,6 +3,7 @@ # Jul 2010 - Updated by Orgad Shaneh (orgads@gmail.com) he: + direction: rtl date: formats: default: "%d/%m/%Y" @@ -913,3 +914,6 @@ he: enumeration_doc_categories: קטגוריות מסמכים enumeration_activities: פעילויות (מעקב אחר זמנים) enumeration_system_activity: פעילות מערכת + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/hr.yml b/config/locales/hr.yml index 728a6d8e9..1c6d523c3 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -2,6 +2,7 @@ # by Helix d.o.o. (info@helix.hr) hr: + direction: ltr date: formats: # Use the strftime parameters for formats. @@ -64,6 +65,10 @@ hr: other: "preko {{count}} godina" number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: delimiter: "" @@ -911,3 +916,6 @@ hr: text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/hu.yml b/config/locales/hu.yml index 088027f1a..974ddf76c 100644 --- a/config/locales/hu.yml +++ b/config/locales/hu.yml @@ -6,6 +6,7 @@ # updated by Gábor Takács (taky77@gmail.com) "hu": + direction: ltr date: formats: default: "%Y.%m.%d." @@ -931,3 +932,6 @@ text_zoom_in: Nagyít notice_unable_delete_time_entry: Az időrögzítés nem törölhető label_overall_spent_time: Összes rászánt idő + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/id.yml b/config/locales/id.yml index ec6688e5d..345fba454 100644 --- a/config/locales/id.yml +++ b/config/locales/id.yml @@ -2,6 +2,7 @@ # by Raden Prabowo (cakbowo@gmail.com) id: + direction: ltr date: formats: default: "%d-%m-%Y" @@ -916,3 +917,6 @@ id: text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/it.yml b/config/locales/it.yml index bab1c6a91..f5fb21fd2 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -1,7 +1,9 @@ # Italian translations for Ruby on Rails # by Claudio Poli (masterkain@gmail.com) +# by Diego Pierotto (ita.translations@tiscali.it) it: + direction: ltr date: formats: default: "%d-%m-%Y" @@ -64,8 +66,8 @@ it: one: "oltre un anno" other: "oltre {{count}} anni" almost_x_years: - one: "almost 1 year" - other: "almost {{count}} years" + one: "quasi 1 anno" + other: "quasi {{count}} anni" number: format: @@ -91,7 +93,7 @@ it: support: array: - sentence_connector: "and" + sentence_connector: "e" skip_last_comma: false activerecord: @@ -128,9 +130,9 @@ it: actionview_instancetag_blank_option: Scegli general_text_No: 'No' - general_text_Yes: 'Si' + general_text_Yes: 'Sì' general_text_no: 'no' - general_text_yes: 'si' + general_text_yes: 'sì' general_lang_name: 'Italiano' general_csv_separator: ',' general_csv_decimal_separator: '.' @@ -138,13 +140,13 @@ it: general_pdf_encoding: ISO-8859-1 general_first_day_of_week: '1' - notice_account_updated: L'utenza è stata aggiornata. + notice_account_updated: L'utente è stata aggiornato. notice_account_invalid_creditentials: Nome utente o password non validi. notice_account_password_updated: La password è stata aggiornata. notice_account_wrong_password: Password errata - notice_account_register_done: L'utenza è stata creata. + notice_account_register_done: L'utente è stata creato. notice_account_unknown_email: Utente sconosciuto. - notice_can_t_change_password: Questa utenza utilizza un metodo di autenticazione esterno. Impossibile cambiare la password. + notice_can_t_change_password: Questo utente utilizza un metodo di autenticazione esterno. Impossibile cambiare la password. notice_account_lost_email_sent: Ti è stata spedita una email con le istruzioni per cambiare la password. notice_account_activated: Il tuo account è stato attivato. Ora puoi effettuare l'accesso. notice_successful_create: Creazione effettuata. @@ -154,17 +156,17 @@ it: notice_file_not_found: La pagina desiderata non esiste o è stata rimossa. notice_locking_conflict: Le informazioni sono state modificate da un altro utente. notice_not_authorized: Non sei autorizzato ad accedere a questa pagina. - notice_email_sent: "Una e-mail è stata spedita a {{value}}" - notice_email_error: "Si è verificato un errore durante l'invio di una e-mail ({{value}})" + notice_email_sent: "Una email è stata spedita a {{value}}" + notice_email_error: "Si è verificato un errore durante l'invio di una email ({{value}})" notice_feeds_access_key_reseted: La tua chiave di accesso RSS è stata reimpostata. error_scm_not_found: "La risorsa e/o la versione non esistono nel repository." error_scm_command_failed: "Si è verificato un errore durante l'accesso al repository: {{value}}" mail_subject_lost_password: "Password {{value}}" - mail_body_lost_password: 'Per cambiare la password, usate il seguente collegamento:' - mail_subject_register: "Attivazione utenza {{value}}" - mail_body_register: 'Per attivare la vostra utenza, usate il seguente collegamento:' + mail_body_lost_password: 'Per cambiare la password, usa il seguente collegamento:' + mail_subject_register: "Attivazione utente {{value}}" + mail_body_register: "Per attivare l'utente, usa il seguente collegamento:" gui_validation_error: 1 errore gui_validation_error_plural: "{{count}} errori" @@ -195,22 +197,22 @@ it: field_issue: Segnalazione field_status: Stato field_notes: Note - field_is_closed: Chiude la segnalazione + field_is_closed: Chiudi la segnalazione field_is_default: Stato predefinito field_tracker: Tracker field_subject: Oggetto field_due_date: Data ultima field_assigned_to: Assegnato a - field_priority: Priorita' + field_priority: Priorità field_fixed_version: Versione prevista field_user: Utente field_role: Ruolo field_homepage: Homepage field_is_public: Pubblico field_parent: Sottoprogetto di - field_is_in_roadmap: Segnalazioni mostrate nel roadmap - field_login: Login - field_mail_notification: Notifiche via e-mail + field_is_in_roadmap: Segnalazioni mostrate nella roadmap + field_login: Utente + field_mail_notification: Notifiche via email field_admin: Amministratore field_last_login_on: Ultima connessione field_language: Lingua @@ -222,17 +224,17 @@ it: field_type: Tipo field_host: Host field_port: Porta - field_account: Utenza + field_account: Utente field_base_dn: DN base - field_attr_login: Attributo login + field_attr_login: Attributo connessione field_attr_firstname: Attributo nome field_attr_lastname: Attributo cognome - field_attr_mail: Attributo e-mail - field_onthefly: Creazione utenza "al volo" + field_attr_mail: Attributo email + field_onthefly: Creazione utente "al volo" field_start_date: Inizio field_done_ratio: % completato field_auth_source: Modalità di autenticazione - field_hide_mail: Nascondi il mio indirizzo di e-mail + field_hide_mail: Nascondi il mio indirizzo email field_comments: Commento field_url: URL field_start_page: Pagina principale @@ -255,9 +257,9 @@ it: setting_default_language: Lingua predefinita setting_login_required: Autenticazione richiesta setting_self_registration: Auto-registrazione abilitata - setting_attachment_max_size: Massima dimensione allegati + setting_attachment_max_size: Dimensione massima allegati setting_issues_export_limit: Limite esportazione segnalazioni - setting_mail_from: Indirizzo sorgente e-mail + setting_mail_from: Indirizzo sorgente email setting_host_name: Nome host setting_text_formatting: Formattazione testo setting_wiki_compression: Comprimi cronologia wiki @@ -266,7 +268,7 @@ it: setting_sys_api_enabled: Abilita WS per la gestione del repository setting_commit_ref_keywords: Parole chiave riferimento setting_commit_fix_keywords: Parole chiave chiusura - setting_autologin: Login automatico + setting_autologin: Connessione automatica setting_date_format: Formato data setting_cross_project_issue_relations: Consenti la creazione di relazioni tra segnalazioni in progetti differenti @@ -277,9 +279,9 @@ it: label_project_new: Nuovo progetto label_project_plural: Progetti label_x_projects: - zero: no projects - one: 1 project - other: "{{count}} projects" + zero: nessun progetto + one: 1 progetto + other: "{{count}} progetti" label_project_all: Tutti i progetti label_project_latest: Ultimi progetti registrati label_issue: Segnalazione @@ -300,10 +302,10 @@ it: label_tracker_plural: Tracker label_tracker_new: Nuovo tracker label_workflow: Workflow - label_issue_status: Stato segnalazioni - label_issue_status_plural: Stati segnalazione + label_issue_status: Stato segnalazione + label_issue_status_plural: Stati segnalazioni label_issue_status_new: Nuovo stato - label_issue_category: Categorie segnalazioni + label_issue_category: Categoria segnalazione label_issue_category_plural: Categorie segnalazioni label_issue_category_new: Nuova categoria label_custom_field: Campo personalizzato @@ -313,16 +315,16 @@ it: label_enumeration_new: Nuovo valore label_information: Informazione label_information_plural: Informazioni - label_please_login: Autenticarsi + label_please_login: Entra label_register: Registrati label_password_lost: Password dimenticata label_home: Home label_my_page: Pagina personale - label_my_account: La mia utenza + label_my_account: Il mio utente label_my_projects: I miei progetti label_administration: Amministrazione - label_login: Login - label_logout: Logout + label_login: Entra + label_logout: Esci label_help: Aiuto label_reported_issues: Segnalazioni label_assigned_to_me_issues: Le mie segnalazioni @@ -330,7 +332,7 @@ it: label_registered_on: Registrato il label_activity: Attività label_new: Nuovo - label_logged_as: Autenticato come + label_logged_as: Collegato come label_environment: Ambiente label_authentication: Autenticazione label_auth_source: Modalità di autenticazione @@ -376,17 +378,17 @@ it: label_closed_issues: chiusa label_closed_issues_plural: chiuse label_x_open_issues_abbr_on_total: - zero: 0 open / {{total}} - one: 1 open / {{total}} - other: "{{count}} open / {{total}}" + zero: 0 aperte / {{total}} + one: 1 aperta / {{total}} + other: "{{count}} aperte / {{total}}" label_x_open_issues_abbr: - zero: 0 open - one: 1 open - other: "{{count}} open" + zero: 0 aperte + one: 1 aperta + other: "{{count}} aperte" label_x_closed_issues_abbr: - zero: 0 closed - one: 1 closed - other: "{{count}} closed" + zero: 0 chiuse + one: 1 chiusa + other: "{{count}} chiuse" label_total: Totale label_permissions: Permessi label_current_status: Stato attuale @@ -409,9 +411,9 @@ it: label_comment: Commento label_comment_plural: Commenti label_x_comments: - zero: no comments - one: 1 comment - other: "{{count}} comments" + zero: nessun commento + one: 1 commento + other: "{{count}} commenti" label_comment_add: Aggiungi un commento label_comment_added: Commento aggiunto label_comment_delete: Elimina commenti @@ -458,10 +460,10 @@ it: label_result_plural: Risultati label_all_words: Tutte le parole label_wiki: Wiki - label_wiki_edit: Modifica Wiki + label_wiki_edit: Modifica wiki label_wiki_edit_plural: Modfiche wiki label_wiki_page: Pagina Wiki - label_wiki_page_plural: Pagine Wiki + label_wiki_page_plural: Pagine wiki label_index_by_title: Ordina per titolo label_index_by_date: Ordina per data label_current_version: Versione corrente @@ -495,14 +497,14 @@ it: label_blocked_by: bloccato da label_precedes: precede label_follows: segue - 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_end_to_start: fine a inizio + label_end_to_end: fine a fine + label_start_to_start: inizio a inizio + label_start_to_end: inizio a fine label_stay_logged_in: Rimani collegato label_disabled: disabilitato label_show_completed_versions: Mostra versioni completate - label_me: io + label_me: me label_board: Forum label_board_new: Nuovo forum label_board_plural: Forum @@ -519,24 +521,24 @@ it: label_date_to: A label_language_based: Basato sul linguaggio label_sort_by: "Ordina per {{value}}" - label_send_test_email: Invia una e-mail di test + label_send_test_email: Invia una email di prova label_feeds_access_key_created_on: "chiave di accesso RSS creata {{value}} fa" label_module_plural: Moduli label_added_time_by: "Aggiunto da {{author}} {{age}} fa" label_updated_time: "Aggiornato {{value}} fa" label_jump_to_a_project: Vai al progetto... - button_login: Login + button_login: Entra button_submit: Invia button_save: Salva button_check_all: Seleziona tutti button_uncheck_all: Deseleziona tutti button_delete: Elimina button_create: Crea - button_test: Test + button_test: Prova button_edit: Modifica button_add: Aggiungi - button_change: Modifica + button_change: Cambia button_apply: Applica button_clear: Pulisci button_lock: Blocca @@ -556,7 +558,7 @@ it: button_reply: Rispondi button_archive: Archivia button_unarchive: Ripristina - button_reset: Reset + button_reset: Reimposta button_rename: Rinomina status_active: attivo @@ -564,9 +566,9 @@ it: status_locked: bloccato text_select_mail_notifications: Seleziona le azioni per cui deve essere inviata una notifica. - text_regexp_info: eg. ^[A-Z0-9]+$ + text_regexp_info: es. ^[A-Z0-9]+$ text_min_max_length_info: 0 significa nessuna restrizione - text_project_destroy_confirmation: Sei sicuro di voler cancellare il progetti e tutti i dati ad esso collegati? + text_project_destroy_confirmation: Sei sicuro di voler eliminare il progetto e tutti i dati ad esso collegati? text_workflow_edit: Seleziona un ruolo ed un tracker per modificare il workflow text_are_you_sure: Sei sicuro ? text_tip_task_begin_day: attività che iniziano in questa giornata @@ -577,25 +579,25 @@ it: text_length_between: "Lunghezza compresa tra {{min}} e {{max}} caratteri." text_tracker_no_workflow: Nessun workflow definito per questo tracker text_unallowed_characters: Caratteri non permessi - text_comma_separated: Valori multipli permessi (separati da virgola). + text_comma_separated: Valori multipli permessi (separati da virgole). text_issues_ref_in_commit_messages: Segnalazioni di riferimento e chiusura nei messaggi di commit text_issue_added: "E' stata segnalata l'anomalia {{id}} da {{author}}." - text_issue_updated: "L'anomalia {{id}} e' stata aggiornata da {{author}}." - text_wiki_destroy_confirmation: Sicuro di voler cancellare questo wiki e tutti i suoi contenuti? + text_issue_updated: "L'anomalia {{id}} è stata aggiornata da {{author}}." + text_wiki_destroy_confirmation: Sicuro di voler eliminare questo wiki e tutti i suoi contenuti? text_issue_category_destroy_question: "Alcune segnalazioni ({{count}}) risultano assegnate a questa categoria. Cosa vuoi fare ?" - text_issue_category_destroy_assignments: Rimuovi gli assegnamenti a questa categoria + text_issue_category_destroy_assignments: Rimuovi le assegnazioni a questa categoria text_issue_category_reassign_to: Riassegna segnalazioni a questa categoria - default_role_manager: Manager + default_role_manager: Gestore default_role_developer: Sviluppatore - default_role_reporter: Reporter + default_role_reporter: Segnalatore default_tracker_bug: Segnalazione default_tracker_feature: Funzione default_tracker_support: Supporto default_issue_status_new: Nuovo - default_issue_status_in_progress: In Progress + default_issue_status_in_progress: In elaborazione default_issue_status_resolved: Risolto - default_issue_status_feedback: Feedback + default_issue_status_feedback: Commenti default_issue_status_closed: Chiuso default_issue_status_rejected: Rifiutato default_doc_category_user: Documentazione utente @@ -630,7 +632,7 @@ it: label_user_mail_option_selected: "Solo per gli eventi relativi ai progetti selezionati..." label_user_mail_option_all: "Per ogni evento relativo ad uno dei miei progetti" label_user_mail_option_none: "Solo per argomenti che osservo o che mi riguardano" - setting_emails_footer: Piè di pagina e-mail + setting_emails_footer: Piè di pagina email label_float: Decimale button_copy: Copia mail_body_account_information_external: "Puoi utilizzare il tuo account {{value}} per accedere al sistema." @@ -638,7 +640,7 @@ it: setting_protocol: Protocollo label_user_mail_no_self_notified: "Non voglio notifiche riguardanti modifiche da me apportate" setting_time_format: Formato ora - label_registration_activation_by_email: attivazione account via e-mail + label_registration_activation_by_email: attivazione account via email mail_subject_account_activation_request: "{{value}} richiesta attivazione account" mail_body_account_activation_request: "Un nuovo utente ({{value}}) ha effettuato la registrazione. Il suo account è in attesa di abilitazione da parte tua:" label_registration_automatic_activation: attivazione account automatica @@ -655,7 +657,7 @@ it: label_age: Età notice_default_data_loaded: Configurazione predefinita caricata con successo. text_load_default_configuration: Carica la configurazione predefinita - text_no_configuration_data: "Ruoli, tracker, stati delle segnalazioni e workflow non sono stati ancora configurati.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded." + text_no_configuration_data: "Ruoli, tracker, stati delle segnalazioni e workflow non sono stati ancora configurati.\nE' vivamente consigliato caricare la configurazione predefinita. Potrai modificarla una volta caricata." error_can_t_load_default_data: "Non è stato possibile caricare la configurazione predefinita : {{value}}" button_update: Aggiorna label_change_properties: Modifica le proprietà @@ -699,7 +701,7 @@ it: label_last_month: ultimo mese label_add_another_file: Aggiungi un altro file label_optional_description: Descrizione opzionale - text_destroy_time_entries_question: "{{hours}} ore risultano spese sulle segnalazioni che stai per cancellare. Cosa vuoi fare ?" + text_destroy_time_entries_question: "{{hours}} ore risultano spese sulle segnalazioni che stai per eliminare. Cosa vuoi fare ?" error_issue_not_found_in_project: 'La segnalazione non è stata trovata o non appartiene al progetto' text_assign_time_entries_to_project: Assegna le ore segnalate al progetto text_destroy_time_entries: Elimina le ore segnalate @@ -709,9 +711,9 @@ it: field_comments_sorting: Mostra commenti label_reverse_chronological_order: In ordine cronologico inverso label_preferences: Preferenze - setting_display_subprojects_issues: Mostra le segnalazioni dei sottoprogetti nel progetto principale per default + setting_display_subprojects_issues: Mostra le segnalazioni dei sottoprogetti nel progetto principale in modo predefinito label_overall_activity: Attività generale - setting_default_projects_public: I nuovi progetti sono pubblici per default + setting_default_projects_public: I nuovi progetti sono pubblici in modo predefinito error_scm_annotate: "L'oggetto non esiste o non può essere annotato." label_planning: Pianificazione text_subprojects_destroy_warning: "Anche i suoi sottoprogetti: {{value}} verranno eliminati." @@ -723,17 +725,17 @@ it: setting_enabled_scm: SCM abilitato text_enumeration_category_reassign_to: 'Riassegnale a questo valore:' text_enumeration_destroy_question: "{{count}} oggetti hanno un assegnamento su questo valore." - label_incoming_emails: E-mail in arrivo + label_incoming_emails: Email in arrivo label_generate_key: Genera una chiave - setting_mail_handler_api_enabled: Abilita WS per le e-mail in arrivo + setting_mail_handler_api_enabled: Abilita WS per le email in arrivo setting_mail_handler_api_key: Chiave API - text_email_delivery_not_configured: "La consegna via e-mail non è configurata e le notifiche sono disabilitate.\nConfigura il tuo server SMTP in config/email.yml e riavvia l'applicazione per abilitarle." - field_parent_title: Parent page + text_email_delivery_not_configured: "La consegna via email non è configurata e le notifiche sono disabilitate.\nConfigura il tuo server SMTP in config/email.yml e riavvia l'applicazione per abilitarle." + field_parent_title: Pagina principale label_issue_watchers: Osservatori setting_commit_logs_encoding: Codifica dei messaggi di commit button_quote: Quota setting_sequential_project_identifiers: Genera progetti con identificativi in sequenza - notice_unable_delete_version: Impossibile cancellare la versione + notice_unable_delete_version: Impossibile eliminare la versione label_renamed: rinominato label_copied: copiato setting_plain_text_mail: Solo testo (non HTML) @@ -747,7 +749,7 @@ it: permission_view_time_entries: Vedi tempi impiegati permission_manage_versions: Gestisci versioni permission_manage_wiki: Gestisci wiki - permission_manage_categories: Gestisci categorie segnalazione + permission_manage_categories: Gestisci categorie segnalazioni permission_protect_wiki_pages: Proteggi pagine wiki permission_comment_news: Commenta notizie permission_delete_messages: Elimina messaggi @@ -785,23 +787,23 @@ it: permission_edit_own_issue_notes: Modifica proprie note setting_gravatar_enabled: Usa icone utente Gravatar label_example: Esempio - text_repository_usernames_mapping: "Seleziona per aggiornare la corrispondenza tra gli utenti Redmine e quelli presenti nel log del repository.\nGli utenti Redmine e repository con lo stesso username o email sono mappati automaticamente." + text_repository_usernames_mapping: "Seleziona per aggiornare la corrispondenza tra gli utenti Redmine e quelli presenti nel log del repository.\nGli utenti Redmine e repository con lo stesso note utente o email sono mappati automaticamente." permission_edit_own_messages: Modifica propri messaggi permission_delete_own_messages: Elimina propri messaggi label_user_activity: "attività di {{value}}" label_updated_time_by: "Aggiornato da {{author}} {{age}} fa" text_diff_truncated: '... Le differenze sono state troncate perchè superano il limite massimo visualizzabile.' setting_diff_max_lines_displayed: Limite massimo di differenze (linee) mostrate - text_plugin_assets_writable: Assets directory dei plugins scrivibile + text_plugin_assets_writable: Directory attività dei plugins scrivibile warning_attachments_not_saved: "{{count}} file non possono essere salvati." button_create_and_continue: Crea e continua - text_custom_field_possible_values_info: 'Un valore per ogni linea' + text_custom_field_possible_values_info: 'Un valore per ogni riga' label_display: Mostra field_editable: Modificabile setting_repository_log_display_limit: Numero massimo di revisioni elencate nella cronologia file setting_file_max_size_displayed: Dimensione massima dei contenuti testuali visualizzati field_watcher: Osservatore - setting_openid: Accetta login e registrazione con OpenID + setting_openid: Accetta connessione e registrazione con OpenID field_identity_url: URL OpenID label_login_with_open_id_option: oppure autenticati usando OpenID field_content: Contenuto @@ -815,7 +817,7 @@ it: text_wiki_page_reassign_children: Riassegna le pagine figlie al padre di questa pagina text_wiki_page_nullify_children: Mantieni le pagine figlie come pagine radice text_wiki_page_destroy_children: Elimina le pagine figlie e tutta la discendenza - setting_password_min_length: Minima lunghezza password + setting_password_min_length: Lunghezza minima password field_group_by: Raggruppa risultati per mail_subject_wiki_content_updated: "La pagina wiki '{{page}}' è stata aggiornata" label_wiki_content_added: Aggiunta pagina al wiki @@ -825,89 +827,92 @@ it: mail_body_wiki_content_updated: La pagina '{{page}}' wiki è stata aggiornata da{{author}}. permission_add_project: Crea progetto setting_new_project_user_role_id: Ruolo assegnato agli utenti non amministratori che creano un progetto - label_view_all_revisions: View all revisions + label_view_all_revisions: Mostra tutte le revisioni label_tag: Tag label_branch: Branch - error_no_tracker_in_project: No tracker is associated to this project. Please check the Project settings. - error_no_default_issue_status: No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses"). - text_journal_changed: "{{label}} changed from {{old}} to {{new}}" - text_journal_set_to: "{{label}} set to {{value}}" - text_journal_deleted: "{{label}} deleted ({{old}})" - label_group_plural: Groups - label_group: Group - label_group_new: New group - label_time_entry_plural: Spent time - text_journal_added: "{{label}} {{value}} added" - field_active: Active - enumeration_system_activity: System Activity - permission_delete_issue_watchers: Delete watchers - version_status_closed: closed - version_status_locked: locked - version_status_open: open - error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened - label_user_anonymous: Anonymous - button_move_and_follow: Move and follow - setting_default_projects_modules: Default enabled modules for new projects - setting_gravatar_default: Default Gravatar image - field_sharing: Sharing - label_version_sharing_hierarchy: With project hierarchy - label_version_sharing_system: With all projects - label_version_sharing_descendants: With subprojects - label_version_sharing_tree: With project tree - label_version_sharing_none: Not shared - error_can_not_archive_project: This project can not be archived - button_duplicate: Duplicate - button_copy_and_follow: Copy and follow - label_copy_source: Source - setting_issue_done_ratio: Calculate the issue done ratio with - setting_issue_done_ratio_issue_status: Use the issue status - error_issue_done_ratios_not_updated: Issue done ratios not updated. - error_workflow_copy_target: Please select target tracker(s) and role(s) - setting_issue_done_ratio_issue_field: Use the issue field - label_copy_same_as_target: Same as target - label_copy_target: Target - notice_issue_done_ratios_updated: Issue done ratios updated. - error_workflow_copy_source: Please select a source tracker or role - label_update_issue_done_ratios: Update issue done ratios - setting_start_of_week: Start calendars on - permission_view_issues: View Issues - label_display_used_statuses_only: Only display statuses that are used by this tracker - label_revision_id: Revision {{value}} - label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago - label_feeds_access_key: RSS access key - notice_api_access_key_reseted: Your API access key was reset. - setting_rest_api_enabled: Enable REST web service - label_missing_api_access_key: Missing an API access key - label_missing_feeds_access_key: Missing a RSS access key - button_show: Show - text_line_separated: Multiple values allowed (one line for each value). - setting_mail_handler_body_delimiters: Truncate emails after one of these lines - permission_add_subprojects: Create subprojects - label_subproject_new: New subproject + error_no_tracker_in_project: Nessun tracker è associato a questo progetto. Per favore verifica le impostazioni del Progetto. + error_no_default_issue_status: Nessuno stato predefinito delle segnalazioni è configurato. Per favore verifica le impostazioni (Vai in "Amministrazione -> Stati segnalazioni"). + text_journal_changed: "{{label}} modificata da {{old}} a {{new}}" + text_journal_set_to: "{{label}} impostata a {{value}}" + text_journal_deleted: "{{label}} eliminata ({{old}})" + label_group_plural: Gruppi + label_group: Gruppo + label_group_new: Nuovo gruppo + label_time_entry_plural: Tempo impiegato + text_journal_added: "{{value}} {{label}} aggiunto" + field_active: Attivo + enumeration_system_activity: Attività di sistema + permission_delete_issue_watchers: Elimina osservatori + version_status_closed: chiusa + version_status_locked: bloccata + version_status_open: aperta + error_can_not_reopen_issue_on_closed_version: Una segnalazione assegnata ad una versione chiusa non può essere riaperta + label_user_anonymous: Anonimo + button_move_and_follow: Sposta e segui + setting_default_projects_modules: Moduli predefiniti abilitati per i nuovi progetti + setting_gravatar_default: Immagine Gravatar predefinita + field_sharing: Condivisione + label_version_sharing_hierarchy: Con gerarchia progetto + label_version_sharing_system: Con tutti i progetti + label_version_sharing_descendants: Con sottoprogetti + label_version_sharing_tree: Con progetto padre + label_version_sharing_none: Nessuna condivisione + error_can_not_archive_project: Questo progetto non può essere archiviato + button_duplicate: Duplica + button_copy_and_follow: Copia e segui + label_copy_source: Sorgente + setting_issue_done_ratio: Calcola la percentuale di segnalazioni completate con + setting_issue_done_ratio_issue_status: Usa lo stato segnalazioni + error_issue_done_ratios_not_updated: La percentuale delle segnalazioni completate non è aggiornata. + error_workflow_copy_target: Per favore seleziona trackers finali e ruolo(i) + setting_issue_done_ratio_issue_field: Usa il campo segnalazioni + label_copy_same_as_target: Uguale a destinazione + label_copy_target: Destinazione + notice_issue_done_ratios_updated: La percentuale delle segnalazioni completate è aggiornata. + error_workflow_copy_source: Per favore seleziona un tracker sorgente o ruolo + label_update_issue_done_ratios: Aggiorna la percentuale delle segnalazioni completate + setting_start_of_week: Avvia calendari il + permission_view_issues: Mostra segnalazioni + label_display_used_statuses_only: Mostra solo stati che vengono usati per questo tracker + label_revision_id: Revisione {{value}} + label_api_access_key: Chiave di accesso API + label_api_access_key_created_on: Chiave di accesso API creata {{value}} fa + label_feeds_access_key: Chiave di accesso RSS + notice_api_access_key_reseted: La chiave di accesso API è stata reimpostata. + setting_rest_api_enabled: Abilita il servizio web REST + label_missing_api_access_key: Chiave di accesso API mancante + label_missing_feeds_access_key: Chiave di accesso RSS mancante + button_show: Mostra + text_line_separated: Valori multipli permessi (un valore per ogni riga). + setting_mail_handler_body_delimiters: Tronca email dopo una di queste righe + permission_add_subprojects: Crea sottoprogetti + label_subproject_new: Nuovo sottoprogetto text_own_membership_delete_confirmation: |- - You are about to remove some or all of your permissions and may no longer be able to edit this project after that. - Are you sure you want to continue? - label_close_versions: Close completed versions - label_board_sticky: Sticky - label_board_locked: Locked - permission_export_wiki_pages: Export wiki pages - setting_cache_formatted_text: Cache formatted text - permission_manage_project_activities: Manage project activities - error_unable_delete_issue_status: Unable to delete issue status - label_profile: Profile - permission_manage_subtasks: Manage subtasks - field_parent_issue: Parent task - label_subtask_plural: Subtasks - label_project_copy_notifications: Send email notifications during the project copy - error_can_not_delete_custom_field: Unable to delete custom field - error_unable_to_connect: Unable to connect ({{value}}) - error_can_not_remove_role: This role is in use and can not be deleted. - error_can_not_delete_tracker: This tracker contains issues and can't be deleted. - field_principal: Principal - label_my_page_block: My page block - notice_failed_to_save_members: "Failed to save member(s): {{errors}}." - text_zoom_out: Zoom out - text_zoom_in: Zoom in - notice_unable_delete_time_entry: Unable to delete time log entry. - label_overall_spent_time: Overall spent time + Stai per eliminare alcuni o tutti i permessi e non sarai più in grado di modificare questo progetto dopo tale azione. + Sei sicuro di voler continuare? + label_close_versions: Versioni completate chiuse + label_board_sticky: Annunci + label_board_locked: Bloccato + permission_export_wiki_pages: Esporta pagine wiki + setting_cache_formatted_text: Cache testo formattato + permission_manage_project_activities: Gestisci attività progetti + error_unable_delete_issue_status: Impossibile eliminare lo stato segnalazioni + label_profile: Profilo + permission_manage_subtasks: Gestisci sottoattività + field_parent_issue: Attività principale + label_subtask_plural: Sottoattività + label_project_copy_notifications: Invia notifiche email durante la copia del progetto + error_can_not_delete_custom_field: Impossibile eliminare il campo personalizzato + error_unable_to_connect: Impossibile connettersi ({{value}}) + error_can_not_remove_role: Questo ruolo è in uso e non può essere eliminato. + error_can_not_delete_tracker: Questo tracker contiene segnalazioni e non può essere eliminato. + field_principal: Principale + label_my_page_block: La mia pagina di blocco + notice_failed_to_save_members: "Impossibile salvare il membro(i): {{errors}}." + text_zoom_out: Riduci ingrandimento + text_zoom_in: Aumenta ingrandimento + notice_unable_delete_time_entry: Impossibile eliminare il valore time log. + label_overall_spent_time: Totale tempo impiegato + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/ja.yml b/config/locales/ja.yml index c82155b8e..50ccc8729 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -3,6 +3,7 @@ # AR error messages are basically taken from Ruby-GetText-Package. Thanks to Masao Mutoh. ja: + direction: ltr date: formats: # Use the strftime parameters for formats. @@ -214,7 +215,7 @@ ja: mail_body_account_information: アカウント情報 mail_subject_account_activation_request: "{{value}} アカウントの承認要求" mail_body_account_activation_request: "新しいユーザ {{value}} が登録されました。このアカウントはあなたの承認待ちです:" - mail_subject_reminder: "{{count}}件のチケットが{{days}}期日間近です" + mail_subject_reminder: "{{count}}件のチケットの期日が{{days}}日以内に到来します" mail_body_reminder: "{{count}}件の担当チケットの期日が{{days}}日以内に到来します:" mail_subject_wiki_content_added: "Wikiページ {{page}} が追加されました" mail_body_wiki_content_added: "{{author}} によってWikiページ {{page}} が追加されました。" @@ -304,6 +305,7 @@ ja: field_redirect_existing_links: 既存のリンクをリダイレクトする field_estimated_hours: 予定工数 field_column_names: 項目 + field_time_entries: 時間を記録 field_time_zone: タイムゾーン field_searchable: 検索条件に設定可能とする field_default_value: デフォルト値 @@ -435,6 +437,8 @@ ja: project_module_wiki: Wiki project_module_repository: リポジトリ project_module_boards: フォーラム + project_module_gantt: ガントチャート + project_module_calendar: カレンダー label_user: ユーザ label_user_plural: ユーザ diff --git a/config/locales/ko.yml b/config/locales/ko.yml index d79c86cb9..b30d7518f 100644 --- a/config/locales/ko.yml +++ b/config/locales/ko.yml @@ -4,6 +4,7 @@ # by Yonghwan SO(please insert your email), last update at 2009-09-11 # last update at 2010-01-23 by Kihyun Yoon ko: + direction: ltr date: formats: # Use the strftime parameters for formats. @@ -964,3 +965,6 @@ ko: text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/lt.yml b/config/locales/lt.yml index 9bcafc71b..f0c9551a3 100644 --- a/config/locales/lt.yml +++ b/config/locales/lt.yml @@ -4,6 +4,7 @@ # and Sergej Jegorov sergej.jegorov@gmail.com # and Gytis Gurklys gytis.gurklys@gmail.com lt: + direction: ltr date: formats: # Use the strftime parameters for formats. @@ -972,3 +973,6 @@ lt: text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 351f8528e..4b2421fe4 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -1,6 +1,7 @@ # translated by Dzintars Bergs (dzintars.bergs@gmail.com) lv: + direction: ltr date: formats: default: "%d.%m.%Y" @@ -61,6 +62,10 @@ lv: other: "gandrīz {{count}} gadus" number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: delimiter: " " @@ -899,3 +904,6 @@ lv: text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/mk.yml b/config/locales/mk.yml new file mode 100644 index 000000000..c680f900c --- /dev/null +++ b/config/locales/mk.yml @@ -0,0 +1,915 @@ +mk: + # Text direction: Left-to-Right (ltr) or Right-to-Left (rtl) + direction: ltr + date: + formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! + default: "%d/%m/%Y" + short: "%d %b" + long: "%d %B, %Y" + + day_names: [недела, понеделник, вторник, среда, четврток, петок, сабота] + abbr_day_names: [нед, пон, вто, сре, чет, пет, саб] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: [~, јануари, февруари, март, април, мај, јуни, јули, август, септември, октомври, ноември, декември] + abbr_month_names: [~, јан, фев, мар, апр, мај, јун, јул, авг, сеп, окт, ное, дек] + # Used in date_select and datime_select. + order: [ :day, :month, :year ] + + time: + formats: + default: "%d/%m/%Y %H:%M" + time: "%H:%M" + short: "%d %b %H:%M" + long: "%d %B, %Y %H:%M" + am: "предпладне" + pm: "попладне" + + datetime: + distance_in_words: + half_a_minute: "пола минута" + less_than_x_seconds: + one: "помалку од 1 секунда" + other: "помалку од {{count}} секунди" + x_seconds: + one: "1 секунда" + other: "{{count}} секунди" + less_than_x_minutes: + one: "помалку од 1 минута" + other: "помалку од {{count}} минути" + x_minutes: + one: "1 минута" + other: "{{count}} минути" + about_x_hours: + one: "околу 1 час" + other: "околу {{count}} часа" + x_days: + one: "1 ден" + other: "{{count}} дена" + about_x_months: + one: "околу 1 месец" + other: "околу {{count}} месеци" + x_months: + one: "1 месец" + other: "{{count}} месеци" + about_x_years: + one: "околу 1 година" + other: "околу {{count}} години" + over_x_years: + one: "преку 1 година" + other: "преку {{count}} години" + almost_x_years: + one: "скоро 1 година" + other: "скоро {{count}} години" + + number: + # Default format for numbers + format: + separator: "." + delimiter: "" + precision: 3 + human: + format: + delimiter: "" + precision: 1 + storage_units: + format: "%n %u" + units: + byte: + one: "Byte" + other: "Bytes" + kb: "KB" + mb: "MB" + gb: "GB" + tb: "TB" + + +# Used in array.to_sentence. + support: + array: + sentence_connector: "и" + skip_last_comma: false + + activerecord: + errors: + messages: + inclusion: "не е вклучено во листата" + exclusion: "е резервирано" + invalid: "е невалидно" + confirmation: "не се совпаѓа со потврдата" + accepted: "мора да е прифатено" + empty: "неможе да е празно" + blank: "неможе да е празно" + too_long: "е предолго (макс. {{count}} знаци)" + too_short: "е прекратко (мин. {{count}} знаци)" + wrong_length: "е погрешна должина (треба да е {{count}} знаци)" + taken: "е веќе зафатено" + not_a_number: "не е број" + not_a_date: "не е валидна дата" + greater_than: "мора да е поголемо од {{count}}" + greater_than_or_equal_to: "мора да е поголемо или еднакво на {{count}}" + equal_to: "мора да е еднакво на {{count}}" + less_than: "мора да е помало од {{count}}" + less_than_or_equal_to: "мора да е помало или еднакво на {{count}}" + odd: "мора да е непарно" + even: "мора да е парно" + greater_than_start_date: "мора да е поголема од почетната дата" + not_same_project: "не припаѓа на истиот проект" + circular_dependency: "Оваа врска ќе креира кружна зависност" + cant_link_an_issue_with_a_descendant: "Задача неможе да се поврзе со една од нејзините подзадачи" + + actionview_instancetag_blank_option: Изберете + + general_text_No: 'Не' + general_text_Yes: 'Да' + general_text_no: 'не' + general_text_yes: 'да' + general_lang_name: 'Macedonian (Македонски)' + general_csv_separator: ',' + general_csv_decimal_separator: '.' + general_csv_encoding: UTF-8 + general_pdf_encoding: UTF-8 + general_first_day_of_week: '1' + + notice_account_updated: Профилот е успешно ажуриран. + notice_account_invalid_creditentials: Неточен корисник или лозинка + notice_account_password_updated: Лозинката е успешно ажурирана. + notice_account_wrong_password: Погрешна лозинка + notice_account_register_done: Профилот е успешно креиран. За активација, клкнете на врската што ви е пратена по е-пошта. + notice_account_unknown_email: Непознат корисник. + notice_can_t_change_password: This account uses an external authentication source. Impossible to change the password. + notice_account_lost_email_sent: An email with instructions to choose a new password has been sent to you. + notice_account_activated: Your account has been activated. You can now log in. + notice_successful_create: Успешно креирање. + notice_successful_update: Успешно ажурирање. + notice_successful_delete: Успешно бришење. + notice_successful_connection: Успешна конекција. + notice_file_not_found: The page you were trying to access doesn't exist or has been removed. + notice_locking_conflict: Data has been updated by another user. + notice_not_authorized: You are not authorized to access this page. + notice_email_sent: "Е-порака е пратена на {{value}}" + notice_email_error: "Се случи грешка при праќање на е-пораката ({{value}})" + notice_feeds_access_key_reseted: Вашиот RSS клуч за пристап е reset. + notice_api_access_key_reseted: Вашиот API клуч за пристап е reset. + notice_failed_to_save_issues: "Failed to save {{count}} issue(s) on {{total}} selected: {{ids}}." + notice_failed_to_save_members: "Failed to save member(s): {{errors}}." + notice_no_issue_selected: "No issue is selected! Please, check the issues you want to edit." + notice_account_pending: "Your account was created and is now pending administrator approval." + notice_default_data_loaded: Default configuration successfully loaded. + notice_unable_delete_version: Unable to delete version. + notice_unable_delete_time_entry: Unable to delete time log entry. + notice_issue_done_ratios_updated: Issue done ratios updated. + + error_can_t_load_default_data: "Default configuration could not be loaded: {{value}}" + error_scm_not_found: "The entry or revision was not found in the repository." + error_scm_command_failed: "An error occurred when trying to access the repository: {{value}}" + error_scm_annotate: "The entry does not exist or can not be annotated." + error_issue_not_found_in_project: 'The issue was not found or does not belong to this project' + error_no_tracker_in_project: 'No tracker is associated to this project. Please check the Project settings.' + error_no_default_issue_status: 'No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses").' + error_can_not_delete_custom_field: Unable to delete custom field + error_can_not_delete_tracker: "This tracker contains issues and can't be deleted." + error_can_not_remove_role: "This role is in use and can not be deleted." + error_can_not_reopen_issue_on_closed_version: 'An issue assigned to a closed version can not be reopened' + error_can_not_archive_project: This project can not be archived + error_issue_done_ratios_not_updated: "Issue done ratios not updated." + error_workflow_copy_source: 'Please select a source tracker or role' + error_workflow_copy_target: 'Please select target tracker(s) and role(s)' + error_unable_delete_issue_status: 'Unable to delete issue status' + error_unable_to_connect: "Unable to connect ({{value}})" + warning_attachments_not_saved: "{{count}} file(s) could not be saved." + + mail_subject_lost_password: "Вашата {{value}} лозинка" + mail_body_lost_password: 'To change your password, click on the following link:' + mail_subject_register: "Your {{value}} account activation" + mail_body_register: 'To activate your account, click on the following link:' + mail_body_account_information_external: "You can use your {{value}} account to log in." + mail_body_account_information: Your account information + mail_subject_account_activation_request: "{{value}} account activation request" + mail_body_account_activation_request: "Нов корисник ({{value}}) е регистриран. The account is pending your approval:" + mail_subject_reminder: "{{count}} issue(s) due in the next {{days}} days" + mail_body_reminder: "{{count}} issue(s) that are assigned to you are due in the next {{days}} days:" + mail_subject_wiki_content_added: "'{{page}}' wiki page has been added" + mail_body_wiki_content_added: "The '{{page}}' wiki page has been added by {{author}}." + mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated" + mail_body_wiki_content_updated: "The '{{page}}' wiki page has been updated by {{author}}." + + gui_validation_error: 1 грешка + gui_validation_error_plural: "{{count}} грешки" + + field_name: Име + field_description: Опис + field_summary: Краток опис + field_is_required: Задолжително + field_firstname: Име + field_lastname: Презиме + field_mail: Е-пошта + field_filename: Датотека + field_filesize: Големина + field_downloads: Превземања + field_author: Автор + field_created_on: Креиран + field_updated_on: Ажурирано + field_field_format: Формат + field_is_for_all: За сите проекти + field_possible_values: Можни вредности + field_regexp: Regular expression + field_min_length: Минимална должина + field_max_length: Максимална должина + field_value: Вредност + field_category: Категорија + field_title: Наслов + field_project: Проект + field_issue: Задача + field_status: Статус + field_notes: Белешки + field_is_closed: Задачата е затворена + field_is_default: Default value + field_tracker: Tracker + field_subject: Наслов + field_due_date: Краен рок + field_assigned_to: Доделена на + field_priority: Приоритет + field_fixed_version: Target version + field_user: Корисник + field_principal: Principal + field_role: Улога + field_homepage: Веб страна + field_is_public: Јавен + field_parent: Подпроект на + field_is_in_roadmap: Issues displayed in roadmap + field_login: Корисник + field_mail_notification: Известувања по e-пошта + field_admin: Администратор + field_last_login_on: Последна најава + field_language: Јазик + field_effective_date: Дата + field_password: Лозинка + field_new_password: Нова лозинка + field_password_confirmation: Потврда + field_version: Верзија + field_type: Тип + field_host: Хост + field_port: Порт + field_account: Account + field_base_dn: Base DN + field_attr_login: Login attribute + field_attr_firstname: Firstname attribute + field_attr_lastname: Lastname attribute + field_attr_mail: Email attribute + field_onthefly: Моментално (On-the-fly) креирање на корисници + field_start_date: Почеток + field_done_ratio: % Завршено + field_auth_source: Режим на автентикација + field_hide_mail: Криј ја мојата адреса на е-пошта + field_comments: Коментар + field_url: URL + field_start_page: Почетна страна + field_subproject: Подпроект + field_hours: Часови + field_activity: Активност + field_spent_on: Дата + field_identifier: Идентификатор + field_is_filter: Користи како филтер + field_issue_to: Поврзана задача + field_delay: Доцнење + field_assignable: На оваа улога може да се доделуваат задачи + field_redirect_existing_links: Пренасочи ги постоечките врски + field_estimated_hours: Проценето време + field_column_names: Колони + field_time_entries: Бележи време + field_time_zone: Временска зона + field_searchable: Може да се пребарува + field_default_value: Default value + field_comments_sorting: Прикажувај коментари + field_parent_title: Parent page + field_editable: Може да се уредува + field_watcher: Watcher + field_identity_url: OpenID URL + field_content: Содржина + field_group_by: Групирај ги резултатите според + field_sharing: Споделување + field_parent_issue: Parent task + + setting_app_title: Наслов на апликацијата + setting_app_subtitle: Поднаслов на апликацијата + setting_welcome_text: Текст за добредојде + setting_default_language: Default јазик + setting_login_required: Задолжителна автентикација + setting_self_registration: Само-регистрација + setting_attachment_max_size: Макс. големина на прилог + setting_issues_export_limit: Issues export limit + setting_mail_from: Emission email address + setting_bcc_recipients: Blind carbon copy recipients (bcc) + setting_plain_text_mail: Текстуални е-пораки (без HTML) + setting_host_name: Име на хост и патека + setting_text_formatting: Форматирање на текст + setting_wiki_compression: Компресија на историјата на вики + setting_feeds_limit: Feed content limit + setting_default_projects_public: Новите проекти се иницијално јавни + setting_autofetch_changesets: Autofetch commits + setting_sys_api_enabled: Enable WS for repository management + setting_commit_ref_keywords: Referencing keywords + setting_commit_fix_keywords: Fixing keywords + setting_autologin: Автоматска најава + setting_date_format: Формат на дата + setting_time_format: Формат на време + setting_cross_project_issue_relations: Дозволи релации на задачи меѓу проекти + setting_issue_list_default_columns: Default columns displayed on the issue list + setting_repositories_encodings: Repositories encodings + setting_commit_logs_encoding: Commit messages encoding + setting_emails_footer: Emails footer + setting_protocol: Протокол + setting_per_page_options: Objects per page options + setting_user_format: Приказ на корисниците + setting_activity_days_default: Денови прикажана во активноста на проектот + setting_display_subprojects_issues: Прикажи ги задачите на подпроектите во главните проекти + setting_enabled_scm: Овозможи SCM + setting_mail_handler_body_delimiters: "Truncate emails after one of these lines" + setting_mail_handler_api_enabled: Enable WS for incoming emails + setting_mail_handler_api_key: API клуч + setting_sequential_project_identifiers: Генерирај последователни идентификатори на проекти + setting_gravatar_enabled: Користи Gravatar кориснички икони + setting_gravatar_default: Default Gravatar image + setting_diff_max_lines_displayed: Max number of diff lines displayed + setting_file_max_size_displayed: Max size of text files displayed inline + setting_repository_log_display_limit: Maximum number of revisions displayed on file log + setting_openid: Дозволи OpenID најава и регистрација + setting_password_min_length: Мин. должина на лозинка + setting_new_project_user_role_id: Улога доделена на неадминистраторски корисник кој креира проект + setting_default_projects_modules: Default enabled modules for new projects + setting_issue_done_ratio: Calculate the issue done ratio with + setting_issue_done_ratio_issue_field: Use the issue field + setting_issue_done_ratio_issue_status: Use the issue status + setting_start_of_week: Start calendars on + setting_rest_api_enabled: Enable REST web service + setting_cache_formatted_text: Cache formatted text + + permission_add_project: Креирај проекти + permission_add_subprojects: Креирај подпроекти + permission_edit_project: Уреди проект + permission_select_project_modules: Изберете модули за проект + permission_manage_members: Manage members + permission_manage_project_activities: Manage project activities + permission_manage_versions: Manage versions + permission_manage_categories: Manage issue categories + permission_view_issues: Прегледај задачи + permission_add_issues: Додавај задачи + permission_edit_issues: Уредувај задачи + permission_manage_issue_relations: Manage issue relations + permission_add_issue_notes: Додавај белешки + permission_edit_issue_notes: Уредувај белешки + permission_edit_own_issue_notes: Уредувај сопствени белешки + permission_move_issues: Преместувај задачи + permission_delete_issues: Бриши задачи + permission_manage_public_queries: Manage public queries + permission_save_queries: Save queries + permission_view_gantt: View gantt chart + permission_view_calendar: View calendar + permission_view_issue_watchers: View watchers list + permission_add_issue_watchers: Add watchers + permission_delete_issue_watchers: Delete watchers + permission_log_time: Бележи потрошено време + permission_view_time_entries: Прегледај потрошено време + permission_edit_time_entries: Уредувај белешки за потрошено време + permission_edit_own_time_entries: Уредувај сопствени белешки за потрошено време + permission_manage_news: Manage news + permission_comment_news: Коментирај на вести + permission_manage_documents: Manage documents + permission_view_documents: Прегледувај документи + permission_manage_files: Manage files + permission_view_files: Прегледувај датотеки + permission_manage_wiki: Manage wiki + permission_rename_wiki_pages: Преименувај вики страници + permission_delete_wiki_pages: Бриши вики страници + permission_view_wiki_pages: Прегледувај вики + permission_view_wiki_edits: Прегледувај вики историја + permission_edit_wiki_pages: Уредувај вики страници + permission_delete_wiki_pages_attachments: Бриши прилози + permission_protect_wiki_pages: Заштитувај вики страници + permission_manage_repository: Manage repository + permission_browse_repository: Browse repository + permission_view_changesets: View changesets + permission_commit_access: Commit access + permission_manage_boards: Manage boards + permission_view_messages: View messages + permission_add_messages: Post messages + permission_edit_messages: Уредувај пораки + permission_edit_own_messages: Уредувај сопствени пораки + permission_delete_messages: Бриши пораки + permission_delete_own_messages: Бриши сопствени пораки + permission_export_wiki_pages: Export wiki pages + permission_manage_subtasks: Manage subtasks + + project_module_issue_tracking: Следење на задачи + project_module_time_tracking: Следење на време + project_module_news: Вести + project_module_documents: Документи + project_module_files: Датотеки + project_module_wiki: Вики + project_module_repository: Repository + project_module_boards: Форуми + project_module_calendar: Календар + project_module_gantt: Gantt + + label_user: Корисник + label_user_plural: Корисници + label_user_new: Нов корисник + label_user_anonymous: Анонимен + label_project: Проект + label_project_new: Нов проект + label_project_plural: Проекти + label_x_projects: + zero: нема проекти + one: 1 проект + other: "{{count}} проекти" + label_project_all: Сите проекти + label_project_latest: Последните проекти + label_issue: Задача + label_issue_new: Нова задача + label_issue_plural: Задачи + label_issue_view_all: Прегледај ги сите задачи + label_issues_by: "Задачи по {{value}}" + label_issue_added: Задачата е додадена + label_issue_updated: Задачата е ажурирана + label_document: Документ + label_document_new: Нов документ + label_document_plural: Документи + label_document_added: Документот е додаден + label_role: Улога + label_role_plural: Улоги + label_role_new: Нова улога + label_role_and_permissions: Улоги и овластувања + label_member: Член + label_member_new: Нов член + label_member_plural: Членови + label_tracker: Tracker + label_tracker_plural: Trackers + label_tracker_new: New tracker + label_workflow: Workflow + label_issue_status: Статус на задача + label_issue_status_plural: Статуси на задачи + label_issue_status_new: Нов статус + label_issue_category: Категорија на задача + label_issue_category_plural: Категории на задачи + label_issue_category_new: Нова категорија + label_custom_field: Прилагодено поле + label_custom_field_plural: Прилагодени полиња + label_custom_field_new: Ново прилагодено поле + label_enumerations: Enumerations + label_enumeration_new: Нова вредност + label_information: Информација + label_information_plural: Информации + label_please_login: Најави се + label_register: Регистрирај се + label_login_with_open_id_option: или најави се со OpenID + label_password_lost: Изгубена лозинка + label_home: Почетна + label_my_page: Мојата страна + label_my_account: Мојот профил + label_my_projects: Мои проекти + label_my_page_block: Блок елемент + label_administration: Администрација + label_login: Најави се + label_logout: Одјави се + label_help: Помош + label_reported_issues: Пријавени задачи + label_assigned_to_me_issues: Задачи доделени на мене + label_last_login: Последна најава + label_registered_on: Регистриран на + label_activity: Активност + label_overall_activity: Севкупна активност + label_user_activity: "Активност на {{value}}" + label_new: Нова + label_logged_as: Најавени сте како + label_environment: Опкружување + label_authentication: Автентикација + label_auth_source: Режим на автентикација + label_auth_source_new: Нов режим на автентикација + label_auth_source_plural: Режими на автентикација + label_subproject_plural: Подпроекти + label_subproject_new: Нов подпроект + label_and_its_subprojects: "{{value}} и неговите подпроекти" + label_min_max_length: Мин. - Макс. должина + label_list: Листа + label_date: Дата + label_integer: Integer + label_float: Float + label_boolean: Boolean + label_string: Текст + label_text: Долг текст + label_attribute: Атрибут + label_attribute_plural: Атрибути + label_download: "{{count}} превземање" + label_download_plural: "{{count}} превземања" + label_no_data: Нема податоци за прикажување + label_change_status: Промени статус + label_history: Историја + label_attachment: Датотека + label_attachment_new: Нова датотека + label_attachment_delete: Избриши датотека + label_attachment_plural: Датотеки + label_file_added: Датотеката е додадена + label_report: Извештај + label_report_plural: Извештаи + label_news: Новост + label_news_new: Додади новост + label_news_plural: Новости + label_news_latest: Последни новости + label_news_view_all: Прегледај ги сите новости + label_news_added: Новостта е додадена + label_settings: Settings + label_overview: Преглед + label_version: Верзија + label_version_new: Нова верзија + label_version_plural: Верзии + label_close_versions: Затвори ги завршените врзии + label_confirmation: Потврда + label_export_to: 'Достапно и во:' + label_read: Прочитај... + label_public_projects: Јавни проекти + label_open_issues: отворена + label_open_issues_plural: отворени + label_closed_issues: затворена + label_closed_issues_plural: затворени + label_x_open_issues_abbr_on_total: + zero: 0 отворени / {{total}} + one: 1 отворена / {{total}} + other: "{{count}} отворени / {{total}}" + label_x_open_issues_abbr: + zero: 0 отворени + one: 1 отворена + other: "{{count}} отворени" + label_x_closed_issues_abbr: + zero: 0 затворени + one: 1 затворена + other: "{{count}} затворени" + label_total: Вкупно + label_permissions: Овластувања + label_current_status: Моментален статус + label_new_statuses_allowed: Дозволени нови статуси + label_all: сите + label_none: ниеден + label_nobody: никој + label_next: Следно + label_previous: Претходно + label_used_by: Користено од + label_details: Детали + label_add_note: Додади белешка + label_per_page: По страна + label_calendar: Календар + label_months_from: месеци од + label_gantt: Gantt + label_internal: Internal + label_last_changes: "последни {{count}} промени" + label_change_view_all: Прегледај ги сите промени + label_personalize_page: Прилагоди ја странава + label_comment: Коментар + label_comment_plural: Коментари + label_x_comments: + zero: нема коментари + one: 1 коментар + other: "{{count}} коментари" + label_comment_add: Додади коментар + label_comment_added: Коментарот е додаден + label_comment_delete: Избриши коментари + label_query: Custom query + label_query_plural: Custom queries + label_query_new: New query + label_filter_add: Додади филтер + label_filter_plural: Филтри + label_equals: е + label_not_equals: не е + label_in_less_than: за помалку од + label_in_more_than: за повеќе од + label_greater_or_equal: '>=' + label_less_or_equal: '<=' + label_in: во + label_today: денес + label_all_time: цело време + label_yesterday: вчера + label_this_week: оваа недела + label_last_week: минатата недела + label_last_n_days: "последните {{count}} дена" + label_this_month: овој месец + label_last_month: минатиот месец + label_this_year: оваа година + label_date_range: Date range + label_less_than_ago: пред помалку од денови + label_more_than_ago: пред повеќе од денови + label_ago: пред денови + label_contains: содржи + label_not_contains: не содржи + label_day_plural: денови + label_repository: Складиште + label_repository_plural: Складишта + label_browse: Прелистувај + label_modification: "{{count}} промени" + label_modification_plural: "{{count}} промени" + label_branch: Гранка + label_tag: Tag + label_revision: Ревизија + label_revision_plural: Ревизии + label_revision_id: "Ревизија {{value}}" + label_associated_revisions: Associated revisions + label_added: added + label_modified: modified + label_copied: copied + label_renamed: renamed + label_deleted: deleted + label_latest_revision: Последна ревизија + label_latest_revision_plural: Последни ревизии + label_view_revisions: Прегледај ги ревизиите + label_view_all_revisions: Прегледај ги сите ревизии + label_max_size: Макс. големина + label_sort_highest: Премести најгоре + label_sort_higher: Премести нагоре + label_sort_lower: Премести надоле + label_sort_lowest: Премести најдоле + label_roadmap: Roadmap + label_roadmap_due_in: "Due in {{value}}" + label_roadmap_overdue: "Касни {{value}}" + label_roadmap_no_issues: Нема задачи за оваа верзија + label_search: Барај + label_result_plural: Резултати + label_all_words: Сите зборови + label_wiki: Вики + label_wiki_edit: Вики уредување + label_wiki_edit_plural: Вики уредувања + label_wiki_page: Вики страница + label_wiki_page_plural: Вики страници + label_index_by_title: Индекс по наслов + label_index_by_date: Индекс по дата + label_current_version: Current version + label_preview: Preview + label_feed_plural: Feeds + label_changes_details: Детали за сите промени + label_issue_tracking: Следење на задачи + label_spent_time: Потрошено време + label_overall_spent_time: Вкупно потрошено време + label_f_hour: "{{value}} час" + label_f_hour_plural: "{{value}} часа" + label_time_tracking: Следење на време + label_change_plural: Промени + label_statistics: Статистики + label_commits_per_month: Commits per month + label_commits_per_author: Commits per author + label_view_diff: View differences + label_diff_inline: inline + label_diff_side_by_side: side by side + label_options: Опции + label_copy_workflow_from: Copy workflow from + label_permissions_report: Permissions report + label_watched_issues: Watched issues + label_related_issues: Поврзани задачи + label_applied_status: Applied status + label_loading: Loading... + label_relation_new: Нова релација + label_relation_delete: Избриши релација + label_relates_to: related to + label_duplicates: дупликати + label_duplicated_by: duplicated by + label_blocks: blocks + label_blocked_by: блокирано од + label_precedes: претходи + label_follows: следи + label_end_to_start: крај до почеток + label_end_to_end: крај до крај + label_start_to_start: почеток до почеток + label_start_to_end: почеток до крај + label_stay_logged_in: Останете најавени + label_disabled: disabled + label_show_completed_versions: Show completed versions + label_me: јас + label_board: Форум + label_board_new: Нов форум + label_board_plural: Форуми + label_board_locked: Заклучен + label_board_sticky: Sticky + label_topic_plural: Теми + label_message_plural: Пораки + label_message_last: Последна порака + label_message_new: Нова порака + label_message_posted: Поракате е додадена + label_reply_plural: Одговори + label_send_information: Испрати ги информациите за профилот на корисникот + label_year: Година + label_month: Месец + label_week: Недела + label_date_from: Од + label_date_to: До + label_language_based: Според јазикот на корисникот + label_sort_by: "Подреди според {{value}}" + label_send_test_email: Испрати тест е-порака + label_feeds_access_key: RSS клуч за пристап + label_missing_feeds_access_key: Недостика RSS клуч за пристап + label_feeds_access_key_created_on: "RSS клучот за пристап креиран пред {{value}}" + label_module_plural: Модули + label_added_time_by: "Додадено од {{author}} пред {{age}}" + label_updated_time_by: "Ажурирано од {{author}} пред {{age}}" + label_updated_time: "Ажурирано пред {{value}}" + label_jump_to_a_project: Префрли се на проект... + label_file_plural: Датотеки + label_changeset_plural: Changesets + label_default_columns: Основни колони + label_no_change_option: (Без промена) + label_bulk_edit_selected_issues: Групно уредување на задачи + label_theme: Тема + label_default: Default + label_search_titles_only: Пребарувај само наслови + label_user_mail_option_all: "За било кој настан во сите мои проекти" + label_user_mail_option_selected: "За било кој настан само во избраните проекти..." + label_user_mail_option_none: "Само за работите кои ги следам или од кои сум дел" + label_user_mail_no_self_notified: "Не ме известувај за промените што јас ги правам" + label_registration_activation_by_email: активација на профил преку е-пошта + label_registration_manual_activation: мануелна активација на профил + label_registration_automatic_activation: автоматска активација на профил + label_display_per_page: "По страна: {{value}}" + label_age: Age + label_change_properties: Change properties + label_general: Општо + label_more: Повеќе + label_scm: SCM + label_plugins: Додатоци + label_ldap_authentication: LDAP автентикација + label_downloads_abbr: Превземања + label_optional_description: Опис (незадолжително) + label_add_another_file: Додади уште една датотека + label_preferences: Preferences + label_chronological_order: Во хронолошки ред + label_reverse_chronological_order: In reverse chronological order + label_planning: Планирање + label_incoming_emails: Дојдовни е-пораки + label_generate_key: Генерирај клуч + label_issue_watchers: Watchers + label_example: Пример + label_display: Прикажи + label_sort: Подреди + label_ascending: Растечки + label_descending: Опаѓачки + label_date_from_to: Од {{start}} до {{end}} + label_wiki_content_added: Вики страница додадена + label_wiki_content_updated: Вики страница ажурирана + label_group: Група + label_group_plural: Групи + label_group_new: Нова група + label_time_entry_plural: Потрошено време + label_version_sharing_none: Не споделено + label_version_sharing_descendants: Со сите подпроекти + label_version_sharing_hierarchy: Со хиерархијата на проектот + label_version_sharing_tree: Со дрвото на проектот + label_version_sharing_system: Со сите проекти + label_update_issue_done_ratios: Update issue done ratios + label_copy_source: Извор + label_copy_target: Дестинација + label_copy_same_as_target: Исто како дестинацијата + label_display_used_statuses_only: Only display statuses that are used by this tracker + label_api_access_key: API клуч за пристап + label_missing_api_access_key: Недостига API клуч за пристап + label_api_access_key_created_on: "API клучот за пристап е креиран пред {{value}}" + label_profile: Профил + label_subtask_plural: Подзадачи + label_project_copy_notifications: Праќај известувања по е-пошта при копирање на проект + + button_login: Најави се + button_submit: Испрати + button_save: Зачувај + button_check_all: Штиклирај ги сите + button_uncheck_all: Одштиклирај ги сите + button_delete: Избриши + button_create: Креирај + button_create_and_continue: Креирај и продолжи + button_test: Тест + button_edit: Уреди + button_add: Додади + button_change: Промени + button_apply: Примени + button_clear: Избриши + button_lock: Заклучи + button_unlock: Отклучи + button_download: Превземи + button_list: List + button_view: Прегледај + button_move: Премести + button_move_and_follow: Премести и следи + button_back: Back + button_cancel: Откажи + button_activate: Активирај + button_sort: Подреди + button_log_time: Бележи време + button_rollback: Rollback to this version + button_watch: Следи + button_unwatch: Не следи + button_reply: Одговори + button_archive: Архивирај + button_unarchive: Одархивирај + button_reset: Reset + button_rename: Преименувај + button_change_password: Промени лозинка + button_copy: Копирај + button_copy_and_follow: Копирај и следи + button_annotate: Annotate + button_update: Ажурирај + button_configure: Конфигурирај + button_quote: Цитирај + button_duplicate: Копирај + button_show: Show + + status_active: активни + status_registered: регистрирани + status_locked: заклучени + + version_status_open: отворени + version_status_locked: заклучени + version_status_closed: затворени + + field_active: Active + + text_select_mail_notifications: Изберете за кои настани да се праќаат известувања по е-пошта да се праќаат. + text_regexp_info: eg. ^[A-Z0-9]+$ + text_min_max_length_info: 0 значи без ограничување + text_project_destroy_confirmation: Дали сте сигурни дека сакате да го избришете проектот и сите поврзани податоци? + text_subprojects_destroy_warning: "Неговите подпроекти: {{value}} исто така ќе бидат избришани." + text_workflow_edit: Select a role and a tracker to edit the workflow + text_are_you_sure: Дали сте сигурни? + text_journal_changed: "{{label}} променето од {{old}} во {{new}}" + text_journal_set_to: "{{label}} set to {{value}}" + text_journal_deleted: "{{label}} избришан ({{old}})" + text_journal_added: "{{label}} {{value}} додаден" + text_tip_task_begin_day: задачи што почнуваат овој ден + text_tip_task_end_day: задачи што завршуваат овој ден + text_tip_task_begin_end_day: задачи што почнуваат и завршуваат овој ден + text_project_identifier_info: 'Само мали букви (a-z), бројки и dashes се дозволени
    По зачувувањето, идентификаторот неможе да се смени.' + text_caracters_maximum: "{{count}} знаци максимум." + text_caracters_minimum: "Мора да е најмалку {{count}} знаци долго." + text_length_between: "Должина помеѓу {{min}} и {{max}} знаци." + text_tracker_no_workflow: No workflow defined for this tracker + text_unallowed_characters: Недозволени знаци + text_comma_separated: Дозволени се повеќе вредности (разделени со запирка). + text_line_separated: Дозволени се повеќе вредности (една линија за секоја вредност). + text_issues_ref_in_commit_messages: Referencing and fixing issues in commit messages + text_issue_added: "Задачата {{id}} е пријавена од {{author}}." + text_issue_updated: "Зачата {{id}} е ажурирана од {{author}}." + text_wiki_destroy_confirmation: Дали сте сигурни дека сакате да го избришете ова вики и целата негова содржина? + text_issue_category_destroy_question: "Некои задачи ({{count}}) се доделени на оваа категорија. Што сакате да правите?" + text_issue_category_destroy_assignments: Remove category assignments + text_issue_category_reassign_to: Додели ги задачите на оваа категорија + text_user_mail_option: "For unselected projects, you will only receive notifications about things you watch or you're involved in (eg. issues you're the author or assignee)." + text_no_configuration_data: "Roles, trackers, issue statuses and workflow have not been configured yet.\nIt is highly recommended to load the default configuration. You will be able to modify it once loaded." + text_load_default_configuration: Load the default configuration + text_status_changed_by_changeset: "Applied in changeset {{value}}." + text_issues_destroy_confirmation: 'Дали сте сигурни дека сакате да ги избришете избраните задачи?' + text_select_project_modules: 'Изберете модули за овој проект:' + text_default_administrator_account_changed: Default administrator account changed + text_file_repository_writable: Во папката за прилози може да се запишува + text_plugin_assets_writable: Во папката за додатоци може да се запишува + text_rmagick_available: RMagick available (незадолжително) + text_destroy_time_entries_question: "{{hours}} hours were reported on the issues you are about to delete. What do you want to do ?" + text_destroy_time_entries: Delete reported hours + text_assign_time_entries_to_project: Додели ги пријавените часови на проектот + text_reassign_time_entries: 'Reassign reported hours to this issue:' + text_user_wrote: "{{value}} напиша:" + text_enumeration_destroy_question: "{{count}} objects are assigned to this value." + text_enumeration_category_reassign_to: 'Reassign them to this value:' + text_email_delivery_not_configured: "Доставата по е-пошта не е конфигурирана, и известувањата се оневозможени.\nКонфигурирајте го Вашиот SMTP сервер во config/email.yml и рестартирајте ја апликацијата." + text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped." + text_diff_truncated: '... This diff was truncated because it exceeds the maximum size that can be displayed.' + text_custom_field_possible_values_info: 'One line for each value' + text_wiki_page_destroy_question: "This page has {{descendants}} child page(s) and descendant(s). What do you want to do?" + text_wiki_page_nullify_children: "Keep child pages as root pages" + text_wiki_page_destroy_children: "Delete child pages and all their descendants" + text_wiki_page_reassign_children: "Reassign child pages to this parent page" + text_own_membership_delete_confirmation: "You are about to remove some or all of your permissions and may no longer be able to edit this project after that.\nAre you sure you want to continue?" + text_zoom_in: Zoom in + text_zoom_out: Zoom out + + default_role_manager: Менаџер + default_role_developer: Developer + default_role_reporter: Reporter + default_tracker_bug: Грешка + default_tracker_feature: Функционалност + default_tracker_support: Поддршка + default_issue_status_new: Нова + default_issue_status_in_progress: Во прогрес + default_issue_status_resolved: Разрешена + default_issue_status_feedback: Feedback + default_issue_status_closed: Затворена + default_issue_status_rejected: Одбиена + default_doc_category_user: Корисничка документација + default_doc_category_tech: Техничка документација + default_priority_low: Низок + default_priority_normal: Нормален + default_priority_high: Висок + default_priority_urgent: Итно + default_priority_immediate: Веднаш + default_activity_design: Дизајн + default_activity_development: Развој + + enumeration_issue_priorities: Приоритети на задача + enumeration_doc_categories: Категории на документ + enumeration_activities: Активности (следење на време) + enumeration_system_activity: Системска активност + diff --git a/config/locales/mn.yml b/config/locales/mn.yml index 568e1f341..55d7cf168 100644 --- a/config/locales/mn.yml +++ b/config/locales/mn.yml @@ -1,4 +1,5 @@ mn: + direction: ltr date: formats: # Use the strftime parameters for formats. @@ -64,6 +65,10 @@ mn: other: "бараг {{count}} жил" number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: delimiter: "" @@ -905,3 +910,6 @@ mn: text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 4472a19d7..1e1489940 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -1,4 +1,5 @@ nl: + direction: ltr date: formats: # Use the strftime parameters for formats. @@ -63,7 +64,11 @@ nl: one: "almost 1 year" other: "almost {{count}} years" - number: + number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: precision: 1 @@ -571,7 +576,7 @@ nl: label_used_by: Gebruikt door label_user: Gebruiker label_user_activity: "{{value}}'s activiteit" - label_user_mail_no_self_notified: "Ik wil niet verwittigd worden van wijzigingen die ik zelf maak." + label_user_mail_no_self_notified: "Ik wil niet op de hoogte gehouden worden van wijzigingen die ik zelf maak." label_user_mail_option_all: "Bij elk gebeurtenis in al mijn projecten..." label_user_mail_option_none: "Alleen in de dingen die ik monitor of in betrokken ben" label_user_mail_option_selected: "Enkel bij elke gebeurtenis op het geselecteerde project..." @@ -791,98 +796,101 @@ nl: text_wiki_page_nullify_children: Behoud subpagina's als hoofdpagina's text_wiki_page_destroy_children: Verwijder alle subpagina's en onderliggende pagina's setting_password_min_length: Minimum wachtwoord lengte - field_group_by: Group results by - mail_subject_wiki_content_updated: "'{{page}}' wiki page has been updated" - label_wiki_content_added: Wiki page added - mail_subject_wiki_content_added: "'{{page}}' wiki page has been added" - mail_body_wiki_content_added: The '{{page}}' wiki page has been added by {{author}}. - label_wiki_content_updated: Wiki page updated - mail_body_wiki_content_updated: The '{{page}}' wiki page has been updated by {{author}}. - permission_add_project: Create project - setting_new_project_user_role_id: Role given to a non-admin user who creates a project - label_view_all_revisions: View all revisions + field_group_by: Groepeer resultaten per + mail_subject_wiki_content_updated: "'{{page}}' wiki pagina is bijgewerkt" + label_wiki_content_added: Wiki pagina toegevoegd + mail_subject_wiki_content_added: "'{{page}}' wiki pagina is toegevoegd" + mail_body_wiki_content_added: The '{{page}}' wiki pagina is toegevoegd door {{author}}. + label_wiki_content_updated: Wiki pagina bijgewerkt + mail_body_wiki_content_updated: The '{{page}}' wiki pagina is bijgewerkt door {{author}}. + permission_add_project: Maak project + setting_new_project_user_role_id: Rol van gebruiker die een project maakt + label_view_all_revisions: Bekijk alle revisies label_tag: Tag label_branch: Branch - error_no_tracker_in_project: No tracker is associated to this project. Please check the Project settings. - error_no_default_issue_status: No default issue status is defined. Please check your configuration (Go to "Administration -> Issue statuses"). - text_journal_changed: "{{label}} changed from {{old}} to {{new}}" - text_journal_set_to: "{{label}} set to {{value}}" - text_journal_deleted: "{{label}} deleted ({{old}})" - label_group_plural: Groups - label_group: Group - label_group_new: New group - label_time_entry_plural: Spent time - text_journal_added: "{{label}} {{value}} added" - field_active: Active - enumeration_system_activity: System Activity - permission_delete_issue_watchers: Delete watchers - version_status_closed: closed - version_status_locked: locked + error_no_tracker_in_project: Geen tracker is geassocieerd met dit project. Check de project instellingen. + error_no_default_issue_status: Geen standaard issue status ingesteld. Check de configuratie (Ga naar "Administratie -> Issue statussen"). + text_journal_changed: "{{label}} gewijzigd van {{old}} naar {{new}}" + text_journal_set_to: "{{label}} gewijzigd naar {{value}}" + text_journal_deleted: "{{label}} verwijderd ({{old}})" + label_group_plural: Groepen + label_group: Groep + label_group_new: Nieuwe groep + label_time_entry_plural: Bestede tijd + text_journal_added: "{{label}} {{value}} toegevoegd" + field_active: Actief + enumeration_system_activity: Systeem Activiteit + permission_delete_issue_watchers: Verwijder volgers + version_status_closed: gesloten + version_status_locked: vergrendeld version_status_open: open error_can_not_reopen_issue_on_closed_version: An issue assigned to a closed version can not be reopened - label_user_anonymous: Anonymous - button_move_and_follow: Move and follow - setting_default_projects_modules: Default enabled modules for new projects - setting_gravatar_default: Default Gravatar image - field_sharing: Sharing - label_version_sharing_hierarchy: With project hierarchy - label_version_sharing_system: With all projects - label_version_sharing_descendants: With subprojects + label_user_anonymous: Anoniem + button_move_and_follow: Verplaats en volg + setting_default_projects_modules: Standaard geactiveerde modules voor nieuwe projecten + setting_gravatar_default: Standaard Gravatar plaatje + field_sharing: Delen + label_version_sharing_hierarchy: Met project hiërarchie + label_version_sharing_system: Met alle projecten + label_version_sharing_descendants: Met subprojecten label_version_sharing_tree: With project tree - label_version_sharing_none: Not shared - error_can_not_archive_project: This project can not be archived - button_duplicate: Duplicate - button_copy_and_follow: Copy and follow - label_copy_source: Source - setting_issue_done_ratio: Calculate the issue done ratio with - setting_issue_done_ratio_issue_status: Use the issue status - error_issue_done_ratios_not_updated: Issue done ratios not updated. - error_workflow_copy_target: Please select target tracker(s) and role(s) - setting_issue_done_ratio_issue_field: Use the issue field - label_copy_same_as_target: Same as target - label_copy_target: Target + label_version_sharing_none: Niet gedeeld + error_can_not_archive_project: Dit project kan niet worden gearchiveerd + button_duplicate: Dupliceer + button_copy_and_follow: Kopiëer en volg + label_copy_source: Bron + setting_issue_done_ratio: Bereken issue done ratio met + setting_issue_done_ratio_issue_status: Gebruik de issue status + error_issue_done_ratios_not_updated: Issue done ratios niet geupdate. + error_workflow_copy_target: Selecteer tracker(s) en rol(len) + setting_issue_done_ratio_issue_field: Gebruik het issue veld + label_copy_same_as_target: Zelfde als doel + label_copy_target: Doel notice_issue_done_ratios_updated: Issue done ratios updated. - error_workflow_copy_source: Please select a source tracker or role + error_workflow_copy_source: Selecteer een bron tracker of rol label_update_issue_done_ratios: Update issue done ratios - setting_start_of_week: Start calendars on - permission_view_issues: View Issues - label_display_used_statuses_only: Only display statuses that are used by this tracker + setting_start_of_week: Week begint op + permission_view_issues: Bekijk Issues + label_display_used_statuses_only: Laat alleen statussen zien die gebruikt worden door deze tracker label_revision_id: Revision {{value}} label_api_access_key: API access key - label_api_access_key_created_on: API access key created {{value}} ago + label_api_access_key_created_on: API access key gemaakt {{value}} geleden label_feeds_access_key: RSS access key - notice_api_access_key_reseted: Your API access key was reset. + notice_api_access_key_reseted: Uw API access key was gereset. setting_rest_api_enabled: Enable REST web service - label_missing_api_access_key: Missing an API access key - label_missing_feeds_access_key: Missing a RSS access key - button_show: Show - text_line_separated: Multiple values allowed (one line for each value). + label_missing_api_access_key: Geen API access key + label_missing_feeds_access_key: Geen RSS access key + button_show: Laat zien + text_line_separated: Meerdere waarden toegestaan (elke regel is een waarde). setting_mail_handler_body_delimiters: Truncate emails after one of these lines - permission_add_subprojects: Create subprojects - label_subproject_new: New subproject + permission_add_subprojects: Maak subprojecten + label_subproject_new: Nieuw subproject text_own_membership_delete_confirmation: |- - You are about to remove some or all of your permissions and may no longer be able to edit this project after that. - Are you sure you want to continue? - label_close_versions: Close completed versions + U staat op punt om sommige of alle van uw permissies te verwijderen en bent mogelijk niet meer toegestaan om dit project hierna te wijzigen. + Wilt u doorgaan? + label_close_versions: Sluit complete versies label_board_sticky: Sticky - label_board_locked: Locked - permission_export_wiki_pages: Export wiki pages - setting_cache_formatted_text: Cache formatted text + label_board_locked: Vergrendeld + permission_export_wiki_pages: Exporteer wiki pagina's + setting_cache_formatted_text: Cache opgemaakte tekst permission_manage_project_activities: Manage project activities - error_unable_delete_issue_status: Unable to delete issue status - label_profile: Profile + error_unable_delete_issue_status: Verwijderen van issue status niet gelukt + label_profile: Profiel permission_manage_subtasks: Manage subtasks field_parent_issue: Parent task label_subtask_plural: Subtasks - label_project_copy_notifications: Send email notifications during the project copy - error_can_not_delete_custom_field: Unable to delete custom field - error_unable_to_connect: Unable to connect ({{value}}) - error_can_not_remove_role: This role is in use and can not be deleted. - error_can_not_delete_tracker: This tracker contains issues and can't be deleted. + label_project_copy_notifications: Stuur email notificaties voor de project kopie + error_can_not_delete_custom_field: Verwijderen niet mogelijk van custom field + error_unable_to_connect: Geen connectie ({{value}}) + error_can_not_remove_role: Deze rol is in gebruik en kan niet worden verwijderd. + error_can_not_delete_tracker: Deze tracker bevat nog issues en kan niet worden verwijderd. field_principal: Principal - label_my_page_block: My page block - notice_failed_to_save_members: "Failed to save member(s): {{errors}}." - text_zoom_out: Zoom out + label_my_page_block: Mijn pagina block + notice_failed_to_save_members: "Niet gelukt om lid/leden op te slaan: {{errors}}." + text_zoom_out: Zoom uit text_zoom_in: Zoom in - notice_unable_delete_time_entry: Unable to delete time log entry. - label_overall_spent_time: Overall spent time + notice_unable_delete_time_entry: Verwijderen niet mogelijk van tijd log invoer. + label_overall_spent_time: Totaal bestede tijd + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/no.yml b/config/locales/no.yml index 7d49537df..8845d12b8 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -3,6 +3,7 @@ support: array: sentence_connector: "og" + direction: ltr date: formats: default: "%d.%m.%Y" @@ -899,3 +900,6 @@ text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/pl.yml b/config/locales/pl.yml index 2dadc8478..f36bb1277 100644 --- a/config/locales/pl.yml +++ b/config/locales/pl.yml @@ -33,6 +33,7 @@ pl: gb: "GB" tb: "TB" + direction: ltr date: formats: default: "%Y-%m-%d" @@ -929,3 +930,6 @@ pl: text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/pt-BR.yml b/config/locales/pt-BR.yml index a66f23718..d5b54e509 100644 --- a/config/locales/pt-BR.yml +++ b/config/locales/pt-BR.yml @@ -1,5 +1,6 @@ pt-BR: # formatos de data e hora + direction: ltr date: formats: default: "%d/%m/%Y" @@ -932,3 +933,6 @@ pt-BR: text_zoom_in: Aproximar zoom notice_unable_delete_time_entry: Não foi possível excluir a entrada no registro de horas trabalhadas. label_overall_spent_time: Tempo gasto geral + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/pt.yml b/config/locales/pt.yml index 615f31645..b2a2c08c8 100644 --- a/config/locales/pt.yml +++ b/config/locales/pt.yml @@ -6,6 +6,7 @@ pt: sentence_connector: "e" skip_last_comma: true + direction: ltr date: formats: default: "%d/%m/%Y" @@ -916,3 +917,6 @@ pt: text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/ro.yml b/config/locales/ro.yml index 45fdd1eaa..fd6e2b942 100644 --- a/config/locales/ro.yml +++ b/config/locales/ro.yml @@ -1,4 +1,5 @@ ro: + direction: ltr date: formats: default: "%d-%m-%Y" @@ -901,3 +902,6 @@ ro: text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/ru.yml b/config/locales/ru.yml index ee9ee37a1..913c81c81 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -11,6 +11,7 @@ # была возможность минимальной локализации приложения на русский язык. ru: + direction: ltr date: formats: default: "%d.%m.%Y" @@ -41,7 +42,7 @@ ru: number: format: - separator: "." + separator: "," delimiter: " " precision: 3 @@ -64,7 +65,7 @@ ru: human: format: delimiter: "" - precision: 1 + precision: 2 # Rails 2.2 # storage_units: [байт, КБ, МБ, ГБ, ТБ] @@ -366,6 +367,7 @@ ru: field_subject: Тема field_subproject: Подпроект field_summary: Сводка + field_time_entries: Затраченное время field_time_zone: Часовой пояс field_title: Название field_tracker: Трекер @@ -755,7 +757,7 @@ ru: mail_subject_account_activation_request: "Запрос на активацию пользователя в системе {{value}}" mail_subject_lost_password: "Ваш {{value}} пароль" mail_subject_register: "Активация учетной записи {{value}}" - mail_subject_reminder: "{{count}} назначенных на Вас задач в ближайшие {{days}} дни" + mail_subject_reminder: "{{count}} назначенных на Вас задач в ближайшие {{days}} дней" notice_account_activated: Ваша учетная запись активирована. Вы можете войти. notice_account_invalid_creditentials: Неправильное имя пользователя или пароль @@ -843,6 +845,8 @@ ru: project_module_repository: Хранилище project_module_time_tracking: Учет времени project_module_wiki: Wiki + project_module_gantt: Диаграмма Ганта + project_module_calendar: Календарь setting_activity_days_default: Количество дней, отображаемых в Активности setting_app_subtitle: Подзаголовок приложения @@ -1024,3 +1028,4 @@ ru: text_zoom_in: Приблизить notice_unable_delete_time_entry: Невозможно удалить запись журнала. label_overall_spent_time: Всего затрачено времени + diff --git a/config/locales/sk.yml b/config/locales/sk.yml index 0b2351e6b..94facc047 100644 --- a/config/locales/sk.yml +++ b/config/locales/sk.yml @@ -1,4 +1,5 @@ sk: + direction: ltr date: formats: # Use the strftime parameters for formats. @@ -903,3 +904,6 @@ sk: text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/sl.yml b/config/locales/sl.yml index aac2e4331..7307d0d93 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -1,4 +1,5 @@ sl: + direction: ltr date: formats: # Use the strftime parameters for formats. @@ -63,10 +64,11 @@ sl: one: "almost 1 year" other: "almost {{count}} years" - number: + number: format: - separator: ',' - delimiter: '.' + separator: "," + delimiter: "." + precision: 3 human: format: precision: 1 @@ -903,3 +905,6 @@ sl: text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/sr-CY.yml b/config/locales/sr-CY.yml deleted file mode 100644 index 39cc5dcb8..000000000 --- a/config/locales/sr-CY.yml +++ /dev/null @@ -1,907 +0,0 @@ -# Serbian translations for Redmine -# by Vladimir Medarović (vlada@medarovic.com) -sr-CY: - date: - formats: - # Use the strftime parameters for formats. - # When no format has been given, it uses default. - # You can provide other formats here if you like! - default: "%d.%m.%Y." - short: "%e %b" - long: "%B %e, %Y" - - day_names: [Недеља, Понедељак, Уторак, Среда, Четвртак, Петак, Субота] - abbr_day_names: [Нед, Пон, Уто, Сре, Чет, Пет, Суб] - - # Don't forget the nil at the beginning; there's no such thing as a 0th month - month_names: [~, Јануар, Фебруар, Март, Април, Мај, Јун, Јул, Август, Септембар, Октобар, Новембар, Децембар] - abbr_month_names: [~, Јан, Феб, Мар, Апр, Мај, Јун, Јул, Авг, Сеп, Окт, Нов, Дец] - # Used in date_select and datime_select. - order: [ :day, :month, :year ] - - time: - formats: - default: "%d.%m.%Y. у %H:%M" - time: "%H:%M" - short: "%d. %b у %H:%M" - long: "%d. %B %Y у %H:%M" - am: "am" - pm: "pm" - - datetime: - distance_in_words: - half_a_minute: "пола минута" - less_than_x_seconds: - one: "мање од једне секунде" - other: "мање од {{count}} сек." - x_seconds: - one: "једна секунда" - other: "{{count}} сек." - less_than_x_minutes: - one: "мање од минута" - other: "мање од {{count}} мин." - x_minutes: - one: "један минут" - other: "{{count}} мин." - about_x_hours: - one: "приближно један сат" - other: "приближно {{count}} сати" - x_days: - one: "један дан" - other: "{{count}} дана" - about_x_months: - one: "приближно један месец" - other: "приближно {{count}} месеци" - x_months: - one: "један месец" - other: "{{count}} месеци" - about_x_years: - one: "приближно годину дана" - other: "приближно {{count}} год." - over_x_years: - one: "преко годину дана" - other: "преко {{count}} год." - almost_x_years: - one: "скоро годину дана" - other: "скоро {{count}} год." - - number: - human: - format: - delimiter: "" - precision: 1 - storage_units: - format: "%n %u" - units: - byte: - one: "Byte" - other: "Bytes" - kb: "KB" - mb: "MB" - gb: "GB" - tb: "TB" - - -# Used in array.to_sentence. - support: - array: - sentence_connector: "и" - skip_last_comma: false - - activerecord: - errors: - messages: - inclusion: "није укључен у списак" - exclusion: "је резервисан" - invalid: "је неисправан" - confirmation: "потврда не одговара" - accepted: "мора бити прихваћен" - empty: "не може бити празно" - blank: "не може бити празно" - too_long: "је предугачка (максимум знакова је {{count}})" - too_short: "је прекратка (минимум знакова је {{count}})" - wrong_length: "је погрешне дужине (број знакова мора бити {{count}})" - taken: "је већ у употреби" - not_a_number: "није број" - not_a_date: "није исправан датум" - greater_than: "мора бити већи од {{count}}" - greater_than_or_equal_to: "мора бити већи или једнак {{count}}" - equal_to: "мора бити једнак {{count}}" - less_than: "мора бити мањи од {{count}}" - less_than_or_equal_to: "мора бити мањи или једнак {{count}}" - odd: "мора бити паран" - even: "мора бити непаран" - greater_than_start_date: "мора бити већи од почетног датума" - not_same_project: "не припада истом пројекту" - circular_dependency: "Ова веза ће створити кружну референцу" - - actionview_instancetag_blank_option: Молим одаберите - - general_text_No: 'Не' - general_text_Yes: 'Да' - general_text_no: 'не' - general_text_yes: 'да' - general_lang_name: 'Српски' - general_csv_separator: ',' - general_csv_decimal_separator: '.' - general_csv_encoding: UTF-8 - general_pdf_encoding: UTF-8 - general_first_day_of_week: '1' - - notice_account_updated: Налог је успешно ажуриран. - notice_account_invalid_creditentials: Неисправно корисничко име или лозинка. - notice_account_password_updated: Лозинка је успешно ажурирана. - notice_account_wrong_password: Погрешна лозинка - notice_account_register_done: Кориснички налог је успешно креиран. Кликните на линк који сте добили у емаил поруци за активацију. - notice_account_unknown_email: Непознат корисник. - notice_can_t_change_password: Овај кориснички налог за проверу идентитета користи спољни извор. Немогуће је променити лозинку. - 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: "Порука је послата на адресу {{value}}" - notice_email_error: "Догодила се грешка приликом слања поруке ({{value}})" - notice_feeds_access_key_reseted: Ваш RSS приступни кључ је поништен. - notice_api_access_key_reseted: Ваш API приступни кључ је поништен. - notice_failed_to_save_issues: "Неуспешно снимање {{count}} проблема од {{total}} одабраних: {{ids}}." - notice_no_issue_selected: "Ни један проблем није одабран! Молим, одаберите проблем који желите да мењате." - notice_account_pending: "Ваш налог је креиран и чека на одобрење администратора." - notice_default_data_loaded: Подразумевано конфигурисање је успешно учитано. - notice_unable_delete_version: Немогуће је обрисати верзију. - notice_issue_done_ratios_updated: Однос решених проблема је ажуриран. - - error_can_t_load_default_data: "Подразумевано конфигурисање је немогуће учитати: {{value}}" - error_scm_not_found: "Ставка или исправка нису пронађене у спремишту." - error_scm_command_failed: "Грешка се јавила приликом покушаја приступа спремишту: {{value}}" - error_scm_annotate: "Ставка не постоји или не може бити означена." - error_issue_not_found_in_project: 'Проблем није пронађен или не припада овом пројекту.' - error_no_tracker_in_project: 'Ни један трагач није повезан са овим пројектом. Молимо проверите подешавања пројекта.' - error_no_default_issue_status: 'Подразумевани статус проблема није дефинисан. Молимо проверите ваше конфигурисање (Идите на "Администрација -> Статуси проблема").' - error_can_not_reopen_issue_on_closed_version: 'Проблем додељен затвореној верзији не може бити поново отворен' - error_can_not_archive_project: Овај пројекат се не може архивирати - error_issue_done_ratios_not_updated: "Однос решених проблема није ажуриран." - error_workflow_copy_source: 'Молимо одаберите изворног трагача или улогу' - error_workflow_copy_target: 'Молимо одаберите крајњег трагача и улогу' - - warning_attachments_not_saved: "{{count}} датотека не може бити снимљено." - - mail_subject_lost_password: "Ваша {{value}} лозинка" - mail_body_lost_password: 'За промену ваше лозинке, кликните на следећи линк:' - mail_subject_register: "Активација вашег {{value}} налога" - mail_body_register: 'За активацију вашег налога, кликните на следећи линк:' - mail_body_account_information_external: "Можете користити ваш налог {{value}} за пријаву." - mail_body_account_information: Информације о вашем налогу - mail_subject_account_activation_request: "Захтев за активацију налога {{value}}" - mail_body_account_activation_request: "Нови корисник ({{value}}) је регистрован. Налог чека на ваше одобрење:" - mail_subject_reminder: "{{count}} проблема доспева наредних {{days}} дана" - mail_body_reminder: "{{count}} проблема додељених вама доспева у наредних {{days}} дана:" - mail_subject_wiki_content_added: "'{{page}}' wiki страна је додато" - mail_body_wiki_content_added: "{{author}} је додао '{{page}}' wiki страна." - mail_subject_wiki_content_updated: "'{{page}}' wiki страна је ажурирано" - mail_body_wiki_content_updated: "{{author}} је ажурирао '{{page}}' wiki страна." - - gui_validation_error: једна грешка - gui_validation_error_plural: "{{count}} грешака" - - field_name: Назив - field_description: Опис - field_summary: Резиме - field_is_required: Обавезно - field_firstname: Име - field_lastname: Презиме - field_mail: Емаил адреса - field_filename: Датотека - field_filesize: Величина - field_downloads: Преузимања - field_author: Аутор - field_created_on: Креирано - field_updated_on: Ажурирано - field_field_format: Формат - field_is_for_all: За све пројекте - field_possible_values: Могуће вредности - field_regexp: Регуларан израз - 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_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: Базни DN - field_attr_login: Атрибут пријављивања - field_attr_firstname: Атрибут имена - field_attr_lastname: Атрибут презимена - field_attr_mail: Атрибут емаил адресе - 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: Повезани проблеми - 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: Прикажи коментаре - field_parent_title: Матична страна - field_editable: Измељиво - field_watcher: Посматрач - field_identity_url: OpenID URL - field_content: Садржај - field_group_by: Групиши резултате по - field_sharing: Дељење - - 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_plain_text_mail: Порука са чистим текстом (без HTML-а) - setting_host_name: Путања и назив главног рачунара - setting_text_formatting: Обликовање текста - setting_wiki_compression: Компресија Wiki историје - setting_feeds_limit: Ограничење садржаја извора вести - setting_default_projects_public: Нови пројекти су јавни ако се другачије не наведе - setting_autofetch_changesets: Извршавање аутоматског преузимања - setting_sys_api_enabled: Омогући WS за управљање спремиштем - setting_commit_ref_keywords: Референцирање кључних речи - setting_commit_fix_keywords: Поправљање кључних речи - setting_autologin: Аутоматска пријава - setting_date_format: Формат датума - setting_time_format: Формат времена - setting_cross_project_issue_relations: Дозволи релације проблема из унакрсних пројеката - setting_issue_list_default_columns: Подразумеване колоне приказане на списку проблема - setting_repositories_encodings: Кодирање спремишта - setting_commit_logs_encoding: Кодирање извршних порука - setting_emails_footer: Подножје емаил поруке - setting_protocol: Протокол - setting_per_page_options: Опције приказа објеката по страни - setting_user_format: Формат приказа корисника - setting_activity_days_default: Број дана приказаних на пројектној активности - setting_display_subprojects_issues: Приказуј проблеме из потпројеката на главном пројекту уколико није другачије наведено - setting_enabled_scm: Омогући SCM - setting_mail_handler_body_delimiters: "Скрати поруку након једне од ових линија" - setting_mail_handler_api_enabled: Омогући WS долазне поруке - setting_mail_handler_api_key: API кључ - setting_sequential_project_identifiers: Генерисање секвенцијалног имена пројекта - setting_gravatar_enabled: Користи Gravatar корисничке иконе - setting_gravatar_default: Подразумевана Gravatar слика - setting_diff_max_lines_displayed: Макс. број приказаних различитих линија - setting_file_max_size_displayed: Макс. величина текстуалних датотека приказаних унутра - setting_repository_log_display_limit: Макс. број ревизија приказан у датотеци за евиденцију - setting_openid: Дозволи OpenID пријаву и регистрацију - setting_password_min_length: Минимална дужина лозинке - setting_new_project_user_role_id: Улога додељена кориснику (који није администратор), креатору пројекта - setting_default_projects_modules: Подразумевано омогућени модули за нове пројекте - setting_issue_done_ratio: Израчунај однос решених проблема - setting_issue_done_ratio_issue_field: користећи поље проблема - setting_issue_done_ratio_issue_status: користећи статус проблема - setting_start_of_week: Први дан у седмици - setting_rest_api_enabled: Омогући REST web услуге - setting_cache_formatted_text: Кеширај обрађен текст - - permission_add_project: Креирање пројекта - permission_add_subprojects: Креирање потпојекта - permission_edit_project: Измена пројеката - permission_select_project_modules: Одабирање модула пројекта - permission_manage_members: Управљање члановима - permission_manage_project_activities: Управљање пројектним активностима - permission_manage_versions: Управљање верзијама - permission_manage_categories: Управљање категоријама проблема - permission_view_issues: Преглед проблема - permission_add_issues: Додавање проблема - permission_edit_issues: Измена проблема - permission_manage_issue_relations: Управљање релацијама између проблема - permission_add_issue_notes: Додавање белешки - permission_edit_issue_notes: Измена белешки - permission_edit_own_issue_notes: Измена сопствених белешки - permission_move_issues: Померање проблема - permission_delete_issues: Брисање проблема - permission_manage_public_queries: Управљање јавним упитима - permission_save_queries: Снимање упита - permission_view_gantt: Прегледање Гантовог дијаграма - permission_view_calendar: Прегледање календара - permission_view_issue_watchers: Прегледање списка посматрача - permission_add_issue_watchers: Додавање посматрача - permission_delete_issue_watchers: Брисање посматрача - permission_log_time: Бележење утрошеног времена - permission_view_time_entries: Прегледање утрошеног времена - permission_edit_time_entries: Измена утрошеног времена - permission_edit_own_time_entries: Измена сопственог утрошеног времена - permission_manage_news: Управљање вестима - permission_comment_news: Коментарисање вести - permission_manage_documents: Управљање документима - permission_view_documents: Прегледање докумената - permission_manage_files: Управљање датотекама - permission_view_files: Прегледање датотека - permission_manage_wiki: Управљање wiki странама - permission_rename_wiki_pages: Промена имена wiki странама - permission_delete_wiki_pages: Брисање wiki страна - permission_view_wiki_pages: Прегледање wiki страна - permission_view_wiki_edits: Прегледање wiki историје - permission_edit_wiki_pages: Измена wiki страна - permission_delete_wiki_pages_attachments: Брисање приложених датотека - permission_protect_wiki_pages: Заштита wiki страна - permission_manage_repository: Управљање спремиштем - permission_browse_repository: Прегледање спремишта - permission_view_changesets: Прегледање скупа промена - permission_commit_access: Потврда приступа - permission_manage_boards: Управљање форумима - permission_view_messages: Прегледање порука - permission_add_messages: Слање порука - permission_edit_messages: Измена порука - permission_edit_own_messages: Измена сопствених порука - permission_delete_messages: Брисање порука - permission_delete_own_messages: Брисање сопствених порука - permission_export_wiki_pages: Извоз wiki страна - - 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_user_anonymous: Анониман - label_project: Пројекат - label_project_new: Нови пројекат - label_project_plural: Пројекти - label_x_projects: - zero: нема пројеката - one: један пројекат - other: "{{count}} пројеката" - label_project_all: Сви пројекти - label_project_latest: Последњи пројекти - label_issue: Проблем - label_issue_new: Нови проблем - label_issue_plural: Проблеми - label_issue_view_all: Приказ свих проблема - label_issues_by: "Проблеми - {{value}}" - label_issue_added: Проблем је додат - label_issue_updated: Проблем је ажуриран - label_document: Документ - label_document_new: Нови документ - label_document_plural: Документи - label_document_added: Документ је додат - label_role: Улога - label_role_plural: Улоге - label_role_new: Нова улога - label_role_and_permissions: Улоге и дозволе - label_member: Члан - label_member_new: Нови члан - label_member_plural: Чланови - label_tracker: Трагач - 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: Информацијe - label_please_login: Молимо, пријавите се - label_register: Регистрација - label_login_with_open_id_option: или пријава са OpenID - label_password_lost: Изгубљена лозинка - label_home: Почетак - label_my_page: Моја страна - label_my_account: Мој налог - label_my_projects: Моји пројекти - label_administration: Администрација - label_login: Пријава - label_logout: Одјава - label_help: Помоћ - label_reported_issues: Пријављени проблеми - label_assigned_to_me_issues: Проблеми додољени мени - label_last_login: Последње повезивање - label_registered_on: Регистрован - label_activity: Активност - label_overall_activity: Обухватна активност - label_user_activity: "Активност корисника {{value}}" - label_new: Ново - label_logged_as: Пријављени сте као - label_environment: Окружење - label_authentication: Провера идентитета - label_auth_source: Режим провере идентитета - label_auth_source_new: Нови режим провере идентитета - label_auth_source_plural: Режими провере идентитета - label_subproject_plural: Потпројекти - label_subproject_new: Нови потпројекат - label_and_its_subprojects: "{{value}} и његови потпројекти" - label_min_max_length: Мин. - Макс. дужина - label_list: Списак - label_date: Датум - label_integer: Цео број - label_float: Са покретним зарезом - label_boolean: Логички оператор - label_string: Текст - label_text: Дуги текст - label_attribute: Особина - label_attribute_plural: Особине - label_download: "{{count}} преузимање" - label_download_plural: "{{count}} преузимања" - label_no_data: Нема података за приказивање - label_change_status: Промена статуса - label_history: Историја - label_attachment: Датотека - label_attachment_new: Нова датотека - label_attachment_delete: Брисање датотеке - label_attachment_plural: Датотеке - label_file_added: Датотека додата - label_report: Извештај - label_report_plural: Извештаји - label_news: Вести - label_news_new: Додавање вести - label_news_plural: Вести - label_news_latest: Последње вести - label_news_view_all: Приказ свих вести - label_news_added: Вести додато - label_settings: Подешавања - label_overview: Преглед - label_version: Верзија - label_version_new: Нова верзија - label_version_plural: Верзије - label_close_versions: Затвори завршене верзије - label_confirmation: Потврда - label_export_to: 'Такође доступно и у варијанти:' - label_read: Читање... - label_public_projects: Јавни пројекти - label_open_issues: отворен - label_open_issues_plural: отворених - label_closed_issues: затворен - label_closed_issues_plural: затворених - label_x_open_issues_abbr_on_total: - zero: 0 отворених / {{total}} - one: 1 отворен / {{total}} - other: "{{count}} отворених / {{total}}" - label_x_open_issues_abbr: - zero: 0 отворених - one: 1 отворен - other: "{{count}} отворених" - label_x_closed_issues_abbr: - zero: 0 затворених - one: 1 затворен - other: "{{count}} затворених" - label_total: Укупно - label_permissions: Овлашћења - label_current_status: Тренутни статус - label_new_statuses_allowed: Нови статуси дозвољени - label_all: сви - label_none: ниједан - label_nobody: никоме - label_next: Следеће - label_previous: Претходно - label_used_by: Користио - label_details: Детаљи - label_add_note: Додај белешку - label_per_page: По страни - label_calendar: Календар - label_months_from: месеци од - label_gantt: Гантов дијаграм - label_internal: Унутрашљи - label_last_changes: "последњих {{count}} промена" - label_change_view_all: Прикажи све промене - label_personalize_page: Персонализујте ову страну - label_comment: Коментар - label_comment_plural: Коментари - label_x_comments: - zero: без коментара - one: један коментар - other: "{{count}} коментара" - 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_greater_or_equal: '>=' - label_less_or_equal: '<=' - label_in: у - label_today: данас - label_all_time: све време - label_yesterday: јуче - label_this_week: ове седмице - label_last_week: последње седмице - label_last_n_days: "последњих {{count}} дана" - label_this_month: овог месеца - label_last_month: последњег месеца - label_this_year: ове године - label_date_range: Временски период - label_less_than_ago: пре мање од неколико дана - label_more_than_ago: пре више од неколико дана - label_ago: пре неколико дана - label_contains: садржи - label_not_contains: не садржи - label_day_plural: дана - label_repository: Спремиште - label_repository_plural: Спремишта - label_browse: Прегледање - label_modification: "{{count}} промена" - label_modification_plural: "{{count}} промена" - label_branch: Грана - label_tag: Ознака - label_revision: Ревизија - label_revision_plural: Ревизије - label_revision_id: "Ревизија {{value}}" - label_associated_revisions: Придружене ревизије - label_added: додато - label_modified: промењено - label_copied: копирано - label_renamed: преименовано - label_deleted: обрисано - label_latest_revision: Последња ревизија - label_latest_revision_plural: Последње ревизије - label_view_revisions: Преглед ревизија - label_view_all_revisions: Преглед свих ревизија - label_max_size: Максимална величина - label_sort_highest: Премести на врх - label_sort_higher: Премести на горе - label_sort_lower: Премести на доле - label_sort_lowest: Премести на дно - label_roadmap: План рада - label_roadmap_due_in: "Доспева {{value}}" - label_roadmap_overdue: "{{value}} најкасније" - 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: Извори вести - label_changes_details: Детаљи свих промена - label_issue_tracking: Праћење проблема - label_spent_time: Утрошено време - label_f_hour: "{{value}} сат" - label_f_hour_plural: "{{value}} сати" - label_time_tracking: Време праћења - label_change_plural: Промене - label_statistics: Статистика - label_commits_per_month: Потврда месечно - label_commits_per_author: Потврда по аутору - label_view_diff: Погледај разлике - label_diff_inline: унутра - label_diff_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_duplicated_by: дуплираних од - 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_board_locked: Закључана - label_board_sticky: Лепљива - label_topic_plural: Теме - label_message_plural: Поруке - label_message_last: Последња порука - label_message_new: Нова порука - label_message_posted: Порука је додата - label_reply_plural: Одговори - label_send_information: Пошаљи детаље налога кориснику - label_year: Година - label_month: Месец - label_week: Седмица - label_date_from: Шаље - label_date_to: Прима - label_language_based: Базирано на језику корисника - label_sort_by: "Поређано по {{value}}" - label_send_test_email: Пошаљи пробну поруку - label_feeds_access_key: RSS приступни кључ - label_missing_feeds_access_key: RSS приступни кључ недостаје - label_feeds_access_key_created_on: "RSS приступни кључ је направљен пре {{value}}" - label_module_plural: Модули - label_added_time_by: "Додао {{author}} пре {{age}}" - label_updated_time_by: "Ажурирао {{author}} пре {{age}}" - label_updated_time: "Ажурирано пре {{value}}" - label_jump_to_a_project: Скок на пројекат... - label_file_plural: Датотеке - label_changeset_plural: Скупови промена - 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: "Број ставки по страни: {{value}}" - label_age: Старост - label_change_properties: Промени својства - label_general: Општи - label_more: Више - label_scm: SCM - label_plugins: Додаци - label_ldap_authentication: LDAP провера идентитета - label_downloads_abbr: D/L - label_optional_description: Опционо опис - label_add_another_file: Додај још једну датотеку - label_preferences: Подешавања - label_chronological_order: по хронолошком редоследу - label_reverse_chronological_order: по обрнутом хронолошком редоследу - label_planning: Планирање - label_incoming_emails: Долазне поруке - label_generate_key: Генериши кључ - label_issue_watchers: Посматрачи - label_example: Пример - label_display: Приказ - label_sort: Редослед - label_ascending: Растући низ - label_descending: Опадајући низ - label_date_from_to: Од {{start}} до {{end}} - label_wiki_content_added: Wiki страна је додата - label_wiki_content_updated: Wiki страна је ажурирана - label_group: Група - label_group_plural: Групе - label_group_new: Нова група - label_time_entry_plural: Проведено време - label_version_sharing_none: Није дељено - label_version_sharing_descendants: Са потпројектима - label_version_sharing_hierarchy: Са хијерархијом пројекта - label_version_sharing_tree: Са стаблом пројекта - label_version_sharing_system: Са свим пројектима - label_update_issue_done_ratios: Ажурирај однос решених проблема - label_copy_source: Извор - label_copy_target: Одредиште - label_copy_same_as_target: Исто као одредиште - label_display_used_statuses_only: Приказуј статусе коришћене само од стране овог трагача - label_api_access_key: API приступни кључ - label_missing_api_access_key: API приступни кључ недостаје - label_api_access_key_created_on: "API приступни кључ је креиран пре {{value}}" - label_project_copy_notifications: Пошаљи емаил поруку са обавештењем приликом копирања пројекта - - button_login: Пријава - button_submit: Пошаљи - button_save: Сними - button_check_all: Укључи све - button_uncheck_all: Искључи све - button_delete: Обриши - button_create: Направи - button_create_and_continue: Направи и настави - button_test: Тест - button_edit: Измени - button_add: Додај - button_change: Промени - button_apply: Примени - button_clear: Обриши - button_lock: Закључај - button_unlock: Откључај - button_download: Преузми - button_list: Списак - button_view: Приказ - button_move: Помери - button_move_and_follow: Помери и прати - 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: Променa лозинкe - button_copy: Копирај - button_copy_and_follow: Копирај и прати - button_annotate: Прибележи - button_update: Ажурирај - button_configure: Подеси - button_quote: Под наводницима - button_duplicate: Дуплирај - button_show: Прикажи - - status_active: активни - status_registered: регистровани - status_locked: закључани - - version_status_open: отворен - version_status_locked: закључан - version_status_closed: затворен - - field_active: Активан - - text_select_mail_notifications: Одабери акције за које ће емаил обавештење бити послато. - text_regexp_info: нпр. ^[A-Z0-9]+$ - text_min_max_length_info: 0 значи без ограничења - text_project_destroy_confirmation: Јесте ли сигурни да желите да обришете овај пројекат и све припадајуће податке? - text_subprojects_destroy_warning: "Потпојекат: {{value}} ће такође бити обрисан." - text_workflow_edit: Одаберите улогу и трагача за измену тока рада - text_are_you_sure: Јесте ли сигурни? - text_journal_changed: "{{label}} промењен од {{old}} у {{new}}" - text_journal_set_to: "{{label}} постављен у {{value}}" - text_journal_deleted: "{{label}} обрисано ({{old}})" - text_journal_added: "{{label}} {{value}} додато" - text_tip_task_begin_day: задатак почиње овог дана - text_tip_task_end_day: задатак се завршава овог дана - text_tip_task_begin_end_day: задатак почиње и завршава истог дана - text_project_identifier_info: 'Дозвољена су само мала слова (a-ш), бројеви и цртице.
    Једном снимљен, идентификатор се не може променити.' - text_caracters_maximum: "{{count}} знак(ова) највише." - text_caracters_minimum: "Број знакова мора бити најмање {{count}}." - text_length_between: "Број знакова мора бити између {{min}} и {{max}}." - text_tracker_no_workflow: Ток рада није дефинисан за овог трагача - text_unallowed_characters: Недозвољени знакови - text_comma_separated: Вишеструке вредности су дозвољене (одвојене зарезом). - text_line_separated: Вишеструке вредности су дозвољене (један ред за сваку вредност). - text_issues_ref_in_commit_messages: Референцирање и поправљање проблема у извршним порукама - text_issue_added: "Проблем {{id}} је пријавио {{author}}." - text_issue_updated: "Проблем {{id}} је ажурирао {{author}}." - text_wiki_destroy_confirmation: Јесте ли сигурни да желите да обришете wiki и сав садржај? - text_issue_category_destroy_question: "Неколико проблема ({{count}}) је додељено овој категорији. Шта желите да урадите?" - 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: "Примењено у скупу са променама {{value}}." - text_issues_destroy_confirmation: 'Јесте ли сигурни да желите да обришете одабране проблеме?' - text_select_project_modules: 'Одаберите модуле које желите омогућити за овај пројекат:' - text_default_administrator_account_changed: Подразумевани администраторски налог је промењен - text_file_repository_writable: Фасцикла приложених датотека је уписива - text_plugin_assets_writable: Фасцикла елемената додатка је уписива - text_rmagick_available: RMagick је доступан (опционо) - text_destroy_time_entries_question: "{{hours}} сати је пријављено за овај проблем који желите обрисати. Шта желите да урадите?" - text_destroy_time_entries: Обриши пријављене сате - text_assign_time_entries_to_project: Додели пријављене сате пројекту - text_reassign_time_entries: 'Додели поново пријављене сате овом проблему:' - text_user_wrote: "{{value}} је написао:" - text_enumeration_destroy_question: "{{count}} објекат(а) је додељено овој вредности." - text_enumeration_category_reassign_to: 'Додели их поново овој вредности:' - text_email_delivery_not_configured: "Испорука емаил порука није конфигурисана и обавештавања су онемогућена.\nПодесите ваш SMTP сервер у config/email.yml и покрените поново апликацију за њихово омогућавање." - text_repository_usernames_mapping: "Одаберите или ажурирајте Redmine кориснике мапирањем на свако корисничко име пронађено у евиденцији спремишта.\nКорисници са истим Redmine именом и именом спремишта или емаил адресом су аутоматски мапирани." - text_diff_truncated: '... Ова разлика је исечена зато што је достигнута максимална величина која може бити приказана.' - text_custom_field_possible_values_info: 'Један ред за сваку вредност' - text_wiki_page_destroy_question: "Ова страна има {{descendants}} страна наследника и потомака. Шта желите да урадите?" - text_wiki_page_nullify_children: "Задржи стране наследника као корене стране" - text_wiki_page_destroy_children: "Обриши стране наследника и свих њихових потомака" - text_wiki_page_reassign_children: "Додели поново стране наследника њиховој родитељској страни" - text_own_membership_delete_confirmation: "Уклањањем појединих или свих ваших дозвола нећете више моћи за уређујете овај пројекат након тога.\nЖелите ли да наставите?" - - default_role_manager: Менаџер - default_role_developer: Програмер - default_role_reporter: Извештач - default_tracker_bug: Грешка - default_tracker_feature: Функционалност - default_tracker_support: Подршка - default_issue_status_new: Ново - default_issue_status_in_progress: У току - default_issue_status_resolved: Решено - default_issue_status_feedback: Повратна информација - default_issue_status_closed: Затворено - default_issue_status_rejected: Одбијено - default_doc_category_user: Корисничка документација - default_doc_category_tech: Техничка документација - default_priority_low: Низак - default_priority_normal: Нормалан - default_priority_high: Висок - default_priority_urgent: Хитно - default_priority_immediate: Непосредно - default_activity_design: Дизајн - default_activity_development: Развој - - enumeration_issue_priorities: Приоритети проблема - enumeration_doc_categories: Категорије документа - enumeration_activities: Активности (временски праћене) - enumeration_system_activity: Системска активност - - error_can_not_delete_custom_field: Unable to delete custom field - permission_manage_subtasks: Manage subtasks - label_profile: Profile - error_unable_to_connect: Unable to connect ({{value}}) - error_can_not_remove_role: This role is in use and can not be deleted. - field_parent_issue: Parent task - error_unable_delete_issue_status: Unable to delete issue status - label_subtask_plural: Subtasks - error_can_not_delete_tracker: This tracker contains issues and can't be deleted. - field_principal: Principal - label_my_page_block: My page block - notice_failed_to_save_members: "Failed to save member(s): {{errors}}." - text_zoom_out: Zoom out - text_zoom_in: Zoom in - notice_unable_delete_time_entry: Unable to delete time log entry. - label_overall_spent_time: Overall spent time diff --git a/config/locales/sr-YU.yml b/config/locales/sr-YU.yml new file mode 100644 index 000000000..e5df0e427 --- /dev/null +++ b/config/locales/sr-YU.yml @@ -0,0 +1,915 @@ +# Serbian translations for Redmine +# by Vladimir Medarović (vlada@medarovic.com) +sr-YU: + direction: ltr + date: + formats: + # Use the strftime parameters for formats. + # When no format has been given, it uses default. + # You can provide other formats here if you like! + default: "%d.%m.%Y." + short: "%e %b" + long: "%B %e, %Y" + + day_names: [nedelja, ponedeljak, utorak, sreda, četvrtak, petak, subota] + abbr_day_names: [ned, pon, uto, sre, čet, pet, sub] + + # Don't forget the nil at the beginning; there's no such thing as a 0th month + month_names: [~, januar, februar, mart, april, maj, jun, jul, avgust, septembar, oktobar, novembar, decembar] + abbr_month_names: [~, jan, feb, mar, apr, maj, jun, jul, avg, sep, okt, nov, dec] + # Used in date_select and datime_select. + order: [ :day, :month, :year ] + + time: + formats: + default: "%d.%m.%Y. u %H:%M" + time: "%H:%M" + short: "%d. %b u %H:%M" + long: "%d. %B %Y u %H:%M" + am: "am" + pm: "pm" + + datetime: + distance_in_words: + half_a_minute: "pola minuta" + less_than_x_seconds: + one: "manje od jedne sekunde" + other: "manje od {{count}} sek." + x_seconds: + one: "jedna sekunda" + other: "{{count}} sek." + less_than_x_minutes: + one: "manje od minuta" + other: "manje od {{count}} min." + x_minutes: + one: "jedan minut" + other: "{{count}} min." + about_x_hours: + one: "približno jedan sat" + other: "približno {{count}} sati" + x_days: + one: "jedan dan" + other: "{{count}} dana" + about_x_months: + one: "približno jedan mesec" + other: "približno {{count}} meseci" + x_months: + one: "jedan mesec" + other: "{{count}} meseci" + about_x_years: + one: "približno godinu dana" + other: "približno {{count}} god." + over_x_years: + one: "preko godinu dana" + other: "preko {{count}} god." + almost_x_years: + one: "skoro godinu dana" + other: "skoro {{count}} god." + + number: + format: + separator: "." + delimiter: "" + precision: 3 + human: + format: + delimiter: "" + precision: 1 + storage_units: + format: "%n %u" + units: + byte: + one: "Byte" + other: "Bytes" + kb: "KB" + mb: "MB" + gb: "GB" + tb: "TB" + + +# Used in array.to_sentence. + support: + array: + sentence_connector: "i" + skip_last_comma: false + + activerecord: + errors: + messages: + inclusion: "nije uključen u spisak" + exclusion: "je rezervisan" + invalid: "je neispravan" + confirmation: "potvrda ne odgovara" + accepted: "mora biti prihvaćen" + empty: "ne može biti prazno" + blank: "ne može biti prazno" + too_long: "je predugačka (maksimum znakova je {{count}})" + too_short: "je prekratka (minimum znakova je {{count}})" + wrong_length: "je pogrešne dužine (broj znakova mora biti {{count}})" + taken: "je već u upotrebi" + not_a_number: "nije broj" + not_a_date: "nije ispravan datum" + greater_than: "mora biti veći od {{count}}" + greater_than_or_equal_to: "mora biti veći ili jednak {{count}}" + equal_to: "mora biti jednak {{count}}" + less_than: "mora biti manji od {{count}}" + less_than_or_equal_to: "mora biti manji ili jednak {{count}}" + odd: "mora biti paran" + even: "mora biti neparan" + greater_than_start_date: "mora biti veći od početnog datuma" + not_same_project: "ne pripada istom projektu" + circular_dependency: "Ova veza će stvoriti kružnu referencu" + cant_link_an_issue_with_a_descendant: "Problem ne može biti povezan sa jednim od svojih podzadataka" + + actionview_instancetag_blank_option: Molim odaberite + + general_text_No: 'Ne' + general_text_Yes: 'Da' + general_text_no: 'ne' + general_text_yes: 'da' + general_lang_name: 'Srpski' + general_csv_separator: ',' + general_csv_decimal_separator: '.' + general_csv_encoding: UTF-8 + general_pdf_encoding: UTF-8 + general_first_day_of_week: '1' + + notice_account_updated: Nalog je uspešno ažuriran. + notice_account_invalid_creditentials: Neispravno korisničko ime ili lozinka. + notice_account_password_updated: Lozinka je uspešno ažurirana. + notice_account_wrong_password: Pogrešna lozinka + notice_account_register_done: Korisnički nalog je uspešno kreiran. Kliknite na link koji ste dobili u e-poruci za aktivaciju. + notice_account_unknown_email: Nepoznat korisnik. + notice_can_t_change_password: Ovaj korisnički nalog za potvrdu identiteta koristi spoljni izvor. Nemoguće je promeniti lozinku. + notice_account_lost_email_sent: Poslata vam je e-poruka sa uputstvom za izbor nove lozinke + notice_account_activated: Vaš korisnički nalog je aktiviran. Sada se možete prijaviti. + notice_successful_create: Uspešno kreiranje. + notice_successful_update: Uspešno ažuriranje. + notice_successful_delete: Uspešno brisanje. + notice_successful_connection: Uspešno povezivanje. + notice_file_not_found: Strana kojoj želite pristupiti ne postoji ili je uklonjena. + notice_locking_conflict: Podatak je ažuriran od strane drugog korisnika. + notice_not_authorized: Niste ovlašćeni za pristup ovoj strani. + notice_email_sent: "E-poruka je poslata na {{value}}" + notice_email_error: "Dogodila se greška prilikom slanja e-poruke ({{value}})" + notice_feeds_access_key_reseted: Vaš RSS pristupni ključ je poništen. + notice_api_access_key_reseted: Vaš API pristupni ključ je poništen. + notice_failed_to_save_issues: "Neuspešno snimanje {{count}} problema od {{total}} odabranih: {{ids}}." + notice_failed_to_save_members: "Neuspešno snimanje člana(ova): {{errors}}." + notice_no_issue_selected: "Ni jedan problem nije odabran! Molimo, odaberite problem koji želite da menjate." + notice_account_pending: "Vaš nalog je kreiran i čeka na odobrenje administratora." + notice_default_data_loaded: Podrazumevano konfigurisanje je uspešno učitano. + notice_unable_delete_version: Verziju je nemoguće izbrisati. + notice_unable_delete_time_entry: Stavku evidencije vremena je nemoguće izbrisati. + notice_issue_done_ratios_updated: Odnos rešenih problema je ažuriran. + + error_can_t_load_default_data: "Podrazumevano konfigurisanje je nemoguće učitati: {{value}}" + error_scm_not_found: "Stavka ili ispravka nisu pronađene u spremištu." + error_scm_command_failed: "Greška se javila prilikom pokušaja pristupa spremištu: {{value}}" + error_scm_annotate: "Stavka ne postoji ili ne može biti označena." + error_issue_not_found_in_project: 'Problem nije pronađen ili ne pripada ovom projektu.' + error_no_tracker_in_project: 'Ni jedno praćenje nije povezano sa ovim projektom. Molimo proverite podešavanja projekta.' + error_no_default_issue_status: 'Podrazumevani status problema nije definisan. Molimo proverite vaše konfigurisanje (idite na "Administracija -> Statusi problema").' + error_can_not_delete_custom_field: Nemoguće je izbrisati prilagođeno polje + error_can_not_delete_tracker: "Ovo praćenje sadrži probleme i ne može biti obrisano." + error_can_not_remove_role: "Ova uloga je u upotrebi i ne može biti obrisana." + error_can_not_reopen_issue_on_closed_version: 'Problem dodeljen zatvorenoj verziji ne može biti ponovo otvoren' + error_can_not_archive_project: Ovaj projekat se ne može arhivirati + error_issue_done_ratios_not_updated: "Odnos rešenih problema nije ažuriran." + error_workflow_copy_source: 'Molimo odaberite izvorno praćenje ili ulogu' + error_workflow_copy_target: 'Molimo odaberite odredišno praćenje i ulogu' + error_unable_delete_issue_status: 'Status problema je nemoguće obrisati' + error_unable_to_connect: "Povezivanje sa ({{value}}) je nemoguće" + warning_attachments_not_saved: "{{count}} datoteka ne može biti snimljena." + + mail_subject_lost_password: "Vaša {{value}} lozinka" + mail_body_lost_password: 'Za promenu vaše lozinke, kliknite na sledeći link:' + mail_subject_register: "Aktivacija vašeg {{value}} naloga" + mail_body_register: 'Za aktivaciju vašeg naloga, kliknite na sledeći link:' + mail_body_account_information_external: "Vaš nalog {{value}} možete koristiti za prijavu." + mail_body_account_information: Informacije o vašem nalogu + mail_subject_account_activation_request: "Zahtev za aktivaciju naloga {{value}}" + mail_body_account_activation_request: "Novi korisnik ({{value}}) je registrovan. Nalog čeka na vaše odobrenje:" + mail_subject_reminder: "{{count}} problema dospeva narednih {{days}} dana" + mail_body_reminder: "{{count}} problema dodeljenih vama dospeva u narednih {{days}} dana:" + mail_subject_wiki_content_added: "Wiki stranica '{{page}}' je dodata" + mail_body_wiki_content_added: "{{author}} je dodao wiki stranicu '{{page}}'." + mail_subject_wiki_content_updated: "Wiki stranica '{{page}}' je ažurirana" + mail_body_wiki_content_updated: "{{author}} je ažurirao wiki stranicu '{{page}}'." + + gui_validation_error: jedna greška + gui_validation_error_plural: "{{count}} grešaka" + + field_name: Naziv + field_description: Opis + field_summary: Rezime + field_is_required: Obavezno + field_firstname: Ime + field_lastname: Prezime + field_mail: E-adresa + field_filename: Datoteka + field_filesize: Veličina + field_downloads: Preuzimanja + field_author: Autor + field_created_on: Kreirano + field_updated_on: Ažurirano + field_field_format: Format + field_is_for_all: Za sve projekte + field_possible_values: Moguće vrednosti + field_regexp: Regularan izraz + field_min_length: Minimalna dužina + field_max_length: Maksimalna dužina + field_value: Vrednost + field_category: Kategorija + field_title: Naslov + field_project: Projekat + field_issue: Problem + field_status: Status + field_notes: Beleške + field_is_closed: Zatvoren problem + field_is_default: Podrazumevana vrednost + field_tracker: Praćenje + field_subject: Predmet + field_due_date: Krajnji rok + field_assigned_to: Dodeljeno + field_priority: Prioritet + field_fixed_version: Odredišna verzija + field_user: Korisnik + field_principal: Glavni + field_role: Uloga + field_homepage: Početna stranica + field_is_public: Javno objavljivanje + field_parent: Potprojekat od + field_is_in_roadmap: Problemi prikazani u planu rada + field_login: Korisničko ime + field_mail_notification: Obaveštenja putem e-pošte + field_admin: Administrator + field_last_login_on: Poslednje povezivanje + field_language: Jezik + field_effective_date: Datum + field_password: Lozinka + field_new_password: Nova lozinka + field_password_confirmation: Potvrda lozinke + field_version: Verzija + field_type: Tip + field_host: Glavni računar + field_port: Port + field_account: Korisnički nalog + field_base_dn: Bazni DN + field_attr_login: Atribut prijavljivanja + field_attr_firstname: Atribut imena + field_attr_lastname: Atribut prezimena + field_attr_mail: Atribut e-adrese + field_onthefly: Kreiranje korisnika u toku rada + field_start_date: Početak + field_done_ratio: % urađeno + field_auth_source: Režim potvrde identiteta + field_hide_mail: Sakrij moju e-adresu + field_comments: Komentar + field_url: URL + field_start_page: Početna stranica + field_subproject: Potprojekat + field_hours: sati + field_activity: Aktivnost + field_spent_on: Datum + field_identifier: Identifikator + field_is_filter: Upotrebi kao filter + field_issue_to: Srodni problemi + field_delay: Kašnjenje + field_assignable: Problem može biti dodeljen ovoj ulozi + field_redirect_existing_links: Preusmeri postojeće veze + field_estimated_hours: Proteklo vreme + field_column_names: Kolone + field_time_zone: Vremenska zona + field_searchable: Može da se pretražuje + field_default_value: Podrazumevana vrednost + field_comments_sorting: Prikaži komentare + field_parent_title: Matična stranica + field_editable: Izmenljivo + field_watcher: Posmatrač + field_identity_url: OpenID URL + field_content: Sadržaj + field_group_by: Grupisanje rezultata po + field_sharing: Deljenje + field_parent_issue: Matični zadatak + + setting_app_title: Naslov aplikacije + setting_app_subtitle: Podnaslov aplikacije + setting_welcome_text: Tekst dobrodošlice + setting_default_language: Podrazumevani jezik + setting_login_required: Obavezna potvrda identiteta + setting_self_registration: Samoregistracija + setting_attachment_max_size: Maks. veličina priložene datoteke + setting_issues_export_limit: Ograničenje izvoza „problema“ + setting_mail_from: E-adresa pošiljaoca + setting_bcc_recipients: Primaoci „Bcc“ kopije + setting_plain_text_mail: Poruka sa čistim tekstom (bez HTML-a) + setting_host_name: Putanja i naziv glavnog računara + setting_text_formatting: Oblikovanje teksta + setting_wiki_compression: Kompresija Wiki istorije + setting_feeds_limit: Ograničenje sadržaja izvora vesti + setting_default_projects_public: Podrazumeva se javno prikazivanje novih projekata + setting_autofetch_changesets: Izvršavanje automatskog preuzimanja + setting_sys_api_enabled: Omogućavanje WS za upravljanje spremištem + setting_commit_ref_keywords: Referenciranje ključnih reči + setting_commit_fix_keywords: Popravljanje ključnih reči + setting_autologin: Automatska prijava + setting_date_format: Format datuma + setting_time_format: Format vremena + setting_cross_project_issue_relations: Dozvoli povezivanje problema iz unakrsnih projekata + setting_issue_list_default_columns: Podrazumevane kolone prikazane na spisku problema + setting_repositories_encodings: Kodiranje spremišta + setting_commit_logs_encoding: Kodiranje izvršnih poruka + setting_emails_footer: Podnožje stranice e-poruke + setting_protocol: Protokol + setting_per_page_options: Opcije prikaza objekata po stranici + setting_user_format: Format prikaza korisnika + setting_activity_days_default: Broj dana prikazanih na projektnoj aktivnosti + setting_display_subprojects_issues: Prikazuj probleme iz potprojekata na glavnom projektu, ukoliko nije drugačije navedeno + setting_enabled_scm: Omogućavanje SCM + setting_mail_handler_body_delimiters: "Skraćivanje e-poruke nakon jedne od ovih linija" + setting_mail_handler_api_enabled: Omogućavanje WS dolazne e-poruke + setting_mail_handler_api_key: API ključ + setting_sequential_project_identifiers: Generisanje sekvencijalnog imena projekta + setting_gravatar_enabled: Koristi Gravatar korisničke ikone + setting_gravatar_default: Podrazumevana Gravatar slika + setting_diff_max_lines_displayed: Maks. broj prikazanih različitih linija + setting_file_max_size_displayed: Maks. veličina tekst. datoteka prikazanih umetnuto + setting_repository_log_display_limit: Maks. broj revizija prikazanih u datoteci za evidenciju + setting_openid: Dozvoli OpenID prijavu i registraciju + setting_password_min_length: Minimalna dužina lozinke + setting_new_project_user_role_id: Kreatoru projekta (koji nije administrator) dodeljuje je uloga + setting_default_projects_modules: Podrazumevano omogućeni moduli za nove projekte + setting_issue_done_ratio: Izračunaj odnos rešenih problema + setting_issue_done_ratio_issue_field: koristeći polje problema + setting_issue_done_ratio_issue_status: koristeći status problema + setting_start_of_week: Prvi dan u sedmici + setting_rest_api_enabled: Omogući REST web usluge + setting_cache_formatted_text: Keširanje obrađenog teksta + + permission_add_project: Kreiranje projekta + permission_add_subprojects: Kreiranje potpojekta + permission_edit_project: Izmena projekata + permission_select_project_modules: Odabiranje modula projekta + permission_manage_members: Upravljanje članovima + permission_manage_project_activities: Upravljanje projektnim aktivnostima + permission_manage_versions: Upravljanje verzijama + permission_manage_categories: Upravljanje kategorijama problema + permission_view_issues: Pregled problema + permission_add_issues: Dodavanje problema + permission_edit_issues: Izmena problema + permission_manage_issue_relations: Upravljanje vezama između problema + permission_add_issue_notes: Dodavanje beleški + permission_edit_issue_notes: Izmena beleški + permission_edit_own_issue_notes: Izmena sopstvenih beleški + permission_move_issues: Pomeranje problema + permission_delete_issues: Brisanje problema + permission_manage_public_queries: Upravljanje javnim upitima + permission_save_queries: Snimanje upita + permission_view_gantt: Pregledanje Gantovog dijagrama + permission_view_calendar: Pregledanje kalendara + permission_view_issue_watchers: Pregledanje spiska posmatrača + permission_add_issue_watchers: Dodavanje posmatrača + permission_delete_issue_watchers: Brisanje posmatrača + permission_log_time: Beleženje utrošenog vremena + permission_view_time_entries: Pregledanje utrošenog vremena + permission_edit_time_entries: Izmena utrošenog vremena + permission_edit_own_time_entries: Izmena sopstvenog utrošenog vremena + permission_manage_news: Upravljanje vestima + permission_comment_news: Komentarisanje vesti + permission_manage_documents: Upravljanje dokumentima + permission_view_documents: Pregledanje dokumenata + permission_manage_files: Upravljanje datotekama + permission_view_files: Pregledanje datoteka + permission_manage_wiki: Upravljanje wiki stranicama + permission_rename_wiki_pages: Promena imena wiki stranicama + permission_delete_wiki_pages: Brisanje wiki stranica + permission_view_wiki_pages: Pregledanje wiki stranica + permission_view_wiki_edits: Pregledanje wiki istorije + permission_edit_wiki_pages: Izmena wiki stranica + permission_delete_wiki_pages_attachments: Brisanje priloženih datoteka + permission_protect_wiki_pages: Zaštita wiki stranica + permission_manage_repository: Upravljanje spremištem + permission_browse_repository: Pregledanje spremišta + permission_view_changesets: Pregledanje skupa promena + permission_commit_access: Potvrda pristupa + permission_manage_boards: Upravljanje forumima + permission_view_messages: Pregledanje poruka + permission_add_messages: Slanje poruka + permission_edit_messages: Izmena poruka + permission_edit_own_messages: Izmena sopstvenih poruka + permission_delete_messages: Brisanje poruka + permission_delete_own_messages: Brisanje sopstvenih poruka + permission_export_wiki_pages: Izvoz wiki stranica + permission_manage_subtasks: Upravljanje podzadacima + + project_module_issue_tracking: Praćenje problema + project_module_time_tracking: Praćenje vremena + project_module_news: Vesti + project_module_documents: Dokumenti + project_module_files: Datoteke + project_module_wiki: Wiki + project_module_repository: Spremište + project_module_boards: Forumi + + label_user: Korisnik + label_user_plural: Korisnici + label_user_new: Novi korisnik + label_user_anonymous: Anoniman + label_project: Projekat + label_project_new: Novi projekat + label_project_plural: Projekti + label_x_projects: + zero: nema projekata + one: jedan projekat + other: "{{count}} projekata" + label_project_all: Svi projekti + label_project_latest: Poslednji projekti + label_issue: Problem + label_issue_new: Novi problem + label_issue_plural: Problemi + label_issue_view_all: Prikaz svih problema + label_issues_by: "Problemi ({{value}})" + label_issue_added: Problem je dodat + label_issue_updated: Problem je ažuriran + label_document: Dokument + label_document_new: Novi dokument + label_document_plural: Dokumenti + label_document_added: Dokument je dodat + label_role: Uloga + label_role_plural: Uloge + label_role_new: Nova uloga + label_role_and_permissions: Uloge i dozvole + label_member: Član + label_member_new: Novi član + label_member_plural: Članovi + label_tracker: Praćenje + label_tracker_plural: Praćenja + label_tracker_new: Novo praćenje + label_workflow: Tok posla + label_issue_status: Status problema + label_issue_status_plural: Statusi problema + label_issue_status_new: Novi status + label_issue_category: Kategorija problema + label_issue_category_plural: Kategorije problema + label_issue_category_new: Nova kategorija + label_custom_field: Prilagođeno polje + label_custom_field_plural: Prilagođena polja + label_custom_field_new: Novo prilagođeno polje + label_enumerations: Nabrojiva lista + label_enumeration_new: Nova vrednost + label_information: Informacija + label_information_plural: Informacije + label_please_login: Molimo, prijavite se + label_register: Registracija + label_login_with_open_id_option: ili prijava sa OpenID + label_password_lost: Izgubljena lozinka + label_home: Početak + label_my_page: Moja stranica + label_my_account: Moj nalog + label_my_projects: Moji projekti + label_my_page_block: My page block + label_administration: Administracija + label_login: Prijava + label_logout: Odjava + label_help: Pomoć + label_reported_issues: Prijavljeni problemi + label_assigned_to_me_issues: Problemi dodeljeni meni + label_last_login: Poslednje povezivanje + label_registered_on: Registrovan + label_activity: Aktivnost + label_overall_activity: Celokupna aktivnost + label_user_activity: "Aktivnost korisnika {{value}}" + label_new: Novo + label_logged_as: Prijavljeni ste kao + label_environment: Okruženje + label_authentication: Potvrda identiteta + label_auth_source: Režim potvrde identiteta + label_auth_source_new: Novi režim potvrde identiteta + label_auth_source_plural: Režimi potvrde identiteta + label_subproject_plural: Potprojekti + label_subproject_new: Novi potprojekat + label_and_its_subprojects: "{{value}} i njegovi potprojekti" + label_min_max_length: Min. - Maks. dužina + label_list: Spisak + label_date: Datum + label_integer: Ceo broj + label_float: Sa pokretnim zarezom + label_boolean: Logički operator + label_string: Tekst + label_text: Dugi tekst + label_attribute: Osobina + label_attribute_plural: Osobine + label_download: "{{count}} preuzimanje" + label_download_plural: "{{count}} preuzimanja" + label_no_data: Nema podataka za prikazivanje + label_change_status: Promena statusa + label_history: Istorija + label_attachment: Datoteka + label_attachment_new: Nova datoteka + label_attachment_delete: Brisanje datoteke + label_attachment_plural: Datoteke + label_file_added: Datoteka je dodata + label_report: Izveštaj + label_report_plural: Izveštaji + label_news: Vesti + label_news_new: Dodavanje vesti + label_news_plural: Vesti + label_news_latest: Poslednje vesti + label_news_view_all: Prikaz svih vesti + label_news_added: Vesti su dodate + label_settings: Podešavanja + label_overview: Pregled + label_version: Verzija + label_version_new: Nova verzija + label_version_plural: Verzije + label_close_versions: Zatvori završene verzije + label_confirmation: Potvrda + label_export_to: 'Takođe dostupno i u varijanti:' + label_read: Čitanje... + label_public_projects: Javni projekti + label_open_issues: otvoren + label_open_issues_plural: otvorenih + label_closed_issues: zatvoren + label_closed_issues_plural: zatvorenih + label_x_open_issues_abbr_on_total: + zero: 0 otvorenih / {{total}} + one: 1 otvoren / {{total}} + other: "{{count}} otvorenih / {{total}}" + label_x_open_issues_abbr: + zero: 0 otvorenih + one: 1 otvoren + other: "{{count}} otvorenih" + label_x_closed_issues_abbr: + zero: 0 zatvorenih + one: 1 zatvoren + other: "{{count}} zatvorenih" + label_total: Ukupno + label_permissions: Dozvole + label_current_status: Trenutni status + label_new_statuses_allowed: Novi statusi dozvoljeni + label_all: svi + label_none: nijedan + label_nobody: nikome + label_next: Sledeće + label_previous: Prethodno + label_used_by: Koristio + label_details: Detalji + label_add_note: Dodaj belešku + label_per_page: Po strani + label_calendar: Kalendar + label_months_from: meseci od + label_gantt: Gantov dijagram + label_internal: Unutrašnji + label_last_changes: "poslednjih {{count}} promena" + label_change_view_all: Prikaži sve promene + label_personalize_page: Personalizuj ovu stranu + label_comment: Komentar + label_comment_plural: Komentari + label_x_comments: + zero: bez komentara + one: jedan komentar + other: "{{count}} komentara" + label_comment_add: Dodaj komentar + label_comment_added: Komentar dodat + label_comment_delete: Obriši komentare + label_query: Prilagođen upit + label_query_plural: Prilagođeni upiti + label_query_new: Novi upit + label_filter_add: Dodavanje filtera + label_filter_plural: Filteri + label_equals: je + label_not_equals: nije + label_in_less_than: manje od + label_in_more_than: više od + label_greater_or_equal: '>=' + label_less_or_equal: '<=' + label_in: u + label_today: danas + label_all_time: sve vreme + label_yesterday: juče + label_this_week: ove sedmice + label_last_week: poslednje sedmice + label_last_n_days: "poslednjih {{count}} dana" + label_this_month: ovog meseca + label_last_month: poslednjeg meseca + label_this_year: ove godine + label_date_range: Vremenski period + label_less_than_ago: pre manje od nekoliko dana + label_more_than_ago: pre više od nekoliko dana + label_ago: pre nekoliko dana + label_contains: sadrži + label_not_contains: ne sadrži + label_day_plural: dana + label_repository: Spremište + label_repository_plural: Spremišta + label_browse: Pregledanje + label_modification: "{{count}} promena" + label_modification_plural: "{{count}} promena" + label_branch: Grana + label_tag: Oznaka + label_revision: Revizija + label_revision_plural: Revizije + label_revision_id: "Revizija {{value}}" + label_associated_revisions: Pridružene revizije + label_added: dodato + label_modified: promenjeno + label_copied: kopirano + label_renamed: preimenovano + label_deleted: izbrisano + label_latest_revision: Poslednja revizija + label_latest_revision_plural: Poslednje revizije + label_view_revisions: Pregled revizija + label_view_all_revisions: Pregled svih revizija + label_max_size: Maksimalna veličina + label_sort_highest: Premeštanje na vrh + label_sort_higher: Premeštanje na gore + label_sort_lower: Premeštanje na dole + label_sort_lowest: Premeštanje na dno + label_roadmap: Plan rada + label_roadmap_due_in: "Dospeva {{value}}" + label_roadmap_overdue: "{{value}} najkasnije" + label_roadmap_no_issues: Nema problema za ovu verziju + label_search: Pretraga + label_result_plural: Rezultati + label_all_words: Sve reči + label_wiki: Wiki + label_wiki_edit: Wiki izmena + label_wiki_edit_plural: Wiki izmene + label_wiki_page: Wiki stranica + label_wiki_page_plural: Wiki stranice + label_index_by_title: Indeksiranje po naslovu + label_index_by_date: Indeksiranje po datumu + label_current_version: Trenutna verzija + label_preview: Pregled + label_feed_plural: Izvori vesti + label_changes_details: Detalji svih promena + label_issue_tracking: Praćenje problema + label_spent_time: Utrošeno vreme + label_overall_spent_time: Celokupno utrošeno vreme + label_f_hour: "{{value}} sat" + label_f_hour_plural: "{{value}} sati" + label_time_tracking: Praćenje vremena + label_change_plural: Promene + label_statistics: Statistika + label_commits_per_month: Izvršenja mesečno + label_commits_per_author: Izvršenja po autoru + label_view_diff: Pogledaj razlike + label_diff_inline: unutra + label_diff_side_by_side: uporedo + label_options: Opcije + label_copy_workflow_from: Kopiranje toka posla od + label_permissions_report: Izveštaj o dozvolama + label_watched_issues: Posmatrani problemi + label_related_issues: Srodni problemi + label_applied_status: Primenjeni statusi + label_loading: Učitavanje... + label_relation_new: Nova relacija + label_relation_delete: Brisanje relacije + label_relates_to: srodnih sa + label_duplicates: dupliranih + label_duplicated_by: dupliranih od + label_blocks: odbijenih + label_blocked_by: odbijenih od + label_precedes: prethodi + label_follows: praćenih + label_end_to_start: od kraja do početka + label_end_to_end: od kraja do kraja + label_start_to_start: od početka do početka + label_start_to_end: od početka do kraja + label_stay_logged_in: Ostanite prijavljeni + label_disabled: onemogućeno + label_show_completed_versions: Prikazivanje završene verzije + label_me: meni + label_board: Forum + label_board_new: Novi forum + label_board_plural: Forumi + label_board_locked: Zaključana + label_board_sticky: Lepljiva + label_topic_plural: Teme + label_message_plural: Poruke + label_message_last: Poslednja poruka + label_message_new: Nova poruka + label_message_posted: Poruka je dodata + label_reply_plural: Odgovori + label_send_information: Pošalji korisniku detalje naloga + label_year: Godina + label_month: Mesec + label_week: Sedmica + label_date_from: Šalje + label_date_to: Prima + label_language_based: Bazirano na jeziku korisnika + label_sort_by: "Sortirano po {{value}}" + label_send_test_email: Slanje probne e-poruke + label_feeds_access_key: RSS pristupni ključ + label_missing_feeds_access_key: RSS pristupni ključ nedostaje + label_feeds_access_key_created_on: "RSS pristupni ključ je napravljen pre {{value}}" + label_module_plural: Moduli + label_added_time_by: "Dodao {{author}} pre {{age}}" + label_updated_time_by: "Ažurirao {{author}} pre {{age}}" + label_updated_time: "Ažurirano pre {{value}}" + label_jump_to_a_project: Skok na projekat... + label_file_plural: Datoteke + label_changeset_plural: Skupovi promena + label_default_columns: Podrazumevane kolone + label_no_change_option: (Bez promena) + label_bulk_edit_selected_issues: Grupna izmena odabranih problema + label_theme: Tema + label_default: Podrazumevano + label_search_titles_only: Pretražuj samo naslove + label_user_mail_option_all: "Za bilo koji događaj na svim mojim projektima" + label_user_mail_option_selected: "Za bilo koji događaj na samo odabranim projektima..." + label_user_mail_option_none: "Samo za stvari koje pratim ili u koje sam uključen" + label_user_mail_no_self_notified: "Ne želim biti obaveštavan za promene koje sam pravim" + label_registration_activation_by_email: aktivacija naloga putem e-poruke + label_registration_manual_activation: ručna aktivacija naloga + label_registration_automatic_activation: automatska aktivacija naloga + label_display_per_page: "Broj stavki po stranici: {{value}}" + label_age: Starost + label_change_properties: Promeni svojstva + label_general: Opšti + label_more: Više + label_scm: SCM + label_plugins: Dodatne komponente + label_ldap_authentication: LDAP potvrda identiteta + label_downloads_abbr: D/L + label_optional_description: Opciono opis + label_add_another_file: Dodaj još jednu datoteku + label_preferences: Podešavanja + label_chronological_order: po hronološkom redosledu + label_reverse_chronological_order: po obrnutom hronološkom redosledu + label_planning: Planiranje + label_incoming_emails: Dolazne e-poruke + label_generate_key: Generisanje ključa + label_issue_watchers: Posmatrači + label_example: Primer + label_display: Prikaz + label_sort: Sortiranje + label_ascending: Rastući niz + label_descending: Opadajući niz + label_date_from_to: Od {{start}} do {{end}} + label_wiki_content_added: Wiki stranica je dodata + label_wiki_content_updated: Wiki stranica je ažurirana + label_group: Grupa + label_group_plural: Grupe + label_group_new: Nova grupa + label_time_entry_plural: Utrošeno vreme + label_version_sharing_none: Nije deljeno + label_version_sharing_descendants: Sa potprojektima + label_version_sharing_hierarchy: Sa hijerarhijom projekta + label_version_sharing_tree: Sa stablom projekta + label_version_sharing_system: Sa svim projektima + label_update_issue_done_ratios: Ažuriraj odnos rešenih problema + label_copy_source: Izvor + label_copy_target: Odredište + label_copy_same_as_target: Isto kao odredište + label_display_used_statuses_only: Prikazuj statuse korišćene samo od strane ovog praćenja + label_api_access_key: API pristupni ključ + label_missing_api_access_key: Nedostaje API pristupni ključ + label_api_access_key_created_on: "API pristupni ključ je kreiran pre {{value}}" + label_profile: Profil + label_subtask_plural: Podzadatak + label_project_copy_notifications: Pošalji e-poruku sa obaveštenjem prilikom kopiranja projekta + + button_login: Prijava + button_submit: Pošalji + button_save: Snimi + button_check_all: Uključi sve + button_uncheck_all: Isključi sve + button_delete: Izbriši + button_create: Kreiraj + button_create_and_continue: Kreiraj i nastavi + button_test: Test + button_edit: Izmeni + button_add: Dodaj + button_change: Promeni + button_apply: Primeni + button_clear: Obriši + button_lock: Zaključaj + button_unlock: Otključaj + button_download: Preuzmi + button_list: Spisak + button_view: Prikaži + button_move: Pomeri + button_move_and_follow: Pomeri i prati + button_back: Nazad + button_cancel: Poništi + button_activate: Aktiviraj + button_sort: Sortiraj + button_log_time: Evidentiraj vreme + button_rollback: Povratak na ovu verziju + button_watch: Prati + button_unwatch: Ne prati više + button_reply: Odgovori + button_archive: Arhiviraj + button_unarchive: Vrati iz arhive + button_reset: Poništi + button_rename: Preimenuj + button_change_password: Promeni lozinku + button_copy: Kopiraj + button_copy_and_follow: Kopiraj i prati + button_annotate: Pribeleži + button_update: Ažuriraj + button_configure: Podesi + button_quote: Pod navodnicima + button_duplicate: Dupliraj + button_show: Prikaži + + status_active: aktivni + status_registered: registrovani + status_locked: zaključani + + version_status_open: otvoren + version_status_locked: zaključan + version_status_closed: zatvoren + + field_active: Aktivan + + text_select_mail_notifications: Odaberi akcije za koje će obaveštenje biti poslato putem e-pošte. + text_regexp_info: npr. ^[A-Z0-9]+$ + text_min_max_length_info: 0 znači bez ograničenja + text_project_destroy_confirmation: Jeste li sigurni da želite da izbrišete ovaj projekat i sve pripadajuće podatke? + text_subprojects_destroy_warning: "Potprojekti: {{value}} će takođe biti izbrisan." + text_workflow_edit: Odaberite ulogu i praćenje za izmenu toka posla + text_are_you_sure: Jeste li sigurni? + text_journal_changed: "{{label}} promenjen od {{old}} u {{new}}" + text_journal_set_to: "{{label}} postavljen u {{value}}" + text_journal_deleted: "{{label}} izbrisano ({{old}})" + text_journal_added: "{{label}} {{value}} dodato" + text_tip_task_begin_day: zadatak počinje ovog dana + text_tip_task_end_day: zadatak se završava ovog dana + text_tip_task_begin_end_day: zadatak počinje i završava ovog dana + text_project_identifier_info: 'Dozvoljena su samo mala slova (a-š), brojevi i crtice.
    Jednom snimljen identifikator više se ne može promeniti.' + text_caracters_maximum: "Najviše {{count}} znak(ova)." + text_caracters_minimum: "Broj znakova mora biti najmanje {{count}}." + text_length_between: "Broj znakova mora biti između {{min}} i {{max}}." + text_tracker_no_workflow: Ovo praćenje nema definisan tok posla + text_unallowed_characters: Nedozvoljeni znakovi + text_comma_separated: Dozvoljene su višestruke vrednosti (odvojene zarezom). + text_line_separated: Dozvoljene su višestruke vrednosti (jedan red za svaku vrednost). + text_issues_ref_in_commit_messages: Referenciranje i popravljanje problema u izvršnim porukama + text_issue_added: "{{author}} je prijavio problem {{id}}." + text_issue_updated: "{{author}} je ažurirao problem {{id}}." + text_wiki_destroy_confirmation: Jeste li sigurni da želite da obrišete wiki i sav sadržaj? + text_issue_category_destroy_question: "Nekoliko problema ({{count}}) je dodeljeno ovoj kategoriji. Šta želite da uradite?" + text_issue_category_destroy_assignments: Ukloni dodeljene kategorije + text_issue_category_reassign_to: Dodeli ponovo probleme ovoj kategoriji + text_user_mail_option: "Za neizabrane projekte, dobićete samo obaveštenje o stvarima koje pratite ili ste uključeni (npr. problemi čiji ste vi autor ili zastupnik)." + text_no_configuration_data: "Uloge, praćenja, statusi problema i toka posla još uvek nisu podešeni.\nPreporučljivo je da učitate podrazumevano konfigurisanje. Izmena je moguća nakon prvog učitavanja." + text_load_default_configuration: Učitaj podrazumevano konfigurisanje + text_status_changed_by_changeset: "Primenjeno u skupu sa promenama {{value}}." + text_issues_destroy_confirmation: 'Jeste li sigurni da želite da izbrišete odabrane probleme?' + text_select_project_modules: 'Odaberite module koje želite omogućiti za ovaj projekat:' + text_default_administrator_account_changed: Podrazumevani administratorski nalog je promenjen + text_file_repository_writable: Fascikla priloženih datoteka je upisiva + text_plugin_assets_writable: Fascikla elemenata dodatnih komponenti je upisiva + text_rmagick_available: RMagick je dostupan (opciono) + text_destroy_time_entries_question: "{{hours}} sati je prijavljeno za ovaj problem koji želite izbrisati. Šta želite da uradite?" + text_destroy_time_entries: Izbriši prijavljene sate + text_assign_time_entries_to_project: Dodeli prijavljene sate projektu + text_reassign_time_entries: 'Dodeli ponovo prijavljene sate ovom problemu:' + text_user_wrote: "{{value}} je napisao:" + text_enumeration_destroy_question: "{{count}} objekat(a) je dodeljeno ovoj vrednosti." + text_enumeration_category_reassign_to: 'Dodeli ih ponovo ovoj vrednosti:' + text_email_delivery_not_configured: "Isporuka e-poruka nije konfigurisana i obaveštenja su onemogućena.\nPodesite vaš SMTP server u config/email.yml i pokrenite ponovo aplikaciju za njihovo omogućavanje." + text_repository_usernames_mapping: "Odaberite ili ažurirajte Redmine korisnike mapiranjem svakog korisničkog imena pronađenog u evidenciji spremišta.\nKorisnici sa istim Redmine imenom i imenom spremišta ili e-adresom su automatski mapirani." + text_diff_truncated: '... Ova razlika je isečena jer je dostignuta maksimalna veličina prikaza.' + text_custom_field_possible_values_info: 'Jedan red za svaku vrednost' + text_wiki_page_destroy_question: "Ova stranica ima {{descendants}} podređenih stranica i podstranica. Šta želite da uradite?" + text_wiki_page_nullify_children: "Zadrži podređene stranice kao korene stranice" + text_wiki_page_destroy_children: "Izbriši podređene stranice i sve njihove podstranice" + text_wiki_page_reassign_children: "Dodeli ponovo podređene stranice ovoj matičnoj stranici" + text_own_membership_delete_confirmation: "Nakon uklanjanja pojedinih ili svih vaših dozvola nećete više moći da uređujete ovaj projekat.\nŽelite li da nastavite?" + text_zoom_in: Uvećaj + text_zoom_out: Umanji + + default_role_manager: Menadžer + default_role_developer: Programer + default_role_reporter: Izveštač + default_tracker_bug: Greška + default_tracker_feature: Funkcionalnost + default_tracker_support: Podrška + default_issue_status_new: Novo + default_issue_status_in_progress: U toku + default_issue_status_resolved: Rešeno + default_issue_status_feedback: Povratna informacija + default_issue_status_closed: Zatvoreno + default_issue_status_rejected: Odbijeno + default_doc_category_user: Korisnička dokumentacija + default_doc_category_tech: Tehnička dokumentacija + default_priority_low: Nizak + default_priority_normal: Normalan + default_priority_high: Visok + default_priority_urgent: Hitno + default_priority_immediate: Neposredno + default_activity_design: Dizajn + default_activity_development: Razvoj + + enumeration_issue_priorities: Prioriteti problema + enumeration_doc_categories: Kategorije dokumenta + enumeration_activities: Aktivnosti (praćenje vremena) + enumeration_system_activity: Sistemska aktivnost + + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/sr.yml b/config/locales/sr.yml index f52d9e063..3641c7091 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -1,6 +1,7 @@ # Serbian translations for Redmine # by Vladimir Medarović (vlada@medarovic.com) sr: + direction: ltr date: formats: # Use the strftime parameters for formats. @@ -10,62 +11,66 @@ sr: short: "%e %b" long: "%B %e, %Y" - day_names: [Nedelja, Ponedeljak, Utorak, Sreda, Četvrtak, Petak, Subota] - abbr_day_names: [Ned, Pon, Uto, Sre, Čet, Pet, Sub] + day_names: [недеља, понедељак, уторак, среда, четвртак, петак, субота] + abbr_day_names: [нед, пон, уто, сре, чет, пет, суб] # Don't forget the nil at the beginning; there's no such thing as a 0th month - month_names: [~, Januar, Februar, Mart, April, Maj, Jun, Jul, Avgust, Septembar, Oktobar, Novembar, Decembar] - abbr_month_names: [~, Jan, Feb, Mar, Apr, Maj, Jun, Jul, Avg, Sep, Okt, Nov, Dec] + month_names: [~, јануар, фебруар, март, април, мај, јун, јул, август, септембар, октобар, новембар, децембар] + abbr_month_names: [~, јан, феб, мар, апр, мај, јун, јул, авг, сеп, окт, нов, дец] # Used in date_select and datime_select. order: [ :day, :month, :year ] time: formats: - default: "%d.%m.%Y. u %H:%M" + default: "%d.%m.%Y. у %H:%M" time: "%H:%M" - short: "%d. %b u %H:%M" - long: "%d. %B %Y u %H:%M" + short: "%d. %b у %H:%M" + long: "%d. %B %Y у %H:%M" am: "am" pm: "pm" datetime: distance_in_words: - half_a_minute: "pola minuta" + half_a_minute: "пола минута" less_than_x_seconds: - one: "manje od jedne sekunde" - other: "manje od {{count}} sek." + one: "мање од једне секунде" + other: "мање од {{count}} сек." x_seconds: - one: "jedna sekunda" - other: "{{count}} sek." + one: "једна секунда" + other: "{{count}} сек." less_than_x_minutes: - one: "manje od minuta" - other: "manje od {{count}} min." + one: "мање од минута" + other: "мање од {{count}} мин." x_minutes: - one: "jedan minut" - other: "{{count}} min." + one: "један минут" + other: "{{count}} мин." about_x_hours: - one: "približno jedan sat" - other: "približno {{count}} sati" + one: "приближно један сат" + other: "приближно {{count}} сати" x_days: - one: "jedan dan" - other: "{{count}} dana" + one: "један дан" + other: "{{count}} дана" about_x_months: - one: "približno jedan mesec" - other: "približno {{count}} meseci" + one: "приближно један месец" + other: "приближно {{count}} месеци" x_months: - one: "jedan mesec" - other: "{{count}} meseci" + one: "један месец" + other: "{{count}} месеци" about_x_years: - one: "približno godinu dana" - other: "približno {{count}} god." + one: "приближно годину дана" + other: "приближно {{count}} год." over_x_years: - one: "preko godinu dana" - other: "preko {{count}} god." + one: "преко годину дана" + other: "преко {{count}} год." almost_x_years: - one: "skoro godinu dana" - other: "skoro {{count}} god." + one: "скоро годину дана" + other: "скоро {{count}} год." number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: delimiter: "" @@ -85,823 +90,826 @@ sr: # Used in array.to_sentence. support: array: - sentence_connector: "i" + sentence_connector: "и" skip_last_comma: false activerecord: errors: messages: - inclusion: "nije uključen u spisak" - exclusion: "je rezervisan" - invalid: "je neispravan" - confirmation: "potvrda ne odgovara" - accepted: "mora biti prihvaćen" - empty: "ne može biti prazno" - blank: "ne može biti prazno" - too_long: "je predugačka (maksimum znakova je {{count}})" - too_short: "je prekratka (minimum znakova je {{count}})" - wrong_length: "je pogrešne dužine (broj znakova mora biti {{count}})" - taken: "je već u upotrebi" - not_a_number: "nije broj" - not_a_date: "nije ispravan datum" - greater_than: "mora biti veći od {{count}}" - greater_than_or_equal_to: "mora biti veći ili jednak {{count}}" - equal_to: "mora biti jednak {{count}}" - less_than: "mora biti manji od {{count}}" - less_than_or_equal_to: "mora biti manji ili jednak {{count}}" - odd: "mora biti paran" - even: "mora biti neparan" - greater_than_start_date: "mora biti veći od početnog datuma" - not_same_project: "ne pripada istom projektu" - circular_dependency: "Ova veza će stvoriti kružnu referencu" + inclusion: "није укључен у списак" + exclusion: "је резервисан" + invalid: "је неисправан" + confirmation: "потврда не одговара" + accepted: "мора бити прихваћен" + empty: "не може бити празно" + blank: "не може бити празно" + too_long: "је предугачка (максимум знакова је {{count}})" + too_short: "је прекратка (минимум знакова је {{count}})" + wrong_length: "је погрешне дужине (број знакова мора бити {{count}})" + taken: "је већ у употреби" + not_a_number: "није број" + not_a_date: "није исправан датум" + greater_than: "мора бити већи од {{count}}" + greater_than_or_equal_to: "мора бити већи или једнак {{count}}" + equal_to: "мора бити једнак {{count}}" + less_than: "мора бити мањи од {{count}}" + less_than_or_equal_to: "мора бити мањи или једнак {{count}}" + odd: "мора бити паран" + even: "мора бити непаран" + greater_than_start_date: "мора бити већи од почетног датума" + not_same_project: "не припада истом пројекту" + circular_dependency: "Ова веза ће створити кружну референцу" + cant_link_an_issue_with_a_descendant: "Проблем не може бити повезан са једним од својих подзадатака" - actionview_instancetag_blank_option: Molim odaberite + actionview_instancetag_blank_option: Молим одаберите - general_text_No: 'Ne' - general_text_Yes: 'Da' - general_text_no: 'ne' - general_text_yes: 'da' - general_lang_name: 'Srpski' + general_text_No: 'Не' + general_text_Yes: 'Да' + general_text_no: 'не' + general_text_yes: 'да' + general_lang_name: 'Српски' general_csv_separator: ',' general_csv_decimal_separator: '.' general_csv_encoding: UTF-8 general_pdf_encoding: UTF-8 general_first_day_of_week: '1' - notice_account_updated: Nalog je uspešno ažuriran. - notice_account_invalid_creditentials: Neispravno korisničko ime ili lozinka. - notice_account_password_updated: Lozinka je uspešno ažurirana. - notice_account_wrong_password: Pogrešna lozinka - notice_account_register_done: Korisnički nalog je uspešno kreiran. Kliknite na link koji ste dobili u email poruci za aktivaciju. - notice_account_unknown_email: Nepoznat korisnik. - notice_can_t_change_password: Ovaj korisnički nalog za proveru identiteta koristi spoljni izvor. Nemoguće je promeniti lozinku. - notice_account_lost_email_sent: Poslata vam je email poruka sa uputstvom za izbor nove lozinke - notice_account_activated: Vaš korisnički nalog je aktiviran. Sada se možete prijaviti. - notice_successful_create: Uspešno kreiranje. - notice_successful_update: Uspešno ažuriranje. - notice_successful_delete: Uspešno brisanje. - notice_successful_connection: Uspešno povezivanje. - notice_file_not_found: Strana kojoj želite pristupiti ne postoji ili je uklonjena. - notice_locking_conflict: Podatak je ažuriran od strane drugog korisnika. - notice_not_authorized: Niste ovlašćeni za pristup ovoj strani. - notice_email_sent: "Poruka je poslata na adresu {{value}}" - notice_email_error: "Dogodila se greška prilikom slanja poruke ({{value}})" - notice_feeds_access_key_reseted: Vaš RSS pristupni ključ je poništen. - notice_api_access_key_reseted: Vaš API pristupni ključ je poništen. - notice_failed_to_save_issues: "Neuspešno snimanje {{count}} problema od {{total}} odabranih: {{ids}}." - notice_no_issue_selected: "Ni jedan problem nije odabran! Molim, odaberite problem koji želite da menjate." - notice_account_pending: "Vaš nalog je kreiran i čeka na odobrenje administratora." - notice_default_data_loaded: Podrazumevano konfigurisanje je uspešno učitano. - notice_unable_delete_version: Nemoguće je obrisati verziju. - notice_issue_done_ratios_updated: Odnos rešenih problema je ažuriran. + 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: "E-порука је послата на {{value}}" + notice_email_error: "Догодила се грешка приликом слања е-поруке ({{value}})" + notice_feeds_access_key_reseted: Ваш RSS приступни кључ је поништен. + notice_api_access_key_reseted: Ваш API приступни кључ је поништен. + notice_failed_to_save_issues: "Неуспешно снимање {{count}} проблема од {{total}} одабраних: {{ids}}." + notice_failed_to_save_members: "Неуспешно снимање члана(ова): {{errors}}." + notice_no_issue_selected: "Ни један проблем није одабран! Молимо, одаберите проблем који желите да мењате." + notice_account_pending: "Ваш налог је креиран и чека на одобрење администратора." + notice_default_data_loaded: Подразумевано конфигурисање је успешно учитано. + notice_unable_delete_version: Верзију је немогуће избрисати. + notice_unable_delete_time_entry: Ставку евиденције времена је немогуће избрисати. + notice_issue_done_ratios_updated: Однос решених проблема је ажуриран. - error_can_t_load_default_data: "Podrazumevano konfigurisanje je nemoguće učitati: {{value}}" - error_scm_not_found: "Stavka ili ispravka nisu pronađene u spremištu." - error_scm_command_failed: "Greška se javila prilikom pokušaja pristupa spremištu: {{value}}" - error_scm_annotate: "Stavka ne postoji ili ne može biti označena." - error_issue_not_found_in_project: 'Problem nije pronađen ili ne pripada ovom projektu.' - error_no_tracker_in_project: 'Ni jedan tragač nije povezan sa ovim projektom. Molimo proverite podešavanja projekta.' - error_no_default_issue_status: 'Podrazumevani status problema nije definisan. Molimo proverite vaše konfigurisanje (Idite na "Administracija -> Statusi problema").' - error_can_not_reopen_issue_on_closed_version: 'Problem dodeljen zatvorenoj verziji ne može biti ponovo otvoren' - error_can_not_archive_project: Ovaj projekat se ne može arhivirati - error_issue_done_ratios_not_updated: "Odnos rešenih problema nije ažuriran." - error_workflow_copy_source: 'Molimo odaberite izvornog tragača ili ulogu' - error_workflow_copy_target: 'Molimo odaberite krajnjeg tragača i ulogu' + error_can_t_load_default_data: "Подразумевано конфигурисање је немогуће учитати: {{value}}" + error_scm_not_found: "Ставка или исправка нису пронађене у спремишту." + error_scm_command_failed: "Грешка се јавила приликом покушаја приступа спремишту: {{value}}" + error_scm_annotate: "Ставка не постоји или не може бити означена." + error_issue_not_found_in_project: 'Проблем није пронађен или не припада овом пројекту.' + error_no_tracker_in_project: 'Ни једно праћење није повезано са овим пројектом. Молимо проверите подешавања пројекта.' + error_no_default_issue_status: 'Подразумевани статус проблема није дефинисан. Молимо проверите ваше конфигурисање (идите на "Администрација -> Статуси проблема").' + error_can_not_delete_custom_field: Немогуће је избрисати прилагођено поље + error_can_not_delete_tracker: "Ово праћење садржи проблеме и не може бити обрисано." + error_can_not_remove_role: "Ова улога је у употреби и не може бити обрисана." + error_can_not_reopen_issue_on_closed_version: 'Проблем додељен затвореној верзији не може бити поново отворен' + error_can_not_archive_project: Овај пројекат се не може архивирати + error_issue_done_ratios_not_updated: "Однос решених проблема није ажуриран." + error_workflow_copy_source: 'Молимо одаберите изворно праћење или улогу' + error_workflow_copy_target: 'Молимо одаберите одредишно праћење и улогу' + error_unable_delete_issue_status: 'Статус проблема је немогуће обрисати' + error_unable_to_connect: "Повезивање са ({{value}}) је немогуће" + warning_attachments_not_saved: "{{count}} датотека не може бити снимљена." - warning_attachments_not_saved: "{{count}} datoteka ne može biti snimljeno." + mail_subject_lost_password: "Ваша {{value}} лозинка" + mail_body_lost_password: 'За промену ваше лозинке, кликните на следећи линк:' + mail_subject_register: "Активација вашег {{value}} налога" + mail_body_register: 'За активацију вашег налога, кликните на следећи линк:' + mail_body_account_information_external: "Ваш налог {{value}} можете користити за пријаву." + mail_body_account_information: Информације о вашем налогу + mail_subject_account_activation_request: "Захтев за активацију налога {{value}}" + mail_body_account_activation_request: "Нови корисник ({{value}}) је регистрован. Налог чека на ваше одобрење:" + mail_subject_reminder: "{{count}} проблема доспева наредних {{days}} дана" + mail_body_reminder: "{{count}} проблема додељених вама доспева у наредних {{days}} дана:" + mail_subject_wiki_content_added: "Wiki страница '{{page}}' је додата" + mail_body_wiki_content_added: "{{author}} је додао wiki страницу '{{page}}'." + mail_subject_wiki_content_updated: "Wiki страница '{{page}}' је ажурирана" + mail_body_wiki_content_updated: "{{author}} је ажурирао wiki страницу '{{page}}'." - mail_subject_lost_password: "Vaša {{value}} lozinka" - mail_body_lost_password: 'Za promenu vaše lozinke, kliknite na sledeći link:' - mail_subject_register: "Aktivacija vašeg {{value}} naloga" - mail_body_register: 'Za aktivaciju vašeg naloga, kliknite na sledeći link:' - mail_body_account_information_external: "Možete koristiti vaš nalog {{value}} za prijavu." - mail_body_account_information: Informacije o vašem nalogu - mail_subject_account_activation_request: "Zahtev za aktivaciju naloga {{value}}" - mail_body_account_activation_request: "Novi korisnik ({{value}}) je registrovan. Nalog čeka na vaše odobrenje:" - mail_subject_reminder: "{{count}} problema dospeva narednih {{days}} dana" - mail_body_reminder: "{{count}} problema dodeljenih vama dospeva u narednih {{days}} dana:" - mail_subject_wiki_content_added: "'{{page}}' wiki strana je dodato" - mail_body_wiki_content_added: "{{author}} je dodao '{{page}}' wiki strana." - mail_subject_wiki_content_updated: "'{{page}}' wiki strana je ažurirano" - mail_body_wiki_content_updated: "{{author}} je ažurirao '{{page}}' wiki strana." + gui_validation_error: једна грешка + gui_validation_error_plural: "{{count}} грешака" - gui_validation_error: jedna greška - gui_validation_error_plural: "{{count}} grešaka" - - field_name: Naziv - field_description: Opis - field_summary: Rezime - field_is_required: Obavezno - field_firstname: Ime - field_lastname: Prezime - field_mail: Email adresa - field_filename: Datoteka - field_filesize: Veličina - field_downloads: Preuzimanja - field_author: Autor - field_created_on: Kreirano - field_updated_on: Ažurirano - field_field_format: Format - field_is_for_all: Za sve projekte - field_possible_values: Moguće vrednosti - field_regexp: Regularan izraz - field_min_length: Minimalna dužina - field_max_length: Maksimalna dužina - field_value: Vrednost - field_category: Kategorija - field_title: Naslov - field_project: Projekat - field_issue: Problem - field_status: Status - field_notes: Beleške - field_is_closed: Zatvoren problem - field_is_default: Podrazumevana vrednost - field_tracker: Tragač - field_subject: Predmet - field_due_date: Krajnji rok - field_assigned_to: Dodeljeno - field_priority: Prioritet - field_fixed_version: Odredišna verzija - field_user: Korisnik - field_role: Uloga - field_homepage: Početna strana - field_is_public: Javno - field_parent: Potprojekat od - field_is_in_roadmap: Problemi prikazani u planu rada - field_login: Korisničko ime - field_mail_notification: Email obaveštenja - field_admin: Administrator - field_last_login_on: Poslednje povezivanje - field_language: Jezik - field_effective_date: Datum - field_password: Lozinka - field_new_password: Nova lozinka - field_password_confirmation: Potvrda lozinke - field_version: Verzija - field_type: Tip - field_host: Glavni računar - field_port: Priključak - field_account: Korisnički nalog - field_base_dn: Bazni DN - field_attr_login: Atribut prijavljivanja - field_attr_firstname: Atribut imena - field_attr_lastname: Atribut prezimena - field_attr_mail: Atribut email adrese - field_onthefly: Kreiranje korisnika u toku rada - field_start_date: Početak - field_done_ratio: % urađeno - field_auth_source: Režim provere identiteta - field_hide_mail: Sakrij moju email adresu - field_comments: Komentar + 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: Регуларан израз + 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_principal: Главни + field_role: Улога + field_homepage: Почетна страница + field_is_public: Јавно објављивање + field_parent: Потпројекат од + 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: Базни DN + field_attr_login: Атрибут пријављивања + field_attr_firstname: Атрибут имена + field_attr_lastname: Атрибут презимена + field_attr_mail: Атрибут е-адресе + field_onthefly: Креирање корисника у току рада + field_start_date: Почетак + field_done_ratio: % урађено + field_auth_source: Режим потврде идентитета + field_hide_mail: Сакриј моју е-адресу + field_comments: Коментар field_url: URL - field_start_page: Početna strana - field_subproject: Potprojekat - field_hours: sati - field_activity: Aktivnost - field_spent_on: Datum - field_identifier: Identifikator - field_is_filter: Upotrebi kao filter - field_issue_to: Povezani problemi - field_delay: Kašnjenje - field_assignable: Problem može biti dodeljen ovoj ulozi - field_redirect_existing_links: Preusmeri postojeće veze - field_estimated_hours: Proteklo vreme - field_column_names: Kolone - field_time_zone: Vremenska zona - field_searchable: Pretraživa - field_default_value: Podrazumevana vrednost - field_comments_sorting: Prikaži komentare - field_parent_title: Matična strana - field_editable: Izmeljivo - field_watcher: Posmatrač + field_start_page: Почетна страница + field_subproject: Потпројекат + field_hours: сати + field_activity: Активност + field_spent_on: Датум + field_identifier: Идентификатор + field_is_filter: Употреби као филтер + field_issue_to: Сродни проблеми + field_delay: Кашњење + field_assignable: Проблем може бити додељен овој улози + field_redirect_existing_links: Преусмери постојеће везе + field_estimated_hours: Протекло време + field_column_names: Колоне + field_time_zone: Временска зона + field_searchable: Може да се претражује + field_default_value: Подразумевана вредност + field_comments_sorting: Прикажи коментаре + field_parent_title: Матична страница + field_editable: Изменљиво + field_watcher: Посматрач field_identity_url: OpenID URL - field_content: Sadržaj - field_group_by: Grupiši rezultate po - field_sharing: Deljenje + field_content: Садржај + field_group_by: Груписање резултата по + field_sharing: Дељење + field_parent_issue: Матични задатак - setting_app_title: Naslov aplikacije - setting_app_subtitle: Podnaslov aplikacije - setting_welcome_text: Tekst dobrodošlice - setting_default_language: Podrazumevani jezik - setting_login_required: Obavezna provera identiteta - setting_self_registration: Samoregistracija - setting_attachment_max_size: Maks. veličina priložene datoteke - setting_issues_export_limit: Ograničenje izvoza problema - setting_mail_from: Email adresa emisije - setting_bcc_recipients: Primaoci nevidljive kopije poruke (bcc) - setting_plain_text_mail: Poruka sa čistim tekstom (bez HTML-a) - setting_host_name: Putanja i naziv glavnog računara - setting_text_formatting: Oblikovanje teksta - setting_wiki_compression: Kompresija Wiki istorije - setting_feeds_limit: Ograničenje sadržaja izvora vesti - setting_default_projects_public: Novi projekti su javni ako se drugačije ne navede - setting_autofetch_changesets: Izvršavanje automatskog preuzimanja - setting_sys_api_enabled: Omogući WS za upravljanje spremištem - setting_commit_ref_keywords: Referenciranje ključnih reči - setting_commit_fix_keywords: Popravljanje ključnih reči - setting_autologin: Automatska prijava - setting_date_format: Format datuma - setting_time_format: Format vremena - setting_cross_project_issue_relations: Dozvoli relacije problema iz unakrsnih projekata - setting_issue_list_default_columns: Podrazumevane kolone prikazane na spisku problema - setting_repositories_encodings: Kodiranje spremišta - setting_commit_logs_encoding: Kodiranje izvršnih poruka - setting_emails_footer: Podnožje email poruke - setting_protocol: Protokol - setting_per_page_options: Opcije prikaza objekata po strani - setting_user_format: Format prikaza korisnika - setting_activity_days_default: Broj dana prikazanih na projektnoj aktivnosti - setting_display_subprojects_issues: Prikazuj probleme iz potprojekata na glavnom projektu ukoliko nije drugačije navedeno - setting_enabled_scm: Omogući SCM - setting_mail_handler_body_delimiters: "Skrati poruku nakon jedne od ovih linija" - setting_mail_handler_api_enabled: Omogući WS dolazne poruke - setting_mail_handler_api_key: API ključ - setting_sequential_project_identifiers: Generisanje sekvencijalnog imena projekta - setting_gravatar_enabled: Koristi Gravatar korisničke ikone - setting_gravatar_default: Podrazumevana Gravatar slika - setting_diff_max_lines_displayed: Maks. broj prikazanih različitih linija - setting_file_max_size_displayed: Maks. veličina tekstualnih datoteka prikazanih unutra - setting_repository_log_display_limit: Maks. broj revizija prikazan u datoteci za evidenciju - setting_openid: Dozvoli OpenID prijavu i registraciju - setting_password_min_length: Minimalna dužina lozinke - setting_new_project_user_role_id: Uloga dodeljena korisniku (koji nije administrator), kreatoru projekta - setting_default_projects_modules: Podrazumevano omogućeni moduli za nove projekte - setting_issue_done_ratio: Izračunaj odnos rešenih problema - setting_issue_done_ratio_issue_field: koristeći polje problema - setting_issue_done_ratio_issue_status: koristeći status problema - setting_start_of_week: Prvi dan u sedmici - setting_rest_api_enabled: Omogući REST web usluge - setting_cache_formatted_text: Keširaj obrađen tekst + 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_plain_text_mail: Порука са чистим текстом (без HTML-а) + setting_host_name: Путања и назив главног рачунара + setting_text_formatting: Обликовање текста + setting_wiki_compression: Компресија Wiki историје + setting_feeds_limit: Ограничење садржаја извора вести + setting_default_projects_public: Подразумева се јавно приказивање нових пројеката + setting_autofetch_changesets: Извршавање аутоматског преузимања + setting_sys_api_enabled: Омогућавање WS за управљање спремиштем + setting_commit_ref_keywords: Референцирање кључних речи + setting_commit_fix_keywords: Поправљање кључних речи + setting_autologin: Аутоматска пријава + setting_date_format: Формат датума + setting_time_format: Формат времена + setting_cross_project_issue_relations: Дозволи повезивање проблема из унакрсних пројеката + setting_issue_list_default_columns: Подразумеване колоне приказане на списку проблема + setting_repositories_encodings: Кодирање спремишта + setting_commit_logs_encoding: Кодирање извршних порука + setting_emails_footer: Подножје странице е-поруке + setting_protocol: Протокол + setting_per_page_options: Опције приказа објеката по страници + setting_user_format: Формат приказа корисника + setting_activity_days_default: Број дана приказаних на пројектној активности + setting_display_subprojects_issues: Приказуј проблеме из потпројеката на главном пројекту, уколико није другачије наведено + setting_enabled_scm: Омогућавање SCM + setting_mail_handler_body_delimiters: "Скраћивање е-поруке након једне од ових линија" + setting_mail_handler_api_enabled: Омогућавање WS долазне е-поруке + setting_mail_handler_api_key: API кључ + setting_sequential_project_identifiers: Генерисање секвенцијалног имена пројекта + setting_gravatar_enabled: Користи Gravatar корисничке иконе + setting_gravatar_default: Подразумевана Gravatar слика + setting_diff_max_lines_displayed: Макс. број приказаних различитих линија + setting_file_max_size_displayed: Макс. величина текст. датотека приказаних уметнуто + setting_repository_log_display_limit: Макс. број ревизија приказаних у датотеци за евиденцију + setting_openid: Дозволи OpenID пријаву и регистрацију + setting_password_min_length: Минимална дужина лозинке + setting_new_project_user_role_id: Креатору пројекта (који није администратор) додељује је улога + setting_default_projects_modules: Подразумевано омогућени модули за нове пројекте + setting_issue_done_ratio: Израчунај однос решених проблема + setting_issue_done_ratio_issue_field: користећи поље проблема + setting_issue_done_ratio_issue_status: користећи статус проблема + setting_start_of_week: Први дан у седмици + setting_rest_api_enabled: Омогући REST web услуге + setting_cache_formatted_text: Кеширање обрађеног текста - permission_add_project: Kreiranje projekta - permission_add_subprojects: Kreiranje potpojekta - permission_edit_project: Izmena projekata - permission_select_project_modules: Odabiranje modula projekta - permission_manage_members: Upravljanje članovima - permission_manage_project_activities: Upravljanje projektnim aktivnostima - permission_manage_versions: Upravljanje verzijama - permission_manage_categories: Upravljanje kategorijama problema - permission_view_issues: Pregled problema - permission_add_issues: Dodavanje problema - permission_edit_issues: Izmena problema - permission_manage_issue_relations: Upravljanje relacijama između problema - permission_add_issue_notes: Dodavanje beleški - permission_edit_issue_notes: Izmena beleški - permission_edit_own_issue_notes: Izmena sopstvenih beleški - permission_move_issues: Pomeranje problema - permission_delete_issues: Brisanje problema - permission_manage_public_queries: Upravljanje javnim upitima - permission_save_queries: Snimanje upita - permission_view_gantt: Pregledanje Gantovog dijagrama - permission_view_calendar: Pregledanje kalendara - permission_view_issue_watchers: Pregledanje spiska posmatrača - permission_add_issue_watchers: Dodavanje posmatrača - permission_delete_issue_watchers: Brisanje posmatrača - permission_log_time: Beleženje utrošenog vremena - permission_view_time_entries: Pregledanje utrošenog vremena - permission_edit_time_entries: Izmena utrošenog vremena - permission_edit_own_time_entries: Izmena sopstvenog utrošenog vremena - permission_manage_news: Upravljanje vestima - permission_comment_news: Komentarisanje vesti - permission_manage_documents: Upravljanje dokumentima - permission_view_documents: Pregledanje dokumenata - permission_manage_files: Upravljanje datotekama - permission_view_files: Pregledanje datoteka - permission_manage_wiki: Upravljanje wiki stranama - permission_rename_wiki_pages: Promena imena wiki stranama - permission_delete_wiki_pages: Brisanje wiki strana - permission_view_wiki_pages: Pregledanje wiki strana - permission_view_wiki_edits: Pregledanje wiki istorije - permission_edit_wiki_pages: Izmena wiki strana - permission_delete_wiki_pages_attachments: Brisanje priloženih datoteka - permission_protect_wiki_pages: Zaštita wiki strana - permission_manage_repository: Upravljanje spremištem - permission_browse_repository: Pregledanje spremišta - permission_view_changesets: Pregledanje skupa promena - permission_commit_access: Potvrda pristupa - permission_manage_boards: Upravljanje forumima - permission_view_messages: Pregledanje poruka - permission_add_messages: Slanje poruka - permission_edit_messages: Izmena poruka - permission_edit_own_messages: Izmena sopstvenih poruka - permission_delete_messages: Brisanje poruka - permission_delete_own_messages: Brisanje sopstvenih poruka - permission_export_wiki_pages: Izvoz wiki strana + permission_add_project: Креирање пројекта + permission_add_subprojects: Креирање потпојекта + permission_edit_project: Измена пројеката + permission_select_project_modules: Одабирање модула пројекта + permission_manage_members: Управљање члановима + permission_manage_project_activities: Управљање пројектним активностима + permission_manage_versions: Управљање верзијама + permission_manage_categories: Управљање категоријама проблема + permission_view_issues: Преглед проблема + permission_add_issues: Додавање проблема + permission_edit_issues: Измена проблема + permission_manage_issue_relations: Управљање везама између проблема + permission_add_issue_notes: Додавање белешки + permission_edit_issue_notes: Измена белешки + permission_edit_own_issue_notes: Измена сопствених белешки + permission_move_issues: Померање проблема + permission_delete_issues: Брисање проблема + permission_manage_public_queries: Управљање јавним упитима + permission_save_queries: Снимање упита + permission_view_gantt: Прегледање Гантовог дијаграма + permission_view_calendar: Прегледање календара + permission_view_issue_watchers: Прегледање списка посматрача + permission_add_issue_watchers: Додавање посматрача + permission_delete_issue_watchers: Брисање посматрача + permission_log_time: Бележење утрошеног времена + permission_view_time_entries: Прегледање утрошеног времена + permission_edit_time_entries: Измена утрошеног времена + permission_edit_own_time_entries: Измена сопственог утрошеног времена + permission_manage_news: Управљање вестима + permission_comment_news: Коментарисање вести + permission_manage_documents: Управљање документима + permission_view_documents: Прегледање докумената + permission_manage_files: Управљање датотекама + permission_view_files: Прегледање датотека + permission_manage_wiki: Управљање wiki страницама + permission_rename_wiki_pages: Промена имена wiki страницама + permission_delete_wiki_pages: Брисање wiki страница + permission_view_wiki_pages: Прегледање wiki страница + permission_view_wiki_edits: Прегледање wiki историје + permission_edit_wiki_pages: Измена wiki страница + permission_delete_wiki_pages_attachments: Брисање приложених датотека + permission_protect_wiki_pages: Заштита wiki страница + permission_manage_repository: Управљање спремиштем + permission_browse_repository: Прегледање спремишта + permission_view_changesets: Прегледање скупа промена + permission_commit_access: Потврда приступа + permission_manage_boards: Управљање форумима + permission_view_messages: Прегледање порука + permission_add_messages: Слање порука + permission_edit_messages: Измена порука + permission_edit_own_messages: Измена сопствених порука + permission_delete_messages: Брисање порука + permission_delete_own_messages: Брисање сопствених порука + permission_export_wiki_pages: Извоз wiki страница + permission_manage_subtasks: Управљање подзадацима - project_module_issue_tracking: Traganje za problemom - project_module_time_tracking: Vreme traganja - project_module_news: Vesti - project_module_documents: Dokumenta - project_module_files: Datoteke + project_module_issue_tracking: Праћење проблема + project_module_time_tracking: Праћење времена + project_module_news: Вести + project_module_documents: Документи + project_module_files: Датотеке project_module_wiki: Wiki - project_module_repository: Spremište - project_module_boards: Forumi + project_module_repository: Спремиште + project_module_boards: Форуми - label_user: Korisnik - label_user_plural: Korisnici - label_user_new: Novi korisnik - label_user_anonymous: Anoniman - label_project: Projekat - label_project_new: Novi projekat - label_project_plural: Projekti + label_user: Корисник + label_user_plural: Корисници + label_user_new: Нови корисник + label_user_anonymous: Анониман + label_project: Пројекат + label_project_new: Нови пројекат + label_project_plural: Пројекти label_x_projects: - zero: nema projekata - one: jedan projekat - other: "{{count}} projekata" - label_project_all: Svi projekti - label_project_latest: Poslednji projekti - label_issue: Problem - label_issue_new: Novi problem - label_issue_plural: Problemi - label_issue_view_all: Prikaz svih problema - label_issues_by: "Problemi - {{value}}" - label_issue_added: Problem je dodat - label_issue_updated: Problem je ažuriran - label_document: Dokument - label_document_new: Novi dokument - label_document_plural: Dokumenti - label_document_added: Dokument je dodat - label_role: Uloga - label_role_plural: Uloge - label_role_new: Nova uloga - label_role_and_permissions: Uloge i dozvole - label_member: Član - label_member_new: Novi član - label_member_plural: Članovi - label_tracker: Tragač - label_tracker_plural: Tragači - label_tracker_new: Novi tragač - label_workflow: Tok rada - label_issue_status: Status problema - label_issue_status_plural: Statusi problema - label_issue_status_new: Novi status - label_issue_category: Kategorija problema - label_issue_category_plural: Kategorije problema - label_issue_category_new: Nova kategorija - label_custom_field: Prilagođeno polje - label_custom_field_plural: Prilagođena polja - label_custom_field_new: Novo prilagođeno polje - label_enumerations: Nabrojiva lista - label_enumeration_new: Nova vrednost - label_information: Informacija - label_information_plural: Informacije - label_please_login: Molimo, prijavite se - label_register: Registracija - label_login_with_open_id_option: ili prijava sa OpenID - label_password_lost: Izgubljena lozinka - label_home: Početak - label_my_page: Moja strana - label_my_account: Moj nalog - label_my_projects: Moji projekti - label_administration: Administracija - label_login: Prijava - label_logout: Odjava - label_help: Pomoć - label_reported_issues: Prijavljeni problemi - label_assigned_to_me_issues: Problemi dodoljeni meni - label_last_login: Poslednje povezivanje - label_registered_on: Registrovan - label_activity: Aktivnost - label_overall_activity: Obuhvatna aktivnost - label_user_activity: "Aktivnost korisnika {{value}}" - label_new: Novo - label_logged_as: Prijavljeni ste kao - label_environment: Okruženje - label_authentication: Provera identiteta - label_auth_source: Režim provere identiteta - label_auth_source_new: Novi režim provere identiteta - label_auth_source_plural: Režimi provere identiteta - label_subproject_plural: Potprojekti - label_subproject_new: Novi potprojekat - label_and_its_subprojects: "{{value}} i njegovi potprojekti" - label_min_max_length: Min. - Maks. dužina - label_list: Spisak - label_date: Datum - label_integer: Ceo broj - label_float: Sa pokretnim zarezom - label_boolean: Logički operator - label_string: Tekst - label_text: Dugi tekst - label_attribute: Osobina - label_attribute_plural: Osobine - label_download: "{{count}} preuzimanje" - label_download_plural: "{{count}} preuzimanja" - label_no_data: Nema podataka za prikazivanje - label_change_status: Promena statusa - label_history: Istorija - label_attachment: Datoteka - label_attachment_new: Nova datoteka - label_attachment_delete: Brisanje datoteke - label_attachment_plural: Datoteke - label_file_added: Datoteka dodata - label_report: Izveštaj - label_report_plural: Izveštaji - label_news: Vesti - label_news_new: Dodavanje vesti - label_news_plural: Vesti - label_news_latest: Poslednje vesti - label_news_view_all: Prikaz svih vesti - label_news_added: Vesti dodato - label_settings: Podešavanja - label_overview: Pregled - label_version: Verzija - label_version_new: Nova verzija - label_version_plural: Verzije - label_close_versions: Zatvori završene verzije - label_confirmation: Potvrda - label_export_to: 'Takođe dostupno i u varijanti:' - label_read: Čitanje... - label_public_projects: Javni projekti - label_open_issues: otvoren - label_open_issues_plural: otvorenih - label_closed_issues: zatvoren - label_closed_issues_plural: zatvorenih + zero: нема пројеката + one: један пројекат + other: "{{count}} пројеката" + label_project_all: Сви пројекти + label_project_latest: Последњи пројекти + label_issue: Проблем + label_issue_new: Нови проблем + label_issue_plural: Проблеми + label_issue_view_all: Приказ свих проблема + label_issues_by: "Проблеми ({{value}})" + label_issue_added: Проблем је додат + label_issue_updated: Проблем је ажуриран + label_document: Документ + label_document_new: Нови документ + label_document_plural: Документи + label_document_added: Документ је додат + label_role: Улога + label_role_plural: Улоге + label_role_new: Нова улога + label_role_and_permissions: Улоге и дозволе + label_member: Члан + label_member_new: Нови члан + label_member_plural: Чланови + label_tracker: Праћење + 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_login_with_open_id_option: или пријава са OpenID + label_password_lost: Изгубљена лозинка + label_home: Почетак + label_my_page: Моја страница + label_my_account: Мој налог + label_my_projects: Моји пројекти + label_my_page_block: My page block + label_administration: Администрација + label_login: Пријава + label_logout: Одјава + label_help: Помоћ + label_reported_issues: Пријављени проблеми + label_assigned_to_me_issues: Проблеми додељени мени + label_last_login: Последње повезивање + label_registered_on: Регистрован + label_activity: Активност + label_overall_activity: Целокупна активност + label_user_activity: "Активност корисника {{value}}" + label_new: Ново + label_logged_as: Пријављени сте као + label_environment: Окружење + label_authentication: Потврда идентитета + label_auth_source: Режим потврде идентитета + label_auth_source_new: Нови режим потврде идентитета + label_auth_source_plural: Режими потврде идентитета + label_subproject_plural: Потпројекти + label_subproject_new: Нови потпројекат + label_and_its_subprojects: "{{value}} и његови потпројекти" + label_min_max_length: Мин. - Макс. дужина + label_list: Списак + label_date: Датум + label_integer: Цео број + label_float: Са покретним зарезом + label_boolean: Логички оператор + label_string: Текст + label_text: Дуги текст + label_attribute: Особина + label_attribute_plural: Особине + label_download: "{{count}} преузимање" + label_download_plural: "{{count}} преузимања" + label_no_data: Нема података за приказивање + label_change_status: Промена статуса + label_history: Историја + label_attachment: Датотека + label_attachment_new: Нова датотека + label_attachment_delete: Брисање датотеке + label_attachment_plural: Датотеке + label_file_added: Датотека је додата + label_report: Извештај + label_report_plural: Извештаји + label_news: Вести + label_news_new: Додавање вести + label_news_plural: Вести + label_news_latest: Последње вести + label_news_view_all: Приказ свих вести + label_news_added: Вести су додате + label_settings: Подешавања + label_overview: Преглед + label_version: Верзија + label_version_new: Нова верзија + label_version_plural: Верзије + label_close_versions: Затвори завршене верзије + label_confirmation: Потврда + label_export_to: 'Такође доступно и у варијанти:' + label_read: Читање... + label_public_projects: Јавни пројекти + label_open_issues: отворен + label_open_issues_plural: отворених + label_closed_issues: затворен + label_closed_issues_plural: затворених label_x_open_issues_abbr_on_total: - zero: 0 otvorenih / {{total}} - one: 1 otvoren / {{total}} - other: "{{count}} otvorenih / {{total}}" + zero: 0 отворених / {{total}} + one: 1 отворен / {{total}} + other: "{{count}} отворених / {{total}}" label_x_open_issues_abbr: - zero: 0 otvorenih - one: 1 otvoren - other: "{{count}} otvorenih" + zero: 0 отворених + one: 1 отворен + other: "{{count}} отворених" label_x_closed_issues_abbr: - zero: 0 zatvorenih - one: 1 zatvoren - other: "{{count}} zatvorenih" - label_total: Ukupno - label_permissions: Ovlašćenja - label_current_status: Trenutni status - label_new_statuses_allowed: Novi statusi dozvoljeni - label_all: svi - label_none: nijedan - label_nobody: nikome - label_next: Sledeće - label_previous: Prethodno - label_used_by: Koristio - label_details: Detalji - label_add_note: Dodaj belešku - label_per_page: Po strani - label_calendar: Kalendar - label_months_from: meseci od - label_gantt: Gantov dijagram - label_internal: Unutrašlji - label_last_changes: "poslednjih {{count}} promena" - label_change_view_all: Prikaži sve promene - label_personalize_page: Personalizujte ovu stranu - label_comment: Komentar - label_comment_plural: Komentari + zero: 0 затворених + one: 1 затворен + other: "{{count}} затворених" + label_total: Укупно + label_permissions: Дозволе + label_current_status: Тренутни статус + label_new_statuses_allowed: Нови статуси дозвољени + label_all: сви + label_none: ниједан + label_nobody: никоме + label_next: Следеће + label_previous: Претходно + label_used_by: Користио + label_details: Детаљи + label_add_note: Додај белешку + label_per_page: По страни + label_calendar: Календар + label_months_from: месеци од + label_gantt: Гантов дијаграм + label_internal: Унутрашњи + label_last_changes: "последњих {{count}} промена" + label_change_view_all: Прикажи све промене + label_personalize_page: Персонализуј ову страну + label_comment: Коментар + label_comment_plural: Коментари label_x_comments: - zero: bez komentara - one: jedan komentar - other: "{{count}} komentara" - label_comment_add: Dodaj komentar - label_comment_added: Komentar dodat - label_comment_delete: Obriši komentare - label_query: Prilagođen upit - label_query_plural: Prilagođeni upiti - label_query_new: Novi upit - label_filter_add: Dodaj filter - label_filter_plural: Filteri - label_equals: je - label_not_equals: nije - label_in_less_than: manje od - label_in_more_than: više od + zero: без коментара + one: један коментар + other: "{{count}} коментара" + 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_greater_or_equal: '>=' label_less_or_equal: '<=' - label_in: u - label_today: danas - label_all_time: sve vreme - label_yesterday: juče - label_this_week: ove sedmice - label_last_week: poslednje sedmice - label_last_n_days: "poslednjih {{count}} dana" - label_this_month: ovog meseca - label_last_month: poslednjeg meseca - label_this_year: ove godine - label_date_range: Vremenski period - label_less_than_ago: pre manje od nekoliko dana - label_more_than_ago: pre više od nekoliko dana - label_ago: pre nekoliko dana - label_contains: sadrži - label_not_contains: ne sadrži - label_day_plural: dana - label_repository: Spremište - label_repository_plural: Spremišta - label_browse: Pregledanje - label_modification: "{{count}} promena" - label_modification_plural: "{{count}} promena" - label_branch: Grana - label_tag: Oznaka - label_revision: Revizija - label_revision_plural: Revizije - label_revision_id: "Revizija {{value}}" - label_associated_revisions: Pridružene revizije - label_added: dodato - label_modified: promenjeno - label_copied: kopirano - label_renamed: preimenovano - label_deleted: obrisano - label_latest_revision: Poslednja revizija - label_latest_revision_plural: Poslednje revizije - label_view_revisions: Pregled revizija - label_view_all_revisions: Pregled svih revizija - label_max_size: Maksimalna veličina - label_sort_highest: Premesti na vrh - label_sort_higher: Premesti na gore - label_sort_lower: Premesti na dole - label_sort_lowest: Premesti na dno - label_roadmap: Plan rada - label_roadmap_due_in: "Dospeva {{value}}" - label_roadmap_overdue: "{{value}} najkasnije" - label_roadmap_no_issues: Nema problema za ovu verziju - label_search: Pretraga - label_result_plural: Rezultati - label_all_words: Sve reči + label_in: у + label_today: данас + label_all_time: све време + label_yesterday: јуче + label_this_week: ове седмице + label_last_week: последње седмице + label_last_n_days: "последњих {{count}} дана" + label_this_month: овог месеца + label_last_month: последњег месеца + label_this_year: ове године + label_date_range: Временски период + label_less_than_ago: пре мање од неколико дана + label_more_than_ago: пре више од неколико дана + label_ago: пре неколико дана + label_contains: садржи + label_not_contains: не садржи + label_day_plural: дана + label_repository: Спремиште + label_repository_plural: Спремишта + label_browse: Прегледање + label_modification: "{{count}} промена" + label_modification_plural: "{{count}} промена" + label_branch: Грана + label_tag: Ознака + label_revision: Ревизија + label_revision_plural: Ревизије + label_revision_id: "Ревизија {{value}}" + label_associated_revisions: Придружене ревизије + label_added: додато + label_modified: промењено + label_copied: копирано + label_renamed: преименовано + label_deleted: избрисано + label_latest_revision: Последња ревизија + label_latest_revision_plural: Последње ревизије + label_view_revisions: Преглед ревизија + label_view_all_revisions: Преглед свих ревизија + label_max_size: Максимална величина + label_sort_highest: Премештање на врх + label_sort_higher: Премештање на горе + label_sort_lower: Премештање на доле + label_sort_lowest: Премештање на дно + label_roadmap: План рада + label_roadmap_due_in: "Доспева {{value}}" + label_roadmap_overdue: "{{value}} најкасније" + label_roadmap_no_issues: Нема проблема за ову верзију + label_search: Претрага + label_result_plural: Резултати + label_all_words: Све речи label_wiki: Wiki - label_wiki_edit: Wiki izmena - label_wiki_edit_plural: Wiki izmene - label_wiki_page: Wiki strana - label_wiki_page_plural: Wiki strane - label_index_by_title: Indeksiranje po naslovu - label_index_by_date: Indeksiranje po datumu - label_current_version: Trenutna verzija - label_preview: Pregled - label_feed_plural: Izvori vesti - label_changes_details: Detalji svih promena - label_issue_tracking: Praćenje problema - label_spent_time: Utrošeno vreme - label_f_hour: "{{value}} sat" - label_f_hour_plural: "{{value}} sati" - label_time_tracking: Vreme praćenja - label_change_plural: Promene - label_statistics: Statistika - label_commits_per_month: Potvrda mesečno - label_commits_per_author: Potvrda po autoru - label_view_diff: Pogledaj razlike - label_diff_inline: unutra - label_diff_side_by_side: uporedo - label_options: Opcije - label_copy_workflow_from: Kopiraj tok rada od - label_permissions_report: Izveštaj o ovlašćenjima - label_watched_issues: Posmatrani problemi - label_related_issues: Povezani problemi - label_applied_status: Primenjeni statusi - label_loading: Učitavanje... - label_relation_new: Nova relacija - label_relation_delete: Obriši relaciju - label_relates_to: povezanih sa - label_duplicates: dupliranih - label_duplicated_by: dupliranih od - label_blocks: odbijenih - label_blocked_by: odbijenih od - label_precedes: prethodi - label_follows: praćenih - label_end_to_start: od kraja do početka - label_end_to_end: od kraja do kraja - label_start_to_start: od početka do početka - label_start_to_end: od početka do kraja - label_stay_logged_in: Ostani prijavljen - label_disabled: onemogućeno - label_show_completed_versions: Prikaži završene verzije - label_me: meni - label_board: Forum - label_board_new: Novi forum - label_board_plural: Forumi - label_board_locked: Zaključana - label_board_sticky: Lepljiva - label_topic_plural: Teme - label_message_plural: Poruke - label_message_last: Poslednja poruka - label_message_new: Nova poruka - label_message_posted: Poruka je dodata - label_reply_plural: Odgovori - label_send_information: Pošalji detalje naloga korisniku - label_year: Godina - label_month: Mesec - label_week: Sedmica - label_date_from: Šalje - label_date_to: Prima - label_language_based: Bazirano na jeziku korisnika - label_sort_by: "Poređano po {{value}}" - label_send_test_email: Pošalji probnu poruku - label_feeds_access_key: RSS pristupni ključ - label_missing_feeds_access_key: RSS pristupni ključ nedostaje - label_feeds_access_key_created_on: "RSS pristupni ključ je napravljen pre {{value}}" - label_module_plural: Moduli - label_added_time_by: "Dodao {{author}} pre {{age}}" - label_updated_time_by: "Ažurirao {{author}} pre {{age}}" - label_updated_time: "Ažurirano pre {{value}}" - label_jump_to_a_project: Skok na projekat... - label_file_plural: Datoteke - label_changeset_plural: Skupovi promena - label_default_columns: Podrazumevane kolone - label_no_change_option: (Bez promena) - label_bulk_edit_selected_issues: Grupna izmena odabranih problema - label_theme: Tema - label_default: Podrazumevano - label_search_titles_only: Pretražuj samo naslove - label_user_mail_option_all: "Za bilo koji događaj na svim mojim projektima" - label_user_mail_option_selected: "Za bilo koji događaj na samo odabranim projektima..." - label_user_mail_option_none: "Samo za stvari koje pratim ili sam uključen" - label_user_mail_no_self_notified: "Ne želim biti obaveštavan za promene koje sam pravim" - label_registration_activation_by_email: aktivacija naloga putem email-a - label_registration_manual_activation: ručna aktivacija naloga - label_registration_automatic_activation: automatska aktivacija naloga - label_display_per_page: "Broj stavki po strani: {{value}}" - label_age: Starost - label_change_properties: Promeni svojstva - label_general: Opšti - label_more: Više + 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: Извори вести + label_changes_details: Детаљи свих промена + label_issue_tracking: Праћење проблема + label_spent_time: Утрошено време + label_overall_spent_time: Целокупно утрошено време + label_f_hour: "{{value}} сат" + label_f_hour_plural: "{{value}} сати" + label_time_tracking: Праћење времена + label_change_plural: Промене + label_statistics: Статистика + label_commits_per_month: Извршења месечно + label_commits_per_author: Извршења по аутору + label_view_diff: Погледај разлике + label_diff_inline: унутра + label_diff_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_duplicated_by: дуплираних од + 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_board_locked: Закључана + label_board_sticky: Лепљива + label_topic_plural: Теме + label_message_plural: Поруке + label_message_last: Последња порука + label_message_new: Нова порука + label_message_posted: Порука је додата + label_reply_plural: Одговори + label_send_information: Пошаљи кориснику детаље налога + label_year: Година + label_month: Месец + label_week: Седмица + label_date_from: Шаље + label_date_to: Прима + label_language_based: Базирано на језику корисника + label_sort_by: "Сортирано по {{value}}" + label_send_test_email: Слање пробне е-поруке + label_feeds_access_key: RSS приступни кључ + label_missing_feeds_access_key: RSS приступни кључ недостаје + label_feeds_access_key_created_on: "RSS приступни кључ је направљен пре {{value}}" + label_module_plural: Модули + label_added_time_by: "Додао {{author}} пре {{age}}" + label_updated_time_by: "Ажурирао {{author}} пре {{age}}" + label_updated_time: "Ажурирано пре {{value}}" + label_jump_to_a_project: Скок на пројекат... + label_file_plural: Датотеке + label_changeset_plural: Скупови промена + 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: "Број ставки по страници: {{value}}" + label_age: Старост + label_change_properties: Промени својства + label_general: Општи + label_more: Више label_scm: SCM - label_plugins: Dodaci - label_ldap_authentication: LDAP provera identiteta + label_plugins: Додатне компоненте + label_ldap_authentication: LDAP потврда идентитета label_downloads_abbr: D/L - label_optional_description: Opciono opis - label_add_another_file: Dodaj još jednu datoteku - label_preferences: Podešavanja - label_chronological_order: po hronološkom redosledu - label_reverse_chronological_order: po obrnutom hronološkom redosledu - label_planning: Planiranje - label_incoming_emails: Dolazne poruke - label_generate_key: Generiši ključ - label_issue_watchers: Posmatrači - label_example: Primer - label_display: Prikaz - label_sort: Redosled - label_ascending: Rastući niz - label_descending: Opadajući niz - label_date_from_to: Od {{start}} do {{end}} - label_wiki_content_added: Wiki strana je dodata - label_wiki_content_updated: Wiki strana je ažurirana - label_group: Grupa - label_group_plural: Grupe - label_group_new: Nova grupa - label_time_entry_plural: Provedeno vreme - label_version_sharing_none: Nije deljeno - label_version_sharing_descendants: Sa potprojektima - label_version_sharing_hierarchy: Sa hijerarhijom projekta - label_version_sharing_tree: Sa stablom projekta - label_version_sharing_system: Sa svim projektima - label_update_issue_done_ratios: Ažuriraj odnos rešenih problema - label_copy_source: Izvor - label_copy_target: Odredište - label_copy_same_as_target: Isto kao odredište - label_display_used_statuses_only: Prikazuj statuse korišćene samo od strane ovog tragača - label_api_access_key: API pristupni ključ - label_missing_api_access_key: API pristupni ključ nedostaje - label_api_access_key_created_on: "API pristupni ključ je kreiran pre {{value}}" - label_project_copy_notifications: Pošalji email poruku sa obaveštenjem prilikom kopiranja projekta + label_optional_description: Опционо опис + label_add_another_file: Додај још једну датотеку + label_preferences: Подешавања + label_chronological_order: по хронолошком редоследу + label_reverse_chronological_order: по обрнутом хронолошком редоследу + label_planning: Планирање + label_incoming_emails: Долазне е-поруке + label_generate_key: Генерисање кључа + label_issue_watchers: Посматрачи + label_example: Пример + label_display: Приказ + label_sort: Сортирање + label_ascending: Растући низ + label_descending: Опадајући низ + label_date_from_to: Од {{start}} до {{end}} + label_wiki_content_added: Wiki страница је додата + label_wiki_content_updated: Wiki страница је ажурирана + label_group: Група + label_group_plural: Групе + label_group_new: Нова група + label_time_entry_plural: Утрошено време + label_version_sharing_none: Није дељено + label_version_sharing_descendants: Са потпројектима + label_version_sharing_hierarchy: Са хијерархијом пројекта + label_version_sharing_tree: Са стаблом пројекта + label_version_sharing_system: Са свим пројектима + label_update_issue_done_ratios: Ажурирај однос решених проблема + label_copy_source: Извор + label_copy_target: Одредиште + label_copy_same_as_target: Исто као одредиште + label_display_used_statuses_only: Приказуј статусе коришћене само од стране овог праћења + label_api_access_key: API приступни кључ + label_missing_api_access_key: Недостаје API приступни кључ + label_api_access_key_created_on: "API приступни кључ је креиран пре {{value}}" + label_profile: Профил + label_subtask_plural: Подзадатак + label_project_copy_notifications: Пошаљи е-поруку са обавештењем приликом копирања пројекта - button_login: Prijava - button_submit: Pošalji - button_save: Snimi - button_check_all: Uključi sve - button_uncheck_all: Isključi sve - button_delete: Obriši - button_create: Napravi - button_create_and_continue: Napravi i nastavi - button_test: Test - button_edit: Izmeni - button_add: Dodaj - button_change: Promeni - button_apply: Primeni - button_clear: Obriši - button_lock: Zaključaj - button_unlock: Otključaj - button_download: Preuzmi - button_list: Spisak - button_view: Prikaz - button_move: Pomeri - button_move_and_follow: Pomeri i prati - button_back: Nazad - button_cancel: Poništi - button_activate: Aktiviraj - button_sort: Poređaj - button_log_time: Evidentiranje vremena - button_rollback: Povratak na ovu verziju - button_watch: Prati - button_unwatch: Ne prati više - button_reply: Odgovori - button_archive: Arhiviraj - button_unarchive: Vrati iz arhive - button_reset: Poništi - button_rename: Reimenuj - button_change_password: Promena lozinke - button_copy: Kopiraj - button_copy_and_follow: Kopiraj i prati - button_annotate: Pribeleži - button_update: Ažuriraj - button_configure: Podesi - button_quote: Pod navodnicima - button_duplicate: Dupliraj - button_show: Prikaži + button_login: Пријава + button_submit: Пошаљи + button_save: Сними + button_check_all: Укључи све + button_uncheck_all: Искључи све + button_delete: Избриши + button_create: Креирај + button_create_and_continue: Креирај и настави + button_test: Тест + button_edit: Измени + button_add: Додај + button_change: Промени + button_apply: Примени + button_clear: Обриши + button_lock: Закључај + button_unlock: Откључај + button_download: Преузми + button_list: Списак + button_view: Прикажи + button_move: Помери + button_move_and_follow: Помери и прати + 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_copy_and_follow: Копирај и прати + button_annotate: Прибележи + button_update: Ажурирај + button_configure: Подеси + button_quote: Под наводницима + button_duplicate: Дуплирај + button_show: Прикажи - status_active: aktivni - status_registered: registrovani - status_locked: zaključani + status_active: активни + status_registered: регистровани + status_locked: закључани - version_status_open: otvoren - version_status_locked: zaključan - version_status_closed: zatvoren + version_status_open: отворен + version_status_locked: закључан + version_status_closed: затворен - field_active: Aktivan + field_active: Активан - text_select_mail_notifications: Odaberi akcije za koje će email obaveštenje biti poslato. - text_regexp_info: npr. ^[A-Z0-9]+$ - text_min_max_length_info: 0 znači bez ograničenja - text_project_destroy_confirmation: Jeste li sigurni da želite da obrišete ovaj projekat i sve pripadajuće podatke? - text_subprojects_destroy_warning: "Potpojekat: {{value}} će takođe biti obrisan." - text_workflow_edit: Odaberite ulogu i tragača za izmenu toka rada - text_are_you_sure: Jeste li sigurni? - text_journal_changed: "{{label}} promenjen od {{old}} u {{new}}" - text_journal_set_to: "{{label}} postavljen u {{value}}" - text_journal_deleted: "{{label}} obrisano ({{old}})" - text_journal_added: "{{label}} {{value}} dodato" - text_tip_task_begin_day: zadatak počinje ovog dana - text_tip_task_end_day: zadatak se završava ovog dana - text_tip_task_begin_end_day: zadatak počinje i završava istog dana - text_project_identifier_info: 'Dozvoljena su samo mala slova (a-š), brojevi i crtice.
    Jednom snimljen, identifikator se ne može promeniti.' - text_caracters_maximum: "{{count}} znak(ova) najviše." - text_caracters_minimum: "Broj znakova mora biti najmanje {{count}}." - text_length_between: "Broj znakova mora biti između {{min}} i {{max}}." - text_tracker_no_workflow: Tok rada nije definisan za ovog tragača - text_unallowed_characters: Nedozvoljeni znakovi - text_comma_separated: Višestruke vrednosti su dozvoljene (odvojene zarezom). - text_line_separated: Višestruke vrednosti su dozvoljene (jedan red za svaku vrednost). - text_issues_ref_in_commit_messages: Referenciranje i popravljanje problema u izvršnim porukama - text_issue_added: "Problem {{id}} je prijavio {{author}}." - text_issue_updated: "Problem {{id}} je ažurirao {{author}}." - text_wiki_destroy_confirmation: Jeste li sigurni da želite da obrišete wiki i sav sadržaj? - text_issue_category_destroy_question: "Nekoliko problema ({{count}}) je dodeljeno ovoj kategoriji. Šta želite da uradite?" - text_issue_category_destroy_assignments: Ukloni dodoljene kategorije - text_issue_category_reassign_to: Dodeli ponovo probleme ovoj kategoriji - text_user_mail_option: "Za neizabrane projekte, dobićete samo obaveštenje o stvarima koje pratite ili ste uključeni (npr. problemi čiji ste vi autor ili zastupnik)." - text_no_configuration_data: "Uloge, tragači, statusi problema i procesa rada još uvek nisu podešeni.\nPreporučljivo je da učitate podrazumevano konfigurisanje. Izmena je moguća nakon prvog učitavanja." - text_load_default_configuration: Učitaj podrazumevano konfigurisanje - text_status_changed_by_changeset: "Primenjeno u skupu sa promenama {{value}}." - text_issues_destroy_confirmation: 'Jeste li sigurni da želite da obrišete odabrane probleme?' - text_select_project_modules: 'Odaberite module koje želite omogućiti za ovaj projekat:' - text_default_administrator_account_changed: Podrazumevani administratorski nalog je promenjen - text_file_repository_writable: Fascikla priloženih datoteka je upisiva - text_plugin_assets_writable: Fascikla elemenata dodatka je upisiva - text_rmagick_available: RMagick je dostupan (opciono) - text_destroy_time_entries_question: "{{hours}} sati je prijavljeno za ovaj problem koji želite obrisati. Šta želite da uradite?" - text_destroy_time_entries: Obriši prijavljene sate - text_assign_time_entries_to_project: Dodeli prijavljene sate projektu - text_reassign_time_entries: 'Dodeli ponovo prijavljene sate ovom problemu:' - text_user_wrote: "{{value}} je napisao:" - text_enumeration_destroy_question: "{{count}} objekat(a) je dodeljeno ovoj vrednosti." - text_enumeration_category_reassign_to: 'Dodeli ih ponovo ovoj vrednosti:' - text_email_delivery_not_configured: "Isporuka email poruka nije konfigurisana i obaveštavanja su onemogućena.\nPodesite vaš SMTP server u config/email.yml i pokrenite ponovo aplikaciju za njihovo omogućavanje." - text_repository_usernames_mapping: "Odaberite ili ažurirajte Redmine korisnike mapiranjem na svako korisničko ime pronađeno u evidenciji spremišta.\nKorisnici sa istim Redmine imenom i imenom spremišta ili email adresom su automatski mapirani." - text_diff_truncated: '... Ova razlika je isečena zato što je dostignuta maksimalna veličina koja može biti prikazana.' - text_custom_field_possible_values_info: 'Jedan red za svaku vrednost' - text_wiki_page_destroy_question: "Ova strana ima {{descendants}} strana naslednika i potomaka. Šta želite da uradite?" - text_wiki_page_nullify_children: "Zadrži strane naslednika kao korene strane" - text_wiki_page_destroy_children: "Obriši strane naslednika i svih njihovih potomaka" - text_wiki_page_reassign_children: "Dodeli ponovo strane naslednika njihovoj roditeljskoj strani" - text_own_membership_delete_confirmation: "Uklanjanjem pojedinih ili svih vaših dozvola nećete više moći za uređujete ovaj projekat nakon toga.\nŽelite li da nastavite?" + text_select_mail_notifications: Одабери акције за које ће обавештење бити послато путем е-поште. + text_regexp_info: нпр. ^[A-Z0-9]+$ + text_min_max_length_info: 0 значи без ограничења + text_project_destroy_confirmation: Јесте ли сигурни да желите да избришете овај пројекат и све припадајуће податке? + text_subprojects_destroy_warning: "Потпројекти: {{value}} ће такође бити избрисан." + text_workflow_edit: Одаберите улогу и праћење за измену тока посла + text_are_you_sure: Јесте ли сигурни? + text_journal_changed: "{{label}} промењен од {{old}} у {{new}}" + text_journal_set_to: "{{label}} постављен у {{value}}" + text_journal_deleted: "{{label}} избрисано ({{old}})" + text_journal_added: "{{label}} {{value}} додато" + text_tip_task_begin_day: задатак почиње овог дана + text_tip_task_end_day: задатак се завршава овог дана + text_tip_task_begin_end_day: задатак почиње и завршава овог дана + text_project_identifier_info: 'Дозвољена су само мала слова (a-ш), бројеви и цртице.
    Једном снимљен идентификатор више се не може променити.' + text_caracters_maximum: "Највише {{count}} знак(ова)." + text_caracters_minimum: "Број знакова мора бити најмање {{count}}." + text_length_between: "Број знакова мора бити између {{min}} и {{max}}." + text_tracker_no_workflow: Ово праћење нема дефинисан ток посла + text_unallowed_characters: Недозвољени знакови + text_comma_separated: Дозвољене су вишеструке вредности (одвојене зарезом). + text_line_separated: Дозвољене су вишеструке вредности (један ред за сваку вредност). + text_issues_ref_in_commit_messages: Референцирање и поправљање проблема у извршним порукама + text_issue_added: "{{author}} је пријавио проблем {{id}}." + text_issue_updated: "{{author}} је ажурирао проблем {{id}}." + text_wiki_destroy_confirmation: Јесте ли сигурни да желите да обришете wiki и сав садржај? + text_issue_category_destroy_question: "Неколико проблема ({{count}}) је додељено овој категорији. Шта желите да урадите?" + 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: "Примењено у скупу са променама {{value}}." + text_issues_destroy_confirmation: 'Јесте ли сигурни да желите да избришете одабране проблеме?' + text_select_project_modules: 'Одаберите модуле које желите омогућити за овај пројекат:' + text_default_administrator_account_changed: Подразумевани администраторски налог је промењен + text_file_repository_writable: Фасцикла приложених датотека је уписива + text_plugin_assets_writable: Фасцикла елемената додатних компоненти је уписива + text_rmagick_available: RMagick је доступан (опционо) + text_destroy_time_entries_question: "{{hours}} сати је пријављено за овај проблем који желите избрисати. Шта желите да урадите?" + text_destroy_time_entries: Избриши пријављене сате + text_assign_time_entries_to_project: Додели пријављене сате пројекту + text_reassign_time_entries: 'Додели поново пријављене сате овом проблему:' + text_user_wrote: "{{value}} је написао:" + text_enumeration_destroy_question: "{{count}} објекат(а) је додељено овој вредности." + text_enumeration_category_reassign_to: 'Додели их поново овој вредности:' + text_email_delivery_not_configured: "Испорука е-порука није конфигурисана и обавештења су онемогућена.\nПодесите ваш SMTP сервер у config/email.yml и покрените поново апликацију за њихово омогућавање." + text_repository_usernames_mapping: "Одаберите или ажурирајте Redmine кориснике мапирањем сваког корисничког имена пронађеног у евиденцији спремишта.\nКорисници са истим Redmine именом и именом спремишта или е-адресом су аутоматски мапирани." + text_diff_truncated: '... Ова разлика је исечена јер је достигнута максимална величина приказа.' + text_custom_field_possible_values_info: 'Један ред за сваку вредност' + text_wiki_page_destroy_question: "Ова страница има {{descendants}} подређених страница и подстраница. Шта желите да урадите?" + text_wiki_page_nullify_children: "Задржи подређене странице као корене странице" + text_wiki_page_destroy_children: "Избриши подређене странице и све њихове подстранице" + text_wiki_page_reassign_children: "Додели поново подређене странице овој матичној страници" + text_own_membership_delete_confirmation: "Након уклањања појединих или свих ваших дозвола нећете више моћи да уређујете овај пројекат.\nЖелите ли да наставите?" + text_zoom_in: Увећај + text_zoom_out: Умањи - default_role_manager: Menadžer - default_role_developer: Programer - default_role_reporter: Izveštač - default_tracker_bug: Greška - default_tracker_feature: Funkcionalnost - default_tracker_support: Podrška - default_issue_status_new: Novo - default_issue_status_in_progress: U toku - default_issue_status_resolved: Rešeno - default_issue_status_feedback: Povratna informacija - default_issue_status_closed: Zatvoreno - default_issue_status_rejected: Odbijeno - default_doc_category_user: Korisnička dokumentacija - default_doc_category_tech: Tehnička dokumentacija - default_priority_low: Nizak - default_priority_normal: Normalan - default_priority_high: Visok - default_priority_urgent: Hitno - default_priority_immediate: Neposredno - default_activity_design: Dizajn - default_activity_development: Razvoj + default_role_manager: Менаџер + default_role_developer: Програмер + default_role_reporter: Извештач + default_tracker_bug: Грешка + default_tracker_feature: Функционалност + default_tracker_support: Подршка + default_issue_status_new: Ново + default_issue_status_in_progress: У току + default_issue_status_resolved: Решено + default_issue_status_feedback: Повратна информација + 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: Prioriteti problema - enumeration_doc_categories: Kategorije dokumenta - enumeration_activities: Aktivnosti (vremenski praćene) - enumeration_system_activity: Sistemska aktivnost - - error_can_not_delete_custom_field: Unable to delete custom field - permission_manage_subtasks: Manage subtasks - label_profile: Profile - error_unable_to_connect: Unable to connect ({{value}}) - error_can_not_remove_role: This role is in use and can not be deleted. - field_parent_issue: Parent task - error_unable_delete_issue_status: Unable to delete issue status - label_subtask_plural: Subtasks - error_can_not_delete_tracker: This tracker contains issues and can't be deleted. - field_principal: Principal - label_my_page_block: My page block - notice_failed_to_save_members: "Failed to save member(s): {{errors}}." - text_zoom_out: Zoom out - text_zoom_in: Zoom in - notice_unable_delete_time_entry: Unable to delete time log entry. - label_overall_spent_time: Overall spent time + enumeration_issue_priorities: Приоритети проблема + enumeration_doc_categories: Категорије документа + enumeration_activities: Активности (праћење времена) + enumeration_system_activity: Системска активност + + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 35ebc1053..e02ee7867 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -131,6 +131,7 @@ sv: not_same_project: "tillhör inte samma projekt" circular_dependency: "Denna relation skulle skapa ett cirkulärt beroende" + direction: ltr date: formats: # Use the strftime parameters for formats. @@ -324,6 +325,7 @@ sv: field_redirect_existing_links: Omdirigera existerande länkar field_estimated_hours: Estimerad tid field_column_names: Kolumner + field_time_entries: Spenderad tid field_time_zone: Tidszon field_searchable: Sökbar field_default_value: Standardvärde @@ -455,6 +457,8 @@ sv: project_module_wiki: Wiki project_module_repository: Versionsarkiv project_module_boards: Forum + project_module_calendar: Kalender + project_module_gantt: Gantt label_user: Användare label_user_plural: Användare @@ -856,7 +860,7 @@ sv: button_update: Uppdatera button_configure: Konfigurera button_quote: Citera - button_duplicate: Duplisera + button_duplicate: Duplicera button_show: Visa status_active: aktiv @@ -905,9 +909,9 @@ sv: text_issues_destroy_confirmation: 'Är du säker på att du vill radera markerade ärende(n) ?' text_select_project_modules: 'Välj vilka moduler som ska vara aktiva för projektet:' text_default_administrator_account_changed: Standardadministratörens konto ändrat - text_file_repository_writable: Arkivet för bifogade filer är skrivbar - text_plugin_assets_writable: Arkivet för plug-ins är skrivbar - text_rmagick_available: RMagick tillgängligt (valfritt) + text_file_repository_writable: Arkivet för bifogade filer är skrivbart + text_plugin_assets_writable: Arkivet för plug-ins är skrivbart + text_rmagick_available: RMagick tillgängligt (ej obligatoriskt) text_destroy_time_entries_question: "{{hours}} timmar har rapporterats på ärendena du är på väg att ta bort. Vad vill du göra ?" text_destroy_time_entries: Ta bort rapporterade timmar text_assign_time_entries_to_project: Tilldela rapporterade timmar till projektet diff --git a/config/locales/th.yml b/config/locales/th.yml index 2c127f3de..01d19c4d0 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -1,4 +1,5 @@ th: + direction: ltr date: formats: # Use the strftime parameters for formats. @@ -63,7 +64,11 @@ th: one: "almost 1 year" other: "almost {{count}} years" - number: + number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: precision: 1 @@ -901,3 +906,6 @@ th: text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/tr.yml b/config/locales/tr.yml index db4330924..f3f9788b1 100644 --- a/config/locales/tr.yml +++ b/config/locales/tr.yml @@ -5,6 +5,7 @@ tr: locale: native_name: Türkçe address_separator: " " + direction: ltr date: formats: default: "%d.%m.%Y" @@ -931,3 +932,6 @@ tr: text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 1a590dc0b..c5846db2a 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -1,4 +1,5 @@ uk: + direction: ltr date: formats: # Use the strftime parameters for formats. @@ -64,6 +65,10 @@ uk: other: "almost {{count}} years" number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: precision: 1 @@ -900,3 +905,6 @@ uk: text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/vi.yml b/config/locales/vi.yml index f8ca507bf..5e964896d 100644 --- a/config/locales/vi.yml +++ b/config/locales/vi.yml @@ -140,6 +140,7 @@ vi: not_same_project: "không thuộc cùng dự án" circular_dependency: "quan hệ có thể gây ra lặp vô tận" + direction: ltr date: formats: # Use the strftime parameters for formats. @@ -963,3 +964,6 @@ vi: text_zoom_in: Zoom in notice_unable_delete_time_entry: Unable to delete time log entry. label_overall_spent_time: Overall spent time + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/locales/zh-TW.yml b/config/locales/zh-TW.yml index 5a08041c2..0216525b0 100644 --- a/config/locales/zh-TW.yml +++ b/config/locales/zh-TW.yml @@ -3,6 +3,7 @@ # See http://github.com/svenfuchs/rails-i18n/ for details. "zh-TW": + direction: ltr date: formats: # Use the strftime parameters for formats. @@ -376,7 +377,8 @@ field_group_by: 結果分組方式 field_sharing: 共用 field_parent_issue: 父工作項目 - + field_time_entries: 耗用工時 + setting_app_title: 標題 setting_app_subtitle: 副標題 setting_welcome_text: 歡迎詞 @@ -495,6 +497,8 @@ project_module_wiki: Wiki project_module_repository: 版本控管 project_module_boards: 討論區 + project_module_calendar: 日曆 + project_module_gantt: 甘特圖 label_user: 用戶 label_user_plural: 用戶清單 @@ -512,7 +516,7 @@ label_issue: 項目 label_issue_new: 建立新項目 label_issue_plural: 項目清單 - label_issue_view_all: 檢視全部的項目 + label_issue_view_all: 檢視所有項目 label_issues_by: "項目按 {{value}} 分組顯示" label_issue_added: 項目已新增 label_issue_updated: 項目已更新 @@ -562,7 +566,7 @@ label_last_login: 最近一次連線 label_registered_on: 註冊於 label_activity: 活動 - label_overall_activity: 檢視整體活動 + label_overall_activity: 整體活動 label_user_activity: "{{value}} 的活動" label_new: 建立新的... label_logged_as: 目前登入 diff --git a/config/locales/zh.yml b/config/locales/zh.yml index eeac629a1..0ffdcdb3b 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -2,6 +2,7 @@ # by tsechingho (http://github.com/tsechingho) zh: + direction: ltr date: formats: default: "%Y-%m-%d" @@ -926,3 +927,6 @@ zh: text_zoom_in: 放大 notice_unable_delete_time_entry: 无法删除工时记录。 label_overall_spent_time: 所有项目耗用工时 + field_time_entries: Log time + project_module_gantt: Gantt + project_module_calendar: Calendar diff --git a/config/routes.rb b/config/routes.rb index 2e8a145cb..1414e1000 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -102,52 +102,40 @@ ActionController::Routing::Routes.draw do |map| document_actions.connect 'documents/:id/:action', :action => /destroy|edit/ end end - - map.with_options :controller => 'issues' do |issues_routes| - issues_routes.with_options :conditions => {:method => :get} do |issues_views| - issues_views.connect 'issues', :action => 'index' - issues_views.connect 'issues.:format', :action => 'index' - issues_views.connect 'projects/:project_id/issues', :action => 'index' - issues_views.connect 'projects/:project_id/issues.:format', :action => 'index' - issues_views.connect 'projects/:project_id/issues/new', :action => 'new' - issues_views.connect 'projects/:project_id/issues/gantt', :controller => 'gantts', :action => 'show' - issues_views.connect 'projects/:project_id/issues/calendar', :controller => 'calendars', :action => 'show' - issues_views.connect 'projects/:project_id/issues/:copy_from/copy', :action => 'new' - issues_views.connect 'issues/:id', :action => 'show', :id => /\d+/ - issues_views.connect 'issues/:id.:format', :action => 'show', :id => /\d+/ - issues_views.connect 'issues/:id/edit', :action => 'edit', :id => /\d+/ - issues_views.connect 'issues/:id/move', :action => 'move', :id => /\d+/ - end - issues_routes.with_options :conditions => {:method => :post} do |issues_actions| - issues_actions.connect 'issues', :action => 'index' - issues_actions.connect 'projects/:project_id/issues', :action => 'create' - issues_actions.connect 'projects/:project_id/issues/gantt', :controller => 'gantts', :action => 'show' - issues_actions.connect 'projects/:project_id/issues/calendar', :controller => 'calendars', :action => 'show' - issues_actions.connect 'issues/:id/quoted', :action => 'reply', :id => /\d+/ - issues_actions.connect 'issues/:id/:action', :action => /edit|perform_move|destroy/, :id => /\d+/ - issues_actions.connect 'issues.:format', :action => 'create', :format => /xml/ - end - issues_routes.with_options :conditions => {:method => :put} do |issues_actions| - issues_actions.connect 'issues/:id/edit', :action => 'update', :id => /\d+/ - issues_actions.connect 'issues/:id.:format', :action => 'update', :id => /\d+/, :format => /xml/ - end - issues_routes.with_options :conditions => {:method => :delete} do |issues_actions| - issues_actions.connect 'issues/:id.:format', :action => 'destroy', :id => /\d+/, :format => /xml/ - end - issues_routes.connect 'issues/gantt', :controller => 'gantts', :action => 'show' - issues_routes.connect 'issues/calendar', :controller => 'calendars', :action => 'show' - issues_routes.connect 'issues/:action' - end - - map.with_options :controller => 'issue_relations', :conditions => {:method => :post} do |relations| - relations.connect 'issues/:issue_id/relations/:id', :action => 'new' - relations.connect 'issues/:issue_id/relations/:id/destroy', :action => 'destroy' - end - + + map.resources :issue_moves, :only => [:new, :create], :path_prefix => '/issues', :as => 'move' + + # Misc issue routes. TODO: move into resources + map.auto_complete_issues '/issues/auto_complete', :controller => 'auto_completes', :action => 'issues' + map.preview_issue '/issues/preview/:id', :controller => 'previews', :action => 'issue' # TODO: would look nicer as /issues/:id/preview + map.issues_context_menu '/issues/context_menu', :controller => 'context_menus', :action => 'issues' + map.issue_changes '/issues/changes', :controller => 'journals', :action => 'index' + map.bulk_edit_issue 'issues/bulk_edit', :controller => 'issues', :action => 'bulk_edit', :conditions => { :method => :get } + map.bulk_update_issue 'issues/bulk_edit', :controller => 'issues', :action => 'bulk_update', :conditions => { :method => :post } + map.quoted_issue '/issues/:id/quoted', :controller => 'journals', :action => 'new', :id => /\d+/, :conditions => { :method => :post } + map.connect '/issues/:id/destroy', :controller => 'issues', :action => 'destroy', :conditions => { :method => :post } # legacy + + map.resource :gantt, :path_prefix => '/issues', :controller => 'gantts', :only => [:show, :update] + map.resource :gantt, :path_prefix => '/projects/:project_id/issues', :controller => 'gantts', :only => [:show, :update] + map.resource :calendar, :path_prefix => '/issues', :controller => 'calendars', :only => [:show, :update] + map.resource :calendar, :path_prefix => '/projects/:project_id/issues', :controller => 'calendars', :only => [:show, :update] + map.with_options :controller => 'reports', :conditions => {:method => :get} do |reports| reports.connect 'projects/:id/issues/report', :action => 'issue_report' reports.connect 'projects/:id/issues/report/:detail', :action => 'issue_report_details' end + + # Following two routes conflict with the resources because #index allows POST + map.connect '/issues', :controller => 'issues', :action => 'index', :conditions => { :method => :post } + map.connect '/issues/create', :controller => 'issues', :action => 'index', :conditions => { :method => :post } + + map.resources :issues, :member => { :edit => :post }, :collection => {} + map.resources :issues, :path_prefix => '/projects/:project_id', :collection => { :create => :post } + + map.with_options :controller => 'issue_relations', :conditions => {:method => :post} do |relations| + relations.connect 'issues/:issue_id/relations/:id', :action => 'new' + relations.connect 'issues/:issue_id/relations/:id/destroy', :action => 'destroy' + end map.with_options :controller => 'news' do |news_routes| news_routes.with_options :conditions => {:method => :get} do |news_views| @@ -192,13 +180,14 @@ ActionController::Routing::Routes.draw do |map| project_views.connect 'projects/new', :action => 'add' project_views.connect 'projects/:id', :action => 'show' project_views.connect 'projects/:id.:format', :action => 'show' - project_views.connect 'projects/:id/:action', :action => /roadmap|destroy|settings/ + project_views.connect 'projects/:id/:action', :action => /destroy|settings/ project_views.connect 'projects/:id/files', :action => 'list_files' project_views.connect 'projects/:id/files/new', :action => 'add_file' project_views.connect 'projects/:id/settings/:tab', :action => 'settings' + project_views.connect 'projects/:project_id/issues/:copy_from/copy', :controller => 'issues', :action => 'new' end - projects.with_options :action => 'activity', :conditions => {:method => :get} do |activity| + projects.with_options :controller => 'activities', :action => 'index', :conditions => {:method => :get} do |activity| activity.connect 'projects/:id/activity' activity.connect 'projects/:id/activity.:format' activity.connect 'activity', :id => nil @@ -226,6 +215,7 @@ ActionController::Routing::Routes.draw do |map| map.with_options :controller => 'versions' do |versions| versions.connect 'projects/:project_id/versions/new', :action => 'new' + versions.connect 'projects/:project_id/roadmap', :action => 'index' versions.with_options :conditions => {:method => :post} do |version_actions| version_actions.connect 'projects/:project_id/versions/close_completed', :action => 'close_completed' end diff --git a/config/settings.yml b/config/settings.yml index 1e905ede3..d07261f8f 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -150,6 +150,8 @@ default_projects_modules: - wiki - repository - boards + - calendar + - gantt # Role given to a non-admin user who creates a project new_project_user_role_id: format: int diff --git a/db/migrate/20100819172912_enable_calendar_and_gantt_modules_where_appropriate.rb b/db/migrate/20100819172912_enable_calendar_and_gantt_modules_where_appropriate.rb new file mode 100644 index 000000000..416607b43 --- /dev/null +++ b/db/migrate/20100819172912_enable_calendar_and_gantt_modules_where_appropriate.rb @@ -0,0 +1,12 @@ +class EnableCalendarAndGanttModulesWhereAppropriate < ActiveRecord::Migration + def self.up + EnabledModule.find(:all, :conditions => ["name = ?", 'issue_tracking']).each do |e| + EnabledModule.create(:name => 'calendar', :project_id => e.project_id) + EnabledModule.create(:name => 'gantt', :project_id => e.project_id) + end + end + + def self.down + EnabledModule.delete_all("name = 'calendar' OR name = 'gantt'") + end +end diff --git a/doc/CHANGELOG b/doc/CHANGELOG index 4e6be6a27..b1e2c4bd1 100644 --- a/doc/CHANGELOG +++ b/doc/CHANGELOG @@ -4,6 +4,66 @@ Redmine - project management software Copyright (C) 2006-2010 Jean-Philippe Lang http://www.redmine.org/ +== 2010-08-22 v1.0.1 + +* #819: Add a body ID and class to all pages +* #871: Commit new CSS styles! +* #3301: Add favicon to base layout +* #4656: On Issue#show page, clicking on “Add related issue” should focus on the input +* #4896: Project identifier should be a limited field +* #5084: Filter all isssues by projects +* #5477: Replace Test::Unit::TestCase with ActiveSupport::TestCase +* #5591: 'calendar' action is used with 'issue' controller in issue/sidebar +* #5735: Traditional Chinese language file (to r3810) +* #5740: Swedish Translation for r3810 +* #5785: pt-BR translation update +* #5898: Projects should be displayed as links in users/memberships +* #5910: Chinese translation to redmine-1.0.0 +* #5912: Translation update for french locale +* #5962: Hungarian translation update to r3892 +* #5971: Remove falsly applied chrome on revision links +* #5972: Updated Hebrew translation for 1.0.0 +* #5982: Updated german translation +* #6008: Move admin_menu to Redmine::MenuManager +* #6012: RTL layout +* #6021: Spanish translation 1.0.0-RC +* #6025: nl translation updated for r3905 +* #6030: Japanese Translation for r3907 +* #6074: sr-CY.yml contains DOS-type newlines (\r\n) +* #6087: SERBIAN translation updated +* #6093: Updated italian translation +* #6142: Swedish Translation for r3940 +* #6153: Move view_calendar and view_gantt to own modules +* #6169: Add issue status to issue tooltip +* Fixed #3834: Add a warning when not choosing a member role +* Fixed #3922: Bad english arround "Assigned to" text in journal entries +* Fixed #5158: Simplified Chinese language file zh.yml updated to r3608 +* Fixed #5162: translation missing: zh-TW, field_time_entrie +* Fixed #5297: openid not validated correctly +* Fixed #5628: Wrong commit range in git log command +* Fixed #5760: Assigned_to and author filters in "Projects>View all issues" should be based on user's project visibility +* Fixed #5771: Problem when importing git repository +* Fixed #5775: ldap authentication in admin menu should have an icon +* Fixed #5811: deleting statuses doesnt delete workflow entries +* Fixed #5834: Emails with trailing spaces incorrectly detected as invalid +* Fixed #5846: ChangeChangesPathLengthLimit does not remove default for MySQL +* Fixed #5861: Vertical scrollbar always visible in Wiki "code" blocks in Chrome. +* Fixed #5883: correct label_project_latest Chinese translation +* Fixed #5892: Changing status from contextual menu opens the ticket instead +* Fixed #5904: Global gantt PDF and PNG should display project names +* Fixed #5925: parent task's priority edit should be disabled through shortcut menu in issues list page +* Fixed #5935: Add Another file to ticket doesn't work in IE Internet Explorer +* Fixed #5937: Harmonize french locale "zero" translation with other locales +* Fixed #5945: Forum message permalinks don't take pagination into account +* Fixed #5978: Debug code still remains +* Fixed #6009: When using "English (British)", the repository browser (svn) shows files over 1000 bytes as floating point (2.334355) +* Fixed #6045: Repository file Diff view sometimes shows more than selected file +* Fixed #6079: German Translation error in TimeEntryActivity +* Fixed #6100: User's profile should display all visible projects +* Fixed #6132: Allow Key based authentication in the Boards atom feed +* Fixed #6163: Bad CSS class for calendar project menu_item +* Fixed #6172: Browsing to a missing user's page shows the admin sidebar + == 2010-07-18 v1.0.0 (Release candidate) * #443: Adds context menu to the roadmap issue lists diff --git a/lib/redmine.rb b/lib/redmine.rb index 4196a5d7a..ecfc46252 100644 --- a/lib/redmine.rb +++ b/lib/redmine.rb @@ -44,7 +44,7 @@ end # Permissions Redmine::AccessControl.map do |map| - map.permission :view_project, {:projects => [:show, :activity]}, :public => true + map.permission :view_project, {:projects => [:show], :activities => [:index]}, :public => true map.permission :search_project, {:search => :index}, :public => true map.permission :add_project, {:projects => :add}, :require => :loggedin map.permission :edit_project, {:projects => [:settings, :edit]}, :require => :member @@ -57,26 +57,25 @@ Redmine::AccessControl.map do |map| # Issue categories map.permission :manage_categories, {:projects => :settings, :issue_categories => [:new, :edit, :destroy]}, :require => :member # Issues - map.permission :view_issues, {:projects => :roadmap, - :issues => [:index, :changes, :show, :context_menu, :auto_complete], - :versions => [:show, :status_by], + map.permission :view_issues, {:issues => [:index, :show], + :auto_complete => [:issues], + :context_menus => [:issues], + :versions => [:index, :show, :status_by], + :journals => :index, :queries => :index, :reports => [:issue_report, :issue_report_details]} map.permission :add_issues, {:issues => [:new, :create, :update_form]} - map.permission :edit_issues, {:issues => [:edit, :update, :reply, :bulk_edit, :update_form]} + map.permission :edit_issues, {:issues => [:edit, :update, :bulk_edit, :bulk_update, :update_form], :journals => [:new]} map.permission :manage_issue_relations, {:issue_relations => [:new, :destroy]} map.permission :manage_subtasks, {} - map.permission :add_issue_notes, {:issues => [:edit, :update, :reply]} + map.permission :add_issue_notes, {:issues => [:edit, :update], :journals => [:new]} map.permission :edit_issue_notes, {:journals => :edit}, :require => :loggedin map.permission :edit_own_issue_notes, {:journals => :edit}, :require => :loggedin - map.permission :move_issues, {:issues => [:move, :perform_move]}, :require => :loggedin + map.permission :move_issues, {:issue_moves => [:new, :create]}, :require => :loggedin map.permission :delete_issues, {:issues => :destroy}, :require => :member # Queries map.permission :manage_public_queries, {:queries => [:new, :edit, :destroy]}, :require => :member map.permission :save_queries, {:queries => [:new, :edit, :destroy]}, :require => :loggedin - # Gantt & calendar - map.permission :view_gantt, :gantts => :show - map.permission :view_calendar, :calendars => :show # Watchers map.permission :view_issue_watchers, {} map.permission :add_issue_watchers, {:watchers => :new} @@ -135,6 +134,14 @@ Redmine::AccessControl.map do |map| map.permission :delete_messages, {:messages => :destroy}, :require => :member map.permission :delete_own_messages, {:messages => :destroy}, :require => :loggedin end + + map.project_module :calendar do |map| + map.permission :view_calendar, :calendars => [:show, :update] + end + + map.project_module :gantt do |map| + map.permission :view_gantt, :gantts => [:show, :update] + end end Redmine::MenuManager.map :top_menu do |menu| @@ -177,12 +184,14 @@ end Redmine::MenuManager.map :project_menu do |menu| menu.push :overview, { :controller => 'projects', :action => 'show' } - menu.push :activity, { :controller => 'projects', :action => 'activity' } - menu.push :roadmap, { :controller => 'projects', :action => 'roadmap' }, + menu.push :activity, { :controller => 'activities', :action => 'index' } + menu.push :roadmap, { :controller => 'versions', :action => 'index' }, :param => :project_id, :if => Proc.new { |p| p.shared_versions.any? } menu.push :issues, { :controller => 'issues', :action => 'index' }, :param => :project_id, :caption => :label_issue_plural menu.push :new_issue, { :controller => 'issues', :action => 'new' }, :param => :project_id, :caption => :label_issue_new, :html => { :accesskey => Redmine::AccessKeys.key_for(:new_issue) } + menu.push :gantt, { :controller => 'gantts', :action => 'show' }, :param => :project_id, :caption => :label_gantt + menu.push :calendar, { :controller => 'calendars', :action => 'show' }, :param => :project_id, :caption => :label_calendar menu.push :news, { :controller => 'news', :action => 'index' }, :param => :project_id, :caption => :label_news_plural menu.push :documents, { :controller => 'documents', :action => 'index' }, :param => :project_id, :caption => :label_document_plural menu.push :wiki, { :controller => 'wiki', :action => 'index', :page => nil }, diff --git a/lib/redmine/version.rb b/lib/redmine/version.rb index 5ea62f3e0..7234352d2 100644 --- a/lib/redmine/version.rb +++ b/lib/redmine/version.rb @@ -4,7 +4,7 @@ module Redmine module VERSION #:nodoc: MAJOR = 1 MINOR = 0 - TINY = 0 + TINY = 1 # Branch values: # * official release: nil diff --git a/lib/tasks/permissions.rake b/lib/tasks/permissions.rake new file mode 100644 index 000000000..02ce1b2a8 --- /dev/null +++ b/lib/tasks/permissions.rake @@ -0,0 +1,9 @@ +namespace :redmine do + desc "List all permissions and the actions registered with them" + task :permissions => :environment do + puts "Permission Name - controller/action pairs" + Redmine::AccessControl.permissions.sort {|a,b| a.name.to_s <=> b.name.to_s }.each do |permission| + puts ":#{permission.name} - #{permission.actions.join(', ')}" + end + end +end diff --git a/public/javascripts/calendar/lang/calendar-it.js b/public/javascripts/calendar/lang/calendar-it.js index fbc80c935..2c3379c73 100644 --- a/public/javascripts/calendar/lang/calendar-it.js +++ b/public/javascripts/calendar/lang/calendar-it.js @@ -9,6 +9,9 @@ // Unicode is the answer to a real internationalized world. Also please // include your contact information in the header, as can be seen above. +// Italian translation +// by Diego Pierotto (ita.translations@tiscali.it) + // full day names Calendar._DN = new Array ("Domenica", @@ -83,19 +86,19 @@ Calendar._TT["INFO"] = "Informazioni sul calendario"; Calendar._TT["ABOUT"] = "DHTML Date/Time Selector\n" + -"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-) -"For latest version visit: http://www.dynarch.com/projects/calendar/\n" + -"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." + +"(c) dynarch.com 2002-2005 / Autore: Mihai Bazon\n" + // don't translate this this ;-) +"Per l'ultima versione visita: http://www.dynarch.com/projects/calendar/\n" + +"Distribuito sotto i termini GNU LGPL. Vedi http://gnu.org/licenses/lgpl.html per maggiori dettagli." + "\n\n" + -"Date selection:\n" + -"- Use the \xab, \xbb buttons to select year\n" + -"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" + -"- Hold mouse button on any of the above buttons for faster selection."; +"Selezione data:\n" + +"- Usa i tasti \xab, \xbb per selezionare l'anno\n" + +"- Usa i tasti " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " per selezionare il mese\n" + +"- Tieni premuto il tasto del mouse su uno qualunque dei tasti sopra per una selezione più veloce."; Calendar._TT["ABOUT_TIME"] = "\n\n" + -"Time selection:\n" + -"- Click on any of the time parts to increase it\n" + -"- or Shift-click to decrease it\n" + -"- or click and drag for faster selection."; +"Selezione ora:\n" + +"- Fai click su una delle ore per incrementarla\n" + +"- oppure Shift-click per diminuirla\n" + +"- oppure click e trascina per una selezione più veloce."; Calendar._TT["PREV_YEAR"] = "Anno prec. (tieni premuto per menu)"; Calendar._TT["PREV_MONTH"] = "Mese prec. (tieni premuto per menu)"; diff --git a/public/javascripts/calendar/lang/calendar-mk.js b/public/javascripts/calendar/lang/calendar-mk.js index 34fcaaee7..863e3bf2b 100644 --- a/public/javascripts/calendar/lang/calendar-mk.js +++ b/public/javascripts/calendar/lang/calendar-mk.js @@ -1,7 +1,7 @@ // ** I18N // Calendar МК language -// Author: Илин Татабитовски, +// Author: Ilin Tatabitovski, // Encoding: UTF-8 // Distributed under the same terms as the calendar itself. @@ -84,26 +84,26 @@ Calendar._TT["INFO"] = "За календарот"; Calendar._TT["ABOUT"] = "DHTML Date/Time Selector\n" + "(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-) -"For latest version visit: http://www.dynarch.com/projects/calendar/\n" + -"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details." + +"За последна верзија посети: http://www.dynarch.com/projects/calendar/\n" + +"Дистрибуирано под GNU LGPL. Види http://gnu.org/licenses/lgpl.html за детали." + "\n\n" + -"Date selection:\n" + -"- Use the \xab, \xbb buttons to select year\n" + -"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" + -"- Hold mouse button on any of the above buttons for faster selection."; +"Бирање на дата:\n" + +"- Користи ги \xab, \xbb копчињата за да избереш година\n" + +"- Користи ги " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " копчињата за да избере месеци\n" + +"- Држи го притиснато копчето на глувчето на било кое копче за побрзо бирање."; Calendar._TT["ABOUT_TIME"] = "\n\n" + -"Time selection:\n" + -"- Click on any of the time parts to increase it\n" + -"- or Shift-click to decrease it\n" + -"- or click and drag for faster selection."; +"Бирање на време:\n" + +"- Клик на временските делови за да го зголемиш\n" + +"- или Shift-клик да го намалиш\n" + +"- или клик и влечи за побрзо бирање."; -Calendar._TT["PREV_YEAR"] = "Претходна година (hold for menu)"; -Calendar._TT["PREV_MONTH"] = "Претходен месец (hold for menu)"; +Calendar._TT["PREV_YEAR"] = "Претходна година (држи за мени)"; +Calendar._TT["PREV_MONTH"] = "Претходен месец (држи за мени)"; Calendar._TT["GO_TODAY"] = "Go Today"; -Calendar._TT["NEXT_MONTH"] = "Следен месец (hold for menu)"; -Calendar._TT["NEXT_YEAR"] = "Следна година (hold for menu)"; -Calendar._TT["SEL_DATE"] = "Изберете дата"; -Calendar._TT["DRAG_TO_MOVE"] = "Drag to move"; +Calendar._TT["NEXT_MONTH"] = "Следен месец (држи за мени)"; +Calendar._TT["NEXT_YEAR"] = "Следна година (држи за мени)"; +Calendar._TT["SEL_DATE"] = "Избери дата"; +Calendar._TT["DRAG_TO_MOVE"] = "Влечи да поместиш"; Calendar._TT["PART_TODAY"] = " (денес)"; // the following is to inform that "%s" is to be the first day of week @@ -117,7 +117,7 @@ Calendar._TT["WEEKEND"] = "0,6"; Calendar._TT["CLOSE"] = "Затвори"; Calendar._TT["TODAY"] = "Денес"; -Calendar._TT["TIME_PART"] = "(Shift-)Click or drag to change value"; +Calendar._TT["TIME_PART"] = "(Shift-)Клик или влечи за да промениш вредност"; // date formats Calendar._TT["DEF_DATE_FORMAT"] = "%d-%m-%Y"; @@ -125,3 +125,4 @@ Calendar._TT["TT_DATE_FORMAT"] = "%a, %e %b"; Calendar._TT["WK"] = "нед"; Calendar._TT["TIME"] = "Време:"; + diff --git a/public/javascripts/calendar/lang/calendar-sr-CY.js b/public/javascripts/calendar/lang/calendar-sr-CY.js deleted file mode 100644 index a43b49e10..000000000 --- a/public/javascripts/calendar/lang/calendar-sr-CY.js +++ /dev/null @@ -1,127 +0,0 @@ -// ** I18N - -// Calendar SR language -// Author: Dragan Matic, -// Encoding: any -// Distributed under the same terms as the calendar itself. - -// For translators: please use UTF-8 if possible. We strongly believe that -// Unicode is the answer to a real internationalized world. Also please -// include your contact information in the header, as can be seen above. - -// full day names -Calendar._DN = new Array -("Недеља", - "Понедељак", - "Уторак", - "Среда", - "Четвртак", - "Петак", - "Субота", - "Недеља"); - -// Please note that the following array of short day names (and the same goes -// for short month names, _SMN) isn't absolutely necessary. We give it here -// for exemplification on how one can customize the short day names, but if -// they are simply the first N letters of the full name you can simply say: -// -// Calendar._SDN_len = N; // short day name length -// Calendar._SMN_len = N; // short month name length -// -// If N = 3 then this is not needed either since we assume a value of 3 if not -// present, to be compatible with translation files that were written before -// this feature. - -// short day names -Calendar._SDN = new Array -("Нед", - "Пон", - "Уто", - "Сре", - "Чет", - "Пет", - "Суб", - "Нед"); - -// First day of the week. "0" means display Sunday first, "1" means display -// Monday first, etc. -Calendar._FD = 1; - -// full month names -Calendar._MN = new Array -("Јануар", - "Фебруар", - "Март", - "Април", - "Мај", - "Јун", - "Јул", - "Август", - "Септембар", - "Октобар", - "Новембар", - "Децембар"); - -// short month names -Calendar._SMN = new Array -("јан", - "феб", - "мар", - "апр", - "мај", - "јун", - "јул", - "авг", - "сеп", - "окт", - "нов", - "дец"); - -// tooltips -Calendar._TT = {}; -Calendar._TT["INFO"] = "О календару"; - -Calendar._TT["ABOUT"] = -"DHTML бирач датума/времена\n" + -"(c) dynarch.com 2002-2005 / Аутор: Mihai Bazon\n" + // don't translate this this ;-) -"За новију верзију посетите: http://www.dynarch.com/projects/calendar/\n" + -"Дистрибуира се под GNU LGPL. Погледајте http://gnu.org/licenses/lgpl.html за детаљe." + -"\n\n" + -"Избор датума:\n" + -"- Користите \xab, \xbb тастере за избор године\n" + -"- Користите " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " тастере за избор месеца\n" + -"- Задржите тастер миша на било ком тастеру изнад за бржи избор."; -Calendar._TT["ABOUT_TIME"] = "\n\n" + -"Избор времена:\n" + -"- Кликните на било који део времена за повећање\n" + -"- или Shift-клик за умањење\n" + -"- или кликните и превуците за бржи одабир."; - -Calendar._TT["PREV_YEAR"] = "Претходна година (задржати за мени)"; -Calendar._TT["PREV_MONTH"] = "Претходни месец (задржати за мени)"; -Calendar._TT["GO_TODAY"] = "На данашњи дан"; -Calendar._TT["NEXT_MONTH"] = "Наредни месец (задржати за мени)"; -Calendar._TT["NEXT_YEAR"] = "Наредна година (задржати за мени)"; -Calendar._TT["SEL_DATE"] = "Избор датума"; -Calendar._TT["DRAG_TO_MOVE"] = "Превуците за премештање"; -Calendar._TT["PART_TODAY"] = " (данас)"; - -// the following is to inform that "%s" is to be the first day of week -// %s will be replaced with the day name. -Calendar._TT["DAY_FIRST"] = "%s као први дан у седмици"; - -// This may be locale-dependent. It specifies the week-end days, as an array -// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1 -// means Monday, etc. -Calendar._TT["WEEKEND"] = "6,7"; - -Calendar._TT["CLOSE"] = "Затвори"; -Calendar._TT["TODAY"] = "Данас"; -Calendar._TT["TIME_PART"] = "(Shift-) клик или превлачење за измену вредности"; - -// date formats -Calendar._TT["DEF_DATE_FORMAT"] = "%d.%m.%Y."; -Calendar._TT["TT_DATE_FORMAT"] = "%a, %e. %b"; - -Calendar._TT["WK"] = "сед."; -Calendar._TT["TIME"] = "Време:"; diff --git a/public/javascripts/calendar/lang/calendar-sr-yu.js b/public/javascripts/calendar/lang/calendar-sr-yu.js new file mode 100644 index 000000000..8fd5ceb83 --- /dev/null +++ b/public/javascripts/calendar/lang/calendar-sr-yu.js @@ -0,0 +1,127 @@ +// ** I18N + +// Calendar SR language +// Author: Dragan Matic, +// Encoding: any +// Distributed under the same terms as the calendar itself. + +// For translators: please use UTF-8 if possible. We strongly believe that +// Unicode is the answer to a real internationalized world. Also please +// include your contact information in the header, as can be seen above. + +// full day names +Calendar._DN = new Array +("nedelja", + "ponedeljak", + "utorak", + "sreda", + "četvrtak", + "petak", + "subota", + "nedelja"); + +// Please note that the following array of short day names (and the same goes +// for short month names, _SMN) isn't absolutely necessary. We give it here +// for exemplification on how one can customize the short day names, but if +// they are simply the first N letters of the full name you can simply say: +// +// Calendar._SDN_len = N; // short day name length +// Calendar._SMN_len = N; // short month name length +// +// If N = 3 then this is not needed either since we assume a value of 3 if not +// present, to be compatible with translation files that were written before +// this feature. + +// short day names +Calendar._SDN = new Array +("ned", + "pon", + "uto", + "sre", + "čet", + "pet", + "sub", + "ned"); + +// First day of the week. "0" means display Sunday first, "1" means display +// Monday first, etc. +Calendar._FD = 1; + +// full month names +Calendar._MN = new Array +("januar", + "februar", + "mart", + "april", + "maj", + "jun", + "jul", + "avgust", + "septembar", + "oktobar", + "novembar", + "decembar"); + +// short month names +Calendar._SMN = new Array +("jan", + "feb", + "mar", + "apr", + "maj", + "jun", + "jul", + "avg", + "sep", + "okt", + "nov", + "dec"); + +// tooltips +Calendar._TT = {}; +Calendar._TT["INFO"] = "O kalendaru"; + +Calendar._TT["ABOUT"] = +"DHTML birač datuma/vremena\n" + +"(c) dynarch.com 2002-2005 / Autor: Mihai Bazon\n" + // don't translate this this ;-) +"Za noviju verziju posetite: http://www.dynarch.com/projects/calendar/\n" + +"Distribuira se pod GNU LGPL. Pogledajte http://gnu.org/licenses/lgpl.html za detalje." + +"\n\n" + +"Izbor datuma:\n" + +"- Koristite \xab, \xbb tastere za izbor godine\n" + +"- Koristite " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " tastere za izbor meseca\n" + +"- Zadržite taster miša na bilo kom tasteru iznad za brži izbor."; +Calendar._TT["ABOUT_TIME"] = "\n\n" + +"Izbor vremena:\n" + +"- Kliknite na bilo koji deo vremena za povećanje\n" + +"- ili Shift-klik za umanjenje\n" + +"- ili kliknite i prevucite za brži odabir."; + +Calendar._TT["PREV_YEAR"] = "Prethodna godina (zadržati za meni)"; +Calendar._TT["PREV_MONTH"] = "Prethodni mesec (zadržati za meni)"; +Calendar._TT["GO_TODAY"] = "Na današnji dan"; +Calendar._TT["NEXT_MONTH"] = "Naredni mesec (zadržati za meni)"; +Calendar._TT["NEXT_YEAR"] = "Naredna godina (zadržati za meni)"; +Calendar._TT["SEL_DATE"] = "Izbor datuma"; +Calendar._TT["DRAG_TO_MOVE"] = "Prevucite za premeštanje"; +Calendar._TT["PART_TODAY"] = " (danas)"; + +// the following is to inform that "%s" is to be the first day of week +// %s will be replaced with the day name. +Calendar._TT["DAY_FIRST"] = "%s kao prvi dan u sedmici"; + +// This may be locale-dependent. It specifies the week-end days, as an array +// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1 +// means Monday, etc. +Calendar._TT["WEEKEND"] = "6,7"; + +Calendar._TT["CLOSE"] = "Zatvori"; +Calendar._TT["TODAY"] = "Danas"; +Calendar._TT["TIME_PART"] = "(Shift-) klik ili prevlačenje za izmenu vrednosti"; + +// date formats +Calendar._TT["DEF_DATE_FORMAT"] = "%d.%m.%Y."; +Calendar._TT["TT_DATE_FORMAT"] = "%a, %e. %b"; + +Calendar._TT["WK"] = "sed."; +Calendar._TT["TIME"] = "Vreme:"; diff --git a/public/javascripts/calendar/lang/calendar-sr.js b/public/javascripts/calendar/lang/calendar-sr.js index 676373349..2fa58d73c 100644 --- a/public/javascripts/calendar/lang/calendar-sr.js +++ b/public/javascripts/calendar/lang/calendar-sr.js @@ -1,127 +1,127 @@ -// ** I18N - -// Calendar SR language -// Author: Dragan Matic, -// Encoding: any -// Distributed under the same terms as the calendar itself. - -// For translators: please use UTF-8 if possible. We strongly believe that -// Unicode is the answer to a real internationalized world. Also please -// include your contact information in the header, as can be seen above. - -// full day names -Calendar._DN = new Array -("Nedelja", - "Ponedeljak", - "Utorak", - "Sreda", - "Četvrtak", - "Petak", - "Subota", - "Nedelja"); - -// Please note that the following array of short day names (and the same goes -// for short month names, _SMN) isn't absolutely necessary. We give it here -// for exemplification on how one can customize the short day names, but if -// they are simply the first N letters of the full name you can simply say: -// -// Calendar._SDN_len = N; // short day name length -// Calendar._SMN_len = N; // short month name length -// -// If N = 3 then this is not needed either since we assume a value of 3 if not -// present, to be compatible with translation files that were written before -// this feature. - -// short day names -Calendar._SDN = new Array -("Ned", - "Pon", - "Uto", - "Sre", - "Čet", - "Pet", - "Sub", - "Ned"); - -// First day of the week. "0" means display Sunday first, "1" means display -// Monday first, etc. -Calendar._FD = 1; - -// full month names -Calendar._MN = new Array -("Januar", - "Februar", - "Mart", - "April", - "Maj", - "Jun", - "Jul", - "Avgust", - "Septembar", - "Oktobar", - "Novembar", - "Decembar"); - -// short month names -Calendar._SMN = new Array -("jan", - "feb", - "mar", - "apr", - "maj", - "jun", - "jul", - "avg", - "sep", - "okt", - "nov", - "dec"); - -// tooltips -Calendar._TT = {}; -Calendar._TT["INFO"] = "O kalendaru"; - -Calendar._TT["ABOUT"] = -"DHTML birač datuma/vremena\n" + -"(c) dynarch.com 2002-2005 / Autor: Mihai Bazon\n" + // don't translate this this ;-) -"Za noviju verziju posetite: http://www.dynarch.com/projects/calendar/\n" + -"Distribuira se pod GNU LGPL. Pogledajte http://gnu.org/licenses/lgpl.html za detalje." + -"\n\n" + -"Izbor datuma:\n" + -"- Koristite \xab, \xbb tastere za izbor godine\n" + -"- Koristite " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " tastere za izbor meseca\n" + -"- Zadržite taster miša na bilo kom tasteru iznad za brži izbor."; -Calendar._TT["ABOUT_TIME"] = "\n\n" + -"Izbor vremena:\n" + -"- Kliknite na bilo koji deo vremena za povećanje\n" + -"- ili Shift-klik za umanjenje\n" + -"- ili kliknite i prevucite za brži odabir."; - -Calendar._TT["PREV_YEAR"] = "Prethodna godina (zadržati za meni)"; -Calendar._TT["PREV_MONTH"] = "Prethodni mesec (zadržati za meni)"; -Calendar._TT["GO_TODAY"] = "Na današnji dan"; -Calendar._TT["NEXT_MONTH"] = "Naredni mesec (zadržati za meni)"; -Calendar._TT["NEXT_YEAR"] = "Naredna godina (zadržati za meni)"; -Calendar._TT["SEL_DATE"] = "Izbor datuma"; -Calendar._TT["DRAG_TO_MOVE"] = "Prevucite za premeštanje"; -Calendar._TT["PART_TODAY"] = " (danas)"; - -// the following is to inform that "%s" is to be the first day of week -// %s will be replaced with the day name. -Calendar._TT["DAY_FIRST"] = "%s kao prvi dan u sedmici"; - -// This may be locale-dependent. It specifies the week-end days, as an array -// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1 -// means Monday, etc. -Calendar._TT["WEEKEND"] = "6,7"; - -Calendar._TT["CLOSE"] = "Zatvori"; -Calendar._TT["TODAY"] = "Danas"; -Calendar._TT["TIME_PART"] = "(Shift-) klik ili prevlačenje za izmenu vrednosti"; - -// date formats -Calendar._TT["DEF_DATE_FORMAT"] = "%d.%m.%Y."; -Calendar._TT["TT_DATE_FORMAT"] = "%a, %e. %b"; - -Calendar._TT["WK"] = "sed."; -Calendar._TT["TIME"] = "Vreme:"; +// ** I18N + +// Calendar SR language +// Author: Dragan Matic, +// Encoding: any +// Distributed under the same terms as the calendar itself. + +// For translators: please use UTF-8 if possible. We strongly believe that +// Unicode is the answer to a real internationalized world. Also please +// include your contact information in the header, as can be seen above. + +// full day names +Calendar._DN = new Array +("недеља", + "понедељак", + "уторак", + "среда", + "четвртак", + "петак", + "субота", + "недеља"); + +// Please note that the following array of short day names (and the same goes +// for short month names, _SMN) isn't absolutely necessary. We give it here +// for exemplification on how one can customize the short day names, but if +// they are simply the first N letters of the full name you can simply say: +// +// Calendar._SDN_len = N; // short day name length +// Calendar._SMN_len = N; // short month name length +// +// If N = 3 then this is not needed either since we assume a value of 3 if not +// present, to be compatible with translation files that were written before +// this feature. + +// short day names +Calendar._SDN = new Array +("нед", + "пон", + "уто", + "сре", + "чет", + "пет", + "суб", + "нед"); + +// First day of the week. "0" means display Sunday first, "1" means display +// Monday first, etc. +Calendar._FD = 1; + +// full month names +Calendar._MN = new Array +("јануар", + "фебруар", + "март", + "април", + "мај", + "јун", + "јул", + "август", + "септембар", + "октобар", + "новембар", + "децембар"); + +// short month names +Calendar._SMN = new Array +("јан", + "феб", + "мар", + "апр", + "мај", + "јун", + "јул", + "авг", + "сеп", + "окт", + "нов", + "дец"); + +// tooltips +Calendar._TT = {}; +Calendar._TT["INFO"] = "О календару"; + +Calendar._TT["ABOUT"] = +"DHTML бирач датума/времена\n" + +"(c) dynarch.com 2002-2005 / Аутор: Mihai Bazon\n" + // don't translate this this ;-) +"За новију верзију посетите: http://www.dynarch.com/projects/calendar/\n" + +"Дистрибуира се под GNU LGPL. Погледајте http://gnu.org/licenses/lgpl.html за детаљe." + +"\n\n" + +"Избор датума:\n" + +"- Користите \xab, \xbb тастере за избор године\n" + +"- Користите " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " тастере за избор месеца\n" + +"- Задржите тастер миша на било ком тастеру изнад за бржи избор."; +Calendar._TT["ABOUT_TIME"] = "\n\n" + +"Избор времена:\n" + +"- Кликните на било који део времена за повећање\n" + +"- или Shift-клик за умањење\n" + +"- или кликните и превуците за бржи одабир."; + +Calendar._TT["PREV_YEAR"] = "Претходна година (задржати за мени)"; +Calendar._TT["PREV_MONTH"] = "Претходни месец (задржати за мени)"; +Calendar._TT["GO_TODAY"] = "На данашњи дан"; +Calendar._TT["NEXT_MONTH"] = "Наредни месец (задржати за мени)"; +Calendar._TT["NEXT_YEAR"] = "Наредна година (задржати за мени)"; +Calendar._TT["SEL_DATE"] = "Избор датума"; +Calendar._TT["DRAG_TO_MOVE"] = "Превуците за премештање"; +Calendar._TT["PART_TODAY"] = " (данас)"; + +// the following is to inform that "%s" is to be the first day of week +// %s will be replaced with the day name. +Calendar._TT["DAY_FIRST"] = "%s као први дан у седмици"; + +// This may be locale-dependent. It specifies the week-end days, as an array +// of comma-separated numbers. The numbers are from 0 to 6: 0 means Sunday, 1 +// means Monday, etc. +Calendar._TT["WEEKEND"] = "6,7"; + +Calendar._TT["CLOSE"] = "Затвори"; +Calendar._TT["TODAY"] = "Данас"; +Calendar._TT["TIME_PART"] = "(Shift-) клик или превлачење за измену вредности"; + +// date formats +Calendar._TT["DEF_DATE_FORMAT"] = "%d.%m.%Y."; +Calendar._TT["TT_DATE_FORMAT"] = "%a, %e. %b"; + +Calendar._TT["WK"] = "сед."; +Calendar._TT["TIME"] = "Време:"; diff --git a/public/javascripts/jstoolbar/lang/jstoolbar-it.js b/public/javascripts/jstoolbar/lang/jstoolbar-it.js index bf7fcefb2..99749b40c 100644 --- a/public/javascripts/jstoolbar/lang/jstoolbar-it.js +++ b/public/javascripts/jstoolbar/lang/jstoolbar-it.js @@ -1,3 +1,6 @@ +// Italian translation +// by Diego Pierotto (ita.translations@tiscali.it) + jsToolBar.strings = {}; jsToolBar.strings['Strong'] = 'Grassetto'; jsToolBar.strings['Italic'] = 'Corsivo'; @@ -8,7 +11,7 @@ jsToolBar.strings['Heading 1'] = 'Titolo 1'; jsToolBar.strings['Heading 2'] = 'Titolo 2'; jsToolBar.strings['Heading 3'] = 'Titolo 3'; jsToolBar.strings['Unordered list'] = 'Elenco puntato'; -jsToolBar.strings['Ordered list'] = 'Numerazione'; +jsToolBar.strings['Ordered list'] = 'Elenco numerato'; jsToolBar.strings['Quote'] = 'Aumenta rientro'; jsToolBar.strings['Unquote'] = 'Riduci rientro'; jsToolBar.strings['Preformatted text'] = 'Testo preformattato'; diff --git a/public/javascripts/jstoolbar/lang/jstoolbar-mk.js b/public/javascripts/jstoolbar/lang/jstoolbar-mk.js index 3af63a1cc..30c68ec6c 100644 --- a/public/javascripts/jstoolbar/lang/jstoolbar-mk.js +++ b/public/javascripts/jstoolbar/lang/jstoolbar-mk.js @@ -1,16 +1,17 @@ jsToolBar.strings = {}; -jsToolBar.strings['Strong'] = 'Strong'; -jsToolBar.strings['Italic'] = 'Italic'; -jsToolBar.strings['Underline'] = 'Underline'; -jsToolBar.strings['Deleted'] = 'Deleted'; -jsToolBar.strings['Code'] = 'Inline Code'; -jsToolBar.strings['Heading 1'] = 'Heading 1'; -jsToolBar.strings['Heading 2'] = 'Heading 2'; -jsToolBar.strings['Heading 3'] = 'Heading 3'; -jsToolBar.strings['Unordered list'] = 'Unordered list'; +jsToolBar.strings['Strong'] = 'Задебелен'; +jsToolBar.strings['Italic'] = 'Закосен'; +jsToolBar.strings['Underline'] = 'Подвлечен'; +jsToolBar.strings['Deleted'] = 'Прецртан'; +jsToolBar.strings['Code'] = 'Код'; +jsToolBar.strings['Heading 1'] = 'Заглавје 1'; +jsToolBar.strings['Heading 2'] = 'Заглавје 2'; +jsToolBar.strings['Heading 3'] = 'Заглавје 3'; +jsToolBar.strings['Unordered list'] = 'Неподредена листа'; jsToolBar.strings['Ordered list'] = 'Подредена листа'; jsToolBar.strings['Quote'] = 'Цитат'; jsToolBar.strings['Unquote'] = 'Отстрани цитат'; -jsToolBar.strings['Preformatted text'] = 'Preformatted text'; -jsToolBar.strings['Wiki link'] = 'Линк до вики страна'; +jsToolBar.strings['Preformatted text'] = 'Форматиран текст'; +jsToolBar.strings['Wiki link'] = 'Врска до вики страна'; jsToolBar.strings['Image'] = 'Слика'; + diff --git a/public/javascripts/jstoolbar/lang/jstoolbar-sr-yu.js b/public/javascripts/jstoolbar/lang/jstoolbar-sr-yu.js new file mode 100644 index 000000000..0e231e029 --- /dev/null +++ b/public/javascripts/jstoolbar/lang/jstoolbar-sr-yu.js @@ -0,0 +1,16 @@ +jsToolBar.strings = {}; +jsToolBar.strings['Strong'] = 'Podebljano'; +jsToolBar.strings['Italic'] = 'Kurziv'; +jsToolBar.strings['Underline'] = 'Podvučeno'; +jsToolBar.strings['Deleted'] = 'Obrisano'; +jsToolBar.strings['Code'] = 'Ugrađeni kôd'; +jsToolBar.strings['Heading 1'] = 'Naslov 1'; +jsToolBar.strings['Heading 2'] = 'Naslov 2'; +jsToolBar.strings['Heading 3'] = 'Naslov 3'; +jsToolBar.strings['Unordered list'] = 'Lista nabrajanja'; +jsToolBar.strings['Ordered list'] = 'Uređena lista'; +jsToolBar.strings['Quote'] = 'Pod navodnicima'; +jsToolBar.strings['Unquote'] = 'Ukloni navodnike'; +jsToolBar.strings['Preformatted text'] = 'Prethodno formatiran tekst'; +jsToolBar.strings['Wiki link'] = 'Veza prema Wiki strani'; +jsToolBar.strings['Image'] = 'Slika'; diff --git a/public/javascripts/jstoolbar/lang/jstoolbar-sr.js b/public/javascripts/jstoolbar/lang/jstoolbar-sr.js index 0e231e029..75a768ad0 100644 --- a/public/javascripts/jstoolbar/lang/jstoolbar-sr.js +++ b/public/javascripts/jstoolbar/lang/jstoolbar-sr.js @@ -1,16 +1,16 @@ -jsToolBar.strings = {}; -jsToolBar.strings['Strong'] = 'Podebljano'; -jsToolBar.strings['Italic'] = 'Kurziv'; -jsToolBar.strings['Underline'] = 'Podvučeno'; -jsToolBar.strings['Deleted'] = 'Obrisano'; -jsToolBar.strings['Code'] = 'Ugrađeni kôd'; -jsToolBar.strings['Heading 1'] = 'Naslov 1'; -jsToolBar.strings['Heading 2'] = 'Naslov 2'; -jsToolBar.strings['Heading 3'] = 'Naslov 3'; -jsToolBar.strings['Unordered list'] = 'Lista nabrajanja'; -jsToolBar.strings['Ordered list'] = 'Uređena lista'; -jsToolBar.strings['Quote'] = 'Pod navodnicima'; -jsToolBar.strings['Unquote'] = 'Ukloni navodnike'; -jsToolBar.strings['Preformatted text'] = 'Prethodno formatiran tekst'; -jsToolBar.strings['Wiki link'] = 'Veza prema Wiki strani'; -jsToolBar.strings['Image'] = 'Slika'; +jsToolBar.strings = {}; +jsToolBar.strings['Strong'] = 'Подебљано'; +jsToolBar.strings['Italic'] = 'Курзив'; +jsToolBar.strings['Underline'] = 'Подвучено'; +jsToolBar.strings['Deleted'] = 'Обрисано'; +jsToolBar.strings['Code'] = 'Уграђени кôд'; +jsToolBar.strings['Heading 1'] = 'Наслов 1'; +jsToolBar.strings['Heading 2'] = 'Наслов 2'; +jsToolBar.strings['Heading 3'] = 'Наслов 3'; +jsToolBar.strings['Unordered list'] = 'Листа набрајања'; +jsToolBar.strings['Ordered list'] = 'Уређена листа'; +jsToolBar.strings['Quote'] = 'Под наводницима'; +jsToolBar.strings['Unquote'] = 'Уклони наводнике'; +jsToolBar.strings['Preformatted text'] = 'Претходно форматиран текст'; +jsToolBar.strings['Wiki link'] = 'Веза према Wiki страни'; +jsToolBar.strings['Image'] = 'Слика'; diff --git a/public/stylesheets/calendar.css b/public/stylesheets/calendar.css index c8d2dd619..288ed724f 100644 --- a/public/stylesheets/calendar.css +++ b/public/stylesheets/calendar.css @@ -8,7 +8,7 @@ img.calendar-trigger { div.calendar { position: relative; z-index: 30;} -.calendar, .calendar table { +div.calendar, div.calendar table { border: 1px solid #556; font-size: 11px; color: #000; @@ -19,16 +19,16 @@ div.calendar { position: relative; z-index: 30;} /* Header part -- contains navigation buttons and day names. */ -.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */ +div.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */ text-align: center; /* They are the navigation buttons */ padding: 2px; /* Make the buttons seem like they're pressing */ } -.calendar .nav { +div.calendar .nav { background: #467aa7; } -.calendar thead .title { /* This holds the current "month, year" */ +div.calendar thead .title { /* This holds the current "month, year" */ font-weight: bold; /* Pressing it will take you to the current date */ text-align: center; background: #fff; @@ -36,79 +36,79 @@ div.calendar { position: relative; z-index: 30;} padding: 2px; } -.calendar thead .headrow { /* Row containing navigation buttons */ +div.calendar thead .headrow { /* Row containing navigation buttons */ background: #467aa7; color: #fff; } -.calendar thead .daynames { /* Row containing the day names */ +div.calendar thead .daynames { /* Row containing the day names */ background: #bdf; } -.calendar thead .name { /* Cells containing the day names */ +div.calendar thead .name { /* Cells containing the day names */ border-bottom: 1px solid #556; padding: 2px; text-align: center; color: #000; } -.calendar thead .weekend { /* How a weekend day name shows in header */ +div.calendar thead .weekend { /* How a weekend day name shows in header */ color: #a66; } -.calendar thead .hilite { /* How do the buttons in header appear when hover */ +div.calendar thead .hilite { /* How do the buttons in header appear when hover */ background-color: #80b0da; color: #000; padding: 1px; } -.calendar thead .active { /* Active (pressed) buttons in header */ +div.calendar thead .active { /* Active (pressed) buttons in header */ background-color: #77c; padding: 2px 0px 0px 2px; } /* The body part -- contains all the days in month. */ -.calendar tbody .day { /* Cells containing month days dates */ +div.calendar tbody .day { /* Cells containing month days dates */ width: 2em; color: #456; text-align: right; padding: 2px 4px 2px 2px; } -.calendar tbody .day.othermonth { +div.calendar tbody .day.othermonth { font-size: 80%; color: #bbb; } -.calendar tbody .day.othermonth.oweekend { +div.calendar tbody .day.othermonth.oweekend { color: #fbb; } -.calendar table .wn { +div.calendar table .wn { padding: 2px 3px 2px 2px; border-right: 1px solid #000; background: #bdf; } -.calendar tbody .rowhilite td { +div.calendar tbody .rowhilite td { background: #def; } -.calendar tbody .rowhilite td.wn { +div.calendar tbody .rowhilite td.wn { background: #80b0da; } -.calendar tbody td.hilite { /* Hovered cells */ +div.calendar tbody td.hilite { /* Hovered cells */ background: #80b0da; padding: 1px 3px 1px 1px; border: 1px solid #bbb; } -.calendar tbody td.active { /* Active (pressed) cells */ +div.calendar tbody td.active { /* Active (pressed) cells */ background: #cde; padding: 2px 2px 0px 2px; } -.calendar tbody td.selected { /* Cell showing today date */ +div.calendar tbody td.selected { /* Cell showing today date */ font-weight: bold; border: 1px solid #000; padding: 1px 3px 1px 1px; @@ -116,55 +116,55 @@ div.calendar { position: relative; z-index: 30;} color: #000; } -.calendar tbody td.weekend { /* Cells showing weekend days */ +div.calendar tbody td.weekend { /* Cells showing weekend days */ color: #a66; } -.calendar tbody td.today { /* Cell showing selected date */ +div.calendar tbody td.today { /* Cell showing selected date */ font-weight: bold; color: #f00; } -.calendar tbody .disabled { color: #999; } +div.calendar tbody .disabled { color: #999; } -.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */ +div.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */ visibility: hidden; } -.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */ +div.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */ display: none; } /* The footer part -- status bar and "Close" button */ -.calendar tfoot .footrow { /* The in footer (only one right now) */ +div.calendar tfoot .footrow { /* The in footer (only one right now) */ text-align: center; background: #556; color: #fff; } -.calendar tfoot .ttip { /* Tooltip (status bar) cell */ +div.calendar tfoot .ttip { /* Tooltip (status bar) cell */ background: #fff; color: #445; border-top: 1px solid #556; padding: 1px; } -.calendar tfoot .hilite { /* Hover style for buttons in footer */ +div.calendar tfoot .hilite { /* Hover style for buttons in footer */ background: #aaf; border: 1px solid #04f; color: #000; padding: 1px; } -.calendar tfoot .active { /* Active (pressed) style for buttons in footer */ +div.calendar tfoot .active { /* Active (pressed) style for buttons in footer */ background: #77c; padding: 2px 0px 0px 2px; } /* Combo boxes (menus that display months/years for direct selection) */ -.calendar .combo { +div.calendar .combo { position: absolute; display: none; top: 0px; @@ -178,59 +178,59 @@ div.calendar { position: relative; z-index: 30;} z-index: 100; } -.calendar .combo .label, -.calendar .combo .label-IEfix { +div.calendar .combo .label, +div.calendar .combo .label-IEfix { text-align: center; padding: 1px; } -.calendar .combo .label-IEfix { +div.calendar .combo .label-IEfix { width: 4em; } -.calendar .combo .hilite { +div.calendar .combo .hilite { background: #acf; } -.calendar .combo .active { +div.calendar .combo .active { border-top: 1px solid #46a; border-bottom: 1px solid #46a; background: #eef; font-weight: bold; } -.calendar td.time { +div.calendar td.time { border-top: 1px solid #000; padding: 1px 0px; text-align: center; background-color: #f4f0e8; } -.calendar td.time .hour, -.calendar td.time .minute, -.calendar td.time .ampm { +div.calendar td.time .hour, +div.calendar td.time .minute, +div.calendar td.time .ampm { padding: 0px 3px 0px 4px; border: 1px solid #889; font-weight: bold; background-color: #fff; } -.calendar td.time .ampm { +div.calendar td.time .ampm { text-align: center; } -.calendar td.time .colon { +div.calendar td.time .colon { padding: 0px 2px 0px 3px; font-weight: bold; } -.calendar td.time span.hilite { +div.calendar td.time span.hilite { border-color: #000; background-color: #667; color: #fff; } -.calendar td.time span.active { +div.calendar td.time span.active { border-color: #f00; background-color: #000; color: #0f0; diff --git a/public/stylesheets/context_menu_rtl.css b/public/stylesheets/context_menu_rtl.css new file mode 100644 index 000000000..205bb9184 --- /dev/null +++ b/public/stylesheets/context_menu_rtl.css @@ -0,0 +1,9 @@ +#context-menu li.folder ul { left:auto; right:168px; } +#context-menu li.folder>ul { left:auto; right:148px; } +#context-menu li a.submenu { background:url("../images/bullet_arrow_left.png") left no-repeat; } + +#context-menu a { + background-position: 100% 40%; + padding-right: 20px; + padding-left: 0px; +} diff --git a/public/themes/rtl/stylesheets/application.css b/public/stylesheets/rtl.css similarity index 84% rename from public/themes/rtl/stylesheets/application.css rename to public/stylesheets/rtl.css index 74f20b43c..5dfe320bc 100644 --- a/public/themes/rtl/stylesheets/application.css +++ b/public/stylesheets/rtl.css @@ -1,5 +1,3 @@ -@import url(../../alternate/stylesheets/application.css); - body, #wrapper { direction: rtl;} #quick-search { float: left; } @@ -20,11 +18,23 @@ body, #wrapper { direction: rtl;} float: right; margin-left: auto; } -.tabular p { clear: right; } +.tabular p +{ + clear: right; +} .tabular label.block { text-align: right; } - -.icon { background-position: 100% 40%; padding-right: 20px; padding-left: 0px; } -div#activity dt, #search-results dt { background-position: 100% 50%; padding-right: 20px; padding-left: 0px; } +.icon +{ + background-position: 100% 40%; + padding-right: 20px; + padding-left: 0px; +} +div#activity dt, #search-results dt +{ + background-position: 100% 50%; + padding-right: 20px; + padding-left: 0px; +} #content .tabs ul li { float: right; } #content .tabs ul { padding-left: auto; padding-right: 1em; } table.progress { float: right; } @@ -48,3 +58,5 @@ table.list td.buttons a { padding-right: 20px; } div#issue-changesets { float: left; margin-right: 1em; margin-left: 0 } #activity dt, .journal { clear: right; } .journal-link { float: left; } +div.wiki pre { direction: ltr; } + diff --git a/public/themes/rtl/stylesheets/context_menu.css b/public/themes/rtl/stylesheets/context_menu.css deleted file mode 100644 index c400d3e84..000000000 --- a/public/themes/rtl/stylesheets/context_menu.css +++ /dev/null @@ -1,6 +0,0 @@ -@import url(../../../stylesheets/context_menu.css); - -#context-menu li.folder ul { left:auto; right:168px; } -#context-menu li.folder>ul { left:auto; right:148px; } - -#context-menu li a.submenu { background:url("../../../images/bullet_arrow_left.png") left no-repeat; } diff --git a/test/exemplars/attachment_exemplar.rb b/test/exemplars/attachment_exemplar.rb index 8100fe906..4baaf530f 100644 --- a/test/exemplars/attachment_exemplar.rb +++ b/test/exemplars/attachment_exemplar.rb @@ -12,6 +12,6 @@ class Attachment < ActiveRecord::Base end def self.generate_file - @file = mock_file + @file = ActiveSupport::TestCase.mock_file end end diff --git a/test/fixtures/enabled_modules.yml b/test/fixtures/enabled_modules.yml index 0a83168df..5f2ba63d1 100644 --- a/test/fixtures/enabled_modules.yml +++ b/test/fixtures/enabled_modules.yml @@ -63,3 +63,35 @@ enabled_modules_016: name: boards project_id: 2 id: 16 +enabled_modules_017: + name: calendar + project_id: 1 + id: 17 +enabled_modules_018: + name: gantt + project_id: 1 + id: 18 +enabled_modules_019: + name: calendar + project_id: 2 + id: 19 +enabled_modules_020: + name: gantt + project_id: 2 + id: 20 +enabled_modules_021: + name: calendar + project_id: 3 + id: 21 +enabled_modules_022: + name: gantt + project_id: 3 + id: 22 +enabled_modules_023: + name: calendar + project_id: 5 + id: 23 +enabled_modules_024: + name: gantt + project_id: 5 + id: 24 diff --git a/test/functional/activities_controller_test.rb b/test/functional/activities_controller_test.rb new file mode 100644 index 000000000..ba9c33985 --- /dev/null +++ b/test/functional/activities_controller_test.rb @@ -0,0 +1,87 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class ActivitiesControllerTest < ActionController::TestCase + fixtures :all + + def test_project_index + get :index, :id => 1, :with_subprojects => 0 + assert_response :success + assert_template 'index' + assert_not_nil assigns(:events_by_day) + + assert_tag :tag => "h3", + :content => /#{2.days.ago.to_date.day}/, + :sibling => { :tag => "dl", + :child => { :tag => "dt", + :attributes => { :class => /issue-edit/ }, + :child => { :tag => "a", + :content => /(#{IssueStatus.find(2).name})/, + } + } + } + end + + def test_previous_project_index + get :index, :id => 1, :from => 3.days.ago.to_date + assert_response :success + assert_template 'index' + assert_not_nil assigns(:events_by_day) + + assert_tag :tag => "h3", + :content => /#{3.day.ago.to_date.day}/, + :sibling => { :tag => "dl", + :child => { :tag => "dt", + :attributes => { :class => /issue/ }, + :child => { :tag => "a", + :content => /#{Issue.find(1).subject}/, + } + } + } + end + + def test_global_index + get :index + assert_response :success + assert_template 'index' + assert_not_nil assigns(:events_by_day) + + assert_tag :tag => "h3", + :content => /#{5.day.ago.to_date.day}/, + :sibling => { :tag => "dl", + :child => { :tag => "dt", + :attributes => { :class => /issue/ }, + :child => { :tag => "a", + :content => /#{Issue.find(5).subject}/, + } + } + } + end + + def test_user_index + get :index, :user_id => 2 + assert_response :success + assert_template 'index' + assert_not_nil assigns(:events_by_day) + + assert_tag :tag => "h3", + :content => /#{3.day.ago.to_date.day}/, + :sibling => { :tag => "dl", + :child => { :tag => "dt", + :attributes => { :class => /issue/ }, + :child => { :tag => "a", + :content => /#{Issue.find(1).subject}/, + } + } + } + end + + def test_index_atom_feed + get :index, :format => 'atom' + assert_response :success + assert_template 'common/feed.atom.rxml' + assert_tag :tag => 'entry', :child => { + :tag => 'link', + :attributes => {:href => 'http://test.host/issues/11'}} + end + +end diff --git a/test/functional/auto_completes_controller_test.rb b/test/functional/auto_completes_controller_test.rb new file mode 100644 index 000000000..25e75fc4b --- /dev/null +++ b/test/functional/auto_completes_controller_test.rb @@ -0,0 +1,20 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class AutoCompletesControllerTest < ActionController::TestCase + fixtures :all + + def test_issues_should_not_be_case_sensitive + get :issues, :project_id => 'ecookbook', :q => 'ReCiPe' + assert_response :success + assert_not_nil assigns(:issues) + assert assigns(:issues).detect {|issue| issue.subject.match /recipe/} + end + + def test_issues_should_return_issue_with_given_id + get :issues, :project_id => 'subproject1', :q => '13' + assert_response :success + assert_not_nil assigns(:issues) + assert assigns(:issues).include?(Issue.find(13)) + end + +end diff --git a/test/functional/context_menus_controller_test.rb b/test/functional/context_menus_controller_test.rb new file mode 100644 index 000000000..764350879 --- /dev/null +++ b/test/functional/context_menus_controller_test.rb @@ -0,0 +1,89 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class ContextMenusControllerTest < ActionController::TestCase + fixtures :all + + def test_context_menu_one_issue + @request.session[:user_id] = 2 + get :issues, :ids => [1] + assert_response :success + assert_template 'context_menu' + assert_tag :tag => 'a', :content => 'Edit', + :attributes => { :href => '/issues/1/edit', + :class => 'icon-edit' } + assert_tag :tag => 'a', :content => 'Closed', + :attributes => { :href => '/issues/1?issue%5Bstatus_id%5D=5', + :class => '' } + assert_tag :tag => 'a', :content => 'Immediate', + :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&issue%5Bpriority_id%5D=8', + :class => '' } + # Versions + assert_tag :tag => 'a', :content => '2.0', + :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&issue%5Bfixed_version_id%5D=3', + :class => '' } + assert_tag :tag => 'a', :content => 'eCookbook Subproject 1 - 2.0', + :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&issue%5Bfixed_version_id%5D=4', + :class => '' } + + assert_tag :tag => 'a', :content => 'Dave Lopper', + :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&issue%5Bassigned_to_id%5D=3', + :class => '' } + assert_tag :tag => 'a', :content => 'Duplicate', + :attributes => { :href => '/projects/ecookbook/issues/1/copy', + :class => 'icon-duplicate' } + assert_tag :tag => 'a', :content => 'Copy', + :attributes => { :href => '/issues/move/new?copy_options%5Bcopy%5D=t&ids%5B%5D=1', + :class => 'icon-copy' } + assert_tag :tag => 'a', :content => 'Move', + :attributes => { :href => '/issues/move/new?ids%5B%5D=1', + :class => 'icon-move' } + assert_tag :tag => 'a', :content => 'Delete', + :attributes => { :href => '/issues/destroy?ids%5B%5D=1', + :class => 'icon-del' } + end + + def test_context_menu_one_issue_by_anonymous + get :issues, :ids => [1] + assert_response :success + assert_template 'context_menu' + assert_tag :tag => 'a', :content => 'Delete', + :attributes => { :href => '#', + :class => 'icon-del disabled' } + end + + def test_context_menu_multiple_issues_of_same_project + @request.session[:user_id] = 2 + get :issues, :ids => [1, 2] + assert_response :success + assert_template 'context_menu' + assert_tag :tag => 'a', :content => 'Edit', + :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&ids%5B%5D=2', + :class => 'icon-edit' } + assert_tag :tag => 'a', :content => 'Immediate', + :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&ids%5B%5D=2&issue%5Bpriority_id%5D=8', + :class => '' } + assert_tag :tag => 'a', :content => 'Dave Lopper', + :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&ids%5B%5D=2&issue%5Bassigned_to_id%5D=3', + :class => '' } + assert_tag :tag => 'a', :content => 'Copy', + :attributes => { :href => '/issues/move/new?copy_options%5Bcopy%5D=t&ids%5B%5D=1&ids%5B%5D=2', + :class => 'icon-copy' } + assert_tag :tag => 'a', :content => 'Move', + :attributes => { :href => '/issues/move/new?ids%5B%5D=1&ids%5B%5D=2', + :class => 'icon-move' } + assert_tag :tag => 'a', :content => 'Delete', + :attributes => { :href => '/issues/destroy?ids%5B%5D=1&ids%5B%5D=2', + :class => 'icon-del' } + end + + def test_context_menu_multiple_issues_of_different_project + @request.session[:user_id] = 2 + get :issues, :ids => [1, 2, 4] + assert_response :success + assert_template 'context_menu' + assert_tag :tag => 'a', :content => 'Delete', + :attributes => { :href => '#', + :class => 'icon-del disabled' } + end + +end diff --git a/test/functional/issue_moves_controller_test.rb b/test/functional/issue_moves_controller_test.rb new file mode 100644 index 000000000..7c4005767 --- /dev/null +++ b/test/functional/issue_moves_controller_test.rb @@ -0,0 +1,99 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class IssueMovesControllerTest < ActionController::TestCase + fixtures :all + + def setup + User.current = nil + end + + def test_create_one_issue_to_another_project + @request.session[:user_id] = 2 + post :create, :id => 1, :new_project_id => 2, :tracker_id => '', :assigned_to_id => '', :status_id => '', :start_date => '', :due_date => '' + assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook' + assert_equal 2, Issue.find(1).project_id + end + + def test_create_one_issue_to_another_project_should_follow_when_needed + @request.session[:user_id] = 2 + post :create, :id => 1, :new_project_id => 2, :follow => '1' + assert_redirected_to '/issues/1' + end + + def test_bulk_create_to_another_project + @request.session[:user_id] = 2 + post :create, :ids => [1, 2], :new_project_id => 2 + assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook' + # Issues moved to project 2 + assert_equal 2, Issue.find(1).project_id + assert_equal 2, Issue.find(2).project_id + # No tracker change + assert_equal 1, Issue.find(1).tracker_id + assert_equal 2, Issue.find(2).tracker_id + end + + def test_bulk_create_to_another_tracker + @request.session[:user_id] = 2 + post :create, :ids => [1, 2], :new_tracker_id => 2 + assert_redirected_to :controller => 'issues', :action => 'index', :project_id => 'ecookbook' + assert_equal 2, Issue.find(1).tracker_id + assert_equal 2, Issue.find(2).tracker_id + end + + def test_bulk_copy_to_another_project + @request.session[:user_id] = 2 + assert_difference 'Issue.count', 2 do + assert_no_difference 'Project.find(1).issues.count' do + post :create, :ids => [1, 2], :new_project_id => 2, :copy_options => {:copy => '1'} + end + end + assert_redirected_to 'projects/ecookbook/issues' + end + + context "#create via bulk copy" do + should "allow not changing the issue's attributes" do + @request.session[:user_id] = 2 + issue_before_move = Issue.find(1) + assert_difference 'Issue.count', 1 do + assert_no_difference 'Project.find(1).issues.count' do + post :create, :ids => [1], :new_project_id => 2, :copy_options => {:copy => '1'}, :new_tracker_id => '', :assigned_to_id => '', :status_id => '', :start_date => '', :due_date => '' + end + end + issue_after_move = Issue.first(:order => 'id desc', :conditions => {:project_id => 2}) + assert_equal issue_before_move.tracker_id, issue_after_move.tracker_id + assert_equal issue_before_move.status_id, issue_after_move.status_id + assert_equal issue_before_move.assigned_to_id, issue_after_move.assigned_to_id + end + + should "allow changing the issue's attributes" do + # Fixes random test failure with Mysql + # where Issue.all(:limit => 2, :order => 'id desc', :conditions => {:project_id => 2}) doesn't return the expected results + Issue.delete_all("project_id=2") + + @request.session[:user_id] = 2 + assert_difference 'Issue.count', 2 do + assert_no_difference 'Project.find(1).issues.count' do + post :create, :ids => [1, 2], :new_project_id => 2, :copy_options => {:copy => '1'}, :new_tracker_id => '', :assigned_to_id => 4, :status_id => 3, :start_date => '2009-12-01', :due_date => '2009-12-31' + end + end + + copied_issues = Issue.all(:limit => 2, :order => 'id desc', :conditions => {:project_id => 2}) + assert_equal 2, copied_issues.size + copied_issues.each do |issue| + assert_equal 2, issue.project_id, "Project is incorrect" + assert_equal 4, issue.assigned_to_id, "Assigned to is incorrect" + assert_equal 3, issue.status_id, "Status is incorrect" + assert_equal '2009-12-01', issue.start_date.to_s, "Start date is incorrect" + assert_equal '2009-12-31', issue.due_date.to_s, "Due date is incorrect" + end + end + end + + def test_copy_to_another_project_should_follow_when_needed + @request.session[:user_id] = 2 + post :create, :ids => [1], :new_project_id => 2, :copy_options => {:copy => '1'}, :follow => '1' + issue = Issue.first(:order => 'id DESC') + assert_redirected_to :controller => 'issues', :action => 'show', :id => issue + end + +end diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index 92e6fd30a..7d69db8ea 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -231,13 +231,6 @@ class IssuesControllerTest < ActionController::TestCase assert_equal columns, session[:query][:column_names].map(&:to_s) end - def test_changes - get :changes, :project_id => 1 - assert_response :success - assert_not_nil assigns(:journals) - assert_equal 'application/atom+xml', @response.content_type - end - def test_show_by_anonymous get :show, :id => 1 assert_response :success @@ -307,7 +300,7 @@ class IssuesControllerTest < ActionController::TestCase def test_show_atom get :show, :id => 2, :format => 'atom' assert_response :success - assert_template 'changes.rxml' + assert_template 'journals/index.rxml' # Inline image assert_select 'content', :text => Regexp.new(Regexp.quote('http://test.host/attachments/download/10')) end @@ -365,7 +358,7 @@ class IssuesControllerTest < ActionController::TestCase def test_update_new_form @request.session[:user_id] = 2 - xhr :post, :update_form, :project_id => 1, + xhr :post, :new, :project_id => 1, :issue => {:tracker_id => 2, :subject => 'This is the test_new issue', :description => 'This is the description', @@ -617,7 +610,7 @@ class IssuesControllerTest < ActionController::TestCase def test_update_edit_form @request.session[:user_id] = 2 - xhr :post, :update_form, :project_id => 1, + xhr :post, :new, :project_id => 1, :id => 1, :issue => {:tracker_id => 2, :subject => 'This is the test_new issue', @@ -634,20 +627,6 @@ class IssuesControllerTest < ActionController::TestCase assert_equal 'This is the test_new issue', issue.subject end - def test_reply_to_issue - @request.session[:user_id] = 2 - get :reply, :id => 1 - assert_response :success - assert_select_rjs :show, "update" - end - - def test_reply_to_note - @request.session[:user_id] = 2 - get :reply, :id => 1, :journal_id => 2 - assert_response :success - assert_select_rjs :show, "update" - end - def test_update_using_invalid_http_verbs @request.session[:user_id] = 2 subject = 'Updated by an invalid http verb' @@ -931,10 +910,10 @@ class IssuesControllerTest < ActionController::TestCase assert_tag :select, :attributes => {:name => 'issue[custom_field_values][1]'} end - def test_bulk_edit + def test_bulk_update @request.session[:user_id] = 2 # update issues priority - post :bulk_edit, :ids => [1, 2], :notes => 'Bulk editing', + post :bulk_update, :ids => [1, 2], :notes => 'Bulk editing', :issue => {:priority_id => 7, :assigned_to_id => '', :custom_field_values => {'2' => ''}} @@ -950,10 +929,10 @@ class IssuesControllerTest < ActionController::TestCase assert_equal 1, journal.details.size end - def test_bullk_edit_should_send_a_notification + def test_bullk_update_should_send_a_notification @request.session[:user_id] = 2 ActionMailer::Base.deliveries.clear - post(:bulk_edit, + post(:bulk_update, { :ids => [1, 2], :notes => 'Bulk editing', @@ -968,10 +947,10 @@ class IssuesControllerTest < ActionController::TestCase assert_equal 2, ActionMailer::Base.deliveries.size end - def test_bulk_edit_status + def test_bulk_update_status @request.session[:user_id] = 2 # update issues priority - post :bulk_edit, :ids => [1, 2], :notes => 'Bulk editing status', + post :bulk_update, :ids => [1, 2], :notes => 'Bulk editing status', :issue => {:priority_id => '', :assigned_to_id => '', :status_id => '5'} @@ -981,10 +960,10 @@ class IssuesControllerTest < ActionController::TestCase assert issue.closed? end - def test_bulk_edit_custom_field + def test_bulk_update_custom_field @request.session[:user_id] = 2 # update issues priority - post :bulk_edit, :ids => [1, 2], :notes => 'Bulk editing custom field', + post :bulk_update, :ids => [1, 2], :notes => 'Bulk editing custom field', :issue => {:priority_id => '', :assigned_to_id => '', :custom_field_values => {'2' => '777'}} @@ -999,20 +978,20 @@ class IssuesControllerTest < ActionController::TestCase assert_equal '777', journal.details.first.value end - def test_bulk_unassign + def test_bulk_update_unassign assert_not_nil Issue.find(2).assigned_to @request.session[:user_id] = 2 # unassign issues - post :bulk_edit, :ids => [1, 2], :notes => 'Bulk unassigning', :issue => {:assigned_to_id => 'none'} + post :bulk_update, :ids => [1, 2], :notes => 'Bulk unassigning', :issue => {:assigned_to_id => 'none'} assert_response 302 # check that the issues were updated assert_nil Issue.find(2).assigned_to end - def test_post_bulk_edit_should_allow_fixed_version_to_be_set_to_a_subproject + def test_post_bulk_update_should_allow_fixed_version_to_be_set_to_a_subproject @request.session[:user_id] = 2 - post :bulk_edit, :ids => [1,2], :issue => {:fixed_version_id => 4} + post :bulk_update, :ids => [1,2], :issue => {:fixed_version_id => 4} assert_response :redirect issues = Issue.find([1,2]) @@ -1022,223 +1001,21 @@ class IssuesControllerTest < ActionController::TestCase end end - def test_post_bulk_edit_should_redirect_back_using_the_back_url_parameter + def test_post_bulk_update_should_redirect_back_using_the_back_url_parameter @request.session[:user_id] = 2 - post :bulk_edit, :ids => [1,2], :back_url => '/issues' + post :bulk_update, :ids => [1,2], :back_url => '/issues' assert_response :redirect assert_redirected_to '/issues' end - def test_post_bulk_edit_should_not_redirect_back_using_the_back_url_parameter_off_the_host + def test_post_bulk_update_should_not_redirect_back_using_the_back_url_parameter_off_the_host @request.session[:user_id] = 2 - post :bulk_edit, :ids => [1,2], :back_url => 'http://google.com' + post :bulk_update, :ids => [1,2], :back_url => 'http://google.com' assert_response :redirect assert_redirected_to :controller => 'issues', :action => 'index', :project_id => Project.find(1).identifier end - - def test_perform_move_one_issue_to_another_project - @request.session[:user_id] = 2 - post :perform_move, :id => 1, :new_project_id => 2, :tracker_id => '', :assigned_to_id => '', :status_id => '', :start_date => '', :due_date => '' - assert_redirected_to :action => 'index', :project_id => 'ecookbook' - assert_equal 2, Issue.find(1).project_id - end - - def test_perform_move_one_issue_to_another_project_should_follow_when_needed - @request.session[:user_id] = 2 - post :perform_move, :id => 1, :new_project_id => 2, :follow => '1' - assert_redirected_to '/issues/1' - end - - def test_bulk_perform_move_to_another_project - @request.session[:user_id] = 2 - post :perform_move, :ids => [1, 2], :new_project_id => 2 - assert_redirected_to :action => 'index', :project_id => 'ecookbook' - # Issues moved to project 2 - assert_equal 2, Issue.find(1).project_id - assert_equal 2, Issue.find(2).project_id - # No tracker change - assert_equal 1, Issue.find(1).tracker_id - assert_equal 2, Issue.find(2).tracker_id - end - - def test_bulk_perform_move_to_another_tracker - @request.session[:user_id] = 2 - post :perform_move, :ids => [1, 2], :new_tracker_id => 2 - assert_redirected_to :action => 'index', :project_id => 'ecookbook' - assert_equal 2, Issue.find(1).tracker_id - assert_equal 2, Issue.find(2).tracker_id - end - - def test_bulk_copy_to_another_project - @request.session[:user_id] = 2 - assert_difference 'Issue.count', 2 do - assert_no_difference 'Project.find(1).issues.count' do - post :perform_move, :ids => [1, 2], :new_project_id => 2, :copy_options => {:copy => '1'} - end - end - assert_redirected_to 'projects/ecookbook/issues' - end - - context "#perform_move via bulk copy" do - should "allow not changing the issue's attributes" do - @request.session[:user_id] = 2 - issue_before_move = Issue.find(1) - assert_difference 'Issue.count', 1 do - assert_no_difference 'Project.find(1).issues.count' do - post :perform_move, :ids => [1], :new_project_id => 2, :copy_options => {:copy => '1'}, :new_tracker_id => '', :assigned_to_id => '', :status_id => '', :start_date => '', :due_date => '' - end - end - issue_after_move = Issue.first(:order => 'id desc', :conditions => {:project_id => 2}) - assert_equal issue_before_move.tracker_id, issue_after_move.tracker_id - assert_equal issue_before_move.status_id, issue_after_move.status_id - assert_equal issue_before_move.assigned_to_id, issue_after_move.assigned_to_id - end - - should "allow changing the issue's attributes" do - # Fixes random test failure with Mysql - # where Issue.all(:limit => 2, :order => 'id desc', :conditions => {:project_id => 2}) doesn't return the expected results - Issue.delete_all("project_id=2") - - @request.session[:user_id] = 2 - assert_difference 'Issue.count', 2 do - assert_no_difference 'Project.find(1).issues.count' do - post :perform_move, :ids => [1, 2], :new_project_id => 2, :copy_options => {:copy => '1'}, :new_tracker_id => '', :assigned_to_id => 4, :status_id => 3, :start_date => '2009-12-01', :due_date => '2009-12-31' - end - end - - copied_issues = Issue.all(:limit => 2, :order => 'id desc', :conditions => {:project_id => 2}) - assert_equal 2, copied_issues.size - copied_issues.each do |issue| - assert_equal 2, issue.project_id, "Project is incorrect" - assert_equal 4, issue.assigned_to_id, "Assigned to is incorrect" - assert_equal 3, issue.status_id, "Status is incorrect" - assert_equal '2009-12-01', issue.start_date.to_s, "Start date is incorrect" - assert_equal '2009-12-31', issue.due_date.to_s, "Due date is incorrect" - end - end - end - - def test_copy_to_another_project_should_follow_when_needed - @request.session[:user_id] = 2 - post :perform_move, :ids => [1], :new_project_id => 2, :copy_options => {:copy => '1'}, :follow => '1' - issue = Issue.first(:order => 'id DESC') - assert_redirected_to :controller => 'issues', :action => 'show', :id => issue - end - - def test_context_menu_one_issue - @request.session[:user_id] = 2 - get :context_menu, :ids => [1] - assert_response :success - assert_template 'context_menu' - assert_tag :tag => 'a', :content => 'Edit', - :attributes => { :href => '/issues/1/edit', - :class => 'icon-edit' } - assert_tag :tag => 'a', :content => 'Closed', - :attributes => { :href => '/issues/1/edit?issue%5Bstatus_id%5D=5', - :class => '' } - assert_tag :tag => 'a', :content => 'Immediate', - :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&issue%5Bpriority_id%5D=8', - :class => '' } - # Versions - assert_tag :tag => 'a', :content => '2.0', - :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&issue%5Bfixed_version_id%5D=3', - :class => '' } - assert_tag :tag => 'a', :content => 'eCookbook Subproject 1 - 2.0', - :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&issue%5Bfixed_version_id%5D=4', - :class => '' } - - assert_tag :tag => 'a', :content => 'Dave Lopper', - :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&issue%5Bassigned_to_id%5D=3', - :class => '' } - assert_tag :tag => 'a', :content => 'Duplicate', - :attributes => { :href => '/projects/ecookbook/issues/1/copy', - :class => 'icon-duplicate' } - assert_tag :tag => 'a', :content => 'Copy', - :attributes => { :href => '/issues/move?copy_options%5Bcopy%5D=t&ids%5B%5D=1', - :class => 'icon-copy' } - assert_tag :tag => 'a', :content => 'Move', - :attributes => { :href => '/issues/move?ids%5B%5D=1', - :class => 'icon-move' } - assert_tag :tag => 'a', :content => 'Delete', - :attributes => { :href => '/issues/destroy?ids%5B%5D=1', - :class => 'icon-del' } - end - - def test_context_menu_one_issue_by_anonymous - get :context_menu, :ids => [1] - assert_response :success - assert_template 'context_menu' - assert_tag :tag => 'a', :content => 'Delete', - :attributes => { :href => '#', - :class => 'icon-del disabled' } - end - - def test_context_menu_multiple_issues_of_same_project - @request.session[:user_id] = 2 - get :context_menu, :ids => [1, 2] - assert_response :success - assert_template 'context_menu' - assert_tag :tag => 'a', :content => 'Edit', - :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&ids%5B%5D=2', - :class => 'icon-edit' } - assert_tag :tag => 'a', :content => 'Immediate', - :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&ids%5B%5D=2&issue%5Bpriority_id%5D=8', - :class => '' } - assert_tag :tag => 'a', :content => 'Dave Lopper', - :attributes => { :href => '/issues/bulk_edit?ids%5B%5D=1&ids%5B%5D=2&issue%5Bassigned_to_id%5D=3', - :class => '' } - assert_tag :tag => 'a', :content => 'Copy', - :attributes => { :href => '/issues/move?copy_options%5Bcopy%5D=t&ids%5B%5D=1&ids%5B%5D=2', - :class => 'icon-copy' } - assert_tag :tag => 'a', :content => 'Move', - :attributes => { :href => '/issues/move?ids%5B%5D=1&ids%5B%5D=2', - :class => 'icon-move' } - assert_tag :tag => 'a', :content => 'Delete', - :attributes => { :href => '/issues/destroy?ids%5B%5D=1&ids%5B%5D=2', - :class => 'icon-del' } - end - - def test_context_menu_multiple_issues_of_different_project - @request.session[:user_id] = 2 - get :context_menu, :ids => [1, 2, 4] - assert_response :success - assert_template 'context_menu' - assert_tag :tag => 'a', :content => 'Delete', - :attributes => { :href => '#', - :class => 'icon-del disabled' } - end - - def test_preview_new_issue - @request.session[:user_id] = 2 - post :preview, :project_id => '1', :issue => {:description => 'Foo'} - assert_response :success - assert_template 'preview' - assert_not_nil assigns(:description) - end - - def test_preview_notes - @request.session[:user_id] = 2 - post :preview, :project_id => '1', :id => 1, :issue => {:description => Issue.find(1).description}, :notes => 'Foo' - assert_response :success - assert_template 'preview' - assert_not_nil assigns(:notes) - end - - def test_auto_complete_should_not_be_case_sensitive - get :auto_complete, :project_id => 'ecookbook', :q => 'ReCiPe' - assert_response :success - assert_not_nil assigns(:issues) - assert assigns(:issues).detect {|issue| issue.subject.match /recipe/} - end - - def test_auto_complete_should_return_issue_with_given_id - get :auto_complete, :project_id => 'subproject1', :q => '13' - assert_response :success - assert_not_nil assigns(:issues) - assert assigns(:issues).include?(Issue.find(13)) - end def test_destroy_issue_with_no_time_entries assert_nil TimeEntry.find_by_issue_id(2) diff --git a/test/functional/journals_controller_test.rb b/test/functional/journals_controller_test.rb index 0a11bab3e..83e015af6 100644 --- a/test/functional/journals_controller_test.rb +++ b/test/functional/journals_controller_test.rb @@ -31,6 +31,27 @@ class JournalsControllerTest < ActionController::TestCase User.current = nil end + def test_index + get :index, :project_id => 1 + assert_response :success + assert_not_nil assigns(:journals) + assert_equal 'application/atom+xml', @response.content_type + end + + def test_reply_to_issue + @request.session[:user_id] = 2 + get :new, :id => 1 + assert_response :success + assert_select_rjs :show, "update" + end + + def test_reply_to_note + @request.session[:user_id] = 2 + get :new, :id => 1, :journal_id => 2 + assert_response :success + assert_select_rjs :show, "update" + end + def test_get_edit @request.session[:user_id] = 1 xhr :get, :edit, :id => 2 diff --git a/test/functional/previews_controller_test.rb b/test/functional/previews_controller_test.rb new file mode 100644 index 000000000..63456d1d0 --- /dev/null +++ b/test/functional/previews_controller_test.rb @@ -0,0 +1,22 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class PreviewsControllerTest < ActionController::TestCase + fixtures :all + + def test_preview_new_issue + @request.session[:user_id] = 2 + post :issue, :project_id => '1', :issue => {:description => 'Foo'} + assert_response :success + assert_template 'preview' + assert_not_nil assigns(:description) + end + + def test_preview_issue_notes + @request.session[:user_id] = 2 + post :issue, :project_id => '1', :id => 1, :issue => {:description => Issue.find(1).description}, :notes => 'Foo' + assert_response :success + assert_template 'preview' + assert_not_nil assigns(:notes) + end + +end diff --git a/test/functional/projects_controller_test.rb b/test/functional/projects_controller_test.rb index 988496cec..36d60c859 100644 --- a/test/functional/projects_controller_test.rb +++ b/test/functional/projects_controller_test.rb @@ -368,119 +368,6 @@ class ProjectsControllerTest < ActionController::TestCase :attributes => { :href => '/attachments/download/9/version_file.zip' } end - def test_roadmap - get :roadmap, :id => 1 - assert_response :success - assert_template 'roadmap' - assert_not_nil assigns(:versions) - # Version with no date set appears - assert assigns(:versions).include?(Version.find(3)) - # Completed version doesn't appear - assert !assigns(:versions).include?(Version.find(1)) - end - - def test_roadmap_with_completed_versions - get :roadmap, :id => 1, :completed => 1 - assert_response :success - assert_template 'roadmap' - assert_not_nil assigns(:versions) - # Version with no date set appears - assert assigns(:versions).include?(Version.find(3)) - # Completed version appears - assert assigns(:versions).include?(Version.find(1)) - end - - def test_roadmap_showing_subprojects_versions - @subproject_version = Version.generate!(:project => Project.find(3)) - get :roadmap, :id => 1, :with_subprojects => 1 - assert_response :success - assert_template 'roadmap' - assert_not_nil assigns(:versions) - - assert assigns(:versions).include?(Version.find(4)), "Shared version not found" - assert assigns(:versions).include?(@subproject_version), "Subproject version not found" - end - def test_project_activity - get :activity, :id => 1, :with_subprojects => 0 - assert_response :success - assert_template 'activity' - assert_not_nil assigns(:events_by_day) - - assert_tag :tag => "h3", - :content => /#{2.days.ago.to_date.day}/, - :sibling => { :tag => "dl", - :child => { :tag => "dt", - :attributes => { :class => /issue-edit/ }, - :child => { :tag => "a", - :content => /(#{IssueStatus.find(2).name})/, - } - } - } - end - - def test_previous_project_activity - get :activity, :id => 1, :from => 3.days.ago.to_date - assert_response :success - assert_template 'activity' - assert_not_nil assigns(:events_by_day) - - assert_tag :tag => "h3", - :content => /#{3.day.ago.to_date.day}/, - :sibling => { :tag => "dl", - :child => { :tag => "dt", - :attributes => { :class => /issue/ }, - :child => { :tag => "a", - :content => /#{Issue.find(1).subject}/, - } - } - } - end - - def test_global_activity - get :activity - assert_response :success - assert_template 'activity' - assert_not_nil assigns(:events_by_day) - - assert_tag :tag => "h3", - :content => /#{5.day.ago.to_date.day}/, - :sibling => { :tag => "dl", - :child => { :tag => "dt", - :attributes => { :class => /issue/ }, - :child => { :tag => "a", - :content => /#{Issue.find(5).subject}/, - } - } - } - end - - def test_user_activity - get :activity, :user_id => 2 - assert_response :success - assert_template 'activity' - assert_not_nil assigns(:events_by_day) - - assert_tag :tag => "h3", - :content => /#{3.day.ago.to_date.day}/, - :sibling => { :tag => "dl", - :child => { :tag => "dt", - :attributes => { :class => /issue/ }, - :child => { :tag => "a", - :content => /#{Issue.find(1).subject}/, - } - } - } - end - - def test_activity_atom_feed - get :activity, :format => 'atom' - assert_response :success - assert_template 'common/feed.atom.rxml' - assert_tag :tag => 'entry', :child => { - :tag => 'link', - :attributes => {:href => 'http://test.host/issues/11'}} - end - def test_archive @request.session[:user_id] = 1 # admin post :archive, :id => 1 diff --git a/test/functional/versions_controller_test.rb b/test/functional/versions_controller_test.rb index e4864c908..5fcb1d05a 100644 --- a/test/functional/versions_controller_test.rb +++ b/test/functional/versions_controller_test.rb @@ -31,6 +31,39 @@ class VersionsControllerTest < ActionController::TestCase User.current = nil end + def test_index + get :index, :project_id => 1 + assert_response :success + assert_template 'index' + assert_not_nil assigns(:versions) + # Version with no date set appears + assert assigns(:versions).include?(Version.find(3)) + # Completed version doesn't appear + assert !assigns(:versions).include?(Version.find(1)) + end + + def test_index_with_completed_versions + get :index, :project_id => 1, :completed => 1 + assert_response :success + assert_template 'index' + assert_not_nil assigns(:versions) + # Version with no date set appears + assert assigns(:versions).include?(Version.find(3)) + # Completed version appears + assert assigns(:versions).include?(Version.find(1)) + end + + def test_index_showing_subprojects_versions + @subproject_version = Version.generate!(:project => Project.find(3)) + get :index, :project_id => 1, :with_subprojects => 1 + assert_response :success + assert_template 'index' + assert_not_nil assigns(:versions) + + assert assigns(:versions).include?(Version.find(4)), "Shared version not found" + assert assigns(:versions).include?(@subproject_version), "Subproject version not found" + end + def test_show get :show, :id => 2 assert_response :success diff --git a/test/integration/issues_api_test.rb b/test/integration/issues_api_test.rb index a1e2cb703..e26cf643b 100644 --- a/test/integration/issues_api_test.rb +++ b/test/integration/issues_api_test.rb @@ -198,7 +198,7 @@ class IssuesApiTest < ActionController::IntegrationTest setup do @issue_count = Issue.count @journal_count = Journal.count - @attributes = {:subject => 'API update'} + @attributes = {:subject => 'API update', :notes => 'A new note'} put '/issues/1.xml', {:issue => @attributes}, :authorization => credentials('jsmith') end @@ -214,10 +214,15 @@ class IssuesApiTest < ActionController::IntegrationTest assert_equal Journal.count, @journal_count + 1 end + should "add the note to the journal" do + journal = Journal.last + assert_equal "A new note", journal.notes + end + should "update the issue" do issue = Issue.find(1) @attributes.each do |attribute, value| - assert_equal value, issue.send(attribute) + assert_equal value, issue.send(attribute) unless attribute == :notes end end @@ -252,7 +257,7 @@ class IssuesApiTest < ActionController::IntegrationTest setup do @issue_count = Issue.count @journal_count = Journal.count - @attributes = {:subject => 'API update'} + @attributes = {:subject => 'API update', :notes => 'A new note'} put '/issues/1.json', {:issue => @attributes}, :authorization => credentials('jsmith') end @@ -268,13 +273,18 @@ class IssuesApiTest < ActionController::IntegrationTest assert_equal Journal.count, @journal_count + 1 end + should "add the note to the journal" do + journal = Journal.last + assert_equal "A new note", journal.notes + end + should "update the issue" do issue = Issue.find(1) @attributes.each do |attribute, value| - assert_equal value, issue.send(attribute) + assert_equal value, issue.send(attribute) unless attribute == :notes end end - + end context "PUT /issues/1.json with failed update" do diff --git a/test/integration/issues_test.rb b/test/integration/issues_test.rb index 0c1a36d34..c8a151cfd 100644 --- a/test/integration/issues_test.rb +++ b/test/integration/issues_test.rb @@ -69,7 +69,7 @@ class IssuesTest < ActionController::IntegrationTest log_user('jsmith', 'jsmith') set_tmp_attachments_directory - put 'issues/1/edit', + put 'issues/1', :notes => 'Some notes', :attachments => {'1' => {'file' => uploaded_test_file('testfile.txt', 'text/plain'), 'description' => 'This is an attachment'}} assert_redirected_to "issues/1" diff --git a/test/integration/layout_test.rb b/test/integration/layout_test.rb new file mode 100644 index 000000000..001bf50d2 --- /dev/null +++ b/test/integration/layout_test.rb @@ -0,0 +1,24 @@ +require "#{File.dirname(__FILE__)}/../test_helper" + +class LayoutTest < ActionController::IntegrationTest + fixtures :all + + test "browsing to a missing page should render the base layout" do + get "/users/100000000" + + assert_response :not_found + + # UsersController uses the admin layout by default + assert_select "#admin-menu", :count => 0 + end + + test "browsing to an unauthorized page should render the base layout" do + change_user_password('miscuser9', 'test') + + log_user('miscuser9','test') + + get "/admin" + assert_response :forbidden + assert_select "#admin-menu", :count => 0 + end +end diff --git a/test/integration/routing_test.rb b/test/integration/routing_test.rb index 51f8e71f6..590bd9119 100644 --- a/test/integration/routing_test.rb +++ b/test/integration/routing_test.rb @@ -19,8 +19,8 @@ require "#{File.dirname(__FILE__)}/../test_helper" class RoutingTest < ActionController::IntegrationTest context "activities" do - should_route :get, "/activity", :controller => 'projects', :action => 'activity', :id => nil - should_route :get, "/activity.atom", :controller => 'projects', :action => 'activity', :id => nil, :format => 'atom' + should_route :get, "/activity", :controller => 'activities', :action => 'index', :id => nil + should_route :get, "/activity.atom", :controller => 'activities', :action => 'index', :id => nil, :format => 'atom' end context "attachments" do @@ -85,22 +85,32 @@ class RoutingTest < ActionController::IntegrationTest # Extra actions should_route :get, "/projects/23/issues/64/copy", :controller => 'issues', :action => 'new', :project_id => '23', :copy_from => '64' - should_route :get, "/issues/1/move", :controller => 'issues', :action => 'move', :id => '1' - should_route :post, "/issues/1/perform_move", :controller => 'issues', :action => 'perform_move', :id => '1' + should_route :get, "/issues/move/new", :controller => 'issue_moves', :action => 'new' + should_route :post, "/issues/move", :controller => 'issue_moves', :action => 'create' - should_route :post, "/issues/1/quoted", :controller => 'issues', :action => 'reply', :id => '1' + should_route :post, "/issues/1/quoted", :controller => 'journals', :action => 'new', :id => '1' should_route :get, "/issues/calendar", :controller => 'calendars', :action => 'show' - should_route :post, "/issues/calendar", :controller => 'calendars', :action => 'show' + should_route :put, "/issues/calendar", :controller => 'calendars', :action => 'update' should_route :get, "/projects/project-name/issues/calendar", :controller => 'calendars', :action => 'show', :project_id => 'project-name' - should_route :post, "/projects/project-name/issues/calendar", :controller => 'calendars', :action => 'show', :project_id => 'project-name' + should_route :put, "/projects/project-name/issues/calendar", :controller => 'calendars', :action => 'update', :project_id => 'project-name' should_route :get, "/issues/gantt", :controller => 'gantts', :action => 'show' - should_route :post, "/issues/gantt", :controller => 'gantts', :action => 'show' + should_route :put, "/issues/gantt", :controller => 'gantts', :action => 'update' should_route :get, "/projects/project-name/issues/gantt", :controller => 'gantts', :action => 'show', :project_id => 'project-name' - should_route :post, "/projects/project-name/issues/gantt", :controller => 'gantts', :action => 'show', :project_id => 'project-name' + should_route :put, "/projects/project-name/issues/gantt", :controller => 'gantts', :action => 'update', :project_id => 'project-name' - should_route :get, "/issues/auto_complete", :controller => 'issues', :action => 'auto_complete' + should_route :get, "/issues/auto_complete", :controller => 'auto_completes', :action => 'issues' + + should_route :get, "/issues/preview/123", :controller => 'previews', :action => 'issue', :id => '123' + should_route :post, "/issues/preview/123", :controller => 'previews', :action => 'issue', :id => '123' + should_route :get, "/issues/context_menu", :controller => 'context_menus', :action => 'issues' + should_route :post, "/issues/context_menu", :controller => 'context_menus', :action => 'issues' + + should_route :get, "/issues/changes", :controller => 'journals', :action => 'index' + + should_route :get, "/issues/bulk_edit", :controller => 'issues', :action => 'bulk_edit' + should_route :post, "/issues/bulk_edit", :controller => 'issues', :action => 'bulk_update' end context "issue categories" do @@ -164,9 +174,9 @@ class RoutingTest < ActionController::IntegrationTest should_route :get, "/projects/567/destroy", :controller => 'projects', :action => 'destroy', :id => '567' should_route :get, "/projects/33/files", :controller => 'projects', :action => 'list_files', :id => '33' should_route :get, "/projects/33/files/new", :controller => 'projects', :action => 'add_file', :id => '33' - should_route :get, "/projects/33/roadmap", :controller => 'projects', :action => 'roadmap', :id => '33' - should_route :get, "/projects/33/activity", :controller => 'projects', :action => 'activity', :id => '33' - should_route :get, "/projects/33/activity.atom", :controller => 'projects', :action => 'activity', :id => '33', :format => 'atom' + should_route :get, "/projects/33/roadmap", :controller => 'versions', :action => 'index', :project_id => '33' + should_route :get, "/projects/33/activity", :controller => 'activities', :action => 'index', :id => '33' + should_route :get, "/projects/33/activity.atom", :controller => 'activities', :action => 'index', :id => '33', :format => 'atom' should_route :post, "/projects/new", :controller => 'projects', :action => 'add' should_route :post, "/projects.xml", :controller => 'projects', :action => 'add', :format => 'xml' diff --git a/test/test_helper.rb b/test/test_helper.rb index 15a1f1570..9a2761021 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -63,7 +63,7 @@ class ActiveSupport::TestCase end # Mock out a file - def mock_file + def self.mock_file file = 'a_file.png' file.stubs(:size).returns(32) file.stubs(:original_filename).returns('a_file.png') @@ -71,7 +71,11 @@ class ActiveSupport::TestCase file.stubs(:read).returns(false) file end - + + def mock_file + self.class.mock_file + end + # Use a temporary directory for attachment related tests def set_tmp_attachments_directory Dir.mkdir "#{RAILS_ROOT}/tmp/test" unless File.directory?("#{RAILS_ROOT}/tmp/test") @@ -86,6 +90,12 @@ class ActiveSupport::TestCase saved_settings.each {|k, v| Setting[k] = v} end + def change_user_password(login, new_password) + user = User.first(:conditions => {:login => login}) + user.password, user.password_confirmation = new_password, new_password + user.save! + end + def self.ldap_configured? @test_ldap = Net::LDAP.new(:host => '127.0.0.1', :port => 389) return @test_ldap.bind diff --git a/test/unit/helpers/issue_moves_helper_test.rb b/test/unit/helpers/issue_moves_helper_test.rb new file mode 100644 index 000000000..b2ffb6042 --- /dev/null +++ b/test/unit/helpers/issue_moves_helper_test.rb @@ -0,0 +1,4 @@ +require 'test_helper' + +class IssueMovesHelperTest < ActionView::TestCase +end diff --git a/test/unit/lib/redmine_test.rb b/test/unit/lib/redmine_test.rb index 2d32abdcb..5fdf05540 100644 --- a/test/unit/lib/redmine_test.rb +++ b/test/unit/lib/redmine_test.rb @@ -62,12 +62,14 @@ class RedmineTest < ActiveSupport::TestCase end def test_project_menu - assert_number_of_items_in_menu :project_menu, 12 + assert_number_of_items_in_menu :project_menu, 14 assert_menu_contains_item_named :project_menu, :overview assert_menu_contains_item_named :project_menu, :activity assert_menu_contains_item_named :project_menu, :roadmap assert_menu_contains_item_named :project_menu, :issues assert_menu_contains_item_named :project_menu, :new_issue + assert_menu_contains_item_named :project_menu, :calendar + assert_menu_contains_item_named :project_menu, :gantt assert_menu_contains_item_named :project_menu, :news assert_menu_contains_item_named :project_menu, :documents assert_menu_contains_item_named :project_menu, :wiki