From ff43bb1a74a7450dbcee2d8b0b152d2173a810e1 Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Wed, 11 Aug 2010 14:42:10 +0000 Subject: [PATCH 01/49] Refactor: Extract a new IssueMovesController from IssuesController. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3936 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/issue_moves_controller.rb | 94 ++++++++++++++++++ app/controllers/issues_controller.rb | 58 ----------- app/helpers/issue_moves_helper.rb | 2 + .../move.rhtml => issue_moves/new.rhtml} | 4 +- app/views/issues/_action_menu.rhtml | 4 +- app/views/issues/context_menu.rhtml | 4 +- config/routes.rb | 9 +- lib/redmine.rb | 2 +- .../functional/issue_moves_controller_test.rb | 99 +++++++++++++++++++ test/functional/issues_controller_test.rb | 97 +----------------- test/integration/routing_test.rb | 4 +- test/unit/helpers/issue_moves_helper_test.rb | 4 + 12 files changed, 217 insertions(+), 164 deletions(-) create mode 100644 app/controllers/issue_moves_controller.rb create mode 100644 app/helpers/issue_moves_helper.rb rename app/views/{issues/move.rhtml => issue_moves/new.rhtml} (96%) create mode 100644 test/functional/issue_moves_controller_test.rb create mode 100644 test/unit/helpers/issue_moves_helper_test.rb diff --git a/app/controllers/issue_moves_controller.rb b/app/controllers/issue_moves_controller.rb new file mode 100644 index 000000000..1999930df --- /dev/null +++ b/app/controllers/issue_moves_controller.rb @@ -0,0 +1,94 @@ +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 + + # Filter for bulk operations + # TODO: duplicated in IssuesController + 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 + + # TODO: duplicated in IssuesController + 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 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..50a6f08e7 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -249,44 +249,6 @@ class IssuesController < ApplicationController @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 - - # 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 - 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 def destroy @hours = TimeEntry.sum(:hours, :conditions => ['issue_id IN (?)', @issues]).to_f @@ -462,16 +424,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? @@ -489,14 +441,4 @@ private return false 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 - 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/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/context_menu.rhtml b/app/views/issues/context_menu.rhtml index d9e92a4f8..dc11b5fdb 100644 --- a/app/views/issues/context_menu.rhtml +++ b/app/views/issues/context_menu.rhtml @@ -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/config/routes.rb b/config/routes.rb index 2e8a145cb..6f71cb658 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -102,7 +102,9 @@ ActionController::Routing::Routes.draw do |map| document_actions.connect 'documents/:id/:action', :action => /destroy|edit/ end end - + + map.resources :issue_moves, :only => [:new, :create], :path_prefix => '/issues', :as => 'move' + map.with_options :controller => 'issues' do |issues_routes| issues_routes.with_options :conditions => {:method => :get} do |issues_views| issues_views.connect 'issues', :action => 'index' @@ -116,7 +118,6 @@ ActionController::Routing::Routes.draw do |map| 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' @@ -124,7 +125,7 @@ ActionController::Routing::Routes.draw do |map| 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/:id/:action', :action => /edit|destroy/, :id => /\d+/ issues_actions.connect 'issues.:format', :action => 'create', :format => /xml/ end issues_routes.with_options :conditions => {:method => :put} do |issues_actions| @@ -138,7 +139,7 @@ ActionController::Routing::Routes.draw do |map| 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' diff --git a/lib/redmine.rb b/lib/redmine.rb index 4196a5d7a..1d8dbea18 100644 --- a/lib/redmine.rb +++ b/lib/redmine.rb @@ -69,7 +69,7 @@ Redmine::AccessControl.map do |map| map.permission :add_issue_notes, {:issues => [:edit, :update, :reply]} 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 diff --git a/test/functional/issue_moves_controller_test.rb b/test/functional/issue_moves_controller_test.rb new file mode 100644 index 000000000..083959c74 --- /dev/null +++ b/test/functional/issue_moves_controller_test.rb @@ -0,0 +1,99 @@ +require '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..6b23a6511 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -1037,95 +1037,6 @@ class IssuesControllerTest < ActionController::TestCase 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 @@ -1156,10 +1067,10 @@ class IssuesControllerTest < ActionController::TestCase :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', + :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?ids%5B%5D=1', + :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', @@ -1190,10 +1101,10 @@ class IssuesControllerTest < ActionController::TestCase :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', + :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?ids%5B%5D=1&ids%5B%5D=2', + :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', diff --git a/test/integration/routing_test.rb b/test/integration/routing_test.rb index 51f8e71f6..af66f7417 100644 --- a/test/integration/routing_test.rb +++ b/test/integration/routing_test.rb @@ -85,8 +85,8 @@ 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' 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 From a6112ef40d234ae51bf35cef0cc939794f38ede8 Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Thu, 12 Aug 2010 13:57:46 +0000 Subject: [PATCH 02/49] Fix path to test_helper git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3937 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- test/functional/issue_moves_controller_test.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/functional/issue_moves_controller_test.rb b/test/functional/issue_moves_controller_test.rb index 083959c74..7c4005767 100644 --- a/test/functional/issue_moves_controller_test.rb +++ b/test/functional/issue_moves_controller_test.rb @@ -1,4 +1,4 @@ -require 'test_helper' +require File.dirname(__FILE__) + '/../test_helper' class IssueMovesControllerTest < ActionController::TestCase fixtures :all From f18b126fba301d32474357f05aeab6c39958153c Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Thu, 12 Aug 2010 13:57:51 +0000 Subject: [PATCH 03/49] Refactor: Pull up method to ApplicationController. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3938 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/application_controller.rb | 18 +++++++++++++++++- app/controllers/issue_moves_controller.rb | 17 ----------------- app/controllers/issues_controller.rb | 16 ---------------- 3 files changed, 17 insertions(+), 34 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index c00b6ba42..3e482cf4b 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 diff --git a/app/controllers/issue_moves_controller.rb b/app/controllers/issue_moves_controller.rb index 1999930df..37068fad5 100644 --- a/app/controllers/issue_moves_controller.rb +++ b/app/controllers/issue_moves_controller.rb @@ -52,23 +52,6 @@ class IssueMovesController < ApplicationController @available_statuses = Workflow.available_statuses(@project) end - # Filter for bulk operations - # TODO: duplicated in IssuesController - 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 - # TODO: duplicated in IssuesController def set_flash_from_bulk_issue_save(issues, unsaved_issue_ids) if unsaved_issue_ids.empty? diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 50a6f08e7..e05d19390 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -359,22 +359,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) From 32f6fa5b00982314a16fb013a9f474dc2ae2196c Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Barth Date: Fri, 13 Aug 2010 06:09:38 +0000 Subject: [PATCH 04/49] Fixed: changing view style in repository/diff doesn't keep previously selected file. #6045 git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3939 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/views/repositories/diff.rhtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/repositories/diff.rhtml b/app/views/repositories/diff.rhtml index 73e13abf4..36e86403f 100644 --- a/app/views/repositories/diff.rhtml +++ b/app/views/repositories/diff.rhtml @@ -1,7 +1,7 @@

    <%= l(:label_revision) %> <%= format_revision(@rev_to) + ':' if @rev_to %><%= format_revision(@rev) %> <%=h @path %>

    -<% 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] %>

    From 13fe01a185c514591f093c30670cb3ae77070721 Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Fri, 13 Aug 2010 14:59:04 +0000 Subject: [PATCH 05/49] Refactor: pull up method to ApplicationController. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3940 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/application_controller.rb | 15 +++++++++++++++ app/controllers/issue_moves_controller.rb | 12 ------------ app/controllers/issues_controller.rb | 11 ----------- 3 files changed, 15 insertions(+), 23 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 3e482cf4b..e5909e69b 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -365,6 +365,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/issue_moves_controller.rb b/app/controllers/issue_moves_controller.rb index 37068fad5..6ac46a1ee 100644 --- a/app/controllers/issue_moves_controller.rb +++ b/app/controllers/issue_moves_controller.rb @@ -52,18 +52,6 @@ class IssueMovesController < ApplicationController @available_statuses = Workflow.available_statuses(@project) end - # TODO: duplicated in IssuesController - 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 extract_changed_attributes_for_move(params) changed_attributes = {} [:assigned_to_id, :status_id, :start_date, :due_date].each do |valid_attribute| diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index e05d19390..7518e3751 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -408,17 +408,6 @@ private @allowed_statuses = @issue.new_statuses_allowed_to(User.current, true) 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) From 22c978ad9433f7cbac63273fb34d3be7c7a1c78e Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Mon, 16 Aug 2010 16:25:04 +0000 Subject: [PATCH 06/49] Refactor: move IssuesController#reply to JournalsController git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3941 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/issues_controller.rb | 25 +-------------- app/controllers/journals_controller.rb | 34 ++++++++++++++++++++- app/helpers/journals_helper.rb | 2 +- config/routes.rb | 2 +- lib/redmine.rb | 4 +-- test/functional/issues_controller_test.rb | 14 --------- test/functional/journals_controller_test.rb | 14 +++++++++ test/integration/routing_test.rb | 2 +- 8 files changed, 53 insertions(+), 44 deletions(-) diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 7518e3751..eaa6dbc35 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -19,7 +19,7 @@ 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_issue, :only => [:show, :edit, :update] 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] @@ -200,29 +200,6 @@ 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! diff --git a/app/controllers/journals_controller.rb b/app/controllers/journals_controller.rb index e9fe9099d..10450970c 100644 --- a/app/controllers/journals_controller.rb +++ b/app/controllers/journals_controller.rb @@ -16,7 +16,31 @@ # 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] + + 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 +62,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/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/config/routes.rb b/config/routes.rb index 6f71cb658..08cd10055 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -124,7 +124,7 @@ ActionController::Routing::Routes.draw do |map| 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/quoted', :controller => 'journals', :action => 'new', :id => /\d+/ issues_actions.connect 'issues/:id/:action', :action => /edit|destroy/, :id => /\d+/ issues_actions.connect 'issues.:format', :action => 'create', :format => /xml/ end diff --git a/lib/redmine.rb b/lib/redmine.rb index 1d8dbea18..e92f67b73 100644 --- a/lib/redmine.rb +++ b/lib/redmine.rb @@ -63,10 +63,10 @@ Redmine::AccessControl.map do |map| :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, :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, {:issue_moves => [:new, :create]}, :require => :loggedin diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index 6b23a6511..0c1172f60 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -634,20 +634,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' diff --git a/test/functional/journals_controller_test.rb b/test/functional/journals_controller_test.rb index 0a11bab3e..7d8345b28 100644 --- a/test/functional/journals_controller_test.rb +++ b/test/functional/journals_controller_test.rb @@ -31,6 +31,20 @@ class JournalsControllerTest < ActionController::TestCase User.current = nil 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/integration/routing_test.rb b/test/integration/routing_test.rb index af66f7417..b9eac552e 100644 --- a/test/integration/routing_test.rb +++ b/test/integration/routing_test.rb @@ -88,7 +88,7 @@ class RoutingTest < ActionController::IntegrationTest 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' From d2b0a5184856866a3454142dcb372b5fb64969b3 Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Mon, 16 Aug 2010 23:39:27 +0000 Subject: [PATCH 07/49] Allow key authentication for Boards. #6132 git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3942 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/boards_controller.rb | 1 + 1 file changed, 1 insertion(+) 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 From a24f448dc0c761ade909946ee4a15d231dbf6061 Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Mon, 16 Aug 2010 23:56:37 +0000 Subject: [PATCH 08/49] Add the Gantt chart as a project menu item git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3943 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/gantts_controller.rb | 1 + lib/redmine.rb | 1 + 2 files changed, 2 insertions(+) diff --git a/app/controllers/gantts_controller.rb b/app/controllers/gantts_controller.rb index e762c19c8..cdfef5238 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 diff --git a/lib/redmine.rb b/lib/redmine.rb index e92f67b73..d390cda26 100644 --- a/lib/redmine.rb +++ b/lib/redmine.rb @@ -183,6 +183,7 @@ Redmine::MenuManager.map :project_menu do |menu| 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 :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 }, From e63acb70ca82d0c62476c92bbe815330ee01ad93 Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Mon, 16 Aug 2010 23:56:42 +0000 Subject: [PATCH 09/49] Add the Calendar as a project menu item. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3944 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/calendars_controller.rb | 1 + lib/redmine.rb | 1 + 2 files changed, 2 insertions(+) diff --git a/app/controllers/calendars_controller.rb b/app/controllers/calendars_controller.rb index f2af58086..1115691a1 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 diff --git a/lib/redmine.rb b/lib/redmine.rb index d390cda26..073e52d2d 100644 --- a/lib/redmine.rb +++ b/lib/redmine.rb @@ -184,6 +184,7 @@ Redmine::MenuManager.map :project_menu do |menu| 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 }, From 3eff27344b0bef7703ba248d0a2312bfca95c182 Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Tue, 17 Aug 2010 15:03:58 +0000 Subject: [PATCH 10/49] Refactor: move IssuesController#auto_complete to a new controller. #4382 git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3945 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/auto_completes_controller.rb | 25 +++++++++++++++++++ app/controllers/issues_controller.rb | 14 +---------- .../issues.html.erb} | 0 app/views/issues/_form.rhtml | 5 +--- config/routes.rb | 3 ++- lib/redmine.rb | 3 ++- .../auto_completes_controller_test.rb | 20 +++++++++++++++ test/functional/issues_controller_test.rb | 14 ----------- test/integration/routing_test.rb | 2 +- 9 files changed, 52 insertions(+), 34 deletions(-) create mode 100644 app/controllers/auto_completes_controller.rb rename app/views/{issues/auto_complete.html.erb => auto_completes/issues.html.erb} (100%) create mode 100644 test/functional/auto_completes_controller_test.rb 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/issues_controller.rb b/app/controllers/issues_controller.rb index eaa6dbc35..4981f43ee 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -21,7 +21,7 @@ class IssuesController < ApplicationController before_filter :find_issue, :only => [:show, :edit, :update] 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 :find_project, :only => [:new, :create, :update_form, :preview] before_filter :authorize, :except => [:index, :changes, :preview, :context_menu] before_filter :find_optional_project, :only => [:index, :changes] before_filter :check_for_default_issue_status, :only => [:new, :create] @@ -316,18 +316,6 @@ class IssuesController < ApplicationController 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]) 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/issues/_form.rhtml b/app/views/issues/_form.rhtml index 1e3beaf85..ccb7a55a3 100644 --- a/app/views/issues/_form.rhtml +++ b/app/views/issues/_form.rhtml @@ -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/config/routes.rb b/config/routes.rb index 08cd10055..910087ab9 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -104,7 +104,8 @@ ActionController::Routing::Routes.draw do |map| end map.resources :issue_moves, :only => [:new, :create], :path_prefix => '/issues', :as => 'move' - + map.auto_complete_issues '/issues/auto_complete', :controller => 'auto_completes', :action => 'issues' + map.with_options :controller => 'issues' do |issues_routes| issues_routes.with_options :conditions => {:method => :get} do |issues_views| issues_views.connect 'issues', :action => 'index' diff --git a/lib/redmine.rb b/lib/redmine.rb index 073e52d2d..aa9fe75d1 100644 --- a/lib/redmine.rb +++ b/lib/redmine.rb @@ -58,7 +58,8 @@ Redmine::AccessControl.map do |map| 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], + :issues => [:index, :changes, :show, :context_menu], + :auto_complete => [:issues], :versions => [:show, :status_by], :queries => :index, :reports => [:issue_report, :issue_report_details]} 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/issues_controller_test.rb b/test/functional/issues_controller_test.rb index 0c1172f60..948cf8598 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -1123,20 +1123,6 @@ class IssuesControllerTest < ActionController::TestCase 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) @request.session[:user_id] = 2 diff --git a/test/integration/routing_test.rb b/test/integration/routing_test.rb index b9eac552e..607df5b06 100644 --- a/test/integration/routing_test.rb +++ b/test/integration/routing_test.rb @@ -100,7 +100,7 @@ class RoutingTest < ActionController::IntegrationTest 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 :get, "/issues/auto_complete", :controller => 'issues', :action => 'auto_complete' + should_route :get, "/issues/auto_complete", :controller => 'auto_completes', :action => 'issues' end context "issue categories" do From 1f8d396e3f12ec177fec0dea6a4a7c39c00fe496 Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Wed, 18 Aug 2010 15:01:35 +0000 Subject: [PATCH 11/49] Refactor: move IssuesController#preview to a new controller. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3946 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/issues_controller.rb | 15 ---------- app/controllers/previews_controller.rb | 28 +++++++++++++++++++ app/views/issues/_edit.rhtml | 2 +- app/views/issues/new.rhtml | 2 +- .../issue.html.erb} | 0 config/routes.rb | 2 ++ test/functional/issues_controller_test.rb | 16 ----------- test/functional/previews_controller_test.rb | 22 +++++++++++++++ test/integration/routing_test.rb | 3 ++ 9 files changed, 57 insertions(+), 33 deletions(-) create mode 100644 app/controllers/previews_controller.rb rename app/views/{issues/preview.html.erb => previews/issue.html.erb} (100%) create mode 100644 test/functional/previews_controller_test.rb diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 4981f43ee..239c23e71 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -301,21 +301,6 @@ class IssuesController < ApplicationController 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 - private def find_issue @issue = Issue.find(params[:id], :include => [:project, :tracker, :status, :author, :priority, :category]) 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/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/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/preview.html.erb b/app/views/previews/issue.html.erb similarity index 100% rename from app/views/issues/preview.html.erb rename to app/views/previews/issue.html.erb diff --git a/config/routes.rb b/config/routes.rb index 910087ab9..956ce054b 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -105,6 +105,8 @@ ActionController::Routing::Routes.draw do |map| map.resources :issue_moves, :only => [:new, :create], :path_prefix => '/issues', :as => 'move' map.auto_complete_issues '/issues/auto_complete', :controller => 'auto_completes', :action => 'issues' + # TODO: would look nicer as /issues/:id/preview + map.preview_issue '/issues/preview/:id', :controller => 'previews', :action => 'issue' map.with_options :controller => 'issues' do |issues_routes| issues_routes.with_options :conditions => {:method => :get} do |issues_views| diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index 948cf8598..22f528b7b 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -1107,22 +1107,6 @@ class IssuesControllerTest < ActionController::TestCase :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_destroy_issue_with_no_time_entries assert_nil TimeEntry.find_by_issue_id(2) @request.session[:user_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/integration/routing_test.rb b/test/integration/routing_test.rb index 607df5b06..01a96b7aa 100644 --- a/test/integration/routing_test.rb +++ b/test/integration/routing_test.rb @@ -101,6 +101,9 @@ class RoutingTest < ActionController::IntegrationTest should_route :post, "/projects/project-name/issues/gantt", :controller => 'gantts', :action => 'show', :project_id => 'project-name' 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' end context "issue categories" do From e6e21046c0fb6b5ccb32545e05771916907a62ad Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Wed, 18 Aug 2010 15:03:42 +0000 Subject: [PATCH 12/49] No more IssuesController#preview action. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3947 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/issues_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 239c23e71..a0264bc56 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -21,8 +21,8 @@ class IssuesController < ApplicationController before_filter :find_issue, :only => [:show, :edit, :update] before_filter :find_issues, :only => [:bulk_edit, :move, :perform_move, :destroy] - before_filter :find_project, :only => [:new, :create, :update_form, :preview] - before_filter :authorize, :except => [:index, :changes, :preview, :context_menu] + before_filter :find_project, :only => [:new, :create, :update_form] + before_filter :authorize, :except => [:index, :changes, :context_menu] before_filter :find_optional_project, :only => [:index, :changes] before_filter :check_for_default_issue_status, :only => [:new, :create] before_filter :build_new_issue_from_params, :only => [:new, :create] From c090d115e2bda1b72c2711b8df8a79202cbd10db Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Wed, 18 Aug 2010 17:23:23 +0000 Subject: [PATCH 13/49] Added a rake task to display permissions. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3948 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- lib/tasks/permissions.rake | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 lib/tasks/permissions.rake 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 From 73ba49a7154a7a3f971ea0b53b4fdf232c4210b3 Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Thu, 19 Aug 2010 01:01:35 +0000 Subject: [PATCH 14/49] Use the base layout for all 403, 404, and 500 pages. #6172 git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3949 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/application_controller.rb | 13 +++++++++--- test/integration/layout_test.rb | 26 +++++++++++++++++++++++ 2 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 test/integration/layout_test.rb diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index e5909e69b..725bde788 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -258,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 } @@ -269,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 } @@ -282,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 } @@ -290,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? diff --git a/test/integration/layout_test.rb b/test/integration/layout_test.rb new file mode 100644 index 000000000..03d407d24 --- /dev/null +++ b/test/integration/layout_test.rb @@ -0,0 +1,26 @@ +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 + user = User.find(9) + user.password, user.password_confirmation = 'test', 'test' + user.save! + + log_user('miscuser9','test') + + get "/admin" + assert_response :forbidden + assert_select "#admin-menu", :count => 0 + end +end From a256e4b1dc76b969ac593f9b5b9c39703820c297 Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Thu, 19 Aug 2010 01:13:50 +0000 Subject: [PATCH 15/49] Scope the calendar popup CSS so it doesn't conflict with the Calendar menu. #6163 Contributed by Adam Soltys git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3950 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- public/stylesheets/calendar.css | 84 ++++++++++++++++----------------- 1 file changed, 42 insertions(+), 42 deletions(-) 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; From fc6e7f12b70ee716eb762d112acd43467466b2ae Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Thu, 19 Aug 2010 01:28:33 +0000 Subject: [PATCH 16/49] Small test refactoring, extract method. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3951 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- test/integration/layout_test.rb | 4 +--- test/test_helper.rb | 6 ++++++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/test/integration/layout_test.rb b/test/integration/layout_test.rb index 03d407d24..001bf50d2 100644 --- a/test/integration/layout_test.rb +++ b/test/integration/layout_test.rb @@ -13,9 +13,7 @@ class LayoutTest < ActionController::IntegrationTest end test "browsing to an unauthorized page should render the base layout" do - user = User.find(9) - user.password, user.password_confirmation = 'test', 'test' - user.save! + change_user_password('miscuser9', 'test') log_user('miscuser9','test') diff --git a/test/test_helper.rb b/test/test_helper.rb index 15a1f1570..dc04fa82d 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -86,6 +86,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 From 782a5f121881addf54afe6064376ded72b5a84ed Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Thu, 19 Aug 2010 03:43:33 +0000 Subject: [PATCH 17/49] Add Issue Status to the tooltip. #6169 Contributed by Nick Peelman git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3952 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/helpers/issues_helper.rb | 2 ++ 1 file changed, 2 insertions(+) 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}
    " + From 01788e83e755e08c96274341f22ea1d7d3814bad Mon Sep 17 00:00:00 2001 From: Azamat Hackimov Date: Thu, 19 Aug 2010 15:41:09 +0000 Subject: [PATCH 18/49] Translation updates for upcoming release * de (#6079) * es (#6021) * it (#6093) * nl (#6025) * ru * sr and sr-YU (sr is now serbian cyrillic, #6078) * sv (#6142) git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4003 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- config/locales/de.yml | 2 +- config/locales/es.yml | 44 +- config/locales/it.yml | 343 ++-- config/locales/ja.yml | 2 +- config/locales/nl.yml | 152 +- config/locales/ru.yml | 2 +- config/locales/sr-CY.yml | 907 --------- config/locales/sr-YU.yml | 907 +++++++++ config/locales/sr.yml | 1618 ++++++++--------- config/locales/sv.yml | 6 +- .../javascripts/calendar/lang/calendar-it.js | 25 +- .../calendar/lang/calendar-sr-CY.js | 127 -- .../calendar/lang/calendar-sr-yu.js | 127 ++ .../javascripts/calendar/lang/calendar-sr.js | 254 +-- .../jstoolbar/lang/jstoolbar-it.js | 5 +- .../jstoolbar/lang/jstoolbar-sr-yu.js | 16 + .../jstoolbar/lang/jstoolbar-sr.js | 32 +- 17 files changed, 2296 insertions(+), 2273 deletions(-) delete mode 100644 config/locales/sr-CY.yml create mode 100644 config/locales/sr-YU.yml delete mode 100644 public/javascripts/calendar/lang/calendar-sr-CY.js create mode 100644 public/javascripts/calendar/lang/calendar-sr-yu.js create mode 100644 public/javascripts/jstoolbar/lang/jstoolbar-sr-yu.js diff --git a/config/locales/de.yml b/config/locales/de.yml index f7f9043c4..411e9e9ff 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -839,7 +839,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/es.yml b/config/locales/es.yml index bc345dcb5..e7abd4347 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: @@ -926,25 +926,25 @@ 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 diff --git a/config/locales/it.yml b/config/locales/it.yml index bab1c6a91..aec2c8ea0 100644 --- a/config/locales/it.yml +++ b/config/locales/it.yml @@ -1,5 +1,6 @@ # Italian translations for Ruby on Rails # by Claudio Poli (masterkain@gmail.com) +# by Diego Pierotto (ita.translations@tiscali.it) it: date: @@ -64,8 +65,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 +92,7 @@ it: support: array: - sentence_connector: "and" + sentence_connector: "e" skip_last_comma: false activerecord: @@ -128,9 +129,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 +139,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 +155,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 +196,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 +223,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 +256,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 +267,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 +278,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 +301,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 +314,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 +331,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 +377,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 +410,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 +459,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 +496,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 +520,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 +557,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 +565,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 +578,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 +631,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 +639,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 +656,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 +700,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 +710,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 +724,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 +748,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 +786,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 +816,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 +826,89 @@ 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 diff --git a/config/locales/ja.yml b/config/locales/ja.yml index c82155b8e..4c513fef2 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -214,7 +214,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}} が追加されました。" diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 4472a19d7..f2e0529e3 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -571,7 +571,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 +791,98 @@ 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 diff --git a/config/locales/ru.yml b/config/locales/ru.yml index ee9ee37a1..0c2270e8b 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -755,7 +755,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: Неправильное имя пользователя или пароль 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..2cc0c0983 --- /dev/null +++ b/config/locales/sr-YU.yml @@ -0,0 +1,907 @@ +# Serbian translations for Redmine +# by Vladimir Medarović (vlada@medarovic.com) +sr-YU: + 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: + 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 + diff --git a/config/locales/sr.yml b/config/locales/sr.yml index f52d9e063..1bcd3616d 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -10,60 +10,60 @@ 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: human: @@ -85,823 +85,823 @@ 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: Системска активност + \ No newline at end of file diff --git a/config/locales/sv.yml b/config/locales/sv.yml index 35ebc1053..42f0bc97a 100644 --- a/config/locales/sv.yml +++ b/config/locales/sv.yml @@ -905,9 +905,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/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-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-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'] = 'Слика'; From eefb36177dfb3e5759bf4916cff511fa70f93fea Mon Sep 17 00:00:00 2001 From: Azamat Hackimov Date: Thu, 19 Aug 2010 16:35:51 +0000 Subject: [PATCH 19/49] Fixing #6009 Added to all locales required strings. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4004 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- config/locales/bg.yml | 14 +++++++++----- config/locales/ca.yml | 4 ++++ config/locales/cs.yml | 6 +++++- config/locales/el.yml | 6 +++++- config/locales/en-GB.yml | 5 +++++ config/locales/eu.yml | 4 ++++ config/locales/hr.yml | 4 ++++ config/locales/lv.yml | 4 ++++ config/locales/mn.yml | 4 ++++ config/locales/nl.yml | 6 +++++- config/locales/ru.yml | 4 ++-- config/locales/sl.yml | 7 ++++--- config/locales/sr-YU.yml | 4 ++++ config/locales/sr.yml | 6 +++++- config/locales/th.yml | 6 +++++- config/locales/uk.yml | 4 ++++ 16 files changed, 73 insertions(+), 15 deletions(-) diff --git a/config/locales/bg.yml b/config/locales/bg.yml index 8b2b23704..320c2091d 100644 --- a/config/locales/bg.yml +++ b/config/locales/bg.yml @@ -63,7 +63,11 @@ bg: one: "almost 1 year" other: "almost {{count}} years" - number: + number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: precision: 1 @@ -71,13 +75,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: diff --git a/config/locales/ca.yml b/config/locales/ca.yml index 1e47d3d66..913d2f3ab 100644 --- a/config/locales/ca.yml +++ b/config/locales/ca.yml @@ -64,6 +64,10 @@ ca: other: "almost {{count}} years" number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: delimiter: "" diff --git a/config/locales/cs.yml b/config/locales/cs.yml index de4ad44c5..9ceb21e83 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -63,7 +63,11 @@ cs: one: "almost 1 year" other: "almost {{count}} years" - number: + number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: precision: 1 diff --git a/config/locales/el.yml b/config/locales/el.yml index a9146a611..cb4941c29 100644 --- a/config/locales/el.yml +++ b/config/locales/el.yml @@ -66,7 +66,11 @@ el: one: "almost 1 year" other: "almost {{count}} years" - number: + number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: precision: 1 diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml index 2872df15e..24aa6e9c6 100644 --- a/config/locales/en-GB.yml +++ b/config/locales/en-GB.yml @@ -64,6 +64,11 @@ en-GB: other: "almost {{count}} years" number: + format: + separator: "." + delimiter: " " + precision: 3 + currency: format: format: "%u%n" diff --git a/config/locales/eu.yml b/config/locales/eu.yml index 741d3298f..350f238c5 100644 --- a/config/locales/eu.yml +++ b/config/locales/eu.yml @@ -68,6 +68,10 @@ eu: other: "ia {{count}} urte" number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: delimiter: "" diff --git a/config/locales/hr.yml b/config/locales/hr.yml index 728a6d8e9..442adefef 100644 --- a/config/locales/hr.yml +++ b/config/locales/hr.yml @@ -64,6 +64,10 @@ hr: other: "preko {{count}} godina" number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: delimiter: "" diff --git a/config/locales/lv.yml b/config/locales/lv.yml index 351f8528e..70822de51 100644 --- a/config/locales/lv.yml +++ b/config/locales/lv.yml @@ -61,6 +61,10 @@ lv: other: "gandrīz {{count}} gadus" number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: delimiter: " " diff --git a/config/locales/mn.yml b/config/locales/mn.yml index 568e1f341..5b4b79e86 100644 --- a/config/locales/mn.yml +++ b/config/locales/mn.yml @@ -64,6 +64,10 @@ mn: other: "бараг {{count}} жил" number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: delimiter: "" diff --git a/config/locales/nl.yml b/config/locales/nl.yml index f2e0529e3..46c5ca867 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -63,7 +63,11 @@ nl: one: "almost 1 year" other: "almost {{count}} years" - number: + number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: precision: 1 diff --git a/config/locales/ru.yml b/config/locales/ru.yml index 0c2270e8b..9d9e5e030 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -41,7 +41,7 @@ ru: number: format: - separator: "." + separator: "," delimiter: " " precision: 3 @@ -64,7 +64,7 @@ ru: human: format: delimiter: "" - precision: 1 + precision: 2 # Rails 2.2 # storage_units: [байт, КБ, МБ, ГБ, ТБ] diff --git a/config/locales/sl.yml b/config/locales/sl.yml index aac2e4331..a51cd972e 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -63,10 +63,11 @@ sl: one: "almost 1 year" other: "almost {{count}} years" - number: + number: format: - separator: ',' - delimiter: '.' + separator: "," + delimiter: "." + precision: 3 human: format: precision: 1 diff --git a/config/locales/sr-YU.yml b/config/locales/sr-YU.yml index 2cc0c0983..bc8a854ad 100644 --- a/config/locales/sr-YU.yml +++ b/config/locales/sr-YU.yml @@ -66,6 +66,10 @@ sr-YU: other: "skoro {{count}} god." number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: delimiter: "" diff --git a/config/locales/sr.yml b/config/locales/sr.yml index 1bcd3616d..0c022ee9f 100644 --- a/config/locales/sr.yml +++ b/config/locales/sr.yml @@ -66,6 +66,10 @@ sr: other: "скоро {{count}} год." number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: delimiter: "" @@ -904,4 +908,4 @@ sr: enumeration_doc_categories: Категорије документа enumeration_activities: Активности (праћење времена) enumeration_system_activity: Системска активност - \ No newline at end of file + diff --git a/config/locales/th.yml b/config/locales/th.yml index 2c127f3de..eaf4cc285 100644 --- a/config/locales/th.yml +++ b/config/locales/th.yml @@ -63,7 +63,11 @@ th: one: "almost 1 year" other: "almost {{count}} years" - number: + number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: precision: 1 diff --git a/config/locales/uk.yml b/config/locales/uk.yml index 1a590dc0b..951a546b9 100644 --- a/config/locales/uk.yml +++ b/config/locales/uk.yml @@ -64,6 +64,10 @@ uk: other: "almost {{count}} years" number: + format: + separator: "." + delimiter: "" + precision: 3 human: format: precision: 1 From 57372d9d8e8ce54eb1b6a5ed21b4cb0b3f29c69a Mon Sep 17 00:00:00 2001 From: Azamat Hackimov Date: Thu, 19 Aug 2010 16:57:44 +0000 Subject: [PATCH 20/49] Real RTL-theme support in locales (#6012) Now each locale-file have direction string (ltr - left-to-right - by default). git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4005 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/views/layouts/base.rhtml | 1 + config/locales/bg.yml | 1 + config/locales/bs.yml | 1 + config/locales/ca.yml | 1 + config/locales/cs.yml | 1 + config/locales/da.yml | 1 + config/locales/de.yml | 1 + config/locales/el.yml | 1 + config/locales/en-GB.yml | 1 + config/locales/en.yml | 7 +++++ config/locales/es.yml | 1 + config/locales/eu.yml | 1 + config/locales/fi.yml | 1 + config/locales/fr.yml | 1 + config/locales/gl.yml | 1 + config/locales/he.yml | 1 + config/locales/hr.yml | 1 + config/locales/hu.yml | 1 + config/locales/id.yml | 1 + config/locales/it.yml | 1 + config/locales/ja.yml | 1 + config/locales/ko.yml | 1 + config/locales/lt.yml | 1 + config/locales/lv.yml | 1 + config/locales/mn.yml | 1 + config/locales/nl.yml | 1 + config/locales/no.yml | 1 + config/locales/pl.yml | 1 + config/locales/pt-BR.yml | 1 + config/locales/pt.yml | 1 + config/locales/ro.yml | 1 + config/locales/ru.yml | 1 + config/locales/sk.yml | 1 + config/locales/sl.yml | 1 + config/locales/sr-YU.yml | 1 + config/locales/sr.yml | 1 + config/locales/sv.yml | 1 + config/locales/th.yml | 1 + config/locales/tr.yml | 1 + config/locales/uk.yml | 1 + config/locales/vi.yml | 1 + config/locales/zh-TW.yml | 1 + config/locales/zh.yml | 1 + .../application.css => stylesheets/rtl.css} | 28 +++++++++++++++---- .../themes/rtl/stylesheets/context_menu.css | 6 ---- 45 files changed, 71 insertions(+), 12 deletions(-) rename public/{themes/rtl/stylesheets/application.css => stylesheets/rtl.css} (76%) delete mode 100644 public/themes/rtl/stylesheets/context_menu.css 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 %>