diff --git a/.gitignore b/.gitignore index a26a7311..8e2cc0f5 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ public/stylesheets/tracks-cached.css .idea .rvmrc .yardoc +tags diff --git a/Gemfile b/Gemfile index 5163e0eb..92d8ee9f 100644 --- a/Gemfile +++ b/Gemfile @@ -15,6 +15,7 @@ gem "rubyjedi-actionwebservice", :require => "actionwebservice" gem "rubycas-client", "~>2.2.1" gem "ruby-openid", :require => "openid" gem "sqlite3" +gem "mysql" gem 'bcrypt-ruby', '~> 2.1.4' gem 'htmlentities', '~> 4.3.0' gem "mail" @@ -25,10 +26,6 @@ else gem "soap4r", "~>1.5.8" end -gem "webrat", ">=0.7.0", :groups => [:cucumber, :test] -gem "database_cleaner", ">=0.5.0", :groups => [:cucumber, :selenium] -gem "cucumber-rails", "~>0.3.0", :groups => :cucumber - group :development do if RUBY_VERSION.to_f >= 1.9 gem "ruby-debug19" @@ -49,8 +46,8 @@ group :test do gem "rspec-rails", "~>1.3.3" gem "thoughtbot-factory_girl" gem 'memory_test_fix', '~>0.1.3' -end - -group :selenium do gem "selenium-client" + gem "webrat", ">=0.7.0" + gem "database_cleaner", ">=0.5.0" + gem "cucumber-rails", "~>0.3.0" end diff --git a/Gemfile.lock b/Gemfile.lock index bf2fd94f..27b98074 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -59,6 +59,7 @@ GEM daemons (>= 1.0.3) fastthread (>= 1.0.1) gem_plugin (>= 0.2.3) + mysql (2.8.1) nokogiri (1.4.7) polyglot (0.3.2) rack (1.1.0) @@ -129,6 +130,7 @@ DEPENDENCIES mail memory_test_fix (~> 0.1.3) mongrel + mysql rack (= 1.1.0) rails (~> 2.3.12) rake (~> 0.8.7) diff --git a/README b/README index 3ba3299b..3b9a58bc 100644 --- a/README +++ b/README @@ -19,13 +19,30 @@ * Copyright: (cc) 2004-2011 rousette.org.uk. * License: GNU GPL -All the documentation for Tracks can be found within the /doc directory and at http://bsag.github.com/tracks/ -The latter includes full instructions for both new installations and upgrades from older installations of Tracks. -The instructions might appear long and intimidatingly complex, but that is mostly because of the number of different platforms supported, and the different configurations which can be used (e.g. running Tracks on your local computer or on a remote server). If you choose the appropriate section for your situation (installation vs. upgrade), and use the easiest (recommended) method, you should find the instructions easy to follow. If you encounter problems, try searching the wiki, forum or mailing list (URLs above), and ask a question if you cannot find a solution to your problem. +All the documentation for Tracks can be found within the /doc directory and at +http://bsag.github.com/tracks/ + +The latter includes full instructions for both new installations and upgrades +from older installations of Tracks. + +The instructions might appear long and intimidatingly complex, but that is +mostly because of the number of different platforms supported, and the +different configurations which can be used (e.g. running Tracks on your local +computer or on a remote server). If you choose the appropriate section for your +situation (installation vs. upgrade), and use the easiest (recommended) method, +you should find the instructions easy to follow. If you encounter problems, try +searching the wiki, forum or mailing list (URLs above), and ask a question if +you cannot find a solution to your problem. + The wiki has a lot of user contributed installation HOWTOs for various webhosts, specific OS's and more. -If you are thinking about contributing towards the development of Tracks, please read /doc/README_DEVELOPERS for general information, or /doc/tracks_api_wrapper.rb for information on Tracks' API. Also you can find some information on development on the wiki. +If you are thinking about contributing towards the development of Tracks, +please read /doc/README_DEVELOPERS for general information, or +/doc/tracks_api_wrapper.rb for information on Tracks' API. Also you can find +some information on development on the wiki. -While fully usable for everyday use, Tracks is still a work in progress. Make sure that you take sensible precautions and back up all your data frequently, taking particular care when you are upgrading. +While fully usable for everyday use, Tracks is still a work in progress. Make +sure that you take sensible precautions and back up all your data frequently, +taking particular care when you are upgrading. Enjoy being productive! diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 6f75ea61..f2c55bb3 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -177,9 +177,9 @@ class ApplicationController < ActionController::Base def create_todo_from_recurring_todo(rt, date=nil) # create todo and initialize with data from recurring_todo rt todo = current_user.todos.build( { :description => rt.description, :notes => rt.notes, :project_id => rt.project_id, :context_id => rt.context_id}) + todo.recurring_todo_id = rt.id # set dates - todo.recurring_todo_id = rt.id todo.due = rt.get_due_date(date) show_from_date = rt.get_show_from_date(date) diff --git a/app/controllers/recurring_todos_controller.rb b/app/controllers/recurring_todos_controller.rb index dd34bb1b..69517597 100644 --- a/app/controllers/recurring_todos_controller.rb +++ b/app/controllers/recurring_todos_controller.rb @@ -9,8 +9,8 @@ class RecurringTodosController < ApplicationController @page_title = t('todos.recurring_actions_title') @source_view = params['_source_view'] || 'recurring_todo' find_and_inactivate - @recurring_todos = current_user.recurring_todos.active - @completed_recurring_todos = current_user.recurring_todos.completed.find(:all, :limit => 10) + @recurring_todos = current_user.recurring_todos.active.find(:all, :include => [:tags, :taggings]) + @completed_recurring_todos = current_user.recurring_todos.completed.find(:all, :limit => 10, :include => [:tags, :taggings]) @no_recurring_todos = @recurring_todos.size == 0 @no_completed_recurring_todos = @completed_recurring_todos.size == 0 @@ -21,15 +21,15 @@ class RecurringTodosController < ApplicationController def new end - + def show end - + def done @page_title = t('todos.completed_recurring_actions_title') @source_view = params['_source_view'] || 'recurring_todo' items_per_page = 20 - page = params[:page] || 1 + page = params[:page] || 1 @completed_recurring_todos = current_user.recurring_todos.completed.paginate :page => params[:page], :per_page => items_per_page @total = @count = current_user.recurring_todos.completed.count @range_low = (page.to_i-1) * items_per_page + 1 @@ -54,7 +54,7 @@ class RecurringTodosController < ApplicationController params['recurring_todo']['recurring_period']=params['recurring_edit_todo']['recurring_period'] params['recurring_todo']['end_date']=parse_date_per_user_prefs(params['recurring_todo_edit_end_date']) params['recurring_todo']['start_from']=parse_date_per_user_prefs(params['recurring_todo_edit_start_from']) - + # update project if params['recurring_todo']['project_id'].blank? && !params['project_name'].nil? if params['project_name'] == 'None' @@ -70,7 +70,7 @@ class RecurringTodosController < ApplicationController end params["recurring_todo"]["project_id"] = project.id end - + # update context if params['recurring_todo']['context_id'].blank? && !params['context_name'].blank? context = current_user.contexts.find_by_name(params['context_name'].strip) @@ -88,14 +88,14 @@ class RecurringTodosController < ApplicationController %w{monday tuesday wednesday thursday friday saturday sunday}.each do |day| params["recurring_todo"]["weekly_return_"+day]=' ' if params["recurring_todo"]["weekly_return_"+day].nil? end - + @saved = @recurring_todo.update_attributes params["recurring_todo"] respond_to do |format| format.js end end - + def create p = RecurringTodoCreateParamsHelper.new(params) p.attributes['end_date']=parse_date_per_user_prefs(p.attributes['end_date']) @@ -109,7 +109,7 @@ class RecurringTodosController < ApplicationController @new_project_created = project.new_record_before_save? @recurring_todo.project_id = project.id end - + if p.context_specified_by_name? context = current_user.contexts.find_or_create_by_name(p.context_name) @new_context_created = context.new_record_before_save? @@ -134,13 +134,13 @@ class RecurringTodosController < ApplicationController @new_recurring_todo = RecurringTodo.new else @status_message = t('todos.error_saving_recurring') - end - + end + respond_to do |format| - format.js + format.js end end - + def destroy # remove all references to this recurring todo @todos = @recurring_todo.todos @@ -149,16 +149,16 @@ class RecurringTodosController < ApplicationController t.recurring_todo_id = nil t.save end - + # delete the recurring todo @saved = @recurring_todo.destroy # count remaining recurring todos @active_remaining = current_user.recurring_todos.active.count @completed_remaining = current_user.recurring_todos.completed.count - + respond_to do |format| - + format.html do if @saved notify :notice, t('todos.recurring_deleted_success'), 2.0 @@ -168,10 +168,10 @@ class RecurringTodosController < ApplicationController redirect_to :action => 'index' end end - + format.js do render - end + end end end @@ -184,19 +184,19 @@ class RecurringTodosController < ApplicationController if @recurring_todo.active? @completed_remaining = current_user.recurring_todos.completed.count - + # from completed back to active -> check if there is an active todo @active_todos = @recurring_todo.todos.active.count # create todo if there is no active todo belonging to the activated # recurring_todo @new_recurring_todo = create_todo_from_recurring_todo(@recurring_todo) if @active_todos == 0 end - + respond_to do |format| - format.js + format.js end end - + def toggle_star @recurring_todo.toggle_star! @saved = @recurring_todo.save! @@ -204,13 +204,13 @@ class RecurringTodosController < ApplicationController format.js end end - + class RecurringTodoCreateParamsHelper def initialize(params) @params = params['request'] || params @attributes = params['request'] && params['request']['recurring_todo'] || params['recurring_todo'] - + # make sure all selectors (recurring_period, recurrence_selector, # daily_selector, monthly_selector and yearly_selector) are first in hash # so that they are processed first by the model @@ -221,47 +221,47 @@ class RecurringTodosController < ApplicationController 'yearly_selector' => @attributes['yearly_selector'] } end - + def attributes @attributes end - + def selector_attributes return @selector_attributes end - + def project_name @params['project_name'].strip unless @params['project_name'].nil? end - + def context_name @params['context_name'].strip unless @params['context_name'].nil? end - + def tag_list @params['tag_list'] end - + def project_specified_by_name? return false unless @attributes['project_id'].blank? return false if project_name.blank? return false if project_name == 'None' true end - + def context_specified_by_name? return false unless @attributes['context_id'].blank? return false if context_name.blank? true end - + end private - + def init @days_of_week = [] - 0.upto 6 do |i| + 0.upto 6 do |i| @days_of_week << [t('date.day_names')[i], i] end @@ -274,15 +274,18 @@ class RecurringTodosController < ApplicationController @projects = current_user.projects.find(:all, :include => [:default_context]) @contexts = current_user.contexts.find(:all) end - + def get_recurring_todo_from_param @recurring_todo = current_user.recurring_todos.find(params[:id]) end def find_and_inactivate # find active recurring todos without active todos and inactivate them - recurring_todos = current_user.recurring_todos.active - recurring_todos.each { |rt| rt.toggle_completion! if rt.todos.not_completed.count == 0} + + current_user.recurring_todos.active.all( + :select => "recurring_todos.id, recurring_todos.state", + :joins => "LEFT JOIN todos fai_todos ON (recurring_todos.id = fai_todos.recurring_todo_id) AND (NOT fai_todos.state='completed')", + :conditions => "fai_todos.id IS NULL").each { |rt| current_user.recurring_todos.find(rt.id).toggle_completion! } end - + end diff --git a/app/controllers/todos_controller.rb b/app/controllers/todos_controller.rb index 61aee981..ffce91b9 100644 --- a/app/controllers/todos_controller.rb +++ b/app/controllers/todos_controller.rb @@ -90,7 +90,7 @@ class TodosController < ApplicationController end if @todo.errors.empty? - @todo.starred= (params[:new_todo_starred]||"").include? "true" + @todo.starred= (params[:new_todo_starred]||"").include? "true" if params[:new_todo_starred] @todo.add_predecessor_list(predecessor_list) @@ -361,6 +361,49 @@ class TodosController < ApplicationController end end + def mobile_done + # copied from toggle_check, left out other formats as they shouldn't come here + # ultimately would like to just use toggle_check + @todo = current_user.todos.find(params['id']) + @source_view = params['_source_view'] || 'todo' + @original_item_due = @todo.due + @original_item_was_deferred = @todo.deferred? + @original_item_was_pending = @todo.pending? + @original_item_was_hidden = @todo.hidden? + @original_item_context_id = @todo.context_id + @original_item_project_id = @todo.project_id + @todo_was_completed_from_deferred_or_blocked_state = @original_item_was_deferred || @original_item_was_pending + @saved = @todo.toggle_completion! + + @todo_was_blocked_from_completed_state = @todo.pending? # since we toggled_completion the previous state was completed + + # check if this todo has a related recurring_todo. If so, create next todo + @new_recurring_todo = check_for_next_todo(@todo) if @saved + + @predecessors = @todo.uncompleted_predecessors + if @saved + if @todo.completed? + @pending_to_activate = @todo.activate_pending_todos + else + @active_to_block = @todo.block_successors + end + end + + if @saved + if cookies[:mobile_url] + old_path = cookies[:mobile_url] + cookies[:mobile_url] = {:value => nil, :secure => SITE_CONFIG['secure_cookies']} + notify(:notice, t("todos.action_marked_complete", :description => @todo.description, :completed => @todo.completed? ? 'complete' : 'incomplete')) + redirect_to old_path + else + notify(:notice, t("todos.action_marked_complete", :description => @todo.description, :completed => @todo.completed? ? 'complete' : 'incomplete')) + redirect_to todos_path(:format => 'm') + end + else + render :action => "edit", :format => :m + end + end + def toggle_star @todo = current_user.todos.find(params['id']) @todo.toggle_star! @@ -1103,7 +1146,7 @@ class TodosController < ApplicationController if @todo_was_completed_from_deferred_or_blocked_state @remaining_in_context = @remaining_deferred_or_pending_count else - @remaining_in_context = current_user.projects.find(project_id).todos.active.count + @remaining_in_context = current_user.projects.find(project_id).todos.active_or_hidden.count end @target_context_count = current_user.projects.find(project_id).todos.active.count @@ -1176,6 +1219,10 @@ class TodosController < ApplicationController lambda do @page_title = t('todos.mobile_todos_page_title') @home = true + + max_completed = current_user.prefs.show_number_completed + @done = current_user.todos.completed.find(:all, :limit => max_completed, :include => Todo::DEFAULT_INCLUDES) unless max_completed == 0 + cookies[:mobile_url]= { :value => request.request_uri, :secure => SITE_CONFIG['secure_cookies']} determine_down_count @@ -1516,6 +1563,15 @@ class TodosController < ApplicationController @params = params['request'] || params @prefs = prefs @attributes = params['request'] && params['request']['todo'] || params['todo'] + + if @attributes && @attributes[:tags] + # for single tags, @attributed[:tags] returns a hash. For multiple tags, + # it with return an array of hashes. Make sure it is always an array of hashes + @attributes[:tags][:tag] = [@attributes[:tags][:tag]] unless @attributes[:tags][:tag].class == Array + # the REST api may use which will collide with tags association, so rename tags to add_tags + @attributes[:add_tags] = @attributes[:tags] + @attributes.delete :tags + end end def attributes diff --git a/app/helpers/todos_helper.rb b/app/helpers/todos_helper.rb index 2f3ef48e..d6f3ed53 100644 --- a/app/helpers/todos_helper.rb +++ b/app/helpers/todos_helper.rb @@ -89,6 +89,12 @@ module TodosHelper :title => todo.pending? ? t('todos.blocked_by', :predecessors => todo.uncompleted_predecessors.map(&:description).join(', ')) : "", :readonly => todo.pending?) end + def remote_mobile_checkbox(todo=@todo) + form_tag mobile_done_todo_path(@todo, :format => 'm'), :method => :put, :class => "mobile-done", :name => "mobile_complete_#{@todo.id}" do + check_box_tag('_source_view', 'todo', @todo && @todo.completed?, "onClick" => "document.mobile_complete_#{@todo.id}.submit()") + end + end + def date_span(todo=@todo) if todo.completed? content_tag(:span, {:class => :grey}) { format_date( todo.completed_at ) } diff --git a/app/models/project.rb b/app/models/project.rb index f3f43d12..adba4559 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -120,8 +120,8 @@ class Project < ActiveRecord::Base end def stalled? - # stalled is active/hidden project with no active todos - return false if self.completed? + # Stalled projects are active projects with no active next actions + return false if self.completed? || self.hidden? return self.todos.deferred_or_blocked.empty? && self.todos.not_deferred_or_blocked.empty? end diff --git a/app/models/recurring_todo.rb b/app/models/recurring_todo.rb index e1ff6003..634b242b 100644 --- a/app/models/recurring_todo.rb +++ b/app/models/recurring_todo.rb @@ -1,5 +1,5 @@ class RecurringTodo < ActiveRecord::Base - + belongs_to :context belongs_to :project belongs_to :user @@ -10,11 +10,11 @@ class RecurringTodo < ActiveRecord::Base named_scope :completed, :conditions => { :state => 'completed'} attr_protected :user - + include AASM aasm_column :state aasm_initial_state :active - + aasm_state :active, :enter => Proc.new { |t| t.occurences_count = 0 } aasm_state :completed, :enter => Proc.new { |t| t.completed_at = Time.zone.now }, :exit => Proc.new { |t| t.completed_at = nil } @@ -25,7 +25,7 @@ class RecurringTodo < ActiveRecord::Base aasm_event :activate do transitions :to => :active, :from => [:completed] end - + validates_presence_of :description validates_presence_of :recurring_period validates_presence_of :target @@ -33,12 +33,12 @@ class RecurringTodo < ActiveRecord::Base validates_presence_of :context validates_length_of :description, :maximum => 100 - validates_length_of :notes, :maximum => 60000, :allow_nil => true + validates_length_of :notes, :maximum => 60000, :allow_nil => true validate :period_specific_validations validate :starts_and_ends_on_validations validate :set_recurrence_on_validations - + def period_specific_validations if %W[daily weekly monthly yearly].include?(recurring_period) self.send("validate_#{recurring_period}") @@ -118,7 +118,7 @@ class RecurringTodo < ActiveRecord::Base raise Exception.new, "unexpected value of recurrence target selector '#{self.recurrence_target}'" end end - + # the following recurrence patterns can be stored: # # daily todos - recurrence_period = 'daily' @@ -140,9 +140,9 @@ class RecurringTodo < ActiveRecord::Base # x is stored in every_other3, y is stored in every_count, z is stored in every_other2 # choosing between both options is done on recurrence_selector where 0 is # for first type and 1 for second type - + # DAILY - + def daily_selector=(selector) case selector when 'daily_every_x_day' @@ -153,34 +153,34 @@ class RecurringTodo < ActiveRecord::Base raise Exception.new, "unknown daily recurrence pattern: '#{selector}'" end end - + def daily_every_x_days=(x) if recurring_period=='daily' self.every_other1 = x end end - + def daily_every_x_days return self.every_other1 end - + # WEEKLY - + def weekly_every_x_week=(x) self.every_other1 = x if recurring_period=='weekly' end - + def weekly_every_x_week return self.every_other1 end - + def switch_week_day (day, position) if self.every_day.nil? self.every_day=' ' end self.every_day = self.every_day[0,position] + day + self.every_day[position+1,self.every_day.length] end - + def weekly_return_monday=(selector) switch_week_day(selector,1) if recurring_period=='weekly' end @@ -188,15 +188,15 @@ class RecurringTodo < ActiveRecord::Base def weekly_return_tuesday=(selector) switch_week_day(selector,2) if recurring_period=='weekly' end - + def weekly_return_wednesday=(selector) switch_week_day(selector,3) if recurring_period=='weekly' end - + def weekly_return_thursday=(selector) switch_week_day(selector,4) if recurring_period=='weekly' end - + def weekly_return_friday=(selector) switch_week_day(selector,5) if recurring_period=='weekly' end @@ -204,11 +204,11 @@ class RecurringTodo < ActiveRecord::Base def weekly_return_saturday=(selector) switch_week_day(selector,6) if recurring_period=='weekly' end - + def weekly_return_sunday=(selector) switch_week_day(selector,0) if recurring_period=='weekly' end - + def on_xday(n) unless self.every_day.nil? return self.every_day[n,1] == ' ' ? false : true @@ -216,51 +216,51 @@ class RecurringTodo < ActiveRecord::Base return false end end - + def on_monday return on_xday(1) end - + def on_tuesday return on_xday(2) end - + def on_wednesday return on_xday(3) end - + def on_thursday return on_xday(4) end - + def on_friday return on_xday(5) end - + def on_saturday return on_xday(6) end - + def on_sunday return on_xday(0) end # MONTHLY - + def monthly_selector=(selector) if recurring_period=='monthly' self.recurrence_selector= (selector=='monthly_every_x_day')? 0 : 1 end end - + def monthly_every_x_day=(x) self.every_other1 = x if recurring_period=='monthly' end - + def monthly_every_x_day return self.every_other1 end - + def is_monthly_every_x_day return self.recurrence_selector == 0 if recurring_period == 'monthly' return false @@ -270,11 +270,11 @@ class RecurringTodo < ActiveRecord::Base return self.recurrence_selector == 1 if recurring_period == 'monthly' return false end - + def monthly_every_x_month=(x) self.every_other2 = x if recurring_period=='monthly' && recurrence_selector == 0 end - + def monthly_every_x_month # in case monthly pattern is every day x, return every_other2 otherwise # return a default value @@ -298,36 +298,36 @@ class RecurringTodo < ActiveRecord::Base return 1 end end - + def monthly_every_xth_day=(x) self.every_other3 = x if recurring_period=='monthly' end - + def monthly_every_xth_day(default=nil) return self.every_other3 unless self.every_other3.nil? return default end - + def monthly_day_of_week=(dow) self.every_count = dow if recurring_period=='monthly' end - + def monthly_day_of_week return self.every_count end - + # YEARLY - + def yearly_selector=(selector) if recurring_period=='yearly' self.recurrence_selector = (selector=='yearly_every_x_day') ? 0 : 1 end end - + def yearly_month_of_year=(moy) self.every_other2 = moy if self.recurring_period=='yearly' && self.recurrence_selector == 0 end - + def yearly_month_of_year # if recurrence pattern is every x day in a month, return month otherwise # return a default value @@ -341,7 +341,7 @@ class RecurringTodo < ActiveRecord::Base def yearly_month_of_year2=(moy) self.every_other2 = moy if self.recurring_period=='yearly' && self.recurrence_selector == 1 end - + def yearly_month_of_year2 # if recurrence pattern is every xth day in a month, return month otherwise # return a default value @@ -351,33 +351,33 @@ class RecurringTodo < ActiveRecord::Base return Time.zone.now.month end end - + def yearly_every_x_day=(x) self.every_other1 = x if recurring_period=='yearly' end - + def yearly_every_x_day return self.every_other1 end - + def yearly_every_xth_day=(x) self.every_other3 = x if recurring_period=='yearly' end - + def yearly_every_xth_day return self.every_other3 end - + def yearly_day_of_week=(dow) self.every_count=dow if recurring_period=='yearly' end - + def yearly_day_of_week return self.every_count end - + # target - + def recurring_target=(t) self.target = t end @@ -392,11 +392,11 @@ class RecurringTodo < ActiveRecord::Base raise Exception.new, "unexpected value of recurrence target '#{self.target}'" end end - + def recurring_show_days_before=(days) self.show_from_delta=days end - + def recurring_show_always=(value) self.show_always=value end @@ -435,41 +435,45 @@ class RecurringTodo < ActiveRecord::Base else n_months = I18n.t('common.month') end - return I18n.t('todos.recurrence.pattern.every_xth_day_of_every_n_months', + return I18n.t('todos.recurrence.pattern.every_xth_day_of_every_n_months', :x => self.xth, :day => self.day_of_week, :n_months => n_months) end when 'yearly' if self.recurrence_selector == 0 - return I18n.t("todos.recurrence.pattern.every_year_on", + return I18n.t("todos.recurrence.pattern.every_year_on", :date => I18n.l(DateTime.new(Time.zone.now.year, self.every_other2, self.every_other1), :format => :month_day)) else - return I18n.t("todos.recurrence.pattern.every_year_on", + return I18n.t("todos.recurrence.pattern.every_year_on", :date => I18n.t("todos.recurrence.pattern.the_xth_day_of_month", :x => self.xth, :day => self.day_of_week, :month => self.month_of_year)) end else return 'unknown recurrence pattern: period unknown' end end - + def xth xth_day = [ I18n.t('todos.recurrence.pattern.first'),I18n.t('todos.recurrence.pattern.second'),I18n.t('todos.recurrence.pattern.third'), I18n.t('todos.recurrence.pattern.fourth'),I18n.t('todos.recurrence.pattern.last')] return self.every_other3.nil? ? '??' : xth_day[self.every_other3-1] end - + def day_of_week return (self.every_count.nil? ? '??' : I18n.t('todos.recurrence.pattern.day_names')[self.every_count]) end - + def month_of_year return self.every_other2.nil? ? '??' : I18n.t('todos.recurrence.pattern.month_names')[self.every_other2] end - + def starred? - tags.any? {|tag| tag.name == Todo::STARRED_TAG_NAME } + return has_tag?(Todo::STARRED_TAG_NAME) end - + + def has_tag?(tag_name) + return self.tags.any? {|tag| tag.name == tag_name} + end + def get_due_date(previous) case self.target when 'due_date' @@ -481,7 +485,7 @@ class RecurringTodo < ActiveRecord::Base raise Exception.new, "unexpected value of recurrence target '#{self.target}'" end end - + def get_show_from_date(previous) case self.target when 'due_date' @@ -498,7 +502,7 @@ class RecurringTodo < ActiveRecord::Base raise Exception.new, "unexpected value of recurrence target '#{self.target}'" end end - + def get_next_date(previous) case self.recurring_period when 'daily' @@ -513,14 +517,14 @@ class RecurringTodo < ActiveRecord::Base raise Exception.new, "unknown recurrence pattern: '#{self.recurring_period}'" end end - + def get_daily_date(previous) # previous is the due date of the previous todo or it is the completed_at # date when the completed_at date is after due_date (i.e. you did not make # the due date in time) # # assumes self.recurring_period == 'daily' - + start = determine_start(previous, 1.day) if self.only_work_days @@ -533,7 +537,7 @@ class RecurringTodo < ActiveRecord::Base return previous == nil ? start : start+every_other1.day-1.day end end - + def get_weekly_date(previous) # determine start if previous == nil @@ -551,12 +555,12 @@ class RecurringTodo < ActiveRecord::Base start = self.start_from if self.start_from > previous end end - + # check if there are any days left this week for the next todo start.wday().upto 6 do |i| return start + (i-start.wday()).days unless self.every_day[i,1] == ' ' end - + # we did not find anything this week, so check the nth next, starting from # sunday start = start + self.every_other1.week - (start.wday()).days @@ -568,9 +572,9 @@ class RecurringTodo < ActiveRecord::Base raise Exception.new, "unable to find next weekly date (#{self.every_day})" end - + def get_monthly_date(previous) - + start = determine_start(previous) day = self.every_other1 n = self.every_other2 @@ -594,7 +598,7 @@ class RecurringTodo < ActiveRecord::Base # go back to day end return Time.zone.local(start.year, start.month, day) - + when 1 # relative weekday of a month the_next = get_xth_day_of_month(self.every_other3, self.every_count, start.month, start.year) if the_next.nil? || the_next <= start @@ -618,7 +622,7 @@ class RecurringTodo < ActiveRecord::Base end return nil end - + def get_xth_day_of_month(x, weekday, month, year) if x == 5 # last -> count backwards. use UTC to avoid strange timezone oddities @@ -646,12 +650,12 @@ class RecurringTodo < ActiveRecord::Base return Time.zone.local(start.year, start.month, start.day) end end - + def get_yearly_date(previous) start = determine_start(previous) day = self.every_other1 month = self.every_other2 - + case self.recurrence_selector when 0 # specific day of a specific month if start.month > month || (start.month == month && start.day >= day) @@ -663,25 +667,25 @@ class RecurringTodo < ActiveRecord::Base start = Time.zone.local(start.year, month, 1) end return Time.zone.local(start.year, month, day) - + when 1 # relative weekday of a specific month # if there is no next month n in this year, search in next year the_next = start.month > month ? Time.zone.local(start.year+1, month, 1) : start - + # get the xth day of the month the_next = get_xth_day_of_month(self.every_other3, self.every_count, month, the_next.year) - + # if the_next is before previous, we went back into the past, so try next # year the_next = get_xth_day_of_month(self.every_other3, self.every_count, month, start.year+1) if the_next <= start - + return the_next else raise Exception.new, "unknown monthly recurrence selection (#{self.recurrence_selector})" end return nil end - + def has_next_todo(previous) unless self.number_of_occurences.nil? return self.occurences_count < self.number_of_occurences @@ -700,11 +704,11 @@ class RecurringTodo < ActiveRecord::Base end end end - + def toggle_completion! return completed? ? activate! : complete! end - + def toggle_star! if starred? _remove_tags Todo::STARRED_TAG_NAME @@ -715,7 +719,7 @@ class RecurringTodo < ActiveRecord::Base end starred? end - + def remove_from_project! self.project = nil self.save @@ -729,17 +733,18 @@ class RecurringTodo < ActiveRecord::Base end end end - + def inc_occurences self.occurences_count += 1 self.save end - + protected - + + # Determine start date to calculate next date for recurring todo + # offset needs to be 1.day for daily patterns def determine_start(previous, offset=0.day) - # offset needs to be 1.day for daily patterns - + if previous.nil? start = self.start_from.nil? ? Time.zone.now : self.start_from # skip to present @@ -747,13 +752,12 @@ class RecurringTodo < ActiveRecord::Base else start = previous + offset - unless self.start_from.nil? - # check if the start_from date is later than previous. If so, use - # start_from as start to search for next date - start = self.start_from if self.start_from > previous - end + # check if the start_from date is later than previous. If so, use + # start_from as start to search for next date + start = self.start_from if ( self.start_from && self.start_from > previous ) end + return start end - + end diff --git a/app/models/todo.rb b/app/models/todo.rb index 06b23699..9122afae 100644 --- a/app/models/todo.rb +++ b/app/models/todo.rb @@ -47,13 +47,6 @@ class Todo < ActiveRecord::Base STARRED_TAG_NAME = "starred" DEFAULT_INCLUDES = [ :project, :context, :tags, :taggings, :pending_successors, :uncompleted_predecessors, :recurring_todo ] - # regular expressions for dependencies. TODO: are these still used? - RE_TODO = /[^']+/ - RE_CONTEXT = /[^']+/ - RE_PROJECT = /[^']+/ - RE_PARTS = /'(#{RE_TODO})'\s<'(#{RE_CONTEXT})';\s'(#{RE_PROJECT})'>/ # results in array - RE_SPEC = /'#{RE_TODO}'\s<'#{RE_CONTEXT}';\s'#{RE_PROJECT}'>/ # results in string - # state machine include AASM aasm_column :state @@ -113,12 +106,11 @@ class Todo < ActiveRecord::Base def no_uncompleted_predecessors_or_deferral? no_deferral = show_from.blank? or Time.zone.now > show_from - no_uncompleted_predecessors = uncompleted_predecessors.all(true).empty? - return (no_deferral && no_uncompleted_predecessors) + return (no_deferral && no_uncompleted_predecessors?) end def no_uncompleted_predecessors? - return uncompleted_predecessors.all(true).empty? + return !uncompleted_predecessors? end def uncompleted_predecessors? @@ -197,8 +189,8 @@ class Todo < ActiveRecord::Base return !pending_successors.empty? end - def has_tag?(tag) - return self.tags.select{|t| t.name==tag }.size > 0 + def has_tag?(tag_name) + return self.tags.any? {|tag| tag.name == tag_name} end def hidden? @@ -239,12 +231,6 @@ class Todo < ActiveRecord::Base defer! if active? && !date.blank? && date > user.date end - alias_method :original_project, :project - - def project - original_project.nil? ? Project.null_object : original_project - end - def self.feed_options(user) { :title => 'Tracks Actions', @@ -253,7 +239,7 @@ class Todo < ActiveRecord::Base end def starred? - tags.any? {|tag| tag.name == STARRED_TAG_NAME} + return has_tag?(STARRED_TAG_NAME) end def toggle_star! @@ -276,18 +262,18 @@ class Todo < ActiveRecord::Base def add_predecessor_list(predecessor_list) return unless predecessor_list.kind_of? String - @predecessor_array=[] - - predecessor_ids_array = predecessor_list.split(",") - predecessor_ids_array.each do |todo_id| + @predecessor_array=predecessor_list.split(",").inject([]) do |list, todo_id| predecessor = self.user.todos.find_by_id( todo_id.to_i ) unless todo_id.blank? - @predecessor_array << predecessor unless predecessor.nil? + list << predecessor unless predecessor.nil? + list end return @predecessor_array end def add_predecessor(t) + return if t.nil? + @predecessor_array = predecessors @predecessor_array << t end @@ -310,8 +296,53 @@ class Todo < ActiveRecord::Base self[:notes] = value end - # Rich Todo API + # XML API fixups + def predecessor_dependencies=(params) + value = params[:predecessor] + return if value.nil? + # for multiple dependencies, value will be an array of id's, but for a single dependency, + # value will be a string. In that case convert to array + value = [value] unless value.class == Array + + value.each { |ele| add_predecessor(self.user.todos.find_by_id(ele.to_i)) unless ele.blank? } + end + + alias_method :original_context=, :context= + def context=(value) + if value.is_a? Context + self.original_context=(value) + else + c = Context.find_by_name(value[:name]) + c = Context.create(value) if c.nil? + self.original_context=(c) + end + end + + alias_method :original_project, :project + def project + original_project.nil? ? Project.null_object : original_project + end + + alias_method :original_project=, :project= + def project=(value) + if value.is_a? Project + self.original_project=(value) + elsif !(value.nil? || value.is_a?(NullProject)) + p = Project.find_by_name(value[:name]) + p = Project.create(value) if p.nil? + self.original_project=(p) + else + self.original_project=value + end + end + + # used by the REST API. will also work, this is renamed to add_tags in TodosController::TodoCreateParamsHelper::initialize + def add_tags=(params) + tag_with params[:tag].inject([]) { |list, value| list << value[:name] } unless params[:tag].nil? + end + + # Rich Todo API def self.from_rich_message(user, default_context_id, description, notes) fields = description.match(/([^>@]*)@?([^>]*)>?(.*)/) description = fields[1].strip diff --git a/app/views/contexts/mobile_show_context.rhtml b/app/views/contexts/mobile_show_context.rhtml index d960a66e..3bf1fc3b 100644 --- a/app/views/contexts/mobile_show_context.rhtml +++ b/app/views/contexts/mobile_show_context.rhtml @@ -7,10 +7,8 @@ if not @not_done.empty? %>

<%=@context.name%>

<% end -%> diff --git a/app/views/layouts/mobile.m.erb b/app/views/layouts/mobile.m.erb index ab8ff179..e11432da 100644 --- a/app/views/layouts/mobile.m.erb +++ b/app/views/layouts/mobile.m.erb @@ -7,13 +7,12 @@ - + <%= stylesheet_link_tag "mobile", :media => 'handheld,all' %> <%= @page_title %> -<% if !(@new_mobile || @edit_mobile) - if current_user && !current_user.prefs.nil? -%> -

<%= @down_count %> <%= +<% if current_user && !current_user.prefs.nil? -%> +

<% if @down_count -%><%= @down_count %><% end -%> <%= l(Date.today, :format => current_user.prefs.title_date_format) -%>

-<%= yield -%> +<% end -%> +
+
<%= render_flash -%><%= yield -%>

<% if current_user && !current_user.prefs.nil? -%> diff --git a/app/views/recurring_todos/_recurring_todo.html.erb b/app/views/recurring_todos/_recurring_todo.html.erb index 3abafc4a..2bff4883 100644 --- a/app/views/recurring_todos/_recurring_todo.html.erb +++ b/app/views/recurring_todos/_recurring_todo.html.erb @@ -1,8 +1,9 @@ <% @recurring_todo = recurring_todo -%>
- <%= recurring_todo_remote_delete_icon %> <%= recurring_todo_remote_edit_icon -%> - - <%= recurring_todo_remote_star_icon %> <%= recurring_todo_remote_toggle_checkbox -%> + <%= recurring_todo_remote_delete_icon %> + <%= recurring_todo_remote_edit_icon -%> + <%= recurring_todo_remote_star_icon %> + <%= recurring_todo_remote_toggle_checkbox -%>
<%= sanitize(recurring_todo.description) %> <%= recurring_todo_tag_list %> diff --git a/app/views/recurring_todos/_recurring_todo_form.erb b/app/views/recurring_todos/_recurring_todo_form.erb index d6ffed83..a2f60355 100644 --- a/app/views/recurring_todos/_recurring_todo_form.erb +++ b/app/views/recurring_todos/_recurring_todo_form.erb @@ -1,10 +1,10 @@ <%- reset_tab_index %>
- <% + <% form_for(@new_recurring_todo, :html=> { :id=>'recurring-todo-form-new-action', :name=>'recurring_todo', :class => 'inline-form' }) do -%>
<%= error_messages_for("item", :object_name => 'action') %>
- +
<%= @@ -14,12 +14,12 @@ - + - + - <%= text_field_tag "tag_list", nil, :size => 30, :tabindex => next_tab_index -%> + <%= text_field_tag "tag_list", nil, :size => 30, :tabindex => next_tab_index -%>
@@ -88,17 +88,6 @@ <%= radio_button_tag('recurring_todo[recurring_target]', 'show_from_date', false, {:tabindex => next_tab_index})%> <%= t('todos.recurrence.from_tickler') %>

-
-
- - -
-
+ <% end %>
diff --git a/app/views/recurring_todos/create.js.erb b/app/views/recurring_todos/create.js.erb index e2c9428d..29fa9e32 100644 --- a/app/views/recurring_todos/create.js.erb +++ b/app/views/recurring_todos/create.js.erb @@ -1,8 +1,8 @@ <% if @saved -%> TracksPages.page_notify('notice', "<%=@status_message%>", 5); - RecurringTodosPage.toggle_overlay(); add_recurring_todo_to_active_container(); replace_form_with_empty_form(); + $( "#new-recurring-todo" ).dialog( "close" ); TracksPages.set_page_badge(<%= @down_count %>); <% else -%> TracksPages.show_errors(html_for_error_messages()); diff --git a/app/views/recurring_todos/edit.js.erb b/app/views/recurring_todos/edit.js.erb index 05d4a9b4..29ddc5f6 100644 --- a/app/views/recurring_todos/edit.js.erb +++ b/app/views/recurring_todos/edit.js.erb @@ -1,9 +1,6 @@ -$('#new-recurring-todo').hide(); $('#edit-recurring-todo').html(html_for_edit_form()); -$('#edit-recurring-todo').show(); -RecurringTodosPage.toggle_overlay(); -enable_rich_interaction(); +$('#edit-recurring-todo').dialog( "open" ); function html_for_edit_form() { - return "<%= escape_javascript(render(:partial => 'edit_form')) %>" + return "<%= escape_javascript(render(:partial => 'edit_form')) %>"; } diff --git a/app/views/recurring_todos/index.html.erb b/app/views/recurring_todos/index.html.erb index 14ced9b0..7f7da84c 100644 --- a/app/views/recurring_todos/index.html.erb +++ b/app/views/recurring_todos/index.html.erb @@ -8,7 +8,7 @@ <%= render :partial => @recurring_todos %>
- +

<%= t('common.last') %> <%= t('todos.completed_recurring') %>

@@ -26,12 +26,9 @@
-
-
-
- <%= render :partial => "recurring_todo_form" %> -
- +
+ <%= render :partial => "recurring_todo_form" %> +
+ \ No newline at end of file diff --git a/app/views/recurring_todos/update.js.erb b/app/views/recurring_todos/update.js.erb index 1f31574c..fd80498f 100644 --- a/app/views/recurring_todos/update.js.erb +++ b/app/views/recurring_todos/update.js.erb @@ -1,5 +1,5 @@ <%- if @saved -%> - RecurringTodosPage.toggle_overlay(); + $( "#edit-recurring-todo" ).dialog( "close" ); TracksPages.page_notify('notice', text_for_status_message(), 5); replace_old_recurring_todo_with_updated(); <%- else -%> diff --git a/app/views/todos/_edit_mobile_form.rhtml b/app/views/todos/_edit_mobile_form.rhtml index 63ede714..df130e65 100644 --- a/app/views/todos/_edit_mobile_form.rhtml +++ b/app/views/todos/_edit_mobile_form.rhtml @@ -4,37 +4,34 @@ <%= error_messages_for("todo") %> <% this_year = current_user.time.to_date.strftime("%Y").to_i -%> -<% if parent_container_type == 'show_mobile' -%> -

 <%= check_box_tag("done", 1, @todo && @todo.completed?, "tabindex" => 1, "onClick" => "document.mobileEdit.submit()") %>

-<% end -%>

-<%= text_field( "todo", "description", "tabindex" => 2, "maxlength" => 100, "size" => 50) %> -

-<%= text_area( "todo", "notes", "cols" => 40, "rows" => 3, "tabindex" => 3) %> +<%= text_field( "todo", "description", "tabindex" => 1, "maxlength" => 100, "size" => 50) %> +

+<%= text_field_tag "tag_list", @tag_list_text, :size => 50, :tabindex => 2 %>

<%= unless @mobile_from_context - collection_select( "todo", "context_id", @contexts, "id", "name", {}, {"tabindex" => 4} ) + collection_select( "todo", "context_id", @contexts, "id", "name", {}, {"tabindex" => 3} ) else select_tag("todo[context_id]", options_from_collection_for_select( @contexts, "id", "name", @mobile_from_context.id), - {"id" => :todo_context_id, :tabindex => 4} ) + {"id" => :todo_context_id, :tabindex => 3} ) end %>

<%= unless @mobile_from_project collection_select( "todo", "project_id", @projects, "id", "name", - {:include_blank => t('todos.no_project')}, {"tabindex" => 5} ) + {:include_blank => t('todos.no_project')}, {"tabindex" => 4} ) else # manually add blank option since :include_blank does not work # with options_from_collection_for_select select_tag("todo[project_id]", ""+options_from_collection_for_select( @projects, "id", "name", @mobile_from_project.id), - {"id" => :todo_project_id, :tabindex => 5} ) + {"id" => :todo_project_id, :tabindex => 4} ) end %> -

-<%= text_field_tag "tag_list", @tag_list_text, :size => 50, :tabindex => 6 %> +

+<%= text_area( "todo", "notes", "cols" => 40, "rows" => 3, "tabindex" => 5) %>

<%= date_select("todo", "due", {:order => [:day, :month, :year], - :start_year => this_year, :include_blank => '--'}, :tabindex => 7) %> + :start_year => this_year, :include_blank => '--'}, :tabindex => 6) %>

<%= date_select("todo", "show_from", {:order => [:day, :month, :year], - :start_year => this_year, :include_blank => true}, :tabindex => 8) %> + :start_year => this_year, :include_blank => true}, :tabindex => 7) %> diff --git a/app/views/todos/_mobile_actions.rhtml b/app/views/todos/_mobile_actions.rhtml index 623c8040..2d45c0ee 100644 --- a/app/views/todos/_mobile_actions.rhtml +++ b/app/views/todos/_mobile_actions.rhtml @@ -2,4 +2,12 @@

<%= t('todos.no_incomplete_actions') %>

<% else -%> <%= render :partial => "contexts/mobile_context", :collection => @contexts_to_show -%> -<% end -%> \ No newline at end of file +<% end -%> +<% unless @done.nil? -%> +
+

<%= t('todos.completed_actions') %>

+
    +<%= render :partial => "todos/mobile_todo", :collection => @done %> +
+
+<% end %> diff --git a/app/views/todos/_mobile_todo.rhtml b/app/views/todos/_mobile_todo.rhtml index 42f48efb..4fb61407 100644 --- a/app/views/todos/_mobile_todo.rhtml +++ b/app/views/todos/_mobile_todo.rhtml @@ -1,21 +1,13 @@ -<% @todo = mobile_todo -if mobile_todo.starred? - bullet = ""+image_tag("menustar_small.gif")+"" - li_class = " class=\"star\"" -else - bullet = "» " - li_class = "" -end -%> -
  • ><%= bullet %><% - if mobile_todo.completed? --%> -<% else --%> -<% end -%> +<% @todo = mobile_todo -%> +
  • +<% remote_mobile_checkbox(mobile_todo) %> <%= date_span -%> <%= link_to mobile_todo.description, todo_path(mobile_todo, :format => 'm') -%> <% unless mobile_todo.notes.blank? %> <%= link_to(image_tag("mobile_notes.png", :border => "0"), mobile_todo_show_notes_path(mobile_todo, :format => 'm')) -%> <% end %> +<% if mobile_todo.starred? %> +<%= image_tag("menustar_small.gif", :border => "0") -%> +<% end %> <% if parent_container_type == 'context' or parent_container_type == 'tag' -%> <%= " (" + link_to(mobile_todo.project.name, project_path(mobile_todo.project, :format => 'm')) + diff --git a/app/views/todos/mobile_show_notes.rhtml b/app/views/todos/mobile_show_notes.rhtml index d6da7c17..ed9ca787 100644 --- a/app/views/todos/mobile_show_notes.rhtml +++ b/app/views/todos/mobile_show_notes.rhtml @@ -2,4 +2,4 @@ <%= link_to @todo.description, todo_path(@todo, :format => 'm') -%>

    <%= t('todos.notes') %>

    <%= format_note(@todo.notes) %> -<%= link_to t('common.back'), @return_path %> \ No newline at end of file +<%= link_to t('common.back'), @return_path %> diff --git a/app/views/todos/mobile_tag.rhtml b/app/views/todos/mobile_tag.rhtml index 4dde5250..044fdce4 100644 --- a/app/views/todos/mobile_tag.rhtml +++ b/app/views/todos/mobile_tag.rhtml @@ -8,18 +8,18 @@ <%= render :partial => "contexts/mobile_context", :collection => @contexts_to_show -%>

    <%= t('todos.deferred_actions_with', :tag_name=> @tag_title) %>

    <% unless (@deferred.nil? or @deferred.size == 0) -%> - +
      <%= render :partial => "todos/mobile_todo", :collection => @deferred, :locals => { :parent_container_type => "tag" } -%> -
    + <% else -%> <%= t('todos.no_deferred_actions_with', :tag_name => @tag_title) %> <% end -%>

    <%= t('todos.completed_actions_with', :tag_name => @tag_title) %>

    <% unless (@done.nil? or @done.size == 0) -%> - +
      <%= render :partial => "todos/mobile_todo", :collection => @done, :locals => { :parent_container_type => "tag" } %> -
    + <% else -%> <%= t('todos.no_completed_actions_with', :tag_name => @tag_title) %> <% end -%> -
  • \ No newline at end of file + diff --git a/config/locales/cz.yml b/config/locales/cz.yml new file mode 100755 index 00000000..f99c46e2 --- /dev/null +++ b/config/locales/cz.yml @@ -0,0 +1,945 @@ +--- +cz: + layouts: + toggle_notes: Zobrazit/skrýt poznámky + toggle_contexts: "Přepnout sbalené kontexty" + toggle_contexts_title: "Zobrazí/skryje sbalené kontexty" + next_actions_rss_feed: RSS feed aktuálních úkolů + toggle_notes_title: Zobrazí/skryje všechny poznámky + mobile_navigation: + new_action: 0-Nový úkol + logout: Odhlásit + feeds: Feedy + starred: 4-Hvězdičky + projects: 3-Projekty + tickler: Tickler + contexts: 2-Kontexty + home: 1-Domů + navigation: + manage_users_title: Přidat nebo smazat uživatele + recurring_todos: Opakující se úkoly + api_docs: REST API Dokumenty + feeds: Feedy + starred: S hvězdou + notes_title: Zobrazit všechny poznámky + review_title: Provést revizi + stats: Statistiky + tickler_title: Tickler + manage_users: Správa uživatelů + export_title: Import a export dat + preferences: Nastavení + integrations_: Integrovat Tracks + feeds_title: Seznam dostupných feedů + calendar_title: Kalendář datovaných úkolů + completed_tasks: Hotové + stats_title: Zobrazí statistiky úkolů + tickler: Tickler + home_title: Domů + starred_title: Zobrazí úkoly s hvězdičkou + recurring_todos_title: Správa opakovaných úkolů + view: Ukázat + organize: Správa + completed_tasks_title: Hotové úkoly + home: Domů + export: Export + contexts_title: Kontexty + calendar: Kalendář + projects_title: Projekty + search: Hledat + preferences_title: Zobrazí možnosti nastavení + integrations: + opensearch_description: Prohledat Tracks + applescript_next_action_prompt: "Popis úkolu:" + gmail_description: Gadget pro Tracks do Gmailu + applescript_success_after_id: vytvořen + applescript_success_before_id: Nový úkol s ID + number: + format: + separator: . + precision: 3 + delimiter: "," + human: + format: + precision: 1 + delimiter: "" + storage_units: + format: "%n %u" + units: + kb: KB + tb: TB + gb: GB + byte: + one: Byte + other: Bytů + mb: MB + percentage: + format: + delimiter: "" + currency: + format: + format: "%u%n" + unit: $ + separator: . + precision: 2 + delimiter: "," + precision: + format: + delimiter: "" + common: + back: Zpět + third: Třetí + recurring_todos: Opakované úkoly + actions: Úkoly + add: Přidat + previous: Předchozí + logout: Odhlásit + go_back: Zpět + optional: volitelné + week: týden + cancel: Zrušit + none: Žádný + second: Druhý + month: měsíc + server_error: Nastala chyba na serveru. + forum: Fórum + notes: Poznámky + review: Revize + last: Poslední + projects: Projekty + action: Úkol + project: Projekt + ok: Ok + contribute: Přispět + website: Webová stránka + first: První + numbered_step: Krok %{number} + sort: + by_task_count_title: Řadit podle počtu úkolů + by_task_count_title_confirm: Určitě chcete řadit tyto projekty podle počtu úkolů? Stávající pořadí bude ztraceno. + alphabetically: Abecedně + alphabetically_confirm: Určitě chcete řadit tyto projekty abecedně? Stávající pořadí bude ztraceno. + alphabetically_title: Seřadit projekty abecedně + sort: Řadit + by_task_count: Podle počtu úkolů + fourth: Čtvrtý + create: Vytvořit + months: měsíce + contexts: Kontexty + errors_with_fields: "Nastaly potíže s následujícími políčky:" + next: Další + todo: úkol + context: Kontext + drag_handle: CHYŤ MĚ + description: Popis + bugs: Chyby + update: Uložit + forth: Čtvrtý + weeks: týdny + wiki: Wiki + email: Email + search: Hledat + ajaxError: Chyba čtení ze serveru + data: + import_successful: Import byl úspěšný. + import_errors: Při importu došlo k chybám + models: + project: + feed_title: Projekty + feed_description: Všechny projekty uživatele %{username} + todo: + error_date_must_be_future: datum musí být v budoucnosti + user: + error_context_not_associated: Kontext %{context} nepatří uživateli %{user}. + error_project_not_associated: Projekt %{project} nepatří uživateli %{user}. + preference: + due_on: Plánováno na %{date} + due_in: Plánováno za %{days} dní + due_styles: + - Plánováno za ___ dní + - Plánováno na _______ + activerecord: + attributes: + project: + name: Název + default_tags: Výchozí štítky + default_context_name: Výchozí kontext + description: Popis + todo: + predecessors: Závisí na + show_from: Zobrazovat od + notes: Poznámky + project: Projekt + context: Kontext + description: Popis + due: Plánováno na + user: + last_name: Jméno + first_name: Příjmení + preference: + show_hidden_projects_in_sidebar: Zobrazovat skryté projekty v sidebaru + date_format: Formát data + show_hidden_contexts_in_sidebar: Zobrazovat skryté kontexty v sidebaru + mobile_todos_per_page: Úkolů na stránku (mobilní zobrazení) + verbose_action_descriptors: Ukecané popisovače úkolů + staleness_starts: Jako prošlé označit projekty starší než + review_period: Interval revize projektů + sms_context: Výchozí emailový kontext + title_date_format: Formát data nadpisu + show_number_completed: Počet hotových úkolů k zobrazení + refresh: Interval obnovení stránky (v minutách) + week_starts: Začátek týdne + last_name: Příjmení + locale: Lokále + due_style: Zobrazení datovaných úkolů + time_zone: Časové pásmo + show_project_on_todo_done: Po splnění úkolu přejít na projekt + sms_email: SMS email + first_name: Jméno + show_completed_projects_in_sidebar: Zobrazovat hotové projekty v sidebaru + errors: + messages: + greater_than_or_equal_to: musí být větší nebo rovno %{count} + record_invalid: "Problém s daty: %{errors}" + confirmation: se neshoduje s ověřením + less_than_or_equal_to: musí být menší nebo rovno %{count} + blank: nesmí být prázdné + invalid: nesmí obsahovat čárku (',') + exclusion: je rezervované + odd: must be odd + even: must be even + too_short: je příliš krátké (minimum je %{count} znaků) + empty: nesmí být prázdné + wrong_length: nemá správnou délku (má mít %{count} znaků) + less_than: musí být menší než %{count} + greater_than: musí být větší než %{count} + equal_to: se musí rovnat %{count} + accepted: musí být akceptováno + too_long: je příliš dlouhé (maximum je %{count} znaků) + taken: už bylo zabráno + inclusion: není na seznamu + not_a_number: není číslo + models: + project: + attributes: + name: + blank: projekt musí mít název + too_long: název projektu musí být kratší než 256 znaků + taken: už existuje + full_messages: + format: "%{attribute} %{message}" + template: + body: "Nastaly potíže s následujícími políčky:" + header: + one: jedna chyba brání uložení tohoto objektu %{model} + other: "%{count} chyb brání uložení tohoto objektu %{model}" + stats: + tag_cloud_title: Mrak štítků pro všechny úkly + tag_cloud_description: Tento mrak zahrnuje štítky všech úkolů (hotových, nehotových, viditelných i skrytých) + tag_cloud_90days_title: Značky úkolů z posledních 90-ti dní + actions: Úkoly + totals_active_project_count: Znich %{count} je aktivních projeků + actions_last_year_legend: + number_of_actions: Počet úklolů + months_ago: měsíců zpět + totals_first_action: Od vašeho prvního úkolu %{date} + actions_avg_completion_time: Pro všechny vaše hotové úkoly je průměrný čas dokončení %{count} dní. + top10_longrunning: 10 nejdéle běžících projektů + actions_dow_30days_title: Dny v týdnu (posleních 30 dní) + legend: + actions: Úkoly + number_of_days: Před kolika dny + number_of_actions: Počet úkolů + day_of_week: Den v týdnu + percentage: Podíl + running_time: Čas k dokončení úkolu (týdny) + months_ago: měsíců zpět + current_running_time_of_incomplete_visible_actions: Aktuální čas běhu nedokončených viditelných úkolů + totals_deferred_actions: z nichž %{count} jsou odložené úkoly v Ticlkeru + running_time_legend: + actions: Úkoly + percentage: Podíl + weeks: Čas běhu úkolu (týdny). Klepněte na sloupec pro další info + totals_action_count: máte celkem %{count} úkolů + totals_incomplete_actions: Máte %{count} nehotových úkolů + totals_unique_tags: Z těchto štítků je %{count} unikátních. + actions_avg_completed_30days: a dokončeno průměrně %{count} úkolů za den. + top5_contexts: Top 5 kontextů + actions_lastyear_title: Úkoly za posledních 12 měsíců + totals_actions_completed: "%{count} z nich je hotových." + totals_context_count: Máte %{count} kontextů. + totals_visible_context_count: Z nich je %{count} viditelných kontextů + totals_blocked_actions: "%{count} je závislých na dokončení jiných akcí." + projects: Projekty + action_completion_time_title: Čas dokončení (všechny hotové úkoly) + actions_last_year: Úkoly v posledním roce + actions_min_max_completion_days: Maximum/minimum dní na dokončení je %{min}/%{max}. + tags: Štítky + actions_min_completion_time: Minimální čas k dokončení je %{time}. + no_tags_available: žádné štítky nejsou definovány + actions_day_of_week_title: Den v týdnu (všechny úkoly) + totals_project_count: Máte %{count} projektů. + running_time_all: Aktuální čas běhu všech nehotových úkolů + actions_30days_title: Úkoly za posledních 30 dní + time_of_day: Denní doba (všechny úkoly) + totals_hidden_project_count: "%{count} je skrytých" + tod30: Denní doba (posledních 30 dní) + tag_cloud_90days_description: Tento mrak zahrnuje štítky úkolů, které byly vytvořeny nebo dokončeny v posledních 90-ti dnech. + more_stats_will_appear: Další statistiky se zobrazí až přibyde více úkolů. + top5_visible_contexts_with_incomplete_actions: Top 5 viditelných kontextů s nehotovými úkoly + actions_further: " a dále" + totals_tag_count: Na akcích je umístěno %{count} štítků. + top10_projects_30days: Top 10 projektů za posledních 30 dní + spread_of_running_actions_for_visible_contexts: Distribuce běžících úkolů do viditelných kontextů + actions_selected_from_week: "Úkoly vybrané z týdne " + spread_of_actions_for_all_context: Distribuce všech úkolů do kontextů + click_to_show_actions_from_week: Klepněte %{link} pro zobrazení úkolů z týdne %{week} a dalších. + other_actions_label: (ostatní) + top10_projects: Top 10 projektů + totals_completed_project_count: a %{count} je hotových projektů. + actions_avg_created: Za posledních 12 měsíců bylo vytvořeno průměrně %{count} úkolů + click_to_return: Klepněte %{link} pro návrat ke statistikám. + actions_avg_completed: a uzavřeno průměrně %{count} úkolů za měsíc. + totals: Celkem + time_of_day_legend: + number_of_actions: Počet úkolů + time_of_day: Denní doba + contexts: Kontexty + click_to_return_link: zde + totals_hidden_context_count: a %{count} skrytých kontextů. + labels: + month_avg_completed: "%{months} měsíční průměr hotových" + completed: Completed + month_avg_created: "%{months} měsíční průměr vytvořených" + avg_created: průměrně vytvořeno + avg_completed: průměrně uzavřeno + created: Vytvořeno + running_time_all_legend: + actions: Úkoly + percentage: Podíl + running_time: Čas běhu úkolů (týdny). Klepněte na sloupec pro další info + click_to_update_actions: Klepněte na sloupec v grafu pro zobrazení detailů níže. + no_actions_selected: Nejsou vybrány žádné úkoly. + actions_actions_avg_created_30days: Za posledních 30 dní bylo vytvořeno průměrně %{count} úkolů + tod30_legend: + number_of_actions: Počet úkolů + time_of_day: Denní doba + action_selection_title: TRACKS::výběr úkolů + todos: + show_from: Zobrazovat od + error_starring_recurring: Nebylo možno ohvězdičkovat opakovaný úkol \'%{description}\' + recurring_action_deleted: Úkol byl smazán. Protože jde o opakovaný úkol, byl vložen nový úkol + completed_actions: Hotové úkoly + completed_recurring: Hotové opakované úkoly + added_new_next_action: Přidán nový úkol + completed_rest_of_previous_month: Uzavřeno ve zbytku minulého měsíce + blocked_by: Čeká na %{predecessors} + star_action: Oznařit hvězdičkou + completed_recurrence_completed: Bylo smazáno poslední opakování opakovaného úkolu. Opakování dokončeno + defer_date_after_due_date: Datum zobrazení je až po plánovaném datu úkolu. Upravte datum úkolu před dalším pokusem o odpložení zobrazení. + unable_to_add_dependency: Nepodařilo se přidat závislost + done: Hotovo? + star_action_with_description: ohvězdičkovat úkol '%{description}' + tagged_with: označeno štítkem ‘%{tag_name}’ + completed: Hotovo + no_deferred_actions_with: Žádné odložené úkoly se štítkem '%{tag_name}' + edit_action_with_description: Upravit úkol '%{description}' + no_hidden_actions: Žádné skryté úkoly + action_due_on: (úkol plánován na %{date}) + remove_dependency: Odstranit závislost (nesmaže úkol) + archived_tasks_title: TRACKS::Archiv hotových úkolů + list_incomplete_next_actions: Zabrazí nehotové úkoly + tags: Štítky (oddělené čárkami) + action_deleted_success: Úkol byl úspěšně smazán + new_related_todo_created: Byl vytvořen nový úkol patřící do tohoto opakovaného úkolu + context_changed: Kontext byl změněn na %{name} + add_another_dependency: Přidat další závislost + mobile_todos_page_title: Všechny úkoly + delete_recurring_action_title: Smazat opakovaný úkol + removed_predecessor: Byl odstraněn %{successor} jako závislost pro %{predecessor}. + recurring_actions_title: TRACKS::Opakované úkoly + next_action_needed: Je potřeba zadat aspoň jeden úkol + action_saved: Úkol uložen + scheduled_overdue: Naplánováno zobrazení před %{days} dny + action_deleted_error: Nepodařilo se smazat úkol + edit_action: Upravit úkol + added_new_context: Přidán nový kontext + next_actions_description: "Filtr:" + list_incomplete_next_actions_with_limit: Zobrazuje posledních %{count} nedokončených úkolů + set_to_pending: "%{task} nastaven jako čekající" + added_new_project: Přidán nový projekt + next_actions_title_additions: + completed: hotové úkoly + due_today: dnes + due_within_a_week: během týdne + older_completed_items: "" + append_in_this_project: v tomto projektu + error_deleting_item: Nepodařilo se smazat položku %{description} + task_list_title: TRACKS::Úkoly + no_actions_due_this_week: Žádné úkoly plánovány na tento týden + no_deferred_pending_actions: Žádné odložené ani čekající úkoly + no_recurring_todos: Žádné opakované úkoly + error_completing_todo: Nepodařilo se ukončit / aktivovat opakovaný úkol %{description} + recurring_pattern_removed: Vzor opakování byl odstraněn z %{count} + convert_to_project: Vytvořit projekt + delete_recurring_action_confirm: Opravdu chcete smazat opakovaný úkol '%{description}'? + completed_last_day: Ukončené v posledních 24 hodinách + completed_more_than_x_days_ago: "" + show_in_days: Zobrazit za %{days} dní + no_project: --Žádný projekt-- + error_saving_recurring: Nepodařilo se uložit opakovaný úkol \'%{description}\' + new_related_todo_created_short: vytvořen nový úkol + all_completed: Všechny hotové úkoly + feed_title_in_context: v kontextu '%{context}' + older_than_days: "" + completed_tagged_page_title: TRACKS::Hotové úkoly se štítkem '%{tag_name}' + edit: Upravit + pending: Čekající + completed_actions_with: Hotové úkoly se štítkem '%{tag_name}' + deleted_success: Úkol byl úspěšně smazán. + completed_tasks_title: TRACKS::Hotové úkoly + feed_title_in_project: v projektu '%{project}' + clear_due_date: Smazat plánované datum úkolu + hidden_actions: Skryté úkoly + error_removing_dependency: Nepodařilo se odstranit závislost + was_due_on_date: bylo plánováno na %{date} + show_on_date: Ukázat %{date} + recurrence_period: Interval opakování + deferred_actions_with: Odložené úkoly se štítkem '%{tag_name}' + recurring_deleted_success: Opakovaný úkol byl úspěšně smazán. + confirm_delete: Opravdu chcete smazat úkol '%{description}'? + deferred_tasks_title: TRACKS::Tickler + next_actions_title: Tracks - Úkoly + next_action_description: Popis úkolu + no_completed_actions_with: Žádné hotové úkoly se štítkem '%{tag_name}' + clear_show_from_date: Odstranit datum zobrazení + calendar_page_title: TRACKS::Kalendář + unresolved_dependency: Hodnota v poli 'závisí na' neodpovídá žádnému existujícímu úkolu. Hodnota bude ignorována. Pokračovat? + in_hidden_state: (skrytý) + show_today: Zobrazit Dnes + no_actions_found_title: Nenalezeny žádné úkoly + next_actions_due_date: + overdue_by: Prošlé %{days} den + due_today: Dnes + due_in_x_days: Za %{days} dní + overdue_by_plural: Prošlé %{days} dní + due_tomorrow: Zítra + completed_last_x_days: Uzavřené za posledních %{count} dní + no_actions_with: Žádné úkoly se štítkem '%{tag_name}' + defer_x_days: + one: Ukázat zítra + other: Ukázat za %{count} dní + added_new_next_action_singular: Přidán nový úkol + no_completed_actions: Žádné hotové úkoly. + feeds: + completed: "Hotové: %{date}" + due: "Plánováno na: %{date}" + deferred_pending_actions: Odložené/čekající úkoly + has_x_pending: + one: Jeden čekající úkol + other: %{count} čekajících úkolů + delete_action: Smazat úkol + error_deleting_recurring: Nepodařilo se smazat opakovaný úkol \'%{description}\' + recurring_todos: Opakované úkoly + delete: Smazat + cannot_add_dependency_to_completed_todo: Nelze přidat úkol jako závislost k hotovému úkolu! + drag_action_title: Přetáhnout na jiný úkol pro vytvoření závislosti + no_last_completed_actions: Žádné hotové úkoly + depends_on: Závisí na + tickler_items_due: + one: Jeden úkol v Tickleru je plánován dnes - obnovte stránku pro zobrazení. + other: "%{count} položek v Tickleru je plánováno na dnes tickler items are now due - obnovte stránku pro zobrazení." + action_marked_complete: Úkol '%{description}' byl označen jako %{completed} + completed_today: Dokončené dnes + added_new_next_action_plural: Úkoly byly přidány + new_related_todo_not_created_short: úkol nebyl vytvořen + completed_rest_of_week: Dokončené ve zbytku týdne + error_starring: Nepodařilo se označit úkol hvězdičkou '%{description}' + calendar: + get_in_ical_format: Kalendář ve formátu iCal + due_next_week: Plánované příští týden + no_actions_due_next_week: Na příští týden nejsou plánované žádné úkoly + due_this_week: Plánované ve zbytku týdne + due_today: Plánované dnes + no_actions_due_today: Na dnešek nejsou plánované žádné úkoly + due_next_month_and_later: Plánováno na %{month} a dále + no_actions_due_after_this_month: Na příští měsíc a dále nejsou plánované žádné úkoly + due_this_month: Plánováno na %{month} + no_actions_due_this_month: Na zbytek tohoto měsíce nejsou žádné úkoly + show_tomorrow: Zobrazit zítra + tagged_page_title: TRACKS::Se štítkem '%{tag_name}' + action_deferred: Úkol '%{description}' byl oldožen + recurrence: + ends_on_number_times: Končí po %{number} opakováních + ends_on_date: Končí %{date} + every_work_day: Každý pracovní den + recurrence_on_due_date: datum na které je úkol plánován + weekly_options: Nastavení pro týdenní opakované úkoly + weekly: Týdně + monthly_options: Nastavení pro měsíční opakované úkoly + starts_on: Začíná + daily_options: Nastavení pro denní opakované úkoly + monthly: Měsíčně + pattern: + month_names: + - + - Leden + - Únor + - Březen + - Duben + - Květen + - Červen + - Červenec + - Srpen + - Září + - Říjen + - Listopad + - Prosinec + third: třetí + every_n: každé %{n} + on_day_n: %{n}. den + second: druhý + every_xth_day_of_every_n_months: každý %{x} %{day} každých %{n_months} + from: od + weekly: každý týden + last: poslední + every_day: každý den + the_xth_day_of_month: %{x} %{day} měsíce %{month} + times: (%{number} opakování) + on_work_days: v pracovní dny + first: první + every_year_on: každý rok %{date} + day_names: + - neděle + - pondělí + - úterý + - středa + - čtvrtek + - pátek + - sobota + show: ukázat + fourth: čtvrtý + due: plánováno na + until: do + every_month: každý měsíc + show_option_always: stále + daily: Denně + yearly_every_x_day: Každý %{month} %{day} + recurrence_on_options: Nastavit opakování na + daily_every_number_day: Každých %{number} dní + show_options: Úkázat úkol + weekly_every_number_week: Každých %{number} týdnů + ends_on: Končí + show_days_before: "%{days} dní před plánovaným datem" + from_tickler: datum kdy úkol vypadne z Tickleru (není nastaveno plánované datum) + no_end_date: Nikdy + day_x_on_every_x_month: %{day}. den každý %{month}. měsíc + yearly_options: Nastavení pro roční opakované úkoly + yearly_every_xth_day: %{day} %{day_of_week} měsíce %{month} + monthly_every_xth_day: %{day} %{day_of_week} každý %{month}. měsíc + yearly: Ročně + no_completed_recurring: Žádné hotové opakované úkoly + added_dependency: Přidáno %{dependency} jako závislost. + no_deferred_actions: Žádné odložené úkoly. + all_completed_tagged_page_title: TRACKS::Hotové úkoly se štítkem %{tag_name} + completed_rest_of_month: Ukončené ve zbytku tohoto měsíce + recurrence_completed: Poslední opakování úkolu bylo označeno jako hotové. Opakovaný úkol je dokončený + error_toggle_complete: Nepodařilo se označit úkol jako hotový + no_actions_found: Žádné běžící úkoly. + in_pending_state: ve stavu čekající + due: Plánováno na + action_marked_complete_error: Úkol '%{description}' NEBYL označen jako %{completed} kvůli chybě na serveru. + depends_on_separate_with_commas: Závisí na (odděleno čárkami) + action_saved_to_tickler: Úkol byl uložen do Tickleru + recurring_action_saved: Opakovaný úkol byl uložen + completed_in_archive: + one: V archivu je hotový úkol. + other: V archivu je %{count} hotových úkolů. + to_tickler: do Tickleru + next_actions_description_additions: + completed: v posledních %{count} dnech + due_date: plánovano na %{due_date} nebo dříve + overdue: Spožděné úkoly + add_new_recurring: Vytvořit opakovaný úkol + edit_recurring_todo: Upravit opakovaný úkol + no_incomplete_actions: Žádné nehotové úkoly + notes: + delete_confirmation: Opravdu chcete smazat poznámku '%{id}'? + delete_item_title: Smazat položku + delete_note_title: Smazat poznámku '%{id}' + note_link_title: Zobrazit poznámku %{id} + show_note_title: Zobrazit poznámku + deleted_note: Smazat poznámku '%{id}' + edit_item_title: Upravit položku + note_location_link: "V:" + no_notes_available: "Žádné poznámky: přidejte poznámky ze stránek jednotlivých projektů." + note_header: Poznámka %{id} + delete_note_confirm: Opravdu chcete smazat poznámku '%{id}'? + states: + hidden_plural: Skryté + completed: Hotový + completed_plural: Hotové + visible_plural: Viditelné + visible: Viditelný + active_plural: Aktivní + hidden: Skrytý + active: Aktivní + review_plural: Nerevidované + review: Nerevidovaný + stalled_plural: Opuštěné + stalled: Opuštěný + blocked_plural: Blokované + blocked: Blokovaný + current_plural: Aktuální + current: Aktuální + projects: + was_marked_hidden: byl označen jako skrytý + edit_project_title: Upravit projekt + default_tags_removed_notice: Výchozí štítky byly odstraněny + default_context_set: Výchozí kontext %{default_context} byl nastaven + no_actions_in_project: Žádné aktivní úkoly + deferred_actions: Odložené úkoly projektu + all_completed_tasks_title: TRACKS::Hotové úkoly projektu '%{project_name}' + hide_form: Skrýt formulář + page_title: "TRACKS::Projekt: %{project}" + show_form_title: Nový projekt + list_completed_projects: TRACKS::Hotové projekty + to_new_project_page: přejít k novému projektu + no_notes_attached: Žádné poznámky + deferred_actions_empty: Žádné odložené úkoly + this_project: Tento projekt + project_state: Projekt je %{state}. + todos_append: v tomto projektu + no_last_completed_projects: Žádné hotové projekty + notes: Poznámky + no_last_completed_recurring_todos: Žádné hotové opakované úkoly + notes_empty: Žádné poznámky + no_projects: Žádné projekty + hide_form_title: Schovat formulář založení projektu + with_no_default_context: bez výchozího kontextu + delete_project: Smazat projekt + completed_actions_empty: V tomto projektu nejsou žádné hotové úkoly + show_form: Nový projekt + actions_in_project_title: Úkoly v tomto projetku + delete_project_confirmation: Opravdu chcete smazat projekt '%{name}'? + with_default_context: s výchozím kontextem '%{context_name}' + set_default_tags_notice: Nastavit výchozí šítky úkolů v tomto projektu %{default_tags} + is_active: je aktivní + settings: Nastavení + completed_projects: Hotové projetky + with_default_tags: a s '%{tags}' jako výchozí štítky + list_projects: TRACKS::Projekty + list_reviews: TRACKS::Revize + project_saved_status: Projekt byl uložen + add_project: Přidat projekt + add_note: Nová poznámka + completed_tasks_title: TRACKS::Hotové úkoly projektu '%{project_name}' + delete_project_title: Smaže projekt + hidden_projects: Skryté projekty + add_note_submit: Nová poznámka + was_marked_complete: byl označen jako hotový + completed_actions: Hotové úkoly tohoto projektu + default_context_removed: Výchozí kontext byl odstraněn + default_context: Výchozí kontext pro tento projekt je %{context} + status_project_name_changed: Jméno projektu bylo změněno + active_projects: Aktivní projekty + no_default_context: Tento projekt nemá výchozí kontext + with_no_default_tags: a nemá žádné výchozí značky + edit_project_settings: Upravit vlastnosti projektu + state: Tento projekt je %{state} + time: + am: am + formats: + default: "%a, %d %b %Y %H:%M:%S %z" + time: "" + short: "%d %b %H:%M" + month_day: "%B %d" + long: "%B %d, %Y %H:%M" + pm: pm + preferences: + open_id_url: Vaše OpenID URL je + staleness_starts_after: Zastarání nastává po %{days} dnech + change_identity_url: Změna URL identity + change_password: Změna hesla + password_changed: Heslo bylo změněno. Prosím znovu se přihlašte. + updated: Nastavení bylo uloženo + page_title: TRACKS::Nastavení + title: Vaše nastavení + token_description: Pešek (feedy a použití API) + is_false: "ne" + show_number_completed: Zobrazit %{number} hotových položek + page_title_edit: TRACKS::Editace nastavení + is_true: "ano" + edit_preferences: Editace nastavení + sms_context_none: žádný + generate_new_token: Generovat nového peška + token_header: Váš pešek + authentication_header: Vaše autentizace + current_authentication_type: Používáte autentizaci %{auth_type} + change_authentication_type: Změna typu autentizace + tabs: + authentication: Autentizace + tracks_behavior: Chování Tracks + profile: Profil + date_and_time: Datum a čas + generate_new_token_confirm: Opravdu? Nový pešek nahradí ten původní a způsobí nefunkčnost ve všech aplikacích, kde jej používáte. + errors: + user_unauthorized: "401 Neautorizováno: Jen administrátoři smí používat tuto funkci." + date: + month_names: + - + - Leden + - Únor + - Březen + - Duben + - Květen + - Červen + - Červenec + - Srpen + - Září + - Říjen + - Listopad + - Prosinec + abbr_day_names: + - Ne + - Po + - Út + - St + - Čt + - Pá + - So + order: + - :rok + - :měsíc + - :den + formats: + only_day: "" + default: "%Y-%m-%d" + short: "%b %d" + month_day: "" + long: "%B %d, %Y" + longer: "%A %B %d, %Y" + day_names: + - Neděle + - Ponělí + - Úterý + - Středa + - Čtvrtek + - Pátek + - Sobota + abbr_month_names: + - + - Led + - Úno + - Bře + - Dub + - Kvě + - Čer + - Čec + - Srp + - Zář + - Říj + - Lis + - Pro + support: + array: + words_connector: ", " + last_word_connector: ", a " + two_words_connector: " a " + select: + prompt: Prosím vyberte + footer: + send_feedback: Poslat zpětnou vazbu na %{version} + shared: + multiple_next_actions: Úkoly (jeden na každém řádku) + hide_form: Schovat formulář + toggle_single: Přidat úkol + add_action: Přidat úkol + add_actions: Přidat úkoly + tags_for_all_actions: Značky (oddělené čárkami) + toggle_single_title: Přidat jeden nový úkol + project_for_all_actions: Projekt (pro všechny) + context_for_all_actions: Kontext (pro všechny) + toggle_multi: Přidat více úkolů + separate_tags_with_commas: oddělené čárkami + toggle_multi_title: Přepnout formulář zakládání jedoho/více úkolů + hide_action_form_title: Skrýt formulář pro založení nového úkolu + make_actions_dependent: Akce budou vzájemně závislé + users: + successfully_deleted_user: Uživatel %{username} byl úspěšně smazán + failed_to_delete_user: Nepodařilo se smazat uživatele %{username} + total_contexts: Kontextů celkem + first_user_heading: "Vítejte v TRACKS. Nejdříve je nutné vytvořit administrátorský účet:" + openid_url_verified: Identitní url %{url} bylo úspěšně ověřeno a nastavena autentizace pomocí OpenID. + auth_type_update_error: "Nepodařilo se změnit typ autentizace: %{error_messages}" + destroy_successful: Uživatel %{login} byl úspěšně zničen + new_token_generated: Nový pešek byl úspěšně vygenerován + total_projects: Projektů celkem + signup_successful: Registrace uživatele %{username} byla úspěšná. + change_password_submit: Změnit heslo + no_signups_title: TRACKS::Registrace není povolena + user_created: Uživatel byl vytvořen. + manage_users: Správa uživatelů + account_signup: Registrace uživatele + password_updated: Heslo bylo změněno. + desired_login: Uživatelské jméno + signup: Registrace + confirm_password: Potvrzení hesla + new_user_heading: "Registrace nového uživatele:" + auth_type_updated: Typ autentizace byl změněn. + total_actions: Úkolů celkem + change_password_title: TRACKS::Změna hesla + change_auth_type_title: TRACKS::Změna zůsobu autentizace + change_password_prompt: Pro změnu hesla zadejte nové hestlo do polí níže a stiskněte 'Změna hesla'. + password_confirmation_label: Potvrzení hesla + destroy_error: Nepodařilo se smazat uživatele %{login} + choose_password: Zvolte heslo + register_with_cas: S vaším uživatelským jménem z CASu + label_auth_type: Způsob autentizace + new_password_label: Nové heslo + you_have_to_reset_your_password: "Je nutné změnit heslo" + new_user_title: TRACKS::Přihlášení jako administrátor + destroy_user: Zničit uživatele + total_users_count: Máte celkem %{count} uživatelů + destroy_confirmation: "Varování: tato akce smaže uživatele '%{login}', všechny jeho úkoly, kontexty, projekty i poznámky. Opravdu chcete pokračovat?" + signup_new_user: Registrace nového uživatele + openid_ok_pref_failed: Vaše identitní URL %{url} bylo úspěšně ověřeno, ale došlo k problému při ukládání nastavení. + identity_url: URL identity + auth_change_submit: Změnit způsob přihlašování + change_authentication_type: Změna způsobu přihlašování + total_notes: Poznámek celkem + select_authentication_type: Vyberte nový způsob autentizace a stiskněte 'Změnit způsob přihlašování'. + sidebar: + list_name_active_contexts: Aktivní kontexty + list_name_active_projects: Aktivní projekty + list_empty: Nic + list_name_completed_projects: Hotové projekty + list_name_hidden_projects: Skryté projekty + list_name_hidden_contexts: Skryté kontexty + feedlist: + choose_context: Vyberte kontext jehož feed si přejete + actions_due_today: Akce plánované na dnes + rss_feed: RSS Feed + ical_feed: iCal feed + all_contexts: Všechny kontexty + legend: "Legenda:" + all_projects: Všechny projekty + choose_project: Vyberte projekt jehož feed si přejete + select_feed_for_project: Vyberte feed pro tento projekt + active_projects_wo_next: Aktivni projekty bez úkolů + project_needed: Musíte nejdříve založit aspoň jeden projekt + active_starred_actions: Všechny aktivní úkoly s hvězdičkou + select_feed_for_context: Select the feed for this context + projects_and_actions: Aktivní projekty a jejich úkoly + context_needed: Musíte nejdříve založit aspoň jeden kontext + actions_due_next_week: Úkoly plánované na příštích sedm dní + notice_incomplete_only: "Poznámka: všechny feedy obsahují jen nehotové úkoly." + all_actions: Všechny úkoly + actions_completed_last_week: Úkoly dokončené v posledních sedmi dnech + context_centric_actions: Feedy s aktivními úkoly podle kontextů + plain_text_feed: Prostý text + last_fixed_number: Posledních %{number} úkolů + project_centric: Feedy s aktivními úkoly podle projektu + contexts: + delete_context_title: Smazat kontext + all_completed_tasks_title: TRACKS::Hotové úkoly v kontextu '%{context_name}' + hide_form: Schovat formulář + show_form_title: Nový kontext + delete_context_confirmation: Opravdu chcete smazat kontext '%{name}'? Dojde ke smazání všech (opakovaných) úkolů z daného kontextu! + delete_context: Smazat kontext + edit_context: Upravit kontext + hide_form_title: Schovat formulář + context_hide: Schovat z úvodní stránky? + hidden_contexts: Schovat kontexty + no_contexts_active: Žádné aktivní kontexty + show_form: Nový kontext + visible_contexts: Viditelné kontexty + save_status_message: Kontext uložen + add_context: Vytvořit kontext + context_name: Náev kontextu + update_status_message: Název kontextu byl změněn + completed_tasks_title: TRACKS::Hotové úkoly v kontextu '%{context_name}' + new_context_post: "' bude také vytvořen. Opravdu?" + status_active: Kontext je aktivní + no_actions: Žádné aktivní úkoly v tomto kontextu + last_completed_in_context: v tomto kontextu (posledních %{number}) + context_deleted: Kontext byl odstraněn '%{name}' + no_contexts_hidden: Žádné skryté kontexty + new_context_pre: Nový kontext ' + status_hidden: kontext je skrytý + login: + login_cas: přejít na CAS + sign_in: Přihlásit se + openid_identity_url_not_found: Je nám líto, neexistuje uživatel s touto identitou (%{identity_url}) + user_no_expiry: Neodhlšovat + cas_no_user_found: Nazdar, %{username}! Nemáte účet na Tracks. + cas_login: Přihlášení přes CAS + successful_with_session_info: "Přihlášení bylo úspěšné:" + please_login: Pro pokračování se prosím přihlšte do Tracks + cas_logged_in_greeting: Zdravíčko, %{username}! Byl jste autorizován. + cas_username_not_found: Bohužel neexistuje uživatel v CASu se jménem (%{username}) + mobile_use_openid: "\xE2\x80\xA6nebo přihlášení s OpenID" + cas_create_account: Pro vytvoření účtu v CASu prosím pokračujte sem %{signup_link} + account_login: Přihlášení uživatele + cas_signup_link: Vyžádat účet + session_will_not_expire: sezení bylo nastaveno jako trvalé. + successful: Přihlášení úspěšné. Vítejte zpět! + option_separator: nebo + session_time_out: Sezení vypršelo. Prosím %{link} + session_will_expire: sezen vyprší za %{hours} hodin neaktivity. + login_standard: vraťte se ke standardnímu přihlášení + logged_out: You have been logged out of Tracks. + login_with_openid: přihlašte se se svým OpenID + unsuccessful: Přihlášení bylo úspěšné. + log_in_again: přihlašte se znovu. + datetime: + prompts: + minute: Minuta + second: Sekunda + month: Měsíc + hour: Hodina + day: Den + year: Rok + distance_in_words: + less_than_x_minutes: + one: méně než minuta + other: méně než %{count} minut + zero: méně než minuta + x_days: + one: 1 den + other: "%{count} dní" + almost_x_years: + one: almost 1 rok + other: skoro %{count} let + x_seconds: + one: 1 sekunda + other: "%{count} sekund" + about_x_hours: + one: about 1 hodina + other: přibližně %{count} hodin + less_than_x_seconds: + one: méně než 1 sekunda + other: mén než %{count} sekund + zero: méně než 1 sekunda + x_months: + one: 1 měsíc + other: "%{count} měsíců" + x_minutes: + one: 1 minuta + other: "%{count} minut" + about_x_years: + one: about 1 rok + other: přibližně %{count} let + about_x_months: + one: about 1 měsíc + other: přibližně %{count} měsíců + over_x_years: + one: přes rok + other: přes %{count} let + half_a_minute: půl minuty + search: + contexts_matching_query: Nalezené kontexty + tags_matching_query: Nalezené štítky + notes_matching_query: Nalezené poznámky + no_results: Na váš dotaz nebylo nic nalezeno. + todos_matching_query: Nalezené úkoly + projects_matching_query: Nalezené projekty diff --git a/config/locales/de.yml b/config/locales/de.yml index 174c0a8c..700c1684 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -1,110 +1,61 @@ --- de: - integrations: - opensearch_description: In Tracks suchen - applescript_next_action_prompt: "Beschreibung der n\xC3\xA4chsten Aufgabe:" - gmail_description: "Gadget, um Tracks als Gadget zu Googlemail hinzuzuf\xC3\xBCgen" - applescript_success_after_id: erstellt - applescript_success_before_id: "N\xC3\xA4chste neue Aufgabe mit ID" common: - recurring_todos: Wiederholenden Aktionen back: "Zur\xC3\xBCck" - actions: Aktionen third: Dritte + actions: Aktionen + recurring_todos: Wiederholenden Aktionen add: "Hinzuf\xC3\xBCgen" - logout: Abmelden go_back: "Zur\xC3\xBCck" + logout: Abmelden previous: Vorherige none: Keine - week: Woche second: Zweite + week: Woche cancel: Abbrechen optional: optional month: Monat - server_error: Auf dem Server ist ein Fehler aufgetreten. forum: Forum notes: Notizen + server_error: Auf dem Server ist ein Fehler aufgetreten. last: Letzte action: Aktion projects: Projekte + review: !binary | + w5xiZXJwcsO8ZnVuZw== + project: Projekt - contribute: Mitwirken ok: Ok + contribute: Mitwirken first: Erste website: Website numbered_step: Schritt %{number} + errors_with_fields: "Mit folgenden Feldern sind Probleme aufgetreten:" sort: by_task_count_title: Nach Anzahl der Aufgaben sortieren by_task_count_title_confirm: Sollen diese Projekte wirklich nach Anzahl der Aufgaben sortiert werden? Die bisherige Sortier-Reihenfolge wird damit überschrieben. alphabetically: Alphabetisch - sort: Sortieren alphabetically_confirm: Sollen diese Projekte wirklich alphabetisch sortiert werden? Die bisherige Sortier-Reihenfolge wird damit überschrieben. + sort: Sortieren alphabetically_title: Projekte alphabetisch sortieren by_task_count: Nach Anzahl der Aufgaben - fourth: Vierte create: Erstellen - errors_with_fields: "Mit folgenden Feldern sind Probleme aufgetreten:" + drag_handle: Verschieben description: Beschreibung context: Kontext - drag_handle: Verschieben - contexts: Kontexte - next: "N\xC3\xA4chste" todo: Aktione months: Monate - forth: Vierte + next: "N\xC3\xA4chste" + fourth: Vierte + contexts: Kontexte update: Aktualisieren weeks: Woche + forth: Vierte wiki: Wiki bugs: Bugs email: E-Mail ajaxError: Fehler beim Empfangen vom Server search: Suchen - layouts: - toggle_contexts_title: Machen Sie brach Kontexten (un)sichtbare - toggle_contexts: Toggle zusammengebrochen Kontexten - toggle_notes: Notizen umschalten - next_actions_rss_feed: RSS-Feed kommende Aufgaben - toggle_notes_title: Alle Notizen umschalten - mobile_navigation: - logout: Abmelden - feeds: Feeds - new_action: 0-Neue Aufgabe - starred: 4-Markiert - projects: 3-Projekte - tickler: Notizbuch - contexts: 2-Kontexte - home: 1-Home - navigation: - recurring_todos: Sich wiederholende To-Dos - manage_users_title: "Benutzer hinzuf\xC3\xBCgen oder entfernen" - api_docs: REST API Docs - feeds: Feeds - starred: Markiert - stats: Statistiken - notes_title: Alle Notizen anzeigen - manage_users: Benutzer verwalten - tickler_title: Notizbuch - export_title: Daten importieren und exportieren - preferences: Einstellungen - integrations_: Tracks integrieren - calendar_title: "Kalender mit \xC3\xBCberf\xC3\xA4lligen Aufgaben" - feeds_title: "Liste der verf\xC3\xBCgbaren Feeds anzeigen" - recurring_todos_title: Sich wiederholende To-Dos verwalten - completed_tasks: Erledigt - stats_title: Statistiken anzeigen - home_title: Start - tickler: Notizbuch - starred_title: Markierte Aufgaben betrachten - organize: Organisieren - view: Betrachten - completed_tasks_title: "Vollst\xC3\xA4ndig" - home: Start - contexts_title: Kontexte - export: Export - projects_title: Projekte - preferences_title: Meine Einstellungen - search: "Alle Eintr\xC3\xA4ge durchsuchen" - calendar: Kalender number: format: separator: "," @@ -139,24 +90,59 @@ de: precision: format: delimiter: "" - models: - project: - feed_title: Tracks-Projekte - feed_description: "Listet alle Projekte f\xC3\xBCr %{username} auf" - todo: - error_date_must_be_future: muss ein Datum in der Zukunft sein - user: - error_context_not_associated: "Kontext-ID %{context} nicht mit Benutzer-ID %{user} verkn\xC3\xBCpft." - error_project_not_associated: "Projekt-ID %{project} nicht mit User-ID %{user} verkn\xC3\xBCpft." - preference: - due_on: "F\xC3\xA4llig auf %{date}" - due_in: "F\xC3\xA4llig in %{days} Tagen" - due_styles: - - "F\xC3\xA4llig in ___ Tagen" - - "F\xC3\xA4llig am _______" - data: - import_successful: Import war erfolgreich. - import_errors: Beim Import sind Fehler aufgetreten. + layouts: + toggle_contexts_title: Machen Sie brach Kontexten (un)sichtbare + toggle_contexts: Toggle zusammengebrochen Kontexten + toggle_notes: Notizen umschalten + next_actions_rss_feed: RSS-Feed kommende Aufgaben + toggle_notes_title: Alle Notizen umschalten + mobile_navigation: + logout: Abmelden + feeds: Feeds + new_action: Neue Aufgabe + starred: Markiert + projects: Projekte + tickler: Notizbuch + contexts: Kontexte + home: Home + navigation: + api_docs: REST API Docs + recurring_todos: Sich wiederholende To-Dos + manage_users_title: "Benutzer hinzuf\xC3\xBCgen oder entfernen" + feeds: Feeds + stats: Statistiken + starred: Markiert + notes_title: Alle Notizen anzeigen + manage_users: Benutzer verwalten + tickler_title: Notizbuch + integrations_: Tracks integrieren + preferences: Einstellungen + export_title: Daten importieren und exportieren + calendar_title: "Kalender mit \xC3\xBCberf\xC3\xA4lligen Aufgaben" + feeds_title: "Liste der verf\xC3\xBCgbaren Feeds anzeigen" + stats_title: Statistiken anzeigen + home_title: Start + tickler: Notizbuch + starred_title: Markierte Aufgaben betrachten + recurring_todos_title: Sich wiederholende To-Dos verwalten + completed_tasks: Erledigt + organize: Organisieren + view: Betrachten + completed_tasks_title: "Vollst\xC3\xA4ndig" + home: Start + contexts_title: Kontexte + export: Export + search: "Alle Eintr\xC3\xA4ge durchsuchen" + projects_title: Projekte + preferences_title: Meine Einstellungen + calendar: Kalender + review_title: "Machen Sie \xC3\xBCberpr\xC3\xBCfen" + integrations: + opensearch_description: In Tracks suchen + applescript_next_action_prompt: "Beschreibung der n\xC3\xA4chsten Aufgabe:" + gmail_description: "Gadget, um Tracks als Gadget zu Googlemail hinzuzuf\xC3\xBCgen" + applescript_success_after_id: erstellt + applescript_success_before_id: "N\xC3\xA4chste neue Aufgabe mit ID" activerecord: attributes: project: @@ -165,8 +151,8 @@ de: default_context_name: Standard Kontext description: Beschreibung todo: - show_from: Zeigen ab dem predecessors: "H\xC3\xA4ngt ab von" + show_from: Zeigen ab dem notes: Notizen project: Projekt description: Beschreibung @@ -195,6 +181,7 @@ de: show_project_on_todo_done: Zur Projektseite wechseln, wenn To-Do abgeschlossen first_name: Name show_completed_projects_in_sidebar: Zeige abgeschlossene Projekte in der Sidebar + review_period: Projekt-Review-Intervall errors: models: project: @@ -214,8 +201,8 @@ de: odd: muss ungerade sein too_short: ist zu kurz (nicht weniger als %{count} Zeichen) wrong_length: "hat die falsche L\xC3\xA4nge (muss genau %{count} Zeichen haben)" - even: muss gerade sein empty: "muss ausgef\xC3\xBCllt werden" + even: muss gerade sein less_than: muss kleiner als %{count} sein equal_to: muss genau %{count} sein greater_than: "muss gr\xC3\xB6\xC3\x9Fer als %{count} sein" @@ -224,171 +211,98 @@ de: accepted: muss akzeptiert werden not_a_number: ist keine Zahl inclusion: "ist kein g\xC3\xBCltiger Wert" - full_messages: - format: "%{attribute} %{message}" template: body: "Bitte \xC3\xBCberpr\xC3\xBCfen Sie die folgenden Felder:" header: one: "Konnte dieses %{model} Objekt nicht speichern: 1 Fehler." other: "Konnte dieses %{model} Objekt nicht speichern: %{count} Fehler." - stats: - tag_cloud_90days_title: Tag-Cloud-Aktionen in den letzten 90 Tagen - totals_active_project_count: Von diesen sind %{count} aktive Projekte - actions: Aktionen - tag_cloud_title: Tag-Cloud aller Aktionen - tag_cloud_description: Diese Tag-Cloud beinhaltet Tags aller Aktionen (abgeschlossen, nicht abgeschlossen, sichtbar und/oder unsichtbar) - actions_avg_completion_time: Durchschnittlich hast du %{count} Tage gebraucht, um eine Aktion abzuschliessen. - actions_last_year_legend: - number_of_actions: Anzahl Aktionen - months_ago: Monate zuvor - totals_first_action: Seit deiner ersten Aktion am %{date} - top10_longrunning: "Top 10 der am l\xC3\xA4ngsten laufenden Projekte" - totals_action_count: hattest du insgesamt %{count} Aktionen - running_time_legend: - actions: Aufgaben - percentage: Prozentsatz - weeks: "Vergangene Zeit einer Aktion (Wochen). Klick auf eine Leiste f\xC3\xBCr mehr Informationen." - totals_deferred_actions: "von denen %{count} im Notizbuch zur\xC3\xBCckgestellt sind" - current_running_time_of_incomplete_visible_actions: "Aktuelle Laufzeit unvollst\xC3\xA4ndiger sichtbarer Aufgaben" - legend: - actions: Aktionen - number_of_days: Anzahl vergangene Tage - number_of_actions: Anzahl Aktionen - day_of_week: Wochentag - percentage: Prozentsatz - running_time: Laufzeit einer Aktion (Wochen) - months_ago: Monate zuvor - actions_dow_30days_title: Wochentag (letzte 30 Tage) - totals_actions_completed: "%{count} davon sind abgeschlossen." - totals_incomplete_actions: "Du hast %{count} unvollst\xC3\xA4ndige Aktionen" - totals_unique_tags: Von diesen Tags sind %{count} einmalig.. - actions_avg_completed_30days: und %{count} durchschnittlich davon erledigt. - top5_contexts: Top 5 aller Kontexte - actions_lastyear_title: Aktionen der letzten 12 Monate - actions_last_year: Aktionen im letzten Jahr - totals_context_count: Du hast %{count} Kontexte. - totals_visible_context_count: Von diesen sind %{count} sichtbare Kontexte - projects: Projekte - totals_blocked_actions: "%{count} h\xC3\xA4ngen vom Abschluss anderer Aktionen ab." - action_completion_time_title: Fertigstellungszeit (alle abgeschlossenen Aktionen) - no_tags_available: "keine Tags verf\xC3\xBCgbar" - actions_day_of_week_title: Wochentag (alle Aktionen) - tags: Tags - totals_project_count: Du hast %{count} Projekte. - actions_min_max_completion_days: "Das Minimum/Maximum an Tagen einer Vervollst\xC3\xA4ndigung ist %{min}/%{max}." - actions_min_completion_time: "Die minimale Zeit betr\xC3\xA4gt %{time}." - time_of_day: Tageszeit (alle Aktionen) - totals_tag_count: Du hast %{count} Tags in Aktionen. - tag_cloud_90days_description: Diese Tag-Cloud beinhaltet Tags der Aktionen, die in den letzten 90 Tagen erstellt oder abgeschlossen wurden. - actions_30days_title: _Aktionen der letzten 30 Tage - actions_further: und danach - tod30: Tageszeit (letzte 30 Tage) - running_time_all: "Aktuelle Laufzeit aller unvollst\xC3\xA4ndigen Aktionen." - totals_hidden_project_count: "%{count} sind versteckt" - top5_visible_contexts_with_incomplete_actions: "Top 5 der sichtbaren Kontexte mit unvollst\xC3\xA4ndigen Aktionen" - more_stats_will_appear: "Weitere Statistiken werden verf\xC3\xBCgbar, wenn einige Aufgaben hinzugef\xC3\xBCgt wurden." - top10_projects_30days: Top-10-Projekt der letzten 30 Tage - click_to_show_actions_from_week: Klick auf %{link} um die Aktionen von Woche %{week} und danach anzuzeigen. - spread_of_actions_for_all_context: Aufgabenverteilung aller Kontexte - actions_selected_from_week: "Aktionen ausgew\xC3\xA4hlt ab Woche" - top10_projects: Top 10 aller Projekte - other_actions_label: (andere) - spread_of_running_actions_for_visible_contexts: Verteilung der laufenden Aufgaben aller sichtbaren Kontexte - actions_avg_created: In den letzten 12 Monaten hast du im Durchschnitt %{count} Aktionen erstellt - click_to_return: "Klick auf %{link} um zur Statistikseite zur\xC3\xBCckzukehren." - totals_completed_project_count: und %{count} sind abgeschlossene Projekte. - totals: Ingesamt - time_of_day_legend: - number_of_actions: Anzahl Aufgaben - time_of_day: Tageszeit - click_to_return_link: hier - totals_hidden_context_count: und %{count} sind versteckte Kontexte. - contexts: Kontexte - actions_avg_completed: und %{count} durchschnittlich davon monatlich erledigt - running_time_all_legend: - actions: Aktionen - percentage: Prozentsatz - running_time: "Laufzeit einer Aktion (Wochen). Klick auf eine Leiste f\xC3\xBCr mehr Informationen." - no_actions_selected: "Es sind keine Aufgaben ausgew\xC3\xA4hlt." - click_to_update_actions: Klicke auf eine Leiste in der Grafik um die Aktionen unten zu aktualisieren. - labels: - month_avg_completed: "%{months} Monat durchschnittlich fertig gestellt" - completed: Erledigt - month_avg_created: "%{months} Monat durchschnittlich erstellt" - avg_created: Durchschnittlich erstellt - avg_completed: Durchschnittlich fertiggestellt - created: Erstellt - tod30_legend: - number_of_actions: Anzahl Aufgaben - time_of_day: Tageszeit - action_selection_title: TRACKS::Aktionsauswahl - actions_actions_avg_created_30days: In den letzten 30 Tagen hast du im Durchschnitt %{count} Aktionen erstellt + full_messages: + format: "%{attribute} %{message}" + models: + project: + feed_title: Tracks-Projekte + feed_description: "Listet alle Projekte f\xC3\xBCr %{username} auf" + todo: + error_date_must_be_future: muss ein Datum in der Zukunft sein + user: + error_context_not_associated: "Kontext-ID %{context} nicht mit Benutzer-ID %{user} verkn\xC3\xBCpft." + error_project_not_associated: "Projekt-ID %{project} nicht mit User-ID %{user} verkn\xC3\xBCpft." + preference: + due_on: "F\xC3\xA4llig auf %{date}" + due_in: "F\xC3\xA4llig in %{days} Tagen" + due_styles: + - "F\xC3\xA4llig in ___ Tagen" + - "F\xC3\xA4llig am _______" + data: + import_successful: Import war erfolgreich. + import_errors: Beim Import sind Fehler aufgetreten. todos: + recurring_action_deleted: Die Aktion wurde gelöscht. Da dies eine wiederkehrende Aktion ist, wurde eine neue erstellt. show_from: Anzeigen ab dem error_starring_recurring: Konnte die Hervorhebung der wiederkehrenden Aufgabe \'%{description}\' nicht durchführen - recurring_action_deleted: Die Aktion wurde gelöscht. Da dies eine wiederkehrende Aktion ist, wurde eine neue erstellt. completed_actions: Erledigte Aufgaben - completed_recurring: Abgeschlossene wiederkehrende To-Dos added_new_next_action: Neue Aktion angelegt + completed_recurring: Abgeschlossene wiederkehrende To-Dos completed_rest_of_previous_month: Fertiggestellt den Rest des Vormonats blocked_by: Blockiert durch %{predecessors} - unable_to_add_dependency: Abhängigkeit nicht hinzufügbar star_action: Aktion markieren completed_recurrence_completed: Es gibt keine weitere Aktion nach der soeben gelöschten. Die Wiederholung ist abgeschlossen. defer_date_after_due_date: "Zur\xC3\xBCckstellungsdatum nach Ablaufdatum. Bitte passe das Ablaufdatum an, dass es vor dem Zur\xC3\xBCckstellungsdatum liegt." + unable_to_add_dependency: Abhängigkeit nicht hinzufügbar done: Erledigt? star_action_with_description: Aktion '%{description}' markieren tagged_with: getagged mit ‘%{tag_name}’ completed: Erledigt no_deferred_actions_with: "Keine zur\xC3\xBCckgestellten Aktionen mit dem Tag '%{tag_name}'" + action_due_on: "(Aktion f\xC3\xA4llig am %{date})" no_hidden_actions: Momentan sind keine versteckten Aufgaben vorhanden edit_action_with_description: Aktion '%{description}' bearbeiten - action_due_on: "(Aktion f\xC3\xA4llig am %{date})" - action_deleted_success: Die nächste Aktion erfolgreich gelöscht - archived_tasks_title: TRACKS::Archivierte erledigte Aufgaben - remove_dependency: Abhängigkeit löschen (löscht nicht die Aufgabe) list_incomplete_next_actions: Unerledigte Folge-Aufgaben anzeigen tags: Tags (Komma-separiert) - new_related_todo_created: "Eine neue To-Do wurde hinzugef\xC3\xBCgt, die zu dieser wiederkehrenden To-Do geh\xC3\xB6rt" + archived_tasks_title: TRACKS::Archivierte erledigte Aufgaben + remove_dependency: Abhängigkeit löschen (löscht nicht die Aufgabe) + action_deleted_success: Die nächste Aktion erfolgreich gelöscht context_changed: Kontext zu %{name} gewechselt + new_related_todo_created: "Eine neue To-Do wurde hinzugef\xC3\xBCgt, die zu dieser wiederkehrenden To-Do geh\xC3\xB6rt" mobile_todos_page_title: Alle Aufgaben add_another_dependency: "F\xC3\xBCgen Sie eine andere Abh\xC3\xA4ngigkeit" delete_recurring_action_title: "Wiederkehrende Aktion '%{description}' l\xC3\xB6schen" removed_predecessor: "%{successor} entfernt als Abh\xC3\xA4ngigkeit von %{predecessor}." recurring_actions_title: TRACKS::Wiederkehrende Aktionen next_action_needed: Es muss mindestens eine folgende Aktion angelegt werden - action_deleted_error: Fehler beim Löschen der Aufgabe action_saved: Aktion gespeichert scheduled_overdue: "Planm\xC3\xA4\xC3\x9Fig angezeigt vor %{days} Tagen" - next_actions_description: "Filter:" + action_deleted_error: Fehler beim Löschen der Aufgabe edit_action: Aktion bearbeiten added_new_context: "Neuer Kontext hinzugef\xC3\xBCgt" - added_new_project: "Neues Projekt hinzugef\xC3\xBCgt" - list_incomplete_next_actions_with_limit: Zeige die letzten %{count} unerledigten Folge-Aufgaben + next_actions_description: "Filter:" set_to_pending: "%{task} als ausstehend markiert" + list_incomplete_next_actions_with_limit: Zeige die letzten %{count} unerledigten Folge-Aufgaben + added_new_project: "Neues Projekt hinzugef\xC3\xBCgt" next_actions_title_additions: completed: Aufgaben erledigt due_today: heute fällig due_within_a_week: diese Woche fällig older_completed_items: "Ältere erledigte Aufgaben" append_in_this_project: in diesem Projekt + edit_recurring_todo: Bearbeiten Repetieren aktion error_deleting_item: Beim Löschen von %{description} trat ein Fehler auf task_list_title: TRACKS::Aufgaben anzeigen no_actions_due_this_week: Keine zu erledigenden Aufgaben für den Rest der Woche - delete_recurring_action_confirm: Soll die wiederkehrende Aktion '%{description}' wirklich gelöscht werden? no_recurring_todos: Im Augenblick gibt es keine wiederkehrenden To-Dos error_completing_todo: Beim Abschliessen/Aktivieren der wiederkehrenden To-Do %{description} ist ein Fehler aufgetreten recurring_pattern_removed: Das Wiederauftreten Muster ist aus entfernt %{count} convert_to_project: In Projekt umwandeln no_deferred_pending_actions: Momentan sind keine aufgeschobenen oder ausstehenden Aufgaben vorhanden. + delete_recurring_action_confirm: Soll die wiederkehrende Aktion '%{description}' wirklich gelöscht werden? completed_last_day: In den letzten 24 Stunden erledigt - new_related_todo_created_short: hat einen neuen todo - no_project: --Kein Projekt-- - show_in_days: Anzeigen in %{days} Tagen - error_saving_recurring: Es gab einen Fehler beim Speichern der wiederkehrenden todo '%{description}' - completed_more_than_x_days_ago: Vor mehr als %{count} Tagen erledigt - all_completed: Alle abgeschlossenen Aktionen feed_title_in_context: im Kontext '%{context}' + completed_more_than_x_days_ago: Vor mehr als %{count} Tagen erledigt + show_in_days: Anzeigen in %{days} Tagen + no_project: --Kein Projekt-- + error_saving_recurring: Es gab einen Fehler beim Speichern der wiederkehrenden todo '%{description}' + new_related_todo_created_short: hat einen neuen todo + all_completed: Alle abgeschlossenen Aktionen pending: Ausstehend older_than_days: "Älter als %{count} Tage" completed_tagged_page_title: "TRACKS:: Erledigte Aufgaben mit Tag %{tag_name}" @@ -400,21 +314,20 @@ de: clear_due_date: Fälligkeitsdatum leeren error_removing_dependency: "Beim Entfernen der Abh\xC3\xA4ngigkeit ist ein Fehler aufgetreten" hidden_actions: Verstecke Aufgaben - show_on_date: Anzeigen am %{date} was_due_on_date: war am %{date} fällig + show_on_date: Anzeigen am %{date} recurrence_period: Wiederholungszeitraum deferred_actions_with: "Zur\xC3\xBCckgestellte Aktionen mit dem Tag '%{tag_name}'" confirm_delete: "Bist du sicher, dass du die Aktion '%{description}' l\xC3\xB6schen m\xC3\xB6chtest?" recurring_deleted_success: "Die wiederkehrende Aktion wurde erfolgreich gel\xC3\xB6scht." - next_action_description: "Beschreibung der n\xC3\xA4chsten Aktion" - next_actions_title: TRACKS::Weitere Aufgaben - deferred_tasks_title: TRACKS::Notizbuch no_completed_actions_with: Keine abgeschlossenen Aktionen mit dem Tag '%{tag_name}' + next_actions_title: TRACKS::Weitere Aufgaben + next_action_description: "Beschreibung der n\xC3\xA4chsten Aktion" + deferred_tasks_title: TRACKS::Notizbuch clear_show_from_date: Datum leeren - calendar_page_title: TRACKS::Kalender unresolved_dependency: "Der Wert, den Sie in die Abh\xC3\xA4ngigkeit Feld eingegeben nicht zu einer bestehenden Aktion zu l\xC3\xB6sen. Dieser Wert wird nicht mit dem Rest der Aktion gerettet werden. Weiter gehen?" + calendar_page_title: TRACKS::Kalender in_hidden_state: als versteckt markiert - completed_last_x_days: In den letzten %{count} Tagen erledigt show_today: Heute anzeigen no_actions_found_title: Keine Aktionen gefunden next_actions_due_date: @@ -423,21 +336,22 @@ de: due_in_x_days: "F\xC3\xA4llig in %{days} Tagen" overdue_by_plural: "\xC3\x9Cberf\xC3\xA4llig mit %{days} Tagen" due_tomorrow: "F\xC3\xA4llig morgen" - added_new_next_action_singular: Neue weiterführende Aufgabe angelegt - no_actions_with: "Im Augenblick gibt es keine unvollst\xC3\xA4ndigen Aktionen mit dem Tag '%{tag_name}'" + completed_last_x_days: In den letzten %{count} Tagen erledigt defer_x_days: one: "Einen Tag zur\xC3\xBCckstellen" other: "%{count} Tage zur\xC3\xBCckstellen" + no_actions_with: "Im Augenblick gibt es keine unvollst\xC3\xA4ndigen Aktionen mit dem Tag '%{tag_name}'" + added_new_next_action_singular: Neue weiterführende Aufgabe angelegt no_completed_actions: Momentan sind keine erledigten Aufgaben vorhanden. + deferred_pending_actions: Aufgeschobene/ausstehende Aufgaben has_x_pending: one: Hat eine ausstehende Aktion other: Hat %{count} ausstehende Aktionen feeds: completed: "Erledigt: %{date}" due: "F&auuml;llig: %{date}" - deferred_pending_actions: Aufgeschobene/ausstehende Aufgaben - delete_action: "Aktion l\xC3\xB6schen" error_deleting_recurring: "Beim L\xC3\xB6schen der wiederkehrenden To-Do %{description} ist ein Fehler aufgetreten" + delete_action: "Aktion l\xC3\xB6schen" recurring_todos: Wiederkehrende To-Dos delete: "L\xC3\xB6schen" drag_action_title: "Auf andere Aktion ziehen, um sie als Abh\xC3\xA4ngigkeit zu definieren" @@ -448,9 +362,9 @@ de: one: Ein Notizbuch-Eintrag ist nun fällig - lade die Seite neu, um sie zu sehen. other: "%{count} Notizbuch-Einträge sind nun fällig - lade die Seite neu, um sie zu sehen." action_marked_complete: Die Aktion '%{description}' wurde als %{completed} markiert. - new_related_todo_not_created_short: nicht schaffen todo completed_today: Heute Fertiggestellt added_new_next_action_plural: Neue weiterführende Aufgaben angelegt + new_related_todo_not_created_short: nicht schaffen todo completed_rest_of_week: Fertiggestellt den Rest dieser Woche calendar: get_in_ical_format: Diesen Kalender im iCal Format herunterladen @@ -461,15 +375,14 @@ de: no_actions_due_today: Heute sind keine Aufgaben fällig due_next_month_and_later: Im %{month} und später fällig no_actions_due_after_this_month: Nach diesem Monat sind keine Aufgaben fällig - due_this_month: Im %{month} fällig no_actions_due_this_month: Keine Aktionen für den Rest des Monats - error_starring: Konnte die Hervorhebung von \'%{description}\' nicht durchführen + due_this_month: Im %{month} fällig show_tomorrow: Morgen anzeigen - action_deferred: Die Aktion \'% {description}\' wurde vertagt + error_starring: Konnte die Hervorhebung von \'%{description}\' nicht durchführen recurrence: + ends_on_number_times: Endet nach %{number} Mal ends_on_date: Endet am %{date} every_work_day: Jeden Arbeitstag - ends_on_number_times: Endet nach %{number} Mal recurrence_on_due_date: Das Datum der To-Do ist verstrichen. weekly_options: "Einstellungen f\xC3\xBCr sich w\xC3\xB6chentlich wiederholende Aktionen" weekly: "W\xC3\xB6chentlich" @@ -477,6 +390,7 @@ de: monthly: Monatlich starts_on: Beginnt am daily_options: "Einstellungen f\xC3\xBCr sich t\xC3\xA4glich wiederholenden Aktionen" + show_option_always: immer pattern: third: Drittel month_names: @@ -501,10 +415,13 @@ de: on_day_n: am Tag %{n} weekly: "w\xC3\xB6chentlich" from: von - last: zuletzt every_day: jeden Tag + last: zuletzt the_xth_day_of_month: der %{x} %{day} von %{month} times: "f\xC3\xBCr %{number} Zeiten" + on_work_days: an Wochentagen + every_year_on: jedes Jahr in %{date} + first: erste day_names: - Sonntag - Montag @@ -513,118 +430,198 @@ de: - Donnerstag - Freitag - Samstag - on_work_days: an Wochentagen - every_year_on: jedes Jahr in %{date} - first: erste show: Show fourth: vierte due: "F\xC3\xA4llig" - until: bis every_month: jeden Monat - show_option_always: immer + until: bis daily: "T\xC3\xA4glich" - recurrence_on_options: Setze Wiederholung auf yearly_every_x_day: "Jeden %{day}. %{month} " + recurrence_on_options: Setze Wiederholung auf daily_every_number_day: Alle %{number} Tage show_options: To-Do anzeigen - weekly_every_number_week: Kehrt jede %{number}. Woche wieder am ends_on: Endet am + weekly_every_number_week: Kehrt jede %{number}. Woche wieder am + yearly_every_xth_day: Den %{day} %{day_of_week} des %{month} yearly_options: "Einstellungen f\xC3\xBCr sich j\xC3\xA4hrlich wiederholende Aktionen" show_days_before: "%{days} Tage bevor die To-Do f\xC3\xA4llig ist" from_tickler: the date todo comes from tickler (no due date set) - yearly_every_xth_day: Den %{day} %{day_of_week} des %{month} no_end_date: Kein Enddatum day_x_on_every_x_month: Tag %{day} in jedem %{month}. Monat yearly: "J\xC3\xA4hrlich" monthly_every_xth_day: Der %{day} %{day_of_week} eines jeden %{month}. Monats + action_deferred: Die Aktion \'% {description}\' wurde vertagt tagged_page_title: TRACKS::Als '%{tag_name}' markiert no_completed_recurring: Im Augenblick gibt es keine abgeschlossenen wiederkehrenden To-Dos added_dependency: "%{dependency} als Abhängigkeit hinzugefügt." - all_completed_tagged_page_title: "TRACKS:: Alle erledigten Aufgaben mit Tag %{tag_name}" - no_deferred_actions: Zur Zeit sind keine zurückgestellten Aktionen vorhanden. completed_rest_of_month: Fertiggestellt den Rest des Monats + no_deferred_actions: Zur Zeit sind keine zurückgestellten Aktionen vorhanden. + all_completed_tagged_page_title: "TRACKS:: Alle erledigten Aufgaben mit Tag %{tag_name}" recurrence_completed: Nach dieser wiederkehrenden Aktion, die du gerade abgeschlossen hast, folgt keine mehr. Die Wiederholung endet hiermit no_actions_found: "Momentan gibt es keine unvollst\xC3\xA4ndigen Aktionen." in_pending_state: und als ausstehend markiert error_toggle_complete: "K\xC3\xB6nnte nicht diese Marke todo komplett" due: Fällig action_marked_complete_error: Die Aktion '%{description}' wurde aufgrund eines Fehlers NICHT als %{completed} markiert. - next_actions_description_additions: - completed: In den letzten %{count} Tagen - due_date: mit einem Datum %{due_date} oder früher action_saved_to_tickler: Aktion im Notizbuch gespeichert - overdue: "Überfällig" - recurring_action_saved: Wiederkehrende Aktion gespeichert depends_on_separate_with_commas: Hängt ab von (Komma-separiert) + recurring_action_saved: Wiederkehrende Aktion gespeichert completed_in_archive: one: Es befindet sich eine erledigte Aufgabe im Archiv. other: Es befinden sich %{count} erledigte Aufgaben im Archiv. to_tickler: ", im Notizbuch hinterlegt" - no_incomplete_actions: Es gibt keine unerledigten Aufgaben + next_actions_description_additions: + completed: In den letzten %{count} Tagen + due_date: mit einem Datum %{due_date} oder früher + overdue: "Überfällig" add_new_recurring: "F\xC3\xBCge eine neue wiederkehrende Aktion hinzu" + no_incomplete_actions: Es gibt keine unerledigten Aufgaben + stats: + tag_cloud_title: Tag-Cloud aller Aktionen + tag_cloud_description: Diese Tag-Cloud beinhaltet Tags aller Aktionen (abgeschlossen, nicht abgeschlossen, sichtbar und/oder unsichtbar) + actions: Aktionen + tag_cloud_90days_title: Tag-Cloud-Aktionen in den letzten 90 Tagen + totals_active_project_count: Von diesen sind %{count} aktive Projekte + actions_last_year_legend: + number_of_actions: Anzahl Aktionen + months_ago: Monate zuvor + totals_first_action: Seit deiner ersten Aktion am %{date} + actions_avg_completion_time: Durchschnittlich hast du %{count} Tage gebraucht, um eine Aktion abzuschliessen. + totals_deferred_actions: "von denen %{count} im Notizbuch zur\xC3\xBCckgestellt sind" + current_running_time_of_incomplete_visible_actions: "Aktuelle Laufzeit unvollst\xC3\xA4ndiger sichtbarer Aufgaben" + top10_longrunning: "Top 10 der am l\xC3\xA4ngsten laufenden Projekte" + totals_action_count: hattest du insgesamt %{count} Aktionen + actions_dow_30days_title: Wochentag (letzte 30 Tage) + legend: + actions: Aktionen + number_of_days: Anzahl vergangene Tage + number_of_actions: Anzahl Aktionen + day_of_week: Wochentag + percentage: Prozentsatz + running_time: Laufzeit einer Aktion (Wochen) + months_ago: Monate zuvor + running_time_legend: + actions: Aufgaben + percentage: Prozentsatz + weeks: "Vergangene Zeit einer Aktion (Wochen). Klick auf eine Leiste f\xC3\xBCr mehr Informationen." + top5_contexts: Top 5 aller Kontexte + actions_lastyear_title: Aktionen der letzten 12 Monate + totals_actions_completed: "%{count} davon sind abgeschlossen." + totals_incomplete_actions: "Du hast %{count} unvollst\xC3\xA4ndige Aktionen" + totals_unique_tags: Von diesen Tags sind %{count} einmalig.. + actions_avg_completed_30days: und %{count} durchschnittlich davon erledigt. + totals_blocked_actions: "%{count} h\xC3\xA4ngen vom Abschluss anderer Aktionen ab." + action_completion_time_title: Fertigstellungszeit (alle abgeschlossenen Aktionen) + projects: Projekte + actions_last_year: Aktionen im letzten Jahr + totals_context_count: Du hast %{count} Kontexte. + totals_visible_context_count: Von diesen sind %{count} sichtbare Kontexte + actions_min_max_completion_days: "Das Minimum/Maximum an Tagen einer Vervollst\xC3\xA4ndigung ist %{min}/%{max}." + actions_min_completion_time: "Die minimale Zeit betr\xC3\xA4gt %{time}." + tags: Tags + no_tags_available: "keine Tags verf\xC3\xBCgbar" + actions_day_of_week_title: Wochentag (alle Aktionen) + totals_project_count: Du hast %{count} Projekte. + totals_hidden_project_count: "%{count} sind versteckt" + tag_cloud_90days_description: Diese Tag-Cloud beinhaltet Tags der Aktionen, die in den letzten 90 Tagen erstellt oder abgeschlossen wurden. + top5_visible_contexts_with_incomplete_actions: "Top 5 der sichtbaren Kontexte mit unvollst\xC3\xA4ndigen Aktionen" + actions_30days_title: _Aktionen der letzten 30 Tage + time_of_day: Tageszeit (alle Aktionen) + more_stats_will_appear: "Weitere Statistiken werden verf\xC3\xBCgbar, wenn einige Aufgaben hinzugef\xC3\xBCgt wurden." + actions_further: und danach + tod30: Tageszeit (letzte 30 Tage) + running_time_all: "Aktuelle Laufzeit aller unvollst\xC3\xA4ndigen Aktionen." + totals_tag_count: Du hast %{count} Tags in Aktionen. + other_actions_label: (andere) + top10_projects_30days: Top-10-Projekt der letzten 30 Tage + spread_of_running_actions_for_visible_contexts: Verteilung der laufenden Aufgaben aller sichtbaren Kontexte + click_to_show_actions_from_week: Klick auf %{link} um die Aktionen von Woche %{week} und danach anzuzeigen. + actions_avg_created: In den letzten 12 Monaten hast du im Durchschnitt %{count} Aktionen erstellt + spread_of_actions_for_all_context: Aufgabenverteilung aller Kontexte + click_to_return: "Klick auf %{link} um zur Statistikseite zur\xC3\xBCckzukehren." + actions_selected_from_week: "Aktionen ausgew\xC3\xA4hlt ab Woche" + totals_completed_project_count: und %{count} sind abgeschlossene Projekte. + top10_projects: Top 10 aller Projekte + totals: Ingesamt + time_of_day_legend: + number_of_actions: Anzahl Aufgaben + time_of_day: Tageszeit + click_to_return_link: hier + totals_hidden_context_count: und %{count} sind versteckte Kontexte. + contexts: Kontexte + actions_avg_completed: und %{count} durchschnittlich davon monatlich erledigt + no_actions_selected: "Es sind keine Aufgaben ausgew\xC3\xA4hlt." + click_to_update_actions: Klicke auf eine Leiste in der Grafik um die Aktionen unten zu aktualisieren. + labels: + month_avg_completed: "%{months} Monat durchschnittlich fertig gestellt" + completed: Erledigt + month_avg_created: "%{months} Monat durchschnittlich erstellt" + avg_created: Durchschnittlich erstellt + avg_completed: Durchschnittlich fertiggestellt + created: Erstellt + running_time_all_legend: + actions: Aktionen + percentage: Prozentsatz + running_time: "Laufzeit einer Aktion (Wochen). Klick auf eine Leiste f\xC3\xBCr mehr Informationen." + tod30_legend: + number_of_actions: Anzahl Aufgaben + time_of_day: Tageszeit + action_selection_title: TRACKS::Aktionsauswahl + actions_actions_avg_created_30days: In den letzten 30 Tagen hast du im Durchschnitt %{count} Aktionen erstellt notes: - delete_note_title: Notiz '%{id}' löschen delete_confirmation: "Bist du sicher, dass du die Notiz '%{id}' l\xC3\xB6schen m\xC3\xB6chtest?" delete_item_title: Eintrag löschen + delete_note_title: Notiz '%{id}' löschen deleted_note: "Notiz '%{id}' l\xC3\xB6schen" note_link_title: Notiz %{id} anzeigen show_note_title: Notiz anzeigen - note_location_link: "In:" edit_item_title: Eintrag bearbeiten + note_location_link: "In:" no_notes_available: "Derzeit gibt es keine Notizen: f\xC3\xBCge Notizen von der jeweiligen Projektseite hinzu." note_header: Notiz %{id} delete_note_confirm: Soll die Notiz '%{id}' wirklich gelöscht werden? - preferences: - open_id_url: "Deine OpenID-URL lautet:" - staleness_starts_after: Abgestandenheit startet nach %{days} Tagen - change_identity_url: "\xC3\x84ndere deine Identit\xC3\xA4ts-URL" - change_password: "Passwort \xC3\xA4ndern" - page_title: TRACKS::Einstellungen - token_description: "Token (f\xC3\xBCr die Verwendung in Feeds und der API)" - title: Deine Einstellungen - is_false: Nein - show_number_completed: "Zeige %{number} erledigte Eintr\xC3\xA4ge" - page_title_edit: "TRACKS::Einstellungen \xC3\xA4ndern" - is_true: Ja - edit_preferences: Einstellungen bearbeiten - sms_context_none: Keine - generate_new_token: Neues Token generieren - token_header: Dein Token - current_authentication_type: Dein Authentifizierungsart ist %{auth_type} - authentication_header: Deine Authentifizierung - change_authentication_type: "Authentifzierungsart \xC3\xA4ndern" - generate_new_token_confirm: "Bist du sicher? Wenn du ein neues Token generierst, wird dies das alte Token ersetzen und jegliche externe Nutzung st\xC3\xB6ren, die das alte Token verwendet." - tabs: - authentication: Authentication - tracks_behavior: Tracks Verhalten - profile: Profil - date_and_time: Datum und Uhrzeit - errors: - user_unauthorized: "401 Unauthorized: Nur administrative Benutzer d\xC3\xBCrfen auf diese Funktion zugreifen." + states: + hidden_plural: Versteckte + review_plural: Datiert + completed: Erledigt + stalled: Stalled + current: Auf dem neusten Stand + completed_plural: Erledigte + review: Datiert + blocked: Verstopft + blocked_plural: Verstopft + stalled_plural: Stalled + visible_plural: Sichtbare + visible: Sichtbar + active_plural: Aktive + current_plural: Auf dem neusten Stand + active: Aktiv + hidden: Versteckt projects: - default_context_set: Standard-Kontext des Projekts auf %{default_context} gesetzt - no_actions_in_project: "Momentan gibt es keine unvollst\xC3\xA4ndigen Aktionen in diesem Projekt" - deferred_actions: "Aufgeschobene Aufgaben f\xC3\xBCr dieses Projekt" was_marked_hidden: wurde als verborgen markiert edit_project_title: Projekt bearbeiten default_tags_removed_notice: Standard-Tags entfernt + default_context_set: Standard-Kontext des Projekts auf %{default_context} gesetzt + no_actions_in_project: "Momentan gibt es keine unvollst\xC3\xA4ndigen Aktionen in diesem Projekt" + deferred_actions: "Aufgeschobene Aufgaben f\xC3\xBCr dieses Projekt" all_completed_tasks_title: "TRACKS:: Alle auflisten Abgeschlossene Aktionen in Project '%{project_name}'" hide_form: Fomular verstecken page_title: "TRACKS::Projekt: %{project}" - to_new_project_page: Zu neuem Projekt weiterleiten - deferred_actions_empty: "Es gibt keine aufgeschobenen Aufgaben f\xC3\xBCr dieses Projekt" show_form_title: Neues Projekt anlegen this_project: Dieses Projekt project_state: Projekt ist %{state} list_completed_projects: "TRACKS:: Liste Abgeschlossene Projekte" + to_new_project_page: Zu neuem Projekt weiterleiten no_notes_attached: "Im Augenblick sind keine Notizen mit diesem Projekt verkn\xC3\xBCpft." + deferred_actions_empty: "Es gibt keine aufgeschobenen Aufgaben f\xC3\xBCr dieses Projekt" + notes: Notizen no_last_completed_recurring_todos: Keine abgeschlossene sich wiederholende To-Dos gefunden todos_append: an dieses Projekt - notes: Notizen no_last_completed_projects: Keine abgeschlossene Projekte gefunden + hide_form_title: Formular verstecken + list_reviews: "TRACKS::R\xC3\xBCckblick" notes_empty: "Es gibt keine Notizen f\xC3\xBCr dieses Projekt" no_projects: Keine Projekte vorhanden - hide_form_title: Formular verstecken delete_project: Projekt löschen completed_actions_empty: "Es gibt keine erledigten Aufgaben f\xC3\xBCr dieses Projekt" with_no_default_context: hat keinen Standardwert Kontext @@ -632,38 +629,58 @@ de: actions_in_project_title: Die Aktionen in diesem Projekt delete_project_confirmation: Soll das Projekt '%{name}' wirklich gelöscht werden? with_default_context: mit einem Standard-Rahmen von '%{context_name}' - project_saved_status: Projekt gespeichert + with_default_tags: und mit '%{tags}' als Standard-Tags is_active: ist aktiv + set_default_tags_notice: Standard-Tags des Projekts auf %{default_tags} setzen completed_projects: Abgeschlossene Projekte add_note: "Notiz hinzuf\xC3\xBCgen" add_project: Projekt hinzufügen list_projects: TRACKS::Projektliste - with_default_tags: und mit '%{tags}' als Standard-Tags settings: Einstellungen - set_default_tags_notice: Standard-Tags des Projekts auf %{default_tags} setzen + project_saved_status: Projekt gespeichert + completed_tasks_title: "TRACKS:: Liste Abgeschlossene Aktionen in Project '%{project_name}'" delete_project_title: Projekt löschen hidden_projects: Versteckte Projekte - completed_tasks_title: "TRACKS:: Liste Abgeschlossene Aktionen in Project '%{project_name}'" add_note_submit: "Notiz hinzuf\xC3\xBCgen" - completed_actions: "Erledigte Aufgaben f\xC3\xBCr dieses Projekt" was_marked_complete: wurde als erledigt markiert default_context_removed: Standard-Kontext entfernt - state: Dieses Projekt ist %{state} - status_project_name_changed: "Projektname ge\xC3\xA4ndert" + completed_actions: "Erledigte Aufgaben f\xC3\xBCr dieses Projekt" default_context: Der Standard-Kontext dieses Projektes ist %{context} active_projects: Aktive Projekte no_default_context: Dieses Projekt hat keinen Standard-Kontext with_no_default_tags: und hat keinen Standardwert Tags + state: Dieses Projekt ist %{state} edit_project_settings: Edit Project Settings - states: - hidden_plural: Versteckte - completed: Erledigt - completed_plural: Erledigte - visible_plural: Sichtbare - active_plural: Aktive - visible: Sichtbar - hidden: Versteckt - active: Aktiv + status_project_name_changed: "Projektname ge\xC3\xA4ndert" + errors: + user_unauthorized: "401 Unauthorized: Nur administrative Benutzer d\xC3\xBCrfen auf diese Funktion zugreifen." + preferences: + open_id_url: "Deine OpenID-URL lautet:" + staleness_starts_after: Abgestandenheit startet nach %{days} Tagen + change_identity_url: "\xC3\x84ndere deine Identit\xC3\xA4ts-URL" + page_title: TRACKS::Einstellungen + change_password: "Passwort \xC3\xA4ndern" + token_description: "Token (f\xC3\xBCr die Verwendung in Feeds und der API)" + title: Deine Einstellungen + show_number_completed: "Zeige %{number} erledigte Eintr\xC3\xA4ge" + is_false: Nein + page_title_edit: "TRACKS::Einstellungen \xC3\xA4ndern" + is_true: Ja + password_changed: "Ihr Passwort ge\xC3\xA4ndert wurde, melden Sie sich bitte wieder an." + edit_preferences: Einstellungen bearbeiten + generate_new_token: Neues Token generieren + sms_context_none: Keine + token_header: Dein Token + updated: Einstellungen aktualisiert + current_authentication_type: Dein Authentifizierungsart ist %{auth_type} + change_authentication_type: "Authentifzierungsart \xC3\xA4ndern" + authentication_header: Deine Authentifizierung + generate_new_token_confirm: "Bist du sicher? Wenn du ein neues Token generierst, wird dies das alte Token ersetzen und jegliche externe Nutzung st\xC3\xB6ren, die das alte Token verwendet." + tabs: + authentication: Authentication + tracks_behavior: Tracks Verhalten + profile: Profil + date_and_time: Datum und Uhrzeit time: am: vormittags formats: @@ -690,6 +707,10 @@ de: - Oktober - November - Dezember + order: + - :day + - :month + - :year abbr_day_names: - So - Mo @@ -698,10 +719,6 @@ de: - Do - Fr - Sa - order: - - :day - - :month - - :year formats: only_day: "%e" longer: "%A, %d. %B %Y" @@ -733,6 +750,13 @@ de: - Okt - Nov - Dez + support: + array: + words_connector: ", " + last_word_connector: " und " + two_words_connector: " und " + select: + prompt: "Bitte w\xC3\xA4hlen Sie" will_paginate: previous_label: !binary | wqsgWnVyw7xjaw== @@ -752,19 +776,12 @@ de: next_label: !binary | TsOkY2hzdGUgwrs= - support: - array: - last_word_connector: " und " - words_connector: ", " - two_words_connector: " und " - select: - prompt: "Bitte w\xC3\xA4hlen Sie" footer: send_feedback: Senden Sie Feedback zu %{version} shared: multiple_next_actions: Mehrere neue Aufgaben (eine pro Zeile) - make_actions_dependent: "Machen Sie Aktionen voneinander abh\xC3\xA4ngig" hide_form: Formular verstecken + make_actions_dependent: "Machen Sie Aktionen voneinander abh\xC3\xA4ngig" toggle_single: Weitere Aktion erstellen add_actions: "Aufgaben hinzuf\xC3\xBCgen" add_action: "Aufgabe hinzuf\xC3\xBCgen" @@ -783,6 +800,50 @@ de: list_name_completed_projects: Abgeschlossene Projekte list_name_hidden_projects: Versteckte Projekte list_name_hidden_contexts: Versteckte Kontexte + users: + successfully_deleted_user: Benutzer %{username} erfolgreich gelöscht. + destroy_successful: "Benutzer %{login} wurde erfolgreich gel\xC3\xB6scht" + total_contexts: Alle Kontexte + openid_url_verified: Die URL %{url} wurde erfolgreich als Identität verifiziert und Deine Authentifizierung auf OpenID umgestellt. + first_user_heading: "Willkommen bei TRACKS. Als erstes legen Sie bitte einen Administrator-Zugang an:" + auth_type_update_error: "Beim Ändern der Authentifizierung trat ein Fehler auf: %{error_messages}" + failed_to_delete_user: Löschen des Benutzers %{username} fehlgeschlagen + new_token_generated: Neuer Token erfolgreich generiert + total_projects: Alle Projekte + signup_successful: Benutzer %{username} erfolgreich angelegt. + change_password_submit: "Passwort \xC3\xA4ndern" + no_signups_title: TRACKS::Anmeldung nicht erlaubt + user_created: Benutzer angelegt. + manage_users: Benutzer verwalten + account_signup: Accounteinrichtung + password_updated: Passwort aktualisiert. + confirm_password: "Passwort best\xC3\xA4tigen" + new_user_heading: "Einen neuen Benutzer anlegen:" + signup: Registrieren + auth_type_updated: Authentifizierungs-Art erfolgreich geändert. + total_actions: Alle Aufgaben + desired_login: "Gew\xC3\xBCnschter Benutzername" + choose_password: "Passwort w\xC3\xA4hlen" + change_password_title: TRACKS::Passwort ändern + change_auth_type_title: TRACKS::Authentifizierungstyp ändern + change_password_prompt: "Gib dein neues Passwort in die unten stehenden Felder ein und klicke auf 'Passwort \xC3\xA4ndern' um dein altes Passwort durch das neue zu ersetzen." + password_confirmation_label: "Passwort best\xC3\xA4tigen" + destroy_error: "Beim L\xC3\xB6schen des Benutzers %{login} ist ein Fehler aufgetreten." + new_password_label: Neues Passwort + register_with_cas: Mit deinem CAS-Benutzernamen + label_auth_type: Authentifizierungsart + new_user_title: TRACKS::Als Administrator anmelden + destroy_user: "Benutzer l\xC3\xB6schen" + total_users_count: Derzeit existieren %{count} Benutzer + destroy_confirmation: "Achtung: der Benutzer '%{login}' wird mit all seinen Aufgaben, Kontexten, Projekten und Notizen gel\xC3\xB6scht. Bist du sicher, dass du fortfahren m\xC3\xB6chtest?" + you_have_to_reset_your_password: "Sie haben Ihr Passwort zur\xC3\xBCcksetzen" + signup_new_user: Neuen Benutzer anlegen + openid_ok_pref_failed: Die URL %{url} wurde erfolgreich als Identität verifiziert, beim Speichern der Einstellungen trat jedoch ein Fehler auf. + change_authentication_type: "Authentifizierungsart \xC3\xA4ndern" + auth_change_submit: "Authentifizierungsart \xC3\xA4ndern" + identity_url: Identity-URL + select_authentication_type: "W\xC3\xA4hle deine neue Authentifizierungsart und klicke 'Authentifizierungsart \xC3\xA4ndern' an, um deine aktuellen Einstellungen zu \xC3\xBCberschreiben." + total_notes: Alle Notizen contexts: delete_context_title: Kontext löschen all_completed_tasks_title: "TRACKS:: Alle Abgeschlossene Ma\xC3\x9Fnahmen im context '%{context_name}'" @@ -801,68 +862,24 @@ de: add_context: "Kontext hinzuf\xC3\xBCgen" update_status_message: "Kontextname wurde ge\xC3\xA4ndert" context_name: Kontextname + completed_tasks_title: "TRACKS:: Abgeschlossene Ma\xC3\x9Fnahmen im context '%{context_name}'" status_active: Kontext ist aktiv new_context_post: "' wird ebenfalls angelegt. Fortfahren?" - completed_tasks_title: "TRACKS:: Abgeschlossene Ma\xC3\x9Fnahmen im context '%{context_name}'" - last_completed_in_context: in diesem Kontext (letzte %{number}) context_deleted: "Gel\xC3\xB6schter Kontext '%{name}'" no_contexts_hidden: Derzeit gibt es keine versteckten Kontexte new_context_pre: Der neue Kontext ' no_actions: "Momentan gibt es keine unvollst\xC3\xA4ndigen Aufgaben in diesem Kontext" + last_completed_in_context: in diesem Kontext (letzte %{number}) status_hidden: Kontext ist versteckt - users: - failed_to_delete_user: Löschen des Benutzers %{username} fehlgeschlagen - destroy_successful: "Benutzer %{login} wurde erfolgreich gel\xC3\xB6scht" - total_contexts: Alle Kontexte - openid_url_verified: Die URL %{url} wurde erfolgreich als Identität verifiziert und Deine Authentifizierung auf OpenID umgestellt. - first_user_heading: "Willkommen bei TRACKS. Als erstes legen Sie bitte einen Administrator-Zugang an:" - auth_type_update_error: "Beim Ändern der Authentifizierung trat ein Fehler auf: %{error_messages}" - successfully_deleted_user: Benutzer %{username} erfolgreich gelöscht. - new_token_generated: Neuer Token erfolgreich generiert - total_projects: Alle Projekte - signup_successful: Benutzer %{username} erfolgreich angelegt. - user_created: Benutzer angelegt. - change_password_submit: "Passwort \xC3\xA4ndern" - no_signups_title: TRACKS::Anmeldung nicht erlaubt - account_signup: Accounteinrichtung - password_updated: Passwort aktualisiert. - manage_users: Benutzer verwalten - auth_type_updated: Authentifizierungs-Art erfolgreich geändert. - total_actions: Alle Aufgaben - desired_login: "Gew\xC3\xBCnschter Benutzername" - signup: Registrieren - confirm_password: "Passwort best\xC3\xA4tigen" - new_user_heading: "Einen neuen Benutzer anlegen:" - change_password_prompt: "Gib dein neues Passwort in die unten stehenden Felder ein und klicke auf 'Passwort \xC3\xA4ndern' um dein altes Passwort durch das neue zu ersetzen." - password_confirmation_label: "Passwort best\xC3\xA4tigen" - destroy_error: "Beim L\xC3\xB6schen des Benutzers %{login} ist ein Fehler aufgetreten." - choose_password: "Passwort w\xC3\xA4hlen" - change_password_title: TRACKS::Passwort ändern - change_auth_type_title: TRACKS::Authentifizierungstyp ändern - label_auth_type: Authentifizierungsart - new_password_label: Neues Passwort - register_with_cas: Mit deinem CAS-Benutzernamen - new_user_title: TRACKS::Als Administrator anmelden - destroy_user: "Benutzer l\xC3\xB6schen" - total_users_count: Derzeit existieren %{count} Benutzer - signup_new_user: Neuen Benutzer anlegen - destroy_confirmation: "Achtung: der Benutzer '%{login}' wird mit all seinen Aufgaben, Kontexten, Projekten und Notizen gel\xC3\xB6scht. Bist du sicher, dass du fortfahren m\xC3\xB6chtest?" - you_have_to_reset_your_password: "Sie haben Ihr Passwort zur\xC3\xBCcksetzen" - openid_ok_pref_failed: Die URL %{url} wurde erfolgreich als Identität verifiziert, beim Speichern der Einstellungen trat jedoch ein Fehler auf. - auth_change_submit: "Authentifizierungsart \xC3\xA4ndern" - identity_url: Identity-URL - change_authentication_type: "Authentifizierungsart \xC3\xA4ndern" - select_authentication_type: "W\xC3\xA4hle deine neue Authentifizierungsart und klicke 'Authentifizierungsart \xC3\xA4ndern' an, um deine aktuellen Einstellungen zu \xC3\xBCberschreiben." - total_notes: Alle Notizen feedlist: actions_due_today: "Heute oder fr\xC3\xBCher f\xC3\xA4llig" choose_context: "Kontext f\xC3\xBCr den Feed w\xC3\xA4hlen" all_contexts: Alle Kontexte rss_feed: RSS-Feed - legend: "Legende:" ical_feed: iCal-Feed - choose_project: "Projekt f\xC3\xBCr den Feed w\xC3\xA4hlen" + legend: "Legende:" all_projects: Alle Projekte + choose_project: "Projekt f\xC3\xBCr den Feed w\xC3\xA4hlen" active_projects_wo_next: Aktive Projekte ohne ausstehende Aufgaben project_needed: Es muss mindestens ein Projekt existieren, bevor ein Feed abonniert werden kann. select_feed_for_project: "Feed f\xC3\xBCr dieses Projekt ausw\xC3\xA4hlen" @@ -872,11 +889,11 @@ de: projects_and_actions: Aktive Projekte und deren Aufgaben notice_incomplete_only: "Hinweis: Alle Feeds zeigen nur Aufgaben, die noch nicht als erledigt markiert wurden." actions_due_next_week: "In den n\xC3\xA4chsten 7 Tagen oder fr\xC3\xBCher f\xC3\xA4llige Aufgaben" + plain_text_feed: Plain-Text-Feed last_fixed_number: Die letzten %{number} Aufgaben all_actions: Alle Aufgaben actions_completed_last_week: In den letzten 7 Tagen abgeschlossene Aufgaben context_centric_actions: "Feeds f\xC3\xBCr unvollst\xC3\xA4ndige Aufgaben in einem bestimmten Kontext" - plain_text_feed: Plain-Text-Feed project_centric: "Feeds f\xC3\xBCr unvollst\xC3\xA4ndige Aufgaben in einem bestimmten Kontext" datetime: prompts: @@ -924,15 +941,15 @@ de: other: mehr als %{count} Jahre half_a_minute: eine halbe Minute login: - login_cas: zum CAS gehen - user_no_expiry: Angemeldet bleiben sign_in: Anmeldung openid_identity_url_not_found: "Sorry, aber es existiert kein Benutzer mit der Identit\xC3\xA4ts-URL (%{identity_url})" - cas_no_user_found: Hallo, %{username}! Du hast leider keinen Tracks-Account. + login_cas: zum CAS gehen + user_no_expiry: Angemeldet bleiben cas_login: CAS-Anmeldung successful_with_session_info: "Anmeldung erfolgreich:" please_login: Bitte melde dich an, um Tracks zu nutzen cas_logged_in_greeting: Hallo, %{username}! Du bist authentifiziert. + cas_no_user_found: Hallo, %{username}! Du hast leider keinen Tracks-Account. cas_username_not_found: Sorry, aber es existiert kein Benutzer mit dem CAS-Benutzernamen (%{username}) mobile_use_openid: "\xE2\x80\xA6oder mit einer OpenID anmelden" cas_create_account: "Wenn du die Anfrage fortsetzen m\xC3\xB6chtest, klicke bitte hier: %{signup_link}" diff --git a/config/locales/en.yml b/config/locales/en.yml index 9feff005..e2dd9b6e 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -7,14 +7,14 @@ en: next_actions_rss_feed: RSS feed of next actions toggle_notes_title: Toggle all notes mobile_navigation: - new_action: 0-New action + new_action: New logout: Logout feeds: Feeds - starred: 4-Starred - projects: 3-Projects + starred: Starred + projects: Projects tickler: Tickler - contexts: 2-Contexts - home: 1-Home + contexts: Contexts + home: Home navigation: manage_users_title: Add or delete users recurring_todos: Repeating todos @@ -560,6 +560,7 @@ en: due_date: with a due date %{due_date} or earlier overdue: Overdue add_new_recurring: Add a new recurring action + edit_recurring_todo: Edit repeating action no_incomplete_actions: There are no incomplete actions notes: delete_confirmation: Are you sure that you want to delete the note '%{id}'? diff --git a/config/locales/es.yml b/config/locales/es.yml index 28cf6c18..61933464 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -1,21 +1,15 @@ --- es: - integrations: - opensearch_description: Buscar en las Tracks - applescript_next_action_prompt: "Descripci\xC3\xB3n de la pr\xC3\xB3xima tarea:" - gmail_description: "Gadget para a\xC3\xB1adir pistas a Gmail como un gadget" - applescript_success_after_id: creado - applescript_success_before_id: "Nueva acci\xC3\xB3n junto con la identificaci\xC3\xB3n" common: back: !binary | QXRyw6Fz - recurring_todos: "Repetici\xC3\xB3n de acciones" - actions: Tareas third: Tercero + actions: Tareas + recurring_todos: "Repetici\xC3\xB3n de acciones" add: "A\xC3\xB1adir" - logout: Salir go_back: "Volver atr\xC3\xA1s" + logout: Salir previous: Anterior none: Ninguno second: Segundo @@ -23,90 +17,45 @@ es: cancel: Cancelar month: mes optional: opcional - server_error: Ha ocurrido un error en el servidor. forum: Foro notes: Notas + server_error: Ha ocurrido un error en el servidor. last: "\xC3\x9Altimo" action: Tarea projects: Proyectos + review: "Revisi\xC3\xB3n" project: Proyecto - contribute: Contribuir ok: Ok + contribute: Contribuir first: Primero website: Website numbered_step: Paso %{number} + errors_with_fields: "Ha habido problemas con los siguientes campos:" create: Crear - fourth: Cuarto sort: by_task_count_title: "Ordenar por n\xC3\xBAmero de tareas" by_task_count_title_confirm: "\xC2\xBFEst\xC3\xA1 seguro que desea ordenar los proyectos por el n\xC3\xBAmero de tareas? Esto reemplazar\xC3\xA1 el orden existente." alphabetically: "Alfab\xC3\xA9ticamente" - sort: Ordenar alphabetically_confirm: "\xC2\xBFEst\xC3\xA1 seguro que desea ordenar los proyectos por orden alfab\xC3\xA9tico? Esto reemplazar\xC3\xA1 el orden existente." + sort: Ordenar alphabetically_title: "Proyectos de ordenar alfab\xC3\xA9ticamente" by_task_count: "Por n\xC3\xBAmero de tareas" - errors_with_fields: "Ha habido problemas con los siguientes campos:" - description: "Descripci\xC3\xB3n" drag_handle: ARRASTRAR + description: "Descripci\xC3\xB3n" context: Contexto - next: "Pr\xC3\xB3ximo" - contexts: Contextos todo: Todo months: meses + next: "Pr\xC3\xB3ximo" + fourth: Cuarto + contexts: Contextos update: Actualizar + weeks: semanas forth: Siguiente wiki: Wiki - weeks: semanas bugs: Errores email: Email ajaxError: Hubo un error al recuperar desde el servidor search: Buscar - layouts: - toggle_contexts_title: "Haga contextos se derrumb\xC3\xB3 (in)visible" - toggle_contexts: "Cambiar los contextos se derrumb\xC3\xB3" - toggle_notes: Activar/Desactivar notas - next_actions_rss_feed: RSS feed of next actions - toggle_notes_title: Activar/Desactivar todas las notas - mobile_navigation: - logout: "Cerrar sesi\xC3\xB3n" - feeds: Feeds - new_action: 0-Nueva tarea - starred: 4-Favoritos - projects: 3-Proyectos - tickler: Tickler - contexts: 2-Contextos - home: 1-Inicio - navigation: - recurring_todos: Tareas repetitivas - manage_users_title: "A\xC3\xB1adir o eliminar usuarios" - api_docs: REST API Docs - feeds: Feeds - stats: "Estad\xC3\xADsticas" - starred: Estrellas - notes_title: Mostrar todas las notas - manage_users: Administrar usuarios - tickler_title: Tickler - export_title: Import and export data - preferences: Preferencias - integrations_: Integrar Tracks - calendar_title: Calendario de las acciones por - feeds_title: See a list of available feeds - recurring_todos_title: Manage recurring actions - completed_tasks: Hecho - stats_title: See your statistics - tickler: Tickler - home_title: Inicio - starred_title: See your starred actions - organize: Organizar - view: Ver - completed_tasks_title: Completed - home: Inicio - contexts_title: Contexts - export: Export - projects_title: Proyectos - preferences_title: Mostrar mis preferencias - search: Search All Items - calendar: Calendario number: format: separator: . @@ -130,24 +79,59 @@ es: separator: . delimiter: "," - models: - project: - feed_title: Tracks Projects - feed_description: Lists all the projects for %{username} - todo: - error_date_must_be_future: must be a date in the future - user: - error_context_not_associated: Context id %{context} not associated with user id %{user}. - error_project_not_associated: Project id %{project} not associated with user id %{user}. - preference: - due_on: Due on %{date} - due_in: Due in %{days} days - due_styles: - - Due in ___ days - - Due on _______ - data: - import_successful: "Importaci\xC3\xB3n se realiz\xC3\xB3 correctamente." - import_errors: "Han ocurrido algunos errores durante la importaci\xC3\xB3n" + layouts: + toggle_contexts_title: "Haga contextos se derrumb\xC3\xB3 (in)visible" + toggle_contexts: "Cambiar los contextos se derrumb\xC3\xB3" + toggle_notes: Activar/Desactivar notas + next_actions_rss_feed: RSS feed of next actions + toggle_notes_title: Activar/Desactivar todas las notas + mobile_navigation: + logout: "Cerrar sesi\xC3\xB3n" + feeds: Feeds + new_action: Nueva tarea + starred: avoritos + projects: Proyectos + tickler: Tickler + contexts: Contextos + home: Inicio + navigation: + api_docs: REST API Docs + recurring_todos: Tareas repetitivas + manage_users_title: "A\xC3\xB1adir o eliminar usuarios" + feeds: Feeds + stats: "Estad\xC3\xADsticas" + starred: Estrellas + notes_title: Mostrar todas las notas + manage_users: Administrar usuarios + tickler_title: Tickler + integrations_: Integrar Tracks + preferences: Preferencias + export_title: Import and export data + calendar_title: Calendario de las acciones por + feeds_title: See a list of available feeds + stats_title: See your statistics + tickler: Tickler + home_title: Inicio + starred_title: See your starred actions + recurring_todos_title: Manage recurring actions + completed_tasks: Hecho + organize: Organizar + view: Ver + completed_tasks_title: Completed + home: Inicio + contexts_title: Contexts + export: Export + search: Search All Items + projects_title: Proyectos + preferences_title: Mostrar mis preferencias + calendar: Calendario + review_title: "Posibilidad de una revisi\xC3\xB3n" + integrations: + opensearch_description: Buscar en las Tracks + applescript_next_action_prompt: "Descripci\xC3\xB3n de la pr\xC3\xB3xima tarea:" + gmail_description: "Gadget para a\xC3\xB1adir pistas a Gmail como un gadget" + applescript_success_after_id: creado + applescript_success_before_id: "Nueva acci\xC3\xB3n junto con la identificaci\xC3\xB3n" activerecord: attributes: project: @@ -156,8 +140,8 @@ es: default_context_name: Default contexto description: "Descripci\xC3\xB3n" todo: - show_from: Mostrar predecessors: Depende de la + show_from: Mostrar notes: Notas project: Proyecto description: "Descripci\xC3\xB3n" @@ -171,8 +155,8 @@ es: date_format: Formato de fecha show_hidden_contexts_in_sidebar: Mostrar los contextos ocultos en el lateral mobile_todos_per_page: "Tareas por p\xC3\xA1gina (Vista M\xC3\xB3vil)" - verbose_action_descriptors: "Descriptores detallado de acci\xC3\xB3n" staleness_starts: Comienzo de estancamiento + verbose_action_descriptors: "Descriptores detallado de acci\xC3\xB3n" sms_context: Contexto por defecto para el email show_number_completed: "Mostrar n\xC3\xBAmero de tareas completadas" title_date_format: "T\xC3\xADtulo del formato de fecha" @@ -186,6 +170,7 @@ es: show_project_on_todo_done: "Ir a la p\xC3\xA1gina del proyecto al completar la tarea" first_name: Nombre show_completed_projects_in_sidebar: Show completed projects in sidebar + review_period: "Intervalo de revisi\xC3\xB3n del proyecto" errors: models: project: @@ -205,8 +190,8 @@ es: odd: tiene que ser impar too_short: "es demasiado corto (m\xC3\xADnimo %{count} caracteres)" wrong_length: es la longitud del mal (debe ser %{count} caracteres) - empty: "no puede estar vac\xC3\xADo" even: "debe ser a\xC3\xBAn" + empty: "no puede estar vac\xC3\xADo" less_than: debe ser menor que %{count} equal_to: debe ser igual a %{count} greater_than: debe ser mayor que %{count} @@ -215,171 +200,98 @@ es: accepted: debe ser aceptada not_a_number: "no es un n\xC3\xBAmero" inclusion: "no est\xC3\xA1 incluido en la lista" + full_messages: + format: "%{attribute} %{message}" template: body: "Hubo problemas con los campos siguientes:" header: one: Un error esta prohibido %{model} se guarden other: "%{count} errores proh\xC3\xADbe este %{model} que se guarden" - full_messages: - format: "%{attribute} %{message}" - stats: - tag_cloud_90days_title: Tag cloud actions in past 90 days - actions: Actions - totals_active_project_count: Of those %{count} are active projects - tag_cloud_title: Tag cloud for all actions - tag_cloud_description: This tag cloud includes tags of all actions (completed, not completed, visible and/or hidden) - actions_avg_completion_time: Of all your completed actions, the average time to complete is %{count} days. - actions_last_year_legend: - number_of_actions: Number of actions - months_ago: Months ago - totals_first_action: Since your first action on %{date} - top10_longrunning: Top 10 longest running projects - totals_action_count: you have a total of %{count} actions - running_time_legend: - actions: Tareas - percentage: Percentage - weeks: Running time of an action (weeks). Click on a bar for more info - totals_deferred_actions: of which %{count} are deferred actions in the tickler - legend: - actions: Tareas - number_of_days: Number of days ago - number_of_actions: "N\xC3\xBAmero de tareas" - day_of_week: Day of week - percentage: Percentage - running_time: Running time of an action (weeks) - months_ago: Months ago - current_running_time_of_incomplete_visible_actions: Current running time of incomplete visible actions - actions_dow_30days_title: Day of week (past 30 days) - totals_actions_completed: "%{count} of these are completed." - totals_incomplete_actions: You have %{count} incomplete actions - totals_unique_tags: Of those tags, %{count} are unique. - actions_avg_completed_30days: and completed an average of %{count} actions per day. - top5_contexts: Top 5 contexts - actions_lastyear_title: Actions in the last 12 months - actions_last_year: Actions in the last years - totals_context_count: You have %{count} contexts. - totals_visible_context_count: Of those %{count} are visible contexts - totals_blocked_actions: "%{count} are dependent on the completion of their actions." - projects: Projects - action_completion_time_title: Completion time (all completed actions) - no_tags_available: no tags available - actions_day_of_week_title: Day of week (all actions) - tags: Tags - totals_project_count: You have %{count} projects. - actions_min_max_completion_days: The Max-/minimum days to complete is %{min}/%{max}. - actions_min_completion_time: The minimum time to complete is %{time}. - time_of_day: Time of day (all actions) - totals_tag_count: You have %{count} tags placed on actions. - tag_cloud_90days_description: This tag cloud includes tags of actions that were created or completed in the past 90 days. - actions_30days_title: Actions in the last 30 days - actions_further: " and further" - tod30: Time of day (last 30 days) - running_time_all: Current running time of all incomplete actions - totals_hidden_project_count: "%{count} are hidden" - top5_visible_contexts_with_incomplete_actions: Top 5 visible contexts with incomplete actions - more_stats_will_appear: More statistics will appear here once you have added some actions. - top10_projects_30days: Top 10 project in past 30 days - click_to_show_actions_from_week: Click %{link} to show the actions from week %{week} and further. - spread_of_actions_for_all_context: Spread of actions for all context - actions_selected_from_week: "Actions selected from week " - top10_projects: Top 10 projects - other_actions_label: (otros) - spread_of_running_actions_for_visible_contexts: Spread of running actions for visible contexts - actions_avg_created: In the last 12 months you created on average %{count} actions - click_to_return: Click %{link} to return to the statistics page. - totals_completed_project_count: and %{count} are completed projects. - totals: Totals - time_of_day_legend: - number_of_actions: "N\xC3\xBAmero de tareas" - time_of_day: Time of day - click_to_return_link: here - contexts: Contexts - totals_hidden_context_count: and %{count} are hidden contexts. - actions_avg_completed: and completed an average of %{count} actions per month. - running_time_all_legend: - actions: Tareas - percentage: Percentage - running_time: Running time of an action (weeks). Click on a bar for more info - no_actions_selected: No hay tareas seleccionadas. - click_to_update_actions: Click on a bar in the chart to update the actions below. - labels: - month_avg_completed: "%{months} Month avg completed" - completed: Completed - month_avg_created: "%{months} Month avg created" - avg_created: Avg created - avg_completed: Avg completed - created: Created - tod30_legend: - number_of_actions: "N\xC3\xBAmero de tareas" - time_of_day: Time of day - action_selection_title: TRACKS::Action selection - actions_actions_avg_created_30days: In the last 30 days you created on average %{count} actions + models: + project: + feed_title: Tracks Projects + feed_description: Lists all the projects for %{username} + todo: + error_date_must_be_future: must be a date in the future + user: + error_context_not_associated: Context id %{context} not associated with user id %{user}. + error_project_not_associated: Project id %{project} not associated with user id %{user}. + preference: + due_on: Due on %{date} + due_in: Due in %{days} days + due_styles: + - Due in ___ days + - Due on _______ + data: + import_successful: "Importaci\xC3\xB3n se realiz\xC3\xB3 correctamente." + import_errors: "Han ocurrido algunos errores durante la importaci\xC3\xB3n" todos: + recurring_action_deleted: Action was deleted. Because this action is recurring, a new action was added show_from: Show from error_starring_recurring: Could not toggle the star of recurring todo \'%{description}\' - recurring_action_deleted: Action was deleted. Because this action is recurring, a new action was added completed_actions: Completed actions - completed_recurring: Completed recurring todos added_new_next_action: Added new next action + completed_recurring: Completed recurring todos completed_rest_of_previous_month: Completado en el resto del mes anterior blocked_by: Blocked by %{predecessors} - unable_to_add_dependency: Unable to add dependency star_action: Star this action completed_recurrence_completed: There is no next action after the recurring action you just deleted. The recurrence is completed defer_date_after_due_date: Defer date is after due date. Please edit and adjust due date before deferring. + unable_to_add_dependency: Unable to add dependency done: Done? star_action_with_description: star the action '%{description}' tagged_with: tagged with ‘%{tag_name}’ completed: Completed no_deferred_actions_with: No deferred actions with the tag '%{tag_name}' + action_due_on: (action due on %{date}) no_hidden_actions: Currently there are no hidden actions found edit_action_with_description: Edit the action '%{description}' - action_due_on: (action due on %{date}) - action_deleted_success: Successfully deleted next action - archived_tasks_title: TRACKS::Archived completed tasks - remove_dependency: Remove dependency (does not delete the action) list_incomplete_next_actions: Lista las siguientes tareas incompletas tags: Tags (separate with commas) - new_related_todo_created: "Una nueva tarea fue a\xC3\xB1adida y que pertenece a esta tarea recurrente" + archived_tasks_title: TRACKS::Archived completed tasks + remove_dependency: Remove dependency (does not delete the action) + action_deleted_success: Successfully deleted next action context_changed: Context changed to %{name} + new_related_todo_created: "Una nueva tarea fue a\xC3\xB1adida y que pertenece a esta tarea recurrente" mobile_todos_page_title: Todas las tareas add_another_dependency: Add another dependency delete_recurring_action_title: Delete the recurring action removed_predecessor: Removed %{successor} as dependency from %{predecessor}. recurring_actions_title: TRACKS::Recurring Actions next_action_needed: You need to submit at least one next action - action_deleted_error: Failed to delete the action action_saved: Action saved scheduled_overdue: Scheduled to show %{days} days ago - next_actions_description: "Filter:" + action_deleted_error: Failed to delete the action edit_action: Edit action added_new_context: Added new context - added_new_project: Added new project - list_incomplete_next_actions_with_limit: Lists the last %{count} incomplete next actions + next_actions_description: "Filter:" set_to_pending: "%{task} set to pending" + list_incomplete_next_actions_with_limit: Lists the last %{count} incomplete next actions + added_new_project: Added new project next_actions_title_additions: completed: actions completed due_today: due today due_within_a_week: due within a week older_completed_items: Older completed items append_in_this_project: in this project + edit_recurring_todo: "Editar la acci\xC3\xB3n de repetici\xC3\xB3n" error_deleting_item: There was an error deleting the item %{description} task_list_title: TRACKS::List tasks no_actions_due_this_week: No actions due in rest of this week - delete_recurring_action_confirm: Are you sure that you want to delete the recurring action '%{description}'? no_recurring_todos: Currently there are no recurring todos error_completing_todo: There was an error completing / activating the recurring todo %{description} recurring_pattern_removed: "El patr\xC3\xB3n de repetici\xC3\xB3n se retira de %{count}" convert_to_project: Make project no_deferred_pending_actions: Currently there are no deferred or pending actions + delete_recurring_action_confirm: Are you sure that you want to delete the recurring action '%{description}'? completed_last_day: Completed in the last 24 hours - new_related_todo_created_short: creada una nueva tarea - no_project: --No project-- - show_in_days: Show in %{days} days - error_saving_recurring: There was an error saving the recurring todo \'%{description}\' - completed_more_than_x_days_ago: Completed more than %{count} days ago - all_completed: Todas las acciones realizadas feed_title_in_context: in context '%{context}' + completed_more_than_x_days_ago: Completed more than %{count} days ago + show_in_days: Show in %{days} days + no_project: --No project-- + error_saving_recurring: There was an error saving the recurring todo \'%{description}\' + new_related_todo_created_short: creada una nueva tarea + all_completed: Todas las acciones realizadas pending: Pending older_than_days: Older than %{count} days completed_tagged_page_title: "TRACKS:: Las tareas completadas con etiqueta %{tag_name}" @@ -391,21 +303,20 @@ es: clear_due_date: Clear due date error_removing_dependency: There was an error removing the dependency hidden_actions: Tareas ocultas - show_on_date: Show on %{date} was_due_on_date: was due on %{date} + show_on_date: Show on %{date} recurrence_period: Recurrence period deferred_actions_with: Deferred actions with the tag '%{tag_name}' confirm_delete: Are you sure that you want to delete the action '%{description}'? recurring_deleted_success: The recurring action was deleted succesfully. - next_action_description: "Descripci\xC3\xB3n de la nueva tarea" - next_actions_title: Tracks - Next Actions - deferred_tasks_title: TRACKS::Tickler no_completed_actions_with: No completed actions with the tag '%{tag_name}' + next_actions_title: Tracks - Next Actions + next_action_description: "Descripci\xC3\xB3n de la nueva tarea" + deferred_tasks_title: TRACKS::Tickler clear_show_from_date: Clear show from date - calendar_page_title: TRACKS::Calendar unresolved_dependency: The value you entered in the dependency field did not resolve to an existing action. This value will not be saved with the rest of the action. Continue? + calendar_page_title: TRACKS::Calendar in_hidden_state: en estado oculto - completed_last_x_days: Completed in last %{count} days show_today: Show Today no_actions_found_title: No actions found next_actions_due_date: @@ -414,21 +325,22 @@ es: due_in_x_days: "Vence en %{days} d\xC3\xADas" overdue_by_plural: Overdue by %{days} days due_tomorrow: "Vence ma\xC3\xB1ana" - added_new_next_action_singular: Added new next action - no_actions_with: Currently there are no incomplete actions with the tag '%{tag_name}' + completed_last_x_days: Completed in last %{count} days defer_x_days: one: Defer one day other: Defer %{count} days + no_actions_with: Currently there are no incomplete actions with the tag '%{tag_name}' + added_new_next_action_singular: Added new next action no_completed_actions: Currently there are no completed actions. + deferred_pending_actions: Deferred/pending actions has_x_pending: one: Tiene una tarea pendiente other: Tiene %{count} tareas pendientes feeds: completed: "Completed: %{date}" due: "Due: %{date}" - deferred_pending_actions: Deferred/pending actions - delete_action: Delete action error_deleting_recurring: There was an error deleting the recurring todo \'%{description}\' + delete_action: Delete action recurring_todos: Recurring todos delete: Delete drag_action_title: Drag onto another action to make it depend on that action @@ -439,9 +351,9 @@ es: one: One tickler item is now due - refresh the page to see it. other: "%{count} tickler items are now due - refresh the page to see them." action_marked_complete: The action '%{description}' was marked as %{completed} - new_related_todo_not_created_short: "no se cre\xC3\xB3 la tarea" completed_today: Completed Today added_new_next_action_plural: Added new next actions + new_related_todo_not_created_short: "no se cre\xC3\xB3 la tarea" completed_rest_of_week: Completado en el resto de esta semana calendar: get_in_ical_format: Get this calendar in iCal format @@ -452,15 +364,14 @@ es: no_actions_due_today: No actions due today due_next_month_and_later: Due in %{month} and later no_actions_due_after_this_month: No actions due after this month - due_this_month: Due in rest of %{month} no_actions_due_this_month: No actions due in rest of this month - error_starring: Could not toggle the star of this todo \'%{description}\' + due_this_month: Due in rest of %{month} show_tomorrow: Show Tomorrow - action_deferred: "La acci\xC3\xB3n \\'%{description}\\' se aplaz\xC3\xB3" + error_starring: Could not toggle the star of this todo \'%{description}\' recurrence: + ends_on_number_times: Ends after %{number} times ends_on_date: Ends on %{date} every_work_day: Every work day - ends_on_number_times: Ends after %{number} times recurrence_on_due_date: the date that the todo is due weekly_options: Settings for weekly recurring actions weekly: Weekly @@ -468,6 +379,7 @@ es: monthly: Monthly starts_on: Starts on daily_options: Settings for daily recurring actions + show_option_always: always pattern: third: third month_names: @@ -490,10 +402,13 @@ es: on_day_n: on day %{n} weekly: weekly from: from - last: last every_day: every day + last: last the_xth_day_of_month: the %{x} %{day} of %{month} times: for %{number} times + on_work_days: on work days + every_year_on: every year on %{date} + first: first day_names: - sunday - monday @@ -502,83 +417,248 @@ es: - thursday - friday - saturday - on_work_days: on work days - first: first - every_year_on: every year on %{date} show: show fourth: fourth due: due - until: until every_month: every month - show_option_always: always + until: until daily: Daily - recurrence_on_options: Set recurrence on yearly_every_x_day: Every %{month} %{day} + recurrence_on_options: Set recurrence on daily_every_number_day: Every %{number} day(s) show_options: Show the todo - weekly_every_number_week: Returns every %{number} week on ends_on: Ends on + weekly_every_number_week: Returns every %{number} week on + yearly_every_xth_day: The %{day} %{day_of_week} of %{month} yearly_options: Settings for yearly recurring actions show_days_before: "%{days} days before the todo is due" from_tickler: the date todo comes from tickler (no due date set) - yearly_every_xth_day: The %{day} %{day_of_week} of %{month} no_end_date: No end date day_x_on_every_x_month: Day %{day} on every %{month} month yearly: Yearly monthly_every_xth_day: The %{day} %{day_of_week} of every %{month} month + action_deferred: "La acci\xC3\xB3n \\'%{description}\\' se aplaz\xC3\xB3" tagged_page_title: TRACKS::Tagged with '%{tag_name}' no_completed_recurring: Currently there are no completed recurring todos added_dependency: Added %{dependency} as dependency. - all_completed_tagged_page_title: "TRACKS:: Todas las tareas realizadas con etiqueta %{tag_name}" - no_deferred_actions: Currently there are no deferred actions. completed_rest_of_month: Completado en el resto de este mes + no_deferred_actions: Currently there are no deferred actions. + all_completed_tagged_page_title: "TRACKS:: Todas las tareas realizadas con etiqueta %{tag_name}" recurrence_completed: There is no next action after the recurring action you just finished. The recurrence is completed no_actions_found: Currently there are no incomplete actions. in_pending_state: en estado pendiente error_toggle_complete: Could not mark this todo complete due: "Fecha l\xC3\xADmite" action_marked_complete_error: The action '%{description}' was NOT marked as %{completed} due to an error on the server. - next_actions_description_additions: - completed: in the last %{count} days - due_date: with a due date %{due_date} or earlier action_saved_to_tickler: Action saved to tickler - overdue: Overdue - recurring_action_saved: Recurring action saved depends_on_separate_with_commas: Depende de (separar con comas) + recurring_action_saved: Recurring action saved completed_in_archive: one: There is one completed action in the archive. other: There are %{count} completed actions in the archive. to_tickler: to tickler - no_incomplete_actions: There are no incomplete actions + next_actions_description_additions: + completed: in the last %{count} days + due_date: with a due date %{due_date} or earlier + overdue: Overdue add_new_recurring: Add a new recurring action + no_incomplete_actions: There are no incomplete actions + stats: + tag_cloud_title: Tag cloud for all actions + tag_cloud_description: This tag cloud includes tags of all actions (completed, not completed, visible and/or hidden) + actions: Actions + tag_cloud_90days_title: Tag cloud actions in past 90 days + totals_active_project_count: Of those %{count} are active projects + actions_last_year_legend: + number_of_actions: Number of actions + months_ago: Months ago + totals_first_action: Since your first action on %{date} + actions_avg_completion_time: Of all your completed actions, the average time to complete is %{count} days. + totals_deferred_actions: of which %{count} are deferred actions in the tickler + current_running_time_of_incomplete_visible_actions: Current running time of incomplete visible actions + top10_longrunning: Top 10 longest running projects + totals_action_count: you have a total of %{count} actions + actions_dow_30days_title: Day of week (past 30 days) + legend: + actions: Tareas + number_of_days: Number of days ago + number_of_actions: "N\xC3\xBAmero de tareas" + day_of_week: Day of week + percentage: Percentage + running_time: Running time of an action (weeks) + months_ago: Months ago + running_time_legend: + actions: Tareas + percentage: Percentage + weeks: Running time of an action (weeks). Click on a bar for more info + top5_contexts: Top 5 contexts + actions_lastyear_title: Actions in the last 12 months + totals_actions_completed: "%{count} of these are completed." + totals_incomplete_actions: You have %{count} incomplete actions + totals_unique_tags: Of those tags, %{count} are unique. + actions_avg_completed_30days: and completed an average of %{count} actions per day. + totals_blocked_actions: "%{count} are dependent on the completion of their actions." + action_completion_time_title: Completion time (all completed actions) + projects: Projects + actions_last_year: Actions in the last years + totals_context_count: You have %{count} contexts. + totals_visible_context_count: Of those %{count} are visible contexts + actions_min_max_completion_days: The Max-/minimum days to complete is %{min}/%{max}. + actions_min_completion_time: The minimum time to complete is %{time}. + tags: Tags + no_tags_available: no tags available + actions_day_of_week_title: Day of week (all actions) + totals_project_count: You have %{count} projects. + totals_hidden_project_count: "%{count} are hidden" + tag_cloud_90days_description: This tag cloud includes tags of actions that were created or completed in the past 90 days. + top5_visible_contexts_with_incomplete_actions: Top 5 visible contexts with incomplete actions + actions_30days_title: Actions in the last 30 days + time_of_day: Time of day (all actions) + more_stats_will_appear: More statistics will appear here once you have added some actions. + actions_further: " and further" + tod30: Time of day (last 30 days) + running_time_all: Current running time of all incomplete actions + totals_tag_count: You have %{count} tags placed on actions. + other_actions_label: (otros) + top10_projects_30days: Top 10 project in past 30 days + spread_of_running_actions_for_visible_contexts: Spread of running actions for visible contexts + click_to_show_actions_from_week: Click %{link} to show the actions from week %{week} and further. + actions_avg_created: In the last 12 months you created on average %{count} actions + spread_of_actions_for_all_context: Spread of actions for all context + click_to_return: Click %{link} to return to the statistics page. + actions_selected_from_week: "Actions selected from week " + totals_completed_project_count: and %{count} are completed projects. + top10_projects: Top 10 projects + totals: Totals + time_of_day_legend: + number_of_actions: "N\xC3\xBAmero de tareas" + time_of_day: Time of day + click_to_return_link: here + totals_hidden_context_count: and %{count} are hidden contexts. + contexts: Contexts + actions_avg_completed: and completed an average of %{count} actions per month. + no_actions_selected: No hay tareas seleccionadas. + click_to_update_actions: Click on a bar in the chart to update the actions below. + labels: + month_avg_completed: "%{months} Month avg completed" + completed: Completed + month_avg_created: "%{months} Month avg created" + avg_created: Avg created + avg_completed: Avg completed + created: Created + running_time_all_legend: + actions: Tareas + percentage: Percentage + running_time: Running time of an action (weeks). Click on a bar for more info + tod30_legend: + number_of_actions: "N\xC3\xBAmero de tareas" + time_of_day: Time of day + action_selection_title: TRACKS::Action selection + actions_actions_avg_created_30days: In the last 30 days you created on average %{count} actions notes: - delete_note_title: Delete the note '%{id}' delete_confirmation: Are you sure that you want to delete the note '%{id}'? delete_item_title: Delete item + delete_note_title: Delete the note '%{id}' deleted_note: Deleted note '%{id}' note_link_title: Show note %{id} show_note_title: Show note - note_location_link: "In:" edit_item_title: Edit item + note_location_link: "In:" no_notes_available: "Currently there are no notes: add notes to projects from individual project pages." note_header: Note %{id} delete_note_confirm: Are you sure that you want to delete the note '%{id}'? + states: + hidden_plural: Hidden + review_plural: Fechado + completed: Completed + stalled: Estancado + current: "Hasta al d\xC3\xADa" + completed_plural: Completed + review: Fechado + blocked: Bloqueado + blocked_plural: Bloqueado + stalled_plural: Estancado + visible_plural: Visible + visible: Visible + active_plural: Active + current_plural: "Hasta al d\xC3\xADa" + active: Active + hidden: Hidden + projects: + was_marked_hidden: has been marked as hidden + edit_project_title: Editar proyecto + default_tags_removed_notice: Removed the default tags + default_context_set: Set project's default context to %{default_context} + no_actions_in_project: Currently there are no incomplete actions in this project + deferred_actions: Tareas pospuestas para este proyecto + all_completed_tasks_title: "TRACKS:: Lista de todas las acciones terminado en '%{project_name}' Proyecto" + hide_form: Esconder formulario + page_title: "TRACKS::Project: %{project}" + show_form_title: Create a new project + this_project: This project + project_state: Project is %{state}. + list_completed_projects: "TRACKS:: Lista de Proyectos Realizados" + to_new_project_page: Take me to the new project page + no_notes_attached: Currently there are no notes attached to this project + deferred_actions_empty: There are no deferred actions for this project + notes: Notes + no_last_completed_recurring_todos: No se ha completado las acciones repetitivas que se encuentran + todos_append: in this project + no_last_completed_projects: No hay proyectos terminados encontrado + hide_form_title: Hide new project form + list_reviews: "TRACKS::Revisi\xC3\xB3n" + notes_empty: There are no notes for this project + no_projects: Currently there are no projects + delete_project: Delete project + completed_actions_empty: No hay tareas completadas para este proyecto + with_no_default_context: with no default context + show_form: Add a project + actions_in_project_title: Actions in this project + delete_project_confirmation: Are you sure that you want to delete the project '%{name}'? + with_default_context: with a default context of '%{context_name}' + with_default_tags: and with '%{tags}' as the default tags + is_active: "est\xC3\xA1 activo" + set_default_tags_notice: Set project's default tags to %{default_tags} + completed_projects: Proyectos completados + add_note: "A\xC3\xB1adir una nota" + add_project: "A\xC3\xB1adir Proyecto" + list_projects: TRACKS::Lista de Proyectos + settings: Settings + project_saved_status: Project saved + completed_tasks_title: "TRACKS:: Lista de Acciones completadas en '%{project_name}' Proyecto" + delete_project_title: Delete the project + hidden_projects: Proyectos ocultos + add_note_submit: "A\xC3\xB1adir nota" + was_marked_complete: has been marked as completed + default_context_removed: Eliminado el contexto por defecto + completed_actions: Tareas completadas para este proyecto + default_context: The default context for this project is %{context} + active_projects: Active projects + no_default_context: Este proyecto no tiene un contexto por defecto + with_no_default_tags: and with no default tags + state: This project is %{state} + edit_project_settings: Edit Project Settings + status_project_name_changed: Name of project was changed + errors: + user_unauthorized: "401 No autorizado: Solo los usuarios administrativos pueden acceder a esta funci\xC3\xB3n." preferences: open_id_url: Your OpenID URL is staleness_starts_after: Staleness starts after %{days} days change_identity_url: Change Your Identity URL - change_password: Change your password page_title: TRACKS::Preferences + change_password: Change your password token_description: Token (for feeds and API use) title: Your preferences - is_false: "false" show_number_completed: Show %{number} completed items + is_false: "false" page_title_edit: TRACKS::Edit Preferences is_true: "true" + password_changed: "Que ha cambiado la contrase\xC3\xB1a, por favor vuelve a iniciar sesi\xC3\xB3n." edit_preferences: Edit preferences - sms_context_none: None generate_new_token: Generate a new token + sms_context_none: None token_header: Your token + updated: "Las preferencias de actualizaci\xC3\xB3n" current_authentication_type: Your authentication type is %{auth_type} change_authentication_type: Change your authentication type authentication_header: Your authentication @@ -588,8 +668,6 @@ es: tracks_behavior: Rastrea el comportamiento de profile: Perfil date_and_time: Fecha y hora - errors: - user_unauthorized: "401 No autorizado: Solo los usuarios administrativos pueden acceder a esta funci\xC3\xB3n." time: am: soy formats: @@ -599,69 +677,6 @@ es: month_day: "%B %d" long: "%B %d, %Y %H:%M" pm: pm - states: - hidden_plural: Hidden - completed: Completed - completed_plural: Completed - visible_plural: Visible - active_plural: Active - visible: Visible - hidden: Hidden - active: Active - projects: - default_context_set: Set project's default context to %{default_context} - no_actions_in_project: Currently there are no incomplete actions in this project - deferred_actions: Tareas pospuestas para este proyecto - was_marked_hidden: has been marked as hidden - edit_project_title: Editar proyecto - default_tags_removed_notice: Removed the default tags - all_completed_tasks_title: "TRACKS:: Lista de todas las acciones terminado en '%{project_name}' Proyecto" - hide_form: Esconder formulario - page_title: "TRACKS::Project: %{project}" - to_new_project_page: Take me to the new project page - deferred_actions_empty: There are no deferred actions for this project - show_form_title: Create a new project - this_project: This project - project_state: Project is %{state}. - list_completed_projects: "TRACKS:: Lista de Proyectos Realizados" - no_notes_attached: Currently there are no notes attached to this project - no_last_completed_recurring_todos: No se ha completado las acciones repetitivas que se encuentran - todos_append: in this project - notes: Notes - no_last_completed_projects: No hay proyectos terminados encontrado - notes_empty: There are no notes for this project - no_projects: Currently there are no projects - hide_form_title: Hide new project form - delete_project: Delete project - completed_actions_empty: No hay tareas completadas para este proyecto - with_no_default_context: with no default context - show_form: Add a project - actions_in_project_title: Actions in this project - delete_project_confirmation: Are you sure that you want to delete the project '%{name}'? - with_default_context: with a default context of '%{context_name}' - project_saved_status: Project saved - is_active: "est\xC3\xA1 activo" - completed_projects: Proyectos completados - add_note: "A\xC3\xB1adir una nota" - add_project: "A\xC3\xB1adir Proyecto" - list_projects: TRACKS::Lista de Proyectos - settings: Settings - with_default_tags: and with '%{tags}' as the default tags - set_default_tags_notice: Set project's default tags to %{default_tags} - delete_project_title: Delete the project - hidden_projects: Proyectos ocultos - completed_tasks_title: "TRACKS:: Lista de Acciones completadas en '%{project_name}' Proyecto" - add_note_submit: "A\xC3\xB1adir nota" - completed_actions: Tareas completadas para este proyecto - was_marked_complete: has been marked as completed - default_context_removed: Eliminado el contexto por defecto - state: This project is %{state} - status_project_name_changed: Name of project was changed - default_context: The default context for this project is %{context} - active_projects: Active projects - no_default_context: Este proyecto no tiene un contexto por defecto - with_no_default_tags: and with no default tags - edit_project_settings: Edit Project Settings date: month_names: - @@ -714,6 +729,13 @@ es: - Oct - Nov - Dic + support: + array: + words_connector: "," + last_word_connector: ", y" + two_words_connector: y + select: + prompt: Por favor seleccione will_paginate: previous_label: "\xC2\xAB Anterior" page_entries_info: @@ -729,19 +751,12 @@ es: multi_page_html: Viendo %{model} %{from} - %{to} de %{count} en el total de page_gap: ... next_label: "Siguiente \xC2\xBB" - support: - array: - last_word_connector: ", y" - words_connector: "," - two_words_connector: y - select: - prompt: Por favor seleccione footer: send_feedback: "Env\xC3\xADa comentarios sobre el %{version}" shared: multiple_next_actions: Multiple next actions (one on each line) - make_actions_dependent: "Aseg\xC3\xBArese que las acciones dependen unos de otros" hide_form: Esconder formulario + make_actions_dependent: "Aseg\xC3\xBArese que las acciones dependen unos de otros" toggle_single: Add a next action add_actions: "A\xC3\xB1adir tareas" add_action: "A\xC3\xB1adir tarea" @@ -760,6 +775,50 @@ es: list_name_completed_projects: Completed projects list_name_hidden_projects: Hidden projects list_name_hidden_contexts: Hidden contexts + users: + successfully_deleted_user: Successfully deleted user %{username} + destroy_successful: User %{login} was successfully destroyed + total_contexts: Total contexts + openid_url_verified: You have successfully verified %{url} as your identity and set your authentication type to OpenID. + first_user_heading: "Welcome to TRACKS. To get started, please create an admin account:" + auth_type_update_error: "There was a problem updating your authentication type: %{error_messages}" + failed_to_delete_user: Failed to delete user %{username} + new_token_generated: New token successfully generated + total_projects: Total projects + signup_successful: Signup successful for user %{username}. + change_password_submit: Change password + no_signups_title: TRACKS::No signups + user_created: User created. + manage_users: Manage users + account_signup: Account signup + password_updated: Password updated. + confirm_password: Confirm password + new_user_heading: "Sign up a new user:" + signup: Signup + auth_type_updated: Authentication type updated. + total_actions: Total actions + desired_login: Desired login + choose_password: Choose password + change_password_title: TRACKS::Change password + change_auth_type_title: TRACKS::Change authentication type + change_password_prompt: Enter your new password in the fields below and click 'Change password' to replace your current password with your new one. + password_confirmation_label: Confirm password + destroy_error: There was an error deleting the user %{login} + new_password_label: New password + register_with_cas: With your CAS username + label_auth_type: Authentication type + new_user_title: TRACKS::Sign up as the admin user + destroy_user: Destroy user + total_users_count: You have a total of %{count} users + destroy_confirmation: "Warning: this will delete user '%{login}', all their actions, contexts, project and notes. Are you sure that you want to continue?" + you_have_to_reset_your_password: "Usted tiene que restablecer su contrase\xC3\xB1a" + signup_new_user: Sign up new user + openid_ok_pref_failed: You have successfully verified %{url} as your identity but there was a problem saving your authentication preferences. + change_authentication_type: Change authentication type + auth_change_submit: Change authentication type + identity_url: Identity URL + select_authentication_type: Select your new authentication type and click 'Change authentication type' to replace your current settings. + total_notes: Total notes contexts: delete_context_title: Eliminar contexto all_completed_tasks_title: "TRACKS:: Todas las acciones completadas en '%{context_name}' contexto" @@ -778,24 +837,24 @@ es: add_context: "A\xC3\xB1adir contexto" update_status_message: Nombre de contexto ha cambiado context_name: Nombre del contexto - status_active: "El contexto est\xC3\xA1 activo" completed_tasks_title: "TRACKS:: Las acciones completadas en '%{context_name}' el contexto" + status_active: "El contexto est\xC3\xA1 activo" new_context_post: "' Tambi\xC3\xA9n se ha creado. \xC2\xBFEst\xC3\xA1 seguro?" - last_completed_in_context: "en este contexto (\xC3\xBAltimos %{number})" context_deleted: Contexto eliminado '%{name}' no_contexts_hidden: Actualmente no hay contextos ocultos new_context_pre: Nuevo contexto ' no_actions: Actualmente no hay acciones incompletas en este contexto + last_completed_in_context: "en este contexto (\xC3\xBAltimos %{number})" status_hidden: Contexto se oculta feedlist: actions_due_today: Acciones pendientes hoy o antes choose_context: Elija el contexto en el que desea un canal de all_contexts: Todos los contextos rss_feed: RSS Feed - legend: "Leyenda:" ical_feed: "iCal alimentaci\xC3\xB3n" - choose_project: Elegir el proyecto que quiere un canal de + legend: "Leyenda:" all_projects: Todos los proyectos + choose_project: Elegir el proyecto que quiere un canal de active_projects_wo_next: "Proyectos activos, sin las pr\xC3\xB3ximas acciones" project_needed: Es necesario que haya al menos un proyecto antes de poder solicitar un feed select_feed_for_project: Seleccione la fuente para este proyecto @@ -805,56 +864,12 @@ es: projects_and_actions: Proyectos activos con sus acciones notice_incomplete_only: "Nota: Todos los alimentos muestran s\xC3\xB3lo las acciones que no han sido marcadas como realizadas, a menos que se indique lo contrario." actions_due_next_week: "Tareas pendientes en 7 d\xC3\xADas o menos" + plain_text_feed: Canal Texto sin formato last_fixed_number: "\xC3\x9Altima %{number} acciones" all_actions: Todas las tareas actions_completed_last_week: "Tareas completadas en los \xC3\xBAltimos 7 d\xC3\xADas" context_centric_actions: "Feeds de acciones incompletas en un contexto espec\xC3\xADfico" - plain_text_feed: Canal Texto sin formato project_centric: "Feeds de acciones incompletas en un proyecto espec\xC3\xADfico" - users: - failed_to_delete_user: Failed to delete user %{username} - destroy_successful: User %{login} was successfully destroyed - total_contexts: Total contexts - openid_url_verified: You have successfully verified %{url} as your identity and set your authentication type to OpenID. - first_user_heading: "Welcome to TRACKS. To get started, please create an admin account:" - auth_type_update_error: "There was a problem updating your authentication type: %{error_messages}" - successfully_deleted_user: Successfully deleted user %{username} - new_token_generated: New token successfully generated - total_projects: Total projects - signup_successful: Signup successful for user %{username}. - user_created: User created. - change_password_submit: Change password - no_signups_title: TRACKS::No signups - account_signup: Account signup - password_updated: Password updated. - manage_users: Manage users - auth_type_updated: Authentication type updated. - total_actions: Total actions - desired_login: Desired login - signup: Signup - confirm_password: Confirm password - new_user_heading: "Sign up a new user:" - change_password_prompt: Enter your new password in the fields below and click 'Change password' to replace your current password with your new one. - password_confirmation_label: Confirm password - destroy_error: There was an error deleting the user %{login} - choose_password: Choose password - change_password_title: TRACKS::Change password - change_auth_type_title: TRACKS::Change authentication type - label_auth_type: Authentication type - new_password_label: New password - register_with_cas: With your CAS username - new_user_title: TRACKS::Sign up as the admin user - destroy_user: Destroy user - total_users_count: You have a total of %{count} users - signup_new_user: Sign up new user - destroy_confirmation: "Warning: this will delete user '%{login}', all their actions, contexts, project and notes. Are you sure that you want to continue?" - you_have_to_reset_your_password: "Usted tiene que restablecer su contrase\xC3\xB1a" - openid_ok_pref_failed: You have successfully verified %{url} as your identity but there was a problem saving your authentication preferences. - auth_change_submit: Change authentication type - identity_url: Identity URL - change_authentication_type: Change authentication type - select_authentication_type: Select your new authentication type and click 'Change authentication type' to replace your current settings. - total_notes: Total notes datetime: prompts: minute: Minuto @@ -907,15 +922,15 @@ es: other: "en %{count} a\xC3\xB1os" half_a_minute: medio minuto login: - user_no_expiry: Stay logged in - login_cas: go to the CAS sign_in: Entrar openid_identity_url_not_found: Sorry, no user by that identity URL exists (%{identity_url}) - cas_no_user_found: Hello, %{username}! You do not have an account on Tracks. + login_cas: go to the CAS + user_no_expiry: Stay logged in cas_login: CAS Login successful_with_session_info: "Login successful:" please_login: Please log in to use Tracks cas_logged_in_greeting: Hello, %{username}! You are authenticated. + cas_no_user_found: Hello, %{username}! You do not have an account on Tracks. cas_username_not_found: Sorry, no user by that CAS username exists (%{username}) mobile_use_openid: "\xE2\x80\xA6or login with an OpenID" cas_create_account: If you like to request on please go here to %{signup_link} diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 6551e803..32aa6c92 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -1,118 +1,63 @@ --- fr: - integrations: - opensearch_description: Rechercher dans Tracks - applescript_next_action_prompt: "Description de l'action suivante:" - gmail_description: "Gadget pour ajouter Tracks \xC3\xA0 Gmail" - applescript_success_after_id: !binary | - Q3LDqcOp - - applescript_success_before_id: Nouvelle action suivante avec ID common: - recurring_todos: "R\xC3\xA9p\xC3\xA9tition d'actions" back: Retour - actions: Actions third: "Troisi\xC3\xA8me" + actions: Actions + recurring_todos: "R\xC3\xA9p\xC3\xA9tition d'actions" add: Ajouter - logout: "D\xC3\xA9connexion" go_back: Retour + logout: "D\xC3\xA9connexion" previous: !binary | UHLDqWPDqWRlbnRl none: Aucun - week: semaine second: Seconde + week: semaine cancel: Annuler optional: optionnel month: mois - server_error: Une erreur s\'est produite sur le serveur forum: Forum notes: Notes + server_error: Une erreur s\'est produite sur le serveur last: Dernier action: Action projects: Projets + review: Revue project: Projet - contribute: Contribuer ok: Ok + contribute: Contribuer first: Premier website: Site Web numbered_step: Etape %{number} + errors_with_fields: "Il y a des probl\xC3\xA8me avec les champs suivants :" sort: by_task_count_title: "Trier par nombre de t\xC3\xA2ches" by_task_count_title_confirm: "Etes vous s\xC3\xBBr de vouloir trier ces projets par nombre de t\xC3\xA2ches ? L\\'ordre actuel sera remplac\xC3\xA9." alphabetically: "Par ordre alphab\xC3\xA9tique" - sort: Trier alphabetically_confirm: "Etes vous s\xC3\xBBr de vouloir trier ces projets par ordre alphab\xC3\xA9tique ? L\\'ordre actuel sera remplac\xC3\xA9." + sort: Trier alphabetically_title: "Trier les projets par ordre alphab\xC3\xA9tique" by_task_count: "Par nombre de t\xC3\xA2ches" - fourth: "Quatri\xC3\xA8me" create: !binary | Q3LDqWVy - errors_with_fields: "Il y a des probl\xC3\xA8me avec les champs suivants :" + drag_handle: DRAG description: Description context: Contexte - drag_handle: DRAG - contexts: Contextes - next: Suivant todo: Action months: Mois - forth: FORTH + next: Suivant + fourth: "Quatri\xC3\xA8me" + contexts: Contextes update: "Mettre \xC3\xA0 jour" weeks: semaines + forth: FORTH wiki: Wiki bugs: Bugs email: Email ajaxError: "Une erreur s'est produite en acc\xC3\xA9dant un serveur" search: Rechercher - layouts: - toggle_contexts_title: "Faire des contextes effondr\xC3\xA9 (in)visibles" - toggle_contexts: "Basculer contextes effondr\xC3\xA9" - toggle_notes: Afficher/Cacher notes - next_actions_rss_feed: Flux RSS des prochaines actions - toggle_notes_title: Afficher/Cacher toutes les notes - mobile_navigation: - logout: "D\xC3\xA9connexion" - feeds: Flux - new_action: 0-Nouvelle action - starred: "4-Marqu\xC3\xA9" - projects: 3-Projets - tickler: Reporteur - contexts: 2-Contextes - home: 1-Accueil - navigation: - recurring_todos: "T\xC3\xA2ches (todos) r\xC3\xA9p\xC3\xA9titives" - manage_users_title: Ajouter ou supprimer des utilisateurs - api_docs: Doc REST API - feeds: Flux - starred: "Marqu\xC3\xA9" - stats: Statistiques - notes_title: Voir toutes les notes - manage_users: Gestion des utilisateurs - tickler_title: Reporteur - export_title: "Importer et exporter des donn\xC3\xA9es" - preferences: !binary | - UHLDqWbDqXJlbmNlcw== - - integrations_: "Int\xC3\xA9grer Tracks" - calendar_title: "Calendrier des actions \xC3\xA0 \xC3\xA9ch\xC3\xA9ance" - feeds_title: Voir une liste des flux disponibles - recurring_todos_title: "Gerer les actions r\xC3\xA9currentes" - completed_tasks: "Termin\xC3\xA9" - stats_title: Voir vos statistiques - home_title: Accueil - tickler: Reporteur - starred_title: "Voir vos actions pr\xC3\xA9f\xC3\xA9r\xC3\xA9es" - organize: Organiser - view: Vue - completed_tasks_title: "Termin\xC3\xA9" - home: Accueil - contexts_title: Contextes - export: Exporter - projects_title: Projets - preferences_title: "Voir mes pr\xC3\xA9f\xC3\xA9rences" - search: Recherches tous les items - calendar: Calendrier number: format: separator: . @@ -144,24 +89,63 @@ fr: precision: format: delimiter: "" - models: - project: - feed_title: Projets Tracks - feed_description: Liste de tous les projets de %{username} - todo: - error_date_must_be_future: "doit \xC3\xAAtre une date dans le futur" - user: - error_context_not_associated: "L'identifiant contexte %{context} n'est pas associ\xC3\xA9 \xC3\xA0 l'identifiant utilisateur %{user}." - error_project_not_associated: "L'identifiant projet %{context} n'est pas associ\xC3\xA9 \xC3\xA0 l'identifiant utilisateur %{user}." - preference: - due_on: "Ech\xC3\xA9ance le %{date}" - due_in: "Ech\xC3\xA9ance dans %{days} jours" - due_styles: - - "Ech\xC3\xA9ance dans ____ jours" - - "Ech\xC3\xA9ance le ____" - data: - import_successful: "L'import a r\xC3\xA9ussi." - import_errors: Des erreurs se sont produites durant l'import + layouts: + toggle_contexts_title: "Faire des contextes effondr\xC3\xA9 (in)visibles" + toggle_contexts: "Basculer contextes effondr\xC3\xA9" + toggle_notes: Afficher/Cacher notes + next_actions_rss_feed: Flux RSS des prochaines actions + toggle_notes_title: Afficher/Cacher toutes les notes + mobile_navigation: + logout: "D\xC3\xA9connexion" + feeds: Flux + new_action: 0-Nouvelle action + starred: "Marqu\xC3\xA9" + projects: Projets + tickler: Reporteur + contexts: Contextes + home: Accueil + navigation: + api_docs: Doc REST API + recurring_todos: "T\xC3\xA2ches (todos) r\xC3\xA9p\xC3\xA9titives" + manage_users_title: Ajouter ou supprimer des utilisateurs + feeds: Flux + stats: Statistiques + starred: "Marqu\xC3\xA9" + notes_title: Voir toutes les notes + manage_users: Gestion des utilisateurs + tickler_title: Reporteur + integrations_: "Int\xC3\xA9grer Tracks" + preferences: !binary | + UHLDqWbDqXJlbmNlcw== + + export_title: "Importer et exporter des donn\xC3\xA9es" + calendar_title: "Calendrier des actions \xC3\xA0 \xC3\xA9ch\xC3\xA9ance" + feeds_title: Voir une liste des flux disponibles + stats_title: Voir vos statistiques + home_title: Accueil + tickler: Reporteur + starred_title: "Voir vos actions pr\xC3\xA9f\xC3\xA9r\xC3\xA9es" + recurring_todos_title: "Gerer les actions r\xC3\xA9currentes" + completed_tasks: "Termin\xC3\xA9" + organize: Organiser + view: Vue + completed_tasks_title: "Termin\xC3\xA9" + home: Accueil + contexts_title: Contextes + export: Exporter + search: Recherches tous les items + projects_title: Projets + preferences_title: "Voir mes pr\xC3\xA9f\xC3\xA9rences" + calendar: Calendrier + review_title: Faire examiner + integrations: + opensearch_description: Rechercher dans Tracks + applescript_next_action_prompt: "Description de l'action suivante:" + gmail_description: "Gadget pour ajouter Tracks \xC3\xA0 Gmail" + applescript_success_after_id: !binary | + Q3LDqcOp + + applescript_success_before_id: Nouvelle action suivante avec ID activerecord: attributes: project: @@ -170,8 +154,8 @@ fr: default_context_name: Contexte par defaut description: Description todo: - show_from: Afficher depuis predecessors: "D\xC3\xA9pend de" + show_from: Afficher depuis notes: Note project: Projet description: Description @@ -200,6 +184,7 @@ fr: show_project_on_todo_done: "Aller au projet quand la t\xC3\xA2che est termin\xC3\xA9e" first_name: Nom show_completed_projects_in_sidebar: "Montrer les projets compl\xC3\xA9t\xC3\xA9s dans le panneau lat\xC3\xA9ral" + review_period: Intervalle de revue de projet errors: models: project: @@ -221,8 +206,8 @@ fr: odd: "doit \xC3\xAAtre impair" too_short: "est trop court (minimum de %{count} charact\xC3\xA8res)" wrong_length: "est de longueur incorrecte (doit \xC3\xAAtre de %{count} caract\xC3\xA8res)" - even: "doit \xC3\xAAtre pair" empty: "ne peut \xC3\xAAtre vide" + even: "doit \xC3\xAAtre pair" less_than: "doit \xC3\xAAtre inf\xC3\xA9rieur \xC3\xA0 %{count}" equal_to: "doit \xC3\xAAtre \xC3\xA9gal \xC3\xA0 %{count}" greater_than: "doit \xC3\xAAtre plus grand que %{count}" @@ -231,124 +216,44 @@ fr: accepted: "doit \xC3\xAAtre accept\xC3\xA9" not_a_number: n\'est pas un nombre inclusion: n\'est pas inclus dans la liste - full_messages: - format: "%{attribute} %{message}" template: body: "Il y a des probl\xC3\xA8mes avec les champs suivants :" header: one: "1 erreur a emp\xC3\xA9ch\xC3\xA9 ce %{model} d\\'\xC3\xAAtre sauvegard\xC3\xA9" other: "%{count} erreurs ont emp\xC3\xA9ch\xC3\xA9 ce %{model} d\\'\xC3\xAAtre sauvegard\xC3\xA9" - stats: - tag_cloud_90days_title: Nuage de tag des actions des 90 derniers jours - totals_active_project_count: De ceux-ci %{count} sont des projets actifs - actions: Actions - tag_cloud_title: Nuage de tag pour toutes les actions - tag_cloud_description: "Ce nuage de tags contient les tags de toutes les actions (r\xC3\xA9alis\xC3\xA9es, en cours, visibles ou cach\xC3\xA9es)" - actions_avg_completion_time: "Pour toutes vos actions r\xC3\xA9alis\xC3\xA9s, le temps moyen de r\xC3\xA9alisation est %{count} jours." - actions_last_year_legend: - number_of_actions: Nombre d'actions - months_ago: "Mois pr\xC3\xA9c\xC3\xA9dents" - totals_first_action: "Depuis votre premi\xC3\xA8re action du %{date}" - top10_longrunning: Top 10 des plus long projets en cours - totals_action_count: vous avez un total de %{count} actions - running_time_legend: - actions: Actions - percentage: Pourcentage - weeks: Temps en cours d'une action (en semaines). Cliquer sur une barre pour plus d'info - totals_deferred_actions: "desquels %{count} sont des actions report\xC3\xA9s dans le Reporteur" - current_running_time_of_incomplete_visible_actions: "Dur\xC3\xA9e en cours des actions incompl\xC3\xA8tes visibles" - legend: - actions: Actions - number_of_days: Il y a ... jours - number_of_actions: Nombre d'actions - day_of_week: Jour de la semaine - percentage: Pourcentage - running_time: Temps en cours d'une action (en semaines) - months_ago: Il y a ... mois - actions_dow_30days_title: Jour de la semaine (les 30 derniers jours) - totals_actions_completed: "dont %{count} sont r\xC3\xA9alis\xC3\xA9es." - totals_incomplete_actions: Vous avez %{count} actions en cours - totals_unique_tags: De ces tags, %{count} sont uniques. - actions_avg_completed_30days: "et r\xC3\xA9alis\xC3\xA9 une moyenne de %{count} actions par jour." - top5_contexts: Top 5 des contextes - actions_lastyear_title: Actions des 12 derniers mois - actions_last_year: "Actions des derni\xC3\xA8res ann\xC3\xA9es" - totals_context_count: Vous avez %{count} contextes. - totals_visible_context_count: De ceux-ci %{count} sont des contextes visibles - projects: Projets - totals_blocked_actions: "%{count} d\xC3\xA9pendent de la r\xC3\xA9alisation de leurs actions" - action_completion_time_title: "Temps de r\xC3\xA9alisation (toutes les actions r\xC3\xA9alis\xC3\xA9es)" - no_tags_available: pas de tags disponibles - actions_day_of_week_title: Jour de la semaine (toutes les actions) - tags: Tags - totals_project_count: Vous avez %{count} projets - actions_min_max_completion_days: "Le nombre max/min de jours pour r\xC3\xA9aliser est %{min}/%{max}." - actions_min_completion_time: "Le temps minimum de r\xC3\xA9alisation est %{time}." - time_of_day: Heure (toutes les actions) - totals_tag_count: Vous avez %{count} tags sur des actions. - tag_cloud_90days_description: "Ce nuage de tag contient les tags des actions cr\xC3\xA9\xC3\xA9es ou r\xC3\xA9alis\xC3\xA9es dans les 90 derniers jours." - actions_30days_title: Actions des 30 derniers jours - actions_further: et plus - tod30: Heure (30 derniers jours) - running_time_all: "Temps en cours de toutes les actions incompl\xC3\xA8tes" - totals_hidden_project_count: "%{count} sont cach\xC3\xA9s" - top5_visible_contexts_with_incomplete_actions: Top 5 des contextes visible avec des actions en cours - more_stats_will_appear: Plus de statistiques apparaitront quand vous aurez ajouter quelques actions. - top10_projects_30days: Top 10 des projets des 30 derniers jours - click_to_show_actions_from_week: Cliquer %{link} pour voir les actions depuis la semaine %{week}. - spread_of_actions_for_all_context: Vue des actions pour tous les contextes - actions_selected_from_week: "Actions selectionn\xC3\xA9es depuis la semaine" - top10_projects: Top 10 des projets - other_actions_label: (autres) - spread_of_running_actions_for_visible_contexts: Vue des actions en cours pour tous les contextes - actions_avg_created: "Dans les 12 derniers mois vous avez cr\xC3\xA9\xC3\xA9 une moyenne de %{count} actions" - click_to_return: "Cliquer %{link} pour revenir \xC3\xA0 la page des statistiques" - totals_completed_project_count: "et %{count} sont des projets r\xC3\xA9alis\xC3\xA9s." - totals: Totaux - time_of_day_legend: - number_of_actions: Nombre d'actions - time_of_day: Heure - click_to_return_link: ici - totals_hidden_context_count: "et %{count} sont des contextes cach\xC3\xA9s." - contexts: Contextes - actions_avg_completed: "et r\xC3\xA9alis\xC3\xA9 une moyenne de %{count} actions par mois." - running_time_all_legend: - actions: Actions - percentage: Pourcentage - running_time: Temps en cours d'une action (en semaines). Cliquer sur une barre pour plus d'info - no_actions_selected: "Il n'y a pas d'actions s\xC3\xA9lectionn\xC3\xA9es." - click_to_update_actions: Cliquer sur une barre du graphique pour mettre a jour les actions ci-dessous. - labels: - month_avg_completed: "%{month} mois moy. r\xC3\xA9alis\xC3\xA9" - completed: !binary | - Q29tcGzDqXTDqQ== - - month_avg_created: "%{month} mois moy. cr\xC3\xA9\xC3\xA9" - avg_created: !binary | - TW95LiBDcsOpw6k= - - avg_completed: "Moy. R\xC3\xA9alis\xC3\xA9" - created: !binary | - Q3LDqcOp - - tod30_legend: - number_of_actions: Nombre d'actions - time_of_day: Heure - action_selection_title: TRACKS::Selection action - actions_actions_avg_created_30days: "Dans les 30 jours vous avez cr\xC3\xA9er en moyenne %{count} actions" + full_messages: + format: "%{attribute} %{message}" + models: + project: + feed_title: Projets Tracks + feed_description: Liste de tous les projets de %{username} + todo: + error_date_must_be_future: "doit \xC3\xAAtre une date dans le futur" + user: + error_context_not_associated: "L'identifiant contexte %{context} n'est pas associ\xC3\xA9 \xC3\xA0 l'identifiant utilisateur %{user}." + error_project_not_associated: "L'identifiant projet %{context} n'est pas associ\xC3\xA9 \xC3\xA0 l'identifiant utilisateur %{user}." + preference: + due_on: "Ech\xC3\xA9ance le %{date}" + due_in: "Ech\xC3\xA9ance dans %{days} jours" + due_styles: + - "Ech\xC3\xA9ance dans ____ jours" + - "Ech\xC3\xA9ance le ____" + data: + import_successful: "L'import a r\xC3\xA9ussi." + import_errors: Des erreurs se sont produites durant l'import todos: + recurring_action_deleted: "L'action a \xC3\xA9t\xC3\xA9 supprim\xC3\xA9e. Parce que cette action est r\xC3\xA9currente, une nouvelle action \xC3\xA0 \xC3\xA9t\xC3\xA9 ajout\xC3\xA9e" show_from: Afficher depuis error_starring_recurring: "Impossible d'actionner l'\xC3\xA9toile de la tache r\xC3\xA9currente \\'%{description}\\'" - recurring_action_deleted: "L'action a \xC3\xA9t\xC3\xA9 supprim\xC3\xA9e. Parce que cette action est r\xC3\xA9currente, une nouvelle action \xC3\xA0 \xC3\xA9t\xC3\xA9 ajout\xC3\xA9e" completed_actions: "Action compl\xC3\xA9t\xC3\xA9es" - completed_recurring: "T\xC3\xA2ches reccurents compl\xC3\xA9t\xC3\xA9s" added_new_next_action: "Nouvelle action suivante ajout\xC3\xA9e" + completed_recurring: "T\xC3\xA2ches reccurents compl\xC3\xA9t\xC3\xA9s" completed_rest_of_previous_month: "Compl\xC3\xA9t\xC3\xA9 dans le reste du mois pr\xC3\xA9c\xC3\xA9dent" blocked_by: "Bloqu\xC3\xA9 par %{predecessors}" - unable_to_add_dependency: "Impossible d'ajouter la d\xC3\xA9pendance" star_action: Elire cette action completed_recurrence_completed: "Il n'y pas d'action suivante apr\xC3\xA8s l'action r\xC3\xA9currente que vous avez supprim\xC3\xA9e. La r\xC3\xA9currence est termin\xC3\xA9e" defer_date_after_due_date: "La date de report est apr\xC3\xA8s la date d'\xC3\xA9ch\xC3\xA9ance. Veuillez ajuster la date d'\xC3\xA9cheance avant de reporter." + unable_to_add_dependency: "Impossible d'ajouter la d\xC3\xA9pendance" done: "Termin\xC3\xA9 ?" star_action_with_description: Elire l'action '%{description}' tagged_with: "tagg\xC3\xA9 avec ‘%{tag_name}’" @@ -356,54 +261,55 @@ fr: Q29tcGzDqXTDqQ== no_deferred_actions_with: "Pas d'actions report\xC3\xA9es avec le tag '%{tag_name}'" + action_due_on: "(action \xC3\xA0 terminer avant le %{date})" no_hidden_actions: "Il n'y a pas d'actions cach\xC3\xA9es actuellement" edit_action_with_description: Modifier l'action '%{description}' - action_due_on: "(action \xC3\xA0 terminer avant le %{date})" - action_deleted_success: "L'action suivante \xC3\xA0 \xC3\xA9t\xC3\xA9 supprim\xC3\xA9e avec succ\xC3\xA8s" - archived_tasks_title: "TRACKS::T\xC3\xA2ches r\xC3\xA9alis\xC3\xA9es archiv\xC3\xA9es" - remove_dependency: "Enlever les d\xC3\xA9pendances (l'action n'est pas supprim\xC3\xA9e)" list_incomplete_next_actions: "Liste les prochaines actions incompl\xC3\xA8tes" tags: "Tags (s\xC3\xA9par\xC3\xA9s par des virgules)" - new_related_todo_created: "Une nouvelle t\xC3\xA2che a \xC3\xA9t\xC3\xA9 ajout\xC3\xA9e qui appartient \xC3\xA0 cette t\xC3\xA2che r\xC3\xA9currente" + archived_tasks_title: "TRACKS::T\xC3\xA2ches r\xC3\xA9alis\xC3\xA9es archiv\xC3\xA9es" + remove_dependency: "Enlever les d\xC3\xA9pendances (l'action n'est pas supprim\xC3\xA9e)" + action_deleted_success: "L'action suivante \xC3\xA0 \xC3\xA9t\xC3\xA9 supprim\xC3\xA9e avec succ\xC3\xA8s" context_changed: "Contexte chang\xC3\xA9 en %{name}" + new_related_todo_created: "Une nouvelle t\xC3\xA2che a \xC3\xA9t\xC3\xA9 ajout\xC3\xA9e qui appartient \xC3\xA0 cette t\xC3\xA2che r\xC3\xA9currente" mobile_todos_page_title: Toutes les actions add_another_dependency: "Ajouter une autre d\xC3\xA9pendance" delete_recurring_action_title: "Supprimer l'action r\xC3\xA9currente" removed_predecessor: "Suppression de %{successor} comme d\xC3\xA9pendance de %{predecessor}" recurring_actions_title: "TRACKS::Actions r\xC3\xA9currentes" next_action_needed: Vous devez soumettre au moins une prochaine action - action_deleted_error: "La suppression de l'action a \xC3\xA9chou\xC3\xA9" action_saved: "Action sauvegard\xC3\xA9e" scheduled_overdue: "Programm\xC3\xA9e pour apparaitre il y a %{days} jours" - next_actions_description: "Filtre:" + action_deleted_error: "La suppression de l'action a \xC3\xA9chou\xC3\xA9" edit_action: Modifier action added_new_context: "Nouveau context ajout\xC3\xA9" - added_new_project: "Nouveau projet ajout\xC3\xA9" - list_incomplete_next_actions_with_limit: "Liste les %{count} derni\xC3\xA8res actions suivantes incompl\xC3\xA8tes" + next_actions_description: "Filtre:" set_to_pending: "%{task} mise en attente" + list_incomplete_next_actions_with_limit: "Liste les %{count} derni\xC3\xA8res actions suivantes incompl\xC3\xA8tes" + added_new_project: "Nouveau projet ajout\xC3\xA9" next_actions_title_additions: completed: "Actions compl\xC3\xA9t\xC3\xA9es" due_today: "\xC3\xA9ch\xC3\xA9ance aujourd'hui" due_within_a_week: "\xC3\xA9ch\xC3\xA9ance dans la semaine" older_completed_items: "Anciens \xC3\xA9l\xC3\xA9ments compl\xC3\xA9t\xC3\xA9s" append_in_this_project: dans ce projet + edit_recurring_todo: "Modifier l'action r\xC3\xA9p\xC3\xA9tant" error_deleting_item: "Il s'est produit une erreur lors de la suppression de l'\xC3\xA9l\xC3\xA9ment %{description}" task_list_title: "TRACKS::Lister les t\xC3\xA2ches" no_actions_due_this_week: "Pas actions \xC3\xA0 faire cette semaine" - delete_recurring_action_confirm: "Etes-vous s\xC3\xBBr de vouloir supprimer l'action r\xC3\xA9currente '%{description'}?" no_recurring_todos: "Il n'y a pas de t\xC3\xA2ches r\xC3\xA9currentes actuellement" error_completing_todo: "Il s'est produit une erreur lors de l'execution de l'action r\xC3\xA9currente %{description}" recurring_pattern_removed: "La p\xC3\xA9riodicit\xC3\xA9 est retir\xC3\xA9 de %{count}" convert_to_project: Faire projet no_deferred_pending_actions: "Il n'y pas d'actions report\xC3\xA9es ou en attente actuellement" + delete_recurring_action_confirm: "Etes-vous s\xC3\xBBr de vouloir supprimer l'action r\xC3\xA9currente '%{description'}?" completed_last_day: "Compl\xC3\xA9t\xC3\xA9 ces derni\xC3\xA8res 24 heures" - new_related_todo_created_short: "\xC3\xA0 cr\xC3\xA9\xC3\xA9 une nouvelle t\xC3\xA2che" - no_project: --Pas de projet-- - show_in_days: Afficher dans %{days} jours - error_saving_recurring: "Il s'est produit une erreur lors de la sauvegarde de la t\xC3\xA2che r\xC3\xA9currente \\'%{description}\\'" - completed_more_than_x_days_ago: "Compl\xC3\xA9t\xC3\xA9 il y a plus de %{count} jours" - all_completed: "Toutes les actions r\xC3\xA9alis\xC3\xA9es" feed_title_in_context: dans le contexte '%{context}' + completed_more_than_x_days_ago: "Compl\xC3\xA9t\xC3\xA9 il y a plus de %{count} jours" + show_in_days: Afficher dans %{days} jours + no_project: --Pas de projet-- + error_saving_recurring: "Il s'est produit une erreur lors de la sauvegarde de la t\xC3\xA2che r\xC3\xA9currente \\'%{description}\\'" + new_related_todo_created_short: "\xC3\xA0 cr\xC3\xA9\xC3\xA9 une nouvelle t\xC3\xA2che" + all_completed: "Toutes les actions r\xC3\xA9alis\xC3\xA9es" pending: En attente older_than_days: Plus ancien que %{count} jours completed_tagged_page_title: "TRACKS::Les t\xC3\xA2ches termin\xC3\xA9es avec marquer %{tag_name}" @@ -415,21 +321,20 @@ fr: clear_due_date: "Effacer la date d'\xC3\xA9ch\xC3\xA9ance" error_removing_dependency: "Il s'est produit une erreur lors de la suppression de la d\xC3\xA9pendance" hidden_actions: "Actions cach\xC3\xA9es" - show_on_date: Afficher le %{date} was_due_on_date: "arriv\xC3\xA9e \xC3\xA0 \xC3\xA9ch\xC3\xA9ance le %{date}" + show_on_date: Afficher le %{date} recurrence_period: "Periode de r\xC3\xA9currence" deferred_actions_with: "Action report\xC3\xA9es avec le tag '%{tag_name}'" confirm_delete: "Etes-vous s\xC3\xBBr de vouloir supprimer l'action '%{description}' ?" recurring_deleted_success: "L'action r\xC3\xA9currente a \xC3\xA9t\xC3\xA9 supprim\xC3\xA9e avec succ\xC3\xA8s." - next_action_description: Description de la prochaine action - next_actions_title: Tracks - Prochaines Actions - deferred_tasks_title: TRACKS::Reporteur no_completed_actions_with: "Pas d'actions compl\xC3\xA9t\xC3\xA9es avec le tag '%{tag_name}'" + next_actions_title: Tracks - Prochaines Actions + next_action_description: Description de la prochaine action + deferred_tasks_title: TRACKS::Reporteur clear_show_from_date: Effacer show from date - calendar_page_title: TRACKS::Calendrier unresolved_dependency: "La valeur saisie dans le champ d\xC3\xA9pendance ne correspond pas \xC3\xA0 une action existante. Cette valeur ne sera pas sauvegard\xC3\xA9e avec le reste de l'action. Continuer ?" + calendar_page_title: TRACKS::Calendrier in_hidden_state: "a l\\'\xC3\xA9tat cach\xC3\xA9" - completed_last_x_days: "Compl\xC3\xA9t\xC3\xA9 ces %{count} jours" show_today: Afficher aujourd'hui no_actions_found_title: "Aucune action trouv\xC3\xA9e" next_actions_due_date: @@ -438,21 +343,22 @@ fr: due_in_x_days: "Ech\xC3\xA9ance dans %{days} days" overdue_by_plural: "D\xC3\xA9pass\xC3\xA9e de %{days} jours" due_tomorrow: "Ech\xC3\xA9ance demain" - added_new_next_action_singular: "Nouvelle action suivante ajout\xC3\xA9e" - no_actions_with: "Il n'y pas d'actions incompl\xC3\xA8tes avec le tag '%{tag_name}' actuellement" + completed_last_x_days: "Compl\xC3\xA9t\xC3\xA9 ces %{count} jours" defer_x_days: one: Reporter d'un jour other: Report de %{count} jours + no_actions_with: "Il n'y pas d'actions incompl\xC3\xA8tes avec le tag '%{tag_name}' actuellement" + added_new_next_action_singular: "Nouvelle action suivante ajout\xC3\xA9e" no_completed_actions: "Il n'y a pas d'actions compl\xC3\xA9t\xC3\xA9es actuellement." + deferred_pending_actions: "Actions report\xC3\xA9es ou en attente" has_x_pending: one: A une action en attente other: A %{count} actions en attente feeds: completed: "Compl\xC3\xA9t\xC3\xA9 : %{date}" due: "Ech\xC3\xA9ance : %{date}" - deferred_pending_actions: "Actions report\xC3\xA9es ou en attente" - delete_action: Supprimer action error_deleting_recurring: "Il s'est produit une erreur lors de la suppression de la t\xC3\xA2che r\xC3\xA9currente \\'%{description}\\'" + delete_action: Supprimer action recurring_todos: "T\xC3\xA2ches r\xC3\xA9currentes" delete: Supprimer drag_action_title: "D\xC3\xA9placer sur une autre action pour la rendre d\xC3\xA9pendante de cette action" @@ -463,11 +369,11 @@ fr: one: "Un \xC3\xA9l\xC3\xA9ment du reporteur est arriv\xC3\xA9 \xC3\xA0 \xC3\xA9ch\xC3\xA9ance - rafraichir la page pour le voir." other: "%{count} \xC3\xA9l\xC3\xA9ments du reporteur sont arriv\xC3\xA9s \xC3\xA0 \xC3\xA9ch\xC3\xA9ance - rafraichir la page pour les voir." action_marked_complete: "L'action '%{description}' a \xC3\xA9t\xC3\xA9 marqu\xC3\xA9e comme %{completed}" - new_related_todo_not_created_short: "n'a pas cr\xC3\xA9\xC3\xA9 la t\xC3\xA2che" completed_today: one: "Vous avez compl\xC3\xA9t\xC3\xA9 une action aujourd'hui" other: "Vous avez compl\xC3\xA9t\xC3\xA9 %{count} action aujourd'hui" added_new_next_action_plural: "Nouvelles actions suivantes ajout\xC3\xA9es" + new_related_todo_not_created_short: "n'a pas cr\xC3\xA9\xC3\xA9 la t\xC3\xA2che" completed_rest_of_week: "Compl\xC3\xA9t\xC3\xA9 dans le reste de cette semaine" calendar: get_in_ical_format: Obtenir ce calendrier au format iCal @@ -478,15 +384,14 @@ fr: no_actions_due_today: "Pas d'action \xC3\xA0 terminer aujourd'hui" due_next_month_and_later: "A r\xC3\xA9aliser dans %{month} et plus" no_actions_due_after_this_month: "Pas d'actions \xC3\xA0 r\xC3\xA9aliser apr\xC3\xA8s ce mois" - due_this_month: "A r\xC3\xA9aliser avant la fin de %{month}" no_actions_due_this_month: "Pas d'actions \xC3\xA0 terminer pour ce mois" - error_starring: "Impossible d'actionner l'\xC3\xA9toile de cette tache \\'%{description}\\'" + due_this_month: "A r\xC3\xA9aliser avant la fin de %{month}" show_tomorrow: Afficher demain - action_deferred: "L'action '%{description}' a \xC3\xA9t\xC3\xA9 report\xC3\xA9" + error_starring: "Impossible d'actionner l'\xC3\xA9toile de cette tache \\'%{description}\\'" recurrence: + ends_on_number_times: Fini au bout de %{number} fois ends_on_date: Fini le %{date} every_work_day: "Chaque jour ouvr\xC3\xA9" - ends_on_number_times: Fini au bout de %{number} fois recurrence_on_due_date: "La date d'\xC3\xA9ch\xC3\xA9ance de la t\xC3\xA2che" weekly_options: "Param\xC3\xA8tres pour les actions r\xC3\xA9currentes hebdomadaires" weekly: Toutes les semaines @@ -494,6 +399,7 @@ fr: monthly: Mensuellement starts_on: "D\xC3\xA9marre le" daily_options: "Param\xC3\xA8tres des actions r\xC3\xA9currentes quotidiennes" + show_option_always: toujours pattern: third: "troisi\xC3\xA8me" month_names: @@ -516,10 +422,13 @@ fr: on_day_n: le %{n}e jour weekly: Toutes les semaines from: de - last: dernier every_day: chaque jour + last: dernier the_xth_day_of_month: le %{x} %{day} de %{month} times: pour %{number} fois + on_work_days: "les jours ouvr\xC3\xA9s" + every_year_on: "chaque ann\xC3\xA9e le %{date}" + first: premier day_names: - Dimanche - Lundi @@ -528,118 +437,210 @@ fr: - Jeudi - Vendredi - Samedi - on_work_days: "les jours ouvr\xC3\xA9s" - every_year_on: "chaque ann\xC3\xA9e le %{date}" - first: premier show: montrer fourth: "quatri\xC3\xA8me" due: "Ech\xC3\xA9ance" - until: jusqu'a every_month: chaque mois - show_option_always: toujours + until: jusqu'a daily: Quotidiennement - recurrence_on_options: "Activer la r\xC3\xA9currence" yearly_every_x_day: Chaque %{month} %{day} + recurrence_on_options: "Activer la r\xC3\xA9currence" daily_every_number_day: Tous les %{number} jour(s) show_options: "Montrer la t\xC3\xA2che" - weekly_every_number_week: Returns every %{number} week on ends_on: Fini le + weekly_every_number_week: Returns every %{number} week on + yearly_every_xth_day: Chaque %{day} %{day_of_week} de %{month} yearly_options: "Param\xC3\xA8tres pour les actions r\xC3\xA9currentes annuelles" show_days_before: "%{days} jours avant la date d'\xC3\xA9ch\xC3\xA9ance de la t\xC3\xA2che" from_tickler: "la date de la t\xC3\xA2che provient du reporteur (pas de date d\\'\xC3\xA9ch\xC3\xA9ance d\xC3\xA9finie)" - yearly_every_xth_day: Chaque %{day} %{day_of_week} de %{month} no_end_date: Pas de date de fin day_x_on_every_x_month: Le %{day} tous les %{month} mois yearly: Tous les ans monthly_every_xth_day: Le %{day} %{day_of_week} tous les %{month} mois + action_deferred: "L'action '%{description}' a \xC3\xA9t\xC3\xA9 report\xC3\xA9" tagged_page_title: "TRACKS::Tagg\xC3\xA9 avec %{tag_name}'" no_completed_recurring: "Il n'y a pas d'actions r\xC3\xA9currentes compl\xC3\xA9t\xC3\xA9es actuellement" added_dependency: "%{dependency} ajout\xC3\xA9e comme d\xC3\xA9pendance" - all_completed_tagged_page_title: "TRACKS::Toutes les t\xC3\xA2ches accomplies par marquer %{tag_name}" - no_deferred_actions: "Il n'y a pas d'actions report\xC3\xA9es actuellement" completed_rest_of_month: "Compl\xC3\xA9t\xC3\xA9 dans le reste de ce mois-ci" + no_deferred_actions: "Il n'y a pas d'actions report\xC3\xA9es actuellement" + all_completed_tagged_page_title: "TRACKS::Toutes les t\xC3\xA2ches accomplies par marquer %{tag_name}" recurrence_completed: "Il n'y a pas d'action suivante apr\xC3\xA8s l'action r\xC3\xA9currente que vous venez de terminer. Fin de la r\xC3\xA9currence" no_actions_found: "Il n'y pas d'actions incompl\xC3\xA8tes actuellement." in_pending_state: en attente error_toggle_complete: "Impossible de marquer cette tache comme compl\xC3\xA9t\xC3\xA9e" due: "Ech\xC3\xA9ance" action_marked_complete_error: "L'action '%{description}' n'a PAS \xC3\xA9t\xC3\xA9 marqu\xC3\xA9e comme %{completed} a cause d'une erreur sur le serveur " - next_actions_description_additions: - completed: dans les %{count} derniers jours - due_date: "avec au plus la date d'\xC3\xA9ch\xC3\xA9ance %{due_date}" action_saved_to_tickler: "Action sauvegard\xC3\xA9e dans le Reporteur" - overdue: En retard - recurring_action_saved: "Action r\xC3\xA9currente sauv\xC3\xA9e" depends_on_separate_with_commas: "D\xC3\xA9pend de (s\xC3\xA9parer avec des virgules)" + recurring_action_saved: "Action r\xC3\xA9currente sauv\xC3\xA9e" completed_in_archive: one: "Il n'y a pas d'action compl\xC3\xA9t\xC3\xA9e dans l'archive" other: "Il y a %{count} actions compl\xC3\xA9t\xC3\xA9es dans l'archive" to_tickler: Vers le reporteur - no_incomplete_actions: "Il n'y a pas d'actions incompl\xC3\xA8tes" + next_actions_description_additions: + completed: dans les %{count} derniers jours + due_date: "avec au plus la date d'\xC3\xA9ch\xC3\xA9ance %{due_date}" + overdue: En retard add_new_recurring: "Ajouter une nouvelle action r\xC3\xA9currente" + no_incomplete_actions: "Il n'y a pas d'actions incompl\xC3\xA8tes" + stats: + tag_cloud_title: Nuage de tag pour toutes les actions + tag_cloud_description: "Ce nuage de tags contient les tags de toutes les actions (r\xC3\xA9alis\xC3\xA9es, en cours, visibles ou cach\xC3\xA9es)" + actions: Actions + tag_cloud_90days_title: Nuage de tag des actions des 90 derniers jours + totals_active_project_count: De ceux-ci %{count} sont des projets actifs + actions_last_year_legend: + number_of_actions: Nombre d'actions + months_ago: "Mois pr\xC3\xA9c\xC3\xA9dents" + totals_first_action: "Depuis votre premi\xC3\xA8re action du %{date}" + actions_avg_completion_time: "Pour toutes vos actions r\xC3\xA9alis\xC3\xA9s, le temps moyen de r\xC3\xA9alisation est %{count} jours." + totals_deferred_actions: "desquels %{count} sont des actions report\xC3\xA9s dans le Reporteur" + current_running_time_of_incomplete_visible_actions: "Dur\xC3\xA9e en cours des actions incompl\xC3\xA8tes visibles" + top10_longrunning: Top 10 des plus long projets en cours + totals_action_count: vous avez un total de %{count} actions + actions_dow_30days_title: Jour de la semaine (les 30 derniers jours) + legend: + actions: Actions + number_of_days: Il y a ... jours + number_of_actions: Nombre d'actions + day_of_week: Jour de la semaine + percentage: Pourcentage + running_time: Temps en cours d'une action (en semaines) + months_ago: Il y a ... mois + running_time_legend: + actions: Actions + percentage: Pourcentage + weeks: Temps en cours d'une action (en semaines). Cliquer sur une barre pour plus d'info + top5_contexts: Top 5 des contextes + actions_lastyear_title: Actions des 12 derniers mois + totals_actions_completed: "dont %{count} sont r\xC3\xA9alis\xC3\xA9es." + totals_incomplete_actions: Vous avez %{count} actions en cours + totals_unique_tags: De ces tags, %{count} sont uniques. + actions_avg_completed_30days: "et r\xC3\xA9alis\xC3\xA9 une moyenne de %{count} actions par jour." + totals_blocked_actions: "%{count} d\xC3\xA9pendent de la r\xC3\xA9alisation de leurs actions" + action_completion_time_title: "Temps de r\xC3\xA9alisation (toutes les actions r\xC3\xA9alis\xC3\xA9es)" + projects: Projets + actions_last_year: "Actions des derni\xC3\xA8res ann\xC3\xA9es" + totals_context_count: Vous avez %{count} contextes. + totals_visible_context_count: De ceux-ci %{count} sont des contextes visibles + actions_min_max_completion_days: "Le nombre max/min de jours pour r\xC3\xA9aliser est %{min}/%{max}." + actions_min_completion_time: "Le temps minimum de r\xC3\xA9alisation est %{time}." + tags: Tags + no_tags_available: pas de tags disponibles + actions_day_of_week_title: Jour de la semaine (toutes les actions) + totals_project_count: Vous avez %{count} projets + totals_hidden_project_count: "%{count} sont cach\xC3\xA9s" + tag_cloud_90days_description: "Ce nuage de tag contient les tags des actions cr\xC3\xA9\xC3\xA9es ou r\xC3\xA9alis\xC3\xA9es dans les 90 derniers jours." + top5_visible_contexts_with_incomplete_actions: Top 5 des contextes visible avec des actions en cours + actions_30days_title: Actions des 30 derniers jours + time_of_day: Heure (toutes les actions) + more_stats_will_appear: Plus de statistiques apparaitront quand vous aurez ajouter quelques actions. + actions_further: et plus + tod30: Heure (30 derniers jours) + running_time_all: "Temps en cours de toutes les actions incompl\xC3\xA8tes" + totals_tag_count: Vous avez %{count} tags sur des actions. + other_actions_label: (autres) + top10_projects_30days: Top 10 des projets des 30 derniers jours + spread_of_running_actions_for_visible_contexts: Vue des actions en cours pour tous les contextes + click_to_show_actions_from_week: Cliquer %{link} pour voir les actions depuis la semaine %{week}. + actions_avg_created: "Dans les 12 derniers mois vous avez cr\xC3\xA9\xC3\xA9 une moyenne de %{count} actions" + spread_of_actions_for_all_context: Vue des actions pour tous les contextes + click_to_return: "Cliquer %{link} pour revenir \xC3\xA0 la page des statistiques" + actions_selected_from_week: "Actions selectionn\xC3\xA9es depuis la semaine" + totals_completed_project_count: "et %{count} sont des projets r\xC3\xA9alis\xC3\xA9s." + top10_projects: Top 10 des projets + totals: Totaux + time_of_day_legend: + number_of_actions: Nombre d'actions + time_of_day: Heure + click_to_return_link: ici + totals_hidden_context_count: "et %{count} sont des contextes cach\xC3\xA9s." + contexts: Contextes + actions_avg_completed: "et r\xC3\xA9alis\xC3\xA9 une moyenne de %{count} actions par mois." + no_actions_selected: "Il n'y a pas d'actions s\xC3\xA9lectionn\xC3\xA9es." + click_to_update_actions: Cliquer sur une barre du graphique pour mettre a jour les actions ci-dessous. + labels: + month_avg_completed: "%{month} mois moy. r\xC3\xA9alis\xC3\xA9" + completed: !binary | + Q29tcGzDqXTDqQ== + + month_avg_created: "%{month} mois moy. cr\xC3\xA9\xC3\xA9" + avg_created: !binary | + TW95LiBDcsOpw6k= + + avg_completed: "Moy. R\xC3\xA9alis\xC3\xA9" + created: !binary | + Q3LDqcOp + + running_time_all_legend: + actions: Actions + percentage: Pourcentage + running_time: Temps en cours d'une action (en semaines). Cliquer sur une barre pour plus d'info + tod30_legend: + number_of_actions: Nombre d'actions + time_of_day: Heure + action_selection_title: TRACKS::Selection action + actions_actions_avg_created_30days: "Dans les 30 jours vous avez cr\xC3\xA9er en moyenne %{count} actions" notes: - delete_note_title: Supprimer la note '%{id}' delete_confirmation: Etes-vous sur de vouloir supprimer la note '%{id}' ? delete_item_title: "Supprimer l'\xC3\xA9l\xC3\xA9ment" + delete_note_title: Supprimer la note '%{id}' deleted_note: Supprimer la note '%{id}' note_link_title: Voir note %{id} show_note_title: Voir note - note_location_link: "ln:" edit_item_title: "Modifier l'\xC3\xA9l\xC3\xA9ment" + note_location_link: "ln:" no_notes_available: "Il n'y a actuellement aucune note: ajouter des notes aux projets sur les pages individuelles des projets." note_header: Note %{id} delete_note_confirm: Etes-vous sur de vouloir supprimer la note '%{id}' ? - preferences: - open_id_url: Votre URL OpenID est - staleness_starts_after: "\"date de fraicher\" d\xC3\xA9pass\xC3\xA9e \xC3\xA0 pr\xC3\xA8s %{days} days" - change_identity_url: "Modifier votre URL d'identit\xC3\xA9" - change_password: Modifier votre mot de passe - page_title: "TRACKS::Pr\xC3\xA9f\xC3\xA9rences" - token_description: Jeton (pour flux et utilisation API) - title: "Vos pr\xC3\xA9f\xC3\xA9rences" - is_false: faux - show_number_completed: "Montrer %{number} items r\xC3\xA9alis\xC3\xA9s" - page_title_edit: "TRACKS::Editer les pr\xC3\xA9f\xC3\xA9rences" - is_true: vrai - edit_preferences: "Editer les pr\xC3\xA9f\xC3\xA9rences" - sms_context_none: Aucun - generate_new_token: "G\xC3\xA9n\xC3\xA9rer un nouveau jeton" - token_header: Votre jeton - current_authentication_type: Votre type d'authentification est %{auth_type} - authentication_header: Votre authentification - change_authentication_type: Modifier votre type d'authentification - generate_new_token_confirm: "Etes vous s\xC3\xBBr ? G\xC3\xA9n\xC3\xA9rer un nouveau jeton va remplacer le jeton existant et en interdire les utilisations externes." - tabs: - authentication: Authentification - tracks_behavior: Comportements Tracks - profile: Profil - date_and_time: Date et heure - errors: - user_unauthorized: "401 Non autoris\xC3\xA9: Administrateur seulement." + states: + hidden_plural: "Cach\xC3\xA9s" + review_plural: !binary | + RGF0w6ll + + completed: "Complet\xC3\xA9" + stalled: "Bloqu\xC3\xA9s" + current: Up-to-date + completed_plural: "Complet\xC3\xA9s" + review: !binary | + RGF0w6ll + + blocked: "Bloqu\xC3\xA9e" + blocked_plural: "Bloqu\xC3\xA9e" + stalled_plural: "Bloqu\xC3\xA9s" + visible_plural: Visibles + visible: Visible + active_plural: Actifs + current_plural: Up-to-date + active: Actif + hidden: !binary | + Q2FjaMOp + projects: - default_context_set: "D\xC3\xA9finir le contexte par d\xC3\xA9faut du projet \xC3\xA0 %{default_context}" - no_actions_in_project: "Il n'y pas d'action incompl\xC3\xA8tes pour ce projet" - deferred_actions: "Actions report\xC3\xA9es pour ce projet" was_marked_hidden: "est cach\xC3\xA9" edit_project_title: Editer le projet default_tags_removed_notice: Supprimer les tags par defaut + default_context_set: "D\xC3\xA9finir le contexte par d\xC3\xA9faut du projet \xC3\xA0 %{default_context}" + no_actions_in_project: "Il n'y pas d'action incompl\xC3\xA8tes pour ce projet" + deferred_actions: "Actions report\xC3\xA9es pour ce projet" all_completed_tasks_title: "TRACKS::Tous les Actions Achev\xC3\xA9 en Projet '%{project_name}'" hide_form: Cacher le formulaire page_title: "TRACKS::Projet: %{project}" - to_new_project_page: "Aller \xC3\xA0 la page du nouveau projet" - deferred_actions_empty: "Il n'y a pas d'actions report\xC3\xA9es pour ce projet" show_form_title: "Cr\xC3\xA9er un nouveau projet" this_project: Ce projet project_state: Le projet est %{state} list_completed_projects: "TRACKS::Liste des projets achev\xC3\xA9s" + to_new_project_page: "Aller \xC3\xA0 la page du nouveau projet" no_notes_attached: "Il n'y a actuellement aucune note attach\xC3\xA9e \xC3\xA0 ce projet" + deferred_actions_empty: "Il n'y a pas d'actions report\xC3\xA9es pour ce projet" + notes: Notes no_last_completed_recurring_todos: "Non termin\xC3\xA9 actions r\xC3\xA9p\xC3\xA9titives trouv\xC3\xA9es" todos_append: dans ce projet - notes: Notes no_last_completed_projects: "Pas de projets termin\xC3\xA9s trouv\xC3\xA9s" + hide_form_title: Cacher le formulaire nouveau projet + list_reviews: TRACKS::Revue notes_empty: Il n'y a pas de notes pour ce projet no_projects: Il n'y a actuellement aucun projet - hide_form_title: Cacher le formulaire nouveau projet delete_project: Supprimer projet completed_actions_empty: "Il n'y a pas d'actions r\xC3\xA9alis\xC3\xA9es pour ce projet" with_no_default_context: "sans contexte par d\xC3\xA9faut" @@ -647,40 +648,58 @@ fr: actions_in_project_title: Actions pour ce projet delete_project_confirmation: "Etes vous s\xC3\xBBr de vouloir supprimer le projet '%{name}' ?" with_default_context: "avec '%{context_name}' comme contexte par d\xC3\xA9faut" - project_saved_status: "Projet sauvegard\xC3\xA9" + with_default_tags: et avec '%{tags'} comme tags par defaut is_active: est actif + set_default_tags_notice: "D\xC3\xA9finir les tags par d\xC3\xA9faut du projet \xC3\xA0 %{default_tags}" completed_projects: "Projets r\xC3\xA9alis\xC3\xA9s" add_note: Ajouter une note add_project: Ajouter projet list_projects: TRACKS::Liste des Projets - with_default_tags: et avec '%{tags'} comme tags par defaut settings: "Param\xC3\xA8tres" - set_default_tags_notice: "D\xC3\xA9finir les tags par d\xC3\xA9faut du projet \xC3\xA0 %{default_tags}" + project_saved_status: "Projet sauvegard\xC3\xA9" + completed_tasks_title: "TRACKS::Liste des actions men\xC3\xA9es \xC3\xA0 terme dans Projet '%{project_name}'" delete_project_title: Supprimer le projet hidden_projects: "Projets cach\xC3\xA9s" - completed_tasks_title: "TRACKS::Liste des actions men\xC3\xA9es \xC3\xA0 terme dans Projet '%{project_name}'" add_note_submit: Ajouter note - completed_actions: "Actions r\xC3\xA9alis\xC3\xA9es pour ce projet" was_marked_complete: "est compl\xC3\xA9t\xC3\xA9" default_context_removed: "Contexte par d\xC3\xA9faut supprim\xC3\xA9" - state: Le projet est %{state} - status_project_name_changed: "Le nom du projet a \xC3\xA9t\xC3\xA9 modifi\xC3\xA9" + completed_actions: "Actions r\xC3\xA9alis\xC3\xA9es pour ce projet" default_context: "Le contexte par d\xC3\xA9faut pour ce projet est %{context}" active_projects: Projets actifs no_default_context: Ce projet n'a pas de contexte par defaut with_no_default_tags: "et sans tags par d\xC3\xA9faut" + state: Le projet est %{state} edit_project_settings: "Modifier les param\xC3\xA8tres du projet" - states: - hidden_plural: "Cach\xC3\xA9s" - completed: "Complet\xC3\xA9" - completed_plural: "Complet\xC3\xA9s" - visible_plural: Visibles - active_plural: Actifs - visible: Visible - hidden: !binary | - Q2FjaMOp - - active: Actif + status_project_name_changed: "Le nom du projet a \xC3\xA9t\xC3\xA9 modifi\xC3\xA9" + errors: + user_unauthorized: "401 Non autoris\xC3\xA9: Administrateur seulement." + preferences: + open_id_url: Votre URL OpenID est + staleness_starts_after: "\"date de fraicher\" d\xC3\xA9pass\xC3\xA9e \xC3\xA0 pr\xC3\xA8s %{days} days" + change_identity_url: "Modifier votre URL d'identit\xC3\xA9" + page_title: "TRACKS::Pr\xC3\xA9f\xC3\xA9rences" + change_password: Modifier votre mot de passe + token_description: Jeton (pour flux et utilisation API) + title: "Vos pr\xC3\xA9f\xC3\xA9rences" + show_number_completed: "Montrer %{number} items r\xC3\xA9alis\xC3\xA9s" + is_false: faux + page_title_edit: "TRACKS::Editer les pr\xC3\xA9f\xC3\xA9rences" + is_true: vrai + password_changed: "Votre mot de passe a \xC3\xA9t\xC3\xA9 chang\xC3\xA9, s'il vous pla\xC3\xAEt vous connecter \xC3\xA0 nouveau." + edit_preferences: "Editer les pr\xC3\xA9f\xC3\xA9rences" + generate_new_token: "G\xC3\xA9n\xC3\xA9rer un nouveau jeton" + sms_context_none: Aucun + token_header: Votre jeton + updated: "Pr\xC3\xA9f\xC3\xA9rences jour" + current_authentication_type: Votre type d'authentification est %{auth_type} + change_authentication_type: Modifier votre type d'authentification + authentication_header: Votre authentification + generate_new_token_confirm: "Etes vous s\xC3\xBBr ? G\xC3\xA9n\xC3\xA9rer un nouveau jeton va remplacer le jeton existant et en interdire les utilisations externes." + tabs: + authentication: Authentification + tracks_behavior: Comportements Tracks + profile: Profil + date_and_time: Date et heure time: am: am formats: @@ -705,6 +724,10 @@ fr: - octobre - novembre - "d\xC3\xA9cembre" + order: + - :day + - :month + - :year abbr_day_names: - dim - lun @@ -713,10 +736,6 @@ fr: - jeu - ven - sam - order: - - :day - - :month - - :year formats: only_day: "%e" longer: "%A, %d %b %Y" @@ -748,6 +767,13 @@ fr: - oct. - nov. - d\xC3\xA9c. + support: + array: + words_connector: "," + last_word_connector: ", et" + two_words_connector: et + select: + prompt: "Veuillez s\xC3\xA9lectionner" will_paginate: previous_label: !binary | wqtQcsOpY8OpZGVudA== @@ -765,19 +791,12 @@ fr: multi_page_html: "Affiche %{model} %{from} - %{to} \xC3\xA0 la %{count} au total" page_gap: ... next_label: "Suivant \xC2\xBB" - support: - array: - last_word_connector: ", et" - words_connector: "," - two_words_connector: et - select: - prompt: "Veuillez s\xC3\xA9lectionner" footer: send_feedback: Envoyer un feedback sur %{version} shared: multiple_next_actions: Actions suivante multiples (une sur chaque ligne) - make_actions_dependent: "Faire actions d\xC3\xA9pendantes les unes des autres" hide_form: Cacher le formulaire + make_actions_dependent: "Faire actions d\xC3\xA9pendantes les unes des autres" toggle_single: Ajouter action suivante add_actions: Ajouter actions add_action: Ajouter action @@ -796,6 +815,50 @@ fr: list_name_completed_projects: "Projets r\xC3\xA9alis\xC3\xA9s" list_name_hidden_projects: "Projets cach\xC3\xA9s" list_name_hidden_contexts: "Contextes cach\xC3\xA9s" + users: + successfully_deleted_user: "Utilisateur %{username} supprim\xC3\xA9 avec succ\xC3\xA8s" + destroy_successful: "Utilisateur %{login} supprim\xC3\xA9 avec succ\xC3\xA8s" + total_contexts: Total contextes + openid_url_verified: "Vous avez v\xC3\xA9rifi\xC3\xA9 avec succ\xC3\xA8s votre identit\xC3\xA9 comme %{url} et d\xC3\xA9fini votre type authentification comme OpenID" + first_user_heading: "Bienvenu \xC3\xA0 TRAKS. Pour commencer, veuillez cr\xC3\xA9er un compte administrateur" + auth_type_update_error: "Un probl\xC3\xA8me est survenu lors de la modification du type d'authentification : %{error_messages}" + failed_to_delete_user: "La suppression de l'utilisateur {username} \xC3\xA0 \xC3\xA9chou\xC3\xA9" + new_token_generated: "Nouveau token g\xC3\xA9n\xC3\xA9r\xC3\xA9 avec succ\xC3\xA9s" + total_projects: Total projets + signup_successful: "Utilisateur %{username} cr\xC3\xA9\xC3\xA9 avec succ\xC3\xA8s." + change_password_submit: Modifier mot de passe + no_signups_title: TRACKS::Pas de signups + user_created: "Utilisateur cr\xC3\xA9\xC3\xA9." + manage_users: "G\xC3\xA9rer utilisateurs" + account_signup: "Cr\xC3\xA9er un compte" + password_updated: "Mot de passe modifi\xC3\xA9." + confirm_password: Confirmer le mot de passe + new_user_heading: "Cr\xC3\xA9er un nouvel utilisateur:" + signup: "Cr\xC3\xA9ation" + auth_type_updated: "Type d'authentification modifi\xC3\xA9." + total_actions: Total actions + desired_login: "Login souhait\xC3\xA9" + choose_password: Choisir le mot de passe + change_password_title: TRACKS::Modifier mot de passe + change_auth_type_title: TRACKS::Modifier le type d'authentification + change_password_prompt: Entrer votre nouveau mot de passe dans les champs ci-dessous et cliquer sur 'Modifier mot de passe' pour remplacer votre mot de passe actuel par le nouveau. + password_confirmation_label: Confirmer mot de passe + destroy_error: Une erreur s'est produite lors de la suppression de l'utilisateur %{login} + new_password_label: Nouveau mot de passe + register_with_cas: Avec votre nom d'utilisateur CAS + label_auth_type: Type d'authentification + new_user_title: "TRACKS::Cr\xC3\xA9er un administrateur" + destroy_user: Supprimer utilisateur + total_users_count: Vous avez %{count} utilisateurs + destroy_confirmation: "Attention : cela va supprimer l'utilisateur '%{login}', toutes ses actions, contextes, projets et notes. Etes-vous s\xC3\xBBr de vouloir continuer ?" + you_have_to_reset_your_password: "Vous devez r\xC3\xA9initialiser votre mot de passe" + signup_new_user: "Cr\xC3\xA9er un nouvel utilisateur" + openid_ok_pref_failed: "Vous avez v\xC3\xA9rifi\xC3\xA9 avec succ\xC3\xA8s votre identit\xC3\xA9 comme %{url} mais un probl\xC3\xA8me est survenu lors de la sauvegarde de vos pr\xC3\xA9f\xC3\xA9rences d'authentification." + change_authentication_type: Modifier le type d'authentification + auth_change_submit: Modifier le type d'authenfication + identity_url: "URL Identit\xC3\xA9" + select_authentication_type: "S\xC3\xA9lectionner votre nouveau type d'authentification et cliquer sur 'Modifier type d'authenfication' pour remplacer les param\xC3\xA8tres actuels." + total_notes: Total notes contexts: delete_context_title: Supprimer contexte all_completed_tasks_title: "TRACKS::Toutes les actions Achev\xC3\xA9 en le contexte '%{context_name}'" @@ -814,24 +877,24 @@ fr: add_context: Ajouter un contexte update_status_message: "Le nom du contexte \xC3\xA0 \xC3\xA9t\xC3\xA9 modifi\xC3\xA9" context_name: Nom du Contexte + completed_tasks_title: "TRACKS::actions Achev\xC3\xA9 en le contexte '%{context_name}'" status_active: Le Contexte est actif new_context_post: "'sera aussi cr\xC3\xA9\xC3\xA9. Etes-vous s\xC3\xBBr ?" - completed_tasks_title: "TRACKS::actions Achev\xC3\xA9 en le contexte '%{context_name}'" - last_completed_in_context: dans ce contexte (dernier %{number}) context_deleted: "Contexte \\'%{name}\\' supprim\xC3\xA9" no_contexts_hidden: "Actuellement, il n'y a pas de contextes cach\xC3\xA9s" new_context_pre: Nouveau contexte ' no_actions: "Actuellement, il n'y pas d'actions incompl\xC3\xA8tes dans ce contexte" + last_completed_in_context: dans ce contexte (dernier %{number}) status_hidden: "Le Contexte est cach\xC3\xA9" feedlist: actions_due_today: Actions devant se terminer aujourd'hui ou avant choose_context: Choisir le contexte dont vous voulez un flux all_contexts: Tous les contextes rss_feed: Flux RSS - legend: "L\xC3\xA9gende" ical_feed: Flux iCal - choose_project: Choisir le projet dont vous voulez un flux + legend: "L\xC3\xA9gende" all_projects: Tous les projets + choose_project: Choisir le projet dont vous voulez un flux active_projects_wo_next: Projets actifs avec aucune action suivante project_needed: Il faut au moins un projet pour le flux select_feed_for_project: Selectionner le flux pour ce projet @@ -841,56 +904,12 @@ fr: projects_and_actions: Projets actifs et leurs actions notice_incomplete_only: "NB: Les flux ne montrent que les actions incompl\xC3\xA8tes, sauf indication contraire" actions_due_next_week: Actions devant se terminer dans les 7 prochains jours ou moins + plain_text_feed: Flux texte last_fixed_number: "Derni\xC3\xA8res %{number} actions" all_actions: Toutes les actions actions_completed_last_week: "Actions r\xC3\xA9alis\xC3\xA9es dans les 7 derniers jours" context_centric_actions: "Flux des actions dans un contexte sp\xC3\xA9cifique" - plain_text_feed: Flux texte project_centric: "Flux des actions incompl\xC3\xA8tes d'un projet sp\xC3\xA9cifique" - users: - failed_to_delete_user: "La suppression de l'utilisateur {username} \xC3\xA0 \xC3\xA9chou\xC3\xA9" - destroy_successful: "Utilisateur %{login} supprim\xC3\xA9 avec succ\xC3\xA8s" - total_contexts: Total contextes - openid_url_verified: "Vous avez v\xC3\xA9rifi\xC3\xA9 avec succ\xC3\xA8s votre identit\xC3\xA9 comme %{url} et d\xC3\xA9fini votre type authentification comme OpenID" - first_user_heading: "Bienvenu \xC3\xA0 TRAKS. Pour commencer, veuillez cr\xC3\xA9er un compte administrateur" - auth_type_update_error: "Un probl\xC3\xA8me est survenu lors de la modification du type d'authentification : %{error_messages}" - successfully_deleted_user: "Utilisateur %{username} supprim\xC3\xA9 avec succ\xC3\xA8s" - new_token_generated: "Nouveau token g\xC3\xA9n\xC3\xA9r\xC3\xA9 avec succ\xC3\xA9s" - total_projects: Total projets - signup_successful: "Utilisateur %{username} cr\xC3\xA9\xC3\xA9 avec succ\xC3\xA8s." - user_created: "Utilisateur cr\xC3\xA9\xC3\xA9." - change_password_submit: Modifier mot de passe - no_signups_title: TRACKS::Pas de signups - account_signup: "Cr\xC3\xA9er un compte" - password_updated: "Mot de passe modifi\xC3\xA9." - manage_users: "G\xC3\xA9rer utilisateurs" - auth_type_updated: "Type d'authentification modifi\xC3\xA9." - total_actions: Total actions - desired_login: "Login souhait\xC3\xA9" - signup: "Cr\xC3\xA9ation" - confirm_password: Confirmer le mot de passe - new_user_heading: "Cr\xC3\xA9er un nouvel utilisateur:" - change_password_prompt: Entrer votre nouveau mot de passe dans les champs ci-dessous et cliquer sur 'Modifier mot de passe' pour remplacer votre mot de passe actuel par le nouveau. - password_confirmation_label: Confirmer mot de passe - destroy_error: Une erreur s'est produite lors de la suppression de l'utilisateur %{login} - choose_password: Choisir le mot de passe - change_password_title: TRACKS::Modifier mot de passe - change_auth_type_title: TRACKS::Modifier le type d'authentification - label_auth_type: Type d'authentification - new_password_label: Nouveau mot de passe - register_with_cas: Avec votre nom d'utilisateur CAS - new_user_title: "TRACKS::Cr\xC3\xA9er un administrateur" - destroy_user: Supprimer utilisateur - total_users_count: Vous avez %{count} utilisateurs - signup_new_user: "Cr\xC3\xA9er un nouvel utilisateur" - destroy_confirmation: "Attention : cela va supprimer l'utilisateur '%{login}', toutes ses actions, contextes, projets et notes. Etes-vous s\xC3\xBBr de vouloir continuer ?" - you_have_to_reset_your_password: "Vous devez r\xC3\xA9initialiser votre mot de passe" - openid_ok_pref_failed: "Vous avez v\xC3\xA9rifi\xC3\xA9 avec succ\xC3\xA8s votre identit\xC3\xA9 comme %{url} mais un probl\xC3\xA8me est survenu lors de la sauvegarde de vos pr\xC3\xA9f\xC3\xA9rences d'authentification." - auth_change_submit: Modifier le type d'authenfication - identity_url: "URL Identit\xC3\xA9" - change_authentication_type: Modifier le type d'authentification - select_authentication_type: "S\xC3\xA9lectionner votre nouveau type d'authentification et cliquer sur 'Modifier type d'authenfication' pour remplacer les param\xC3\xA8tres actuels." - total_notes: Total notes datetime: prompts: minute: Minute @@ -939,15 +958,15 @@ fr: other: plus de %{count} ans half_a_minute: une demi-minute login: - login_cas: Aller au CAS - user_no_expiry: "Rester connect\xC3\xA9" sign_in: Se connecter openid_identity_url_not_found: "D\xC3\xA9sol\xC3\xA9, aucun utilisateur avec cette identit\xC3\xA9 URL n'existe (%{identity_url})" - cas_no_user_found: Bonjour, %{username}! Vous n'avez pas de compte sur Tracks. + login_cas: Aller au CAS + user_no_expiry: "Rester connect\xC3\xA9" cas_login: Login CAS successful_with_session_info: "La connexion \xC3\xA0 r\xC3\xA9ussi:" please_login: Veuillez vous connecter pour utiliser Tracks cas_logged_in_greeting: "Bonjour, %{username}! Vous \xC3\xAAtes authentifi\xC3\xA9." + cas_no_user_found: Bonjour, %{username}! Vous n'avez pas de compte sur Tracks. cas_username_not_found: "D\xC3\xA9sol\xC3\xA9, aucun utilisateur avec ce nom CAS n'existe (%{username})" mobile_use_openid: ... ou ce connecter avec un OpenID cas_create_account: "Si vous voulez vous inscrire aller \xC3\xA0 %{signup_link}" diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 668b0d9e..655f8d0a 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -1,110 +1,59 @@ --- nl: - integrations: - opensearch_description: Zoek in Tracks - applescript_next_action_prompt: "Omschrijving van de actie:" - gmail_description: Gadget om Tracks toe te voegen aan Gmail als een gadget - applescript_success_after_id: gemaakt - applescript_success_before_id: Nieuwe actie met ID common: - recurring_todos: Herhalende acties back: Terug - actions: Acties third: Derde + actions: Acties + recurring_todos: Herhalende acties add: Toevoegen - logout: Log uit go_back: Ga terug + logout: Log uit previous: Vorige none: Geen - week: week second: Tweede + week: week cancel: Annuleer optional: optioneel month: maand - server_error: Een fout heeft op de server plaatsgevonden forum: Forum notes: Notities + server_error: Een fout heeft op de server plaatsgevonden last: Laatste action: Actie projects: Projecten + review: Evaluatie project: Project - contribute: Bijdragen ok: Ok + contribute: Bijdragen first: Eerste website: Website numbered_step: Stap %{number} + errors_with_fields: Er waren problemen met de volgende velden sort: by_task_count_title: Sorteer op aantal acties by_task_count_title_confirm: Weet u zeker dat u deze op aantal acties wilt sorteren? Dat zal de huidige sorteervolgorde aanpassen. alphabetically: Alfabetisch - sort: Sorteer alphabetically_confirm: Weet u zeker dat u deze projecten alfabetisch wilt sorteren? Dat zal de huidige sorteervolgorde aanpassen. + sort: Sorteer alphabetically_title: Sorteer projecten alfabetisch by_task_count: Op aantal acties - fourth: Vierde create: Maken - errors_with_fields: Er waren problemen met de volgende velden + drag_handle: SLEEP description: Beschrijving context: Context - drag_handle: SLEEP - contexts: Contexten - next: Volgende todo: actie months: maanden - forth: Vierde + next: Volgende + fourth: Vierde + contexts: Contexten update: Bijwerken weeks: weken + forth: Vierde wiki: Wiki bugs: Fouten email: E-mail ajaxError: Er is een fout opgetreden bij het ophalen van gegevens van de server search: Zoeken - layouts: - toggle_contexts_title: Maak ingeklapte contexten (on)zichtbaar - toggle_contexts: Toggle ingeklapte contexten - toggle_notes: Toggle notities - next_actions_rss_feed: RSS-feed van de acties - toggle_notes_title: Toggle alle notities - mobile_navigation: - logout: Afmelden - feeds: Feeds - new_action: 0-Nieuwe actie - starred: 4-Ster - projects: 3-Projecten - tickler: Tickler - contexts: 2-Contexten - home: 1-Start - navigation: - recurring_todos: Terugkerende acties - manage_users_title: Toevoegen of verwijderen gebruikers - api_docs: REST API Docs - feeds: Feeds - starred: Ster - stats: Statistieken - notes_title: Toon alle notities - manage_users: Beheren gebruikers - tickler_title: Tickler - export_title: Import en export van gegevens - preferences: Voorkeuren - integrations_: Integreer Tracks - calendar_title: Kalender met acties met deadline - feeds_title: Zie een lijst met beschikbare feeds - recurring_todos_title: Beheren terugkerende acties - completed_tasks: Gereed - stats_title: Zie je statistieken - home_title: Start - tickler: Tickler - starred_title: Zie je ster acties - organize: Organiseer - view: Bekijk - completed_tasks_title: Afgerond - home: Start - contexts_title: Contexten - export: Export - projects_title: Projecten - preferences_title: Toon mijn voorkeuren - search: Zoeken in alle items - calendar: Agenda number: format: separator: "," @@ -128,24 +77,59 @@ nl: separator: "," delimiter: . - models: - project: - feed_title: Tracks Projecten - feed_description: Een overzicht van alle projecten voor %{username} - todo: - error_date_must_be_future: moet een datum in de toekomst zijn - user: - error_context_not_associated: Context %{context} niet geassocieerd met gebruikers %{user}. - error_project_not_associated: Project %{project} niet geassocieerd met gebruikers %{user}. - preference: - due_on: Deadline op %{date} - due_in: Deadline over %{days} dagen - due_styles: - - Deadline over ____ dagen - - Deadline op ____ - data: - import_successful: De import was succesvol - import_errors: Er hebben zich fouten voorgedaan bij de import + layouts: + toggle_contexts_title: Maak ingeklapte contexten (on)zichtbaar + toggle_contexts: Toggle ingeklapte contexten + toggle_notes: Toggle notities + next_actions_rss_feed: RSS-feed van de acties + toggle_notes_title: Toggle alle notities + mobile_navigation: + logout: Afmelden + feeds: Feeds + new_action: Nieuwe actie + starred: Ster + projects: Projecten + tickler: Tickler + contexts: Contexten + home: Start + navigation: + api_docs: REST API Docs + recurring_todos: Terugkerende acties + manage_users_title: Toevoegen of verwijderen gebruikers + feeds: Feeds + stats: Statistieken + starred: Ster + notes_title: Toon alle notities + manage_users: Beheren gebruikers + tickler_title: Tickler + integrations_: Integreer Tracks + preferences: Voorkeuren + export_title: Import en export van gegevens + calendar_title: Kalender met acties met deadline + feeds_title: Zie een lijst met beschikbare feeds + stats_title: Zie je statistieken + home_title: Start + tickler: Tickler + starred_title: Zie je ster acties + recurring_todos_title: Beheren terugkerende acties + completed_tasks: Gereed + organize: Organiseer + view: Bekijk + completed_tasks_title: Afgerond + home: Start + contexts_title: Contexten + export: Export + search: Zoeken in alle items + projects_title: Projecten + preferences_title: Toon mijn voorkeuren + calendar: Agenda + review_title: Evaluatie uitvoeren + integrations: + opensearch_description: Zoek in Tracks + applescript_next_action_prompt: "Omschrijving van de actie:" + gmail_description: Gadget om Tracks toe te voegen aan Gmail als een gadget + applescript_success_after_id: gemaakt + applescript_success_before_id: Nieuwe actie met ID activerecord: attributes: project: @@ -154,8 +138,8 @@ nl: default_context_name: Standaard context description: Beschrijving todo: - show_from: Tonen vanaf predecessors: Afhankelijkheden + show_from: Tonen vanaf notes: Notities project: Project description: Beschrijving @@ -184,6 +168,7 @@ nl: show_project_on_todo_done: Ga naar project pagina wanneer actie gereed is first_name: Voornaam show_completed_projects_in_sidebar: Toon afgeronde projecten in sidebar + review_period: Project evaluatie interval errors: models: project: @@ -203,8 +188,8 @@ nl: odd: moet oneven zijn too_short: is te kort (minimum is %{count} karakters) wrong_length: heeft de verkeerde lengte (moet %{count} karakters lang zijn) - even: moet even zijn empty: mag niet leeg zijn + even: moet even zijn less_than: moet kleiner zijn dan %{count} equal_to: moet gelijk zijn aan %{count} greater_than: moet groter zijn dan %{count} @@ -213,171 +198,98 @@ nl: accepted: moet geaccepteerd worden not_a_number: is niet een getal inclusion: is niet opgenomen in de lijst - full_messages: - format: "%{attribute} %{message}" template: body: Er waren problemen met de volgende velden header: one: 1 fout voorkomt het kunnen bewaren van deze %{model} other: "%{count} fouten voorkomen dat dit %{model} bewaard kan worden" - stats: - tag_cloud_90days_title: Tag cloud met acties in afgelopen 90 dagen - totals_active_project_count: Van deze zijn %{count} actieve projecten - actions: Acties - tag_cloud_title: Tag Cloud voor alle acties - tag_cloud_description: Deze tag cloud bevat tags van alle acties (afgerond, niet voltooid, zichtbaar en / of verborgen) - actions_avg_completion_time: Van al uw afgeronde acties, de gemiddelde tijd dat dit in beslag nam is %{count} dagen. - actions_last_year_legend: - number_of_actions: Aantal acties - months_ago: Maanden geleden - totals_first_action: Sinds uw eerste actie op %{date} - top10_longrunning: Top 10 langstlopende projecten - totals_action_count: u heeft een totaal van %{count} acties - running_time_legend: - actions: Acties - percentage: Percentage - weeks: Looptijd van een actie (weken). Klik op een balk voor meer info - totals_deferred_actions: waarvan %{count} uitgestelde acties in de tickler zijn - current_running_time_of_incomplete_visible_actions: Huidige looptijd van onvolledige zichtbare acties - legend: - actions: Acties - number_of_days: Aantal dagen geleden - number_of_actions: Aantal acties - day_of_week: Dag van de week - percentage: Percentage - running_time: Looptijd van een actie (weken) - months_ago: Maanden geleden - actions_dow_30days_title: Dag van de week (laatste 30 dagen) - totals_actions_completed: "%{count} van deze zijn voltooid." - totals_incomplete_actions: U heeft %{count} onvolledige acties - totals_unique_tags: Van deze tags zijn %{count} uniek. - actions_avg_completed_30days: en voltooide een gemiddelde van %{count} acties per dag. - top5_contexts: Top 5 contexten - actions_lastyear_title: Acties in de afgelopen 12 maanden - actions_last_year: Acties in de afgelopen jaren - totals_context_count: U heeft %{count} contexten. - totals_visible_context_count: Van deze zijn %{count} zichtbare contexten - projects: Projecten - totals_blocked_actions: "%{count} zijn afhankelijk van de voltooiing van hun acties." - action_completion_time_title: Doorlooptijd (alle voltooide acties) - no_tags_available: geen tags beschikbaar - actions_day_of_week_title: Dag van de week (alle acties) - tags: Tags - totals_project_count: U heeft %{count} projecten. - actions_min_max_completion_days: De max-/minimum dagen tot voltooiing is %{min}/%{max}. - actions_min_completion_time: De minimale tijd tot afronding is %{time}. - time_of_day: Tijd van de dag (alle acties) - totals_tag_count: U heeft %{count} tags geplaatst op acties. - tag_cloud_90days_description: Deze tag cloud bevat tags van acties die zijn gemaakt of voltooid in de afgelopen 90 dagen. - actions_30days_title: Acties in de afgelopen 30 dagen - actions_further: en verder - tod30: Tijd van de dag (laatste 30 dagen) - running_time_all: Huidige looptijd van alle onvolledige acties - totals_hidden_project_count: "%{count} zijn verborgen" - top5_visible_contexts_with_incomplete_actions: Top 5 zichtbare contexten met onvolledige acties - more_stats_will_appear: Meer statistieken zullen hier verschijnen zodra u acties hebt toegevoegd. - top10_projects_30days: Top 10 project in de laatste 30 dagen - click_to_show_actions_from_week: Klik %{link} om de acties van week %{week} en verder te zien. - spread_of_actions_for_all_context: Verdeling van acties voor alle contexten - actions_selected_from_week: Gekozen acties van week - top10_projects: Top 10 projecten - other_actions_label: (anderen) - spread_of_running_actions_for_visible_contexts: Verdeling van actieve acties voor zichtbare contexten - actions_avg_created: In de afgelopen 12 maanden heeft u gemiddeld%{count} acties aangemaakt - click_to_return: Klik %{link} om terug te keren naar de statistieken pagina. - totals_completed_project_count: en %{count} zijn afgeronde projecten. - totals: Totalen - time_of_day_legend: - number_of_actions: Aantal acties - time_of_day: Tijd van de dag - click_to_return_link: hier - totals_hidden_context_count: en %{count} zijn verborgen contexten. - contexts: Contexten - actions_avg_completed: en voltooide een gemiddelde van %{count} acties per maand. - running_time_all_legend: - actions: Acties - percentage: Percentage - running_time: Looptijd van een actie (weken). Klik op een balk voor meer info - no_actions_selected: Er zijn geen acties geselecteerd. - click_to_update_actions: Klik op een balk in de grafiek op de acties hieronder aan te passen. - labels: - month_avg_completed: "%{months} gem afgerond per maand" - completed: Afgerond - month_avg_created: "%{months} gem gemaakt per maand" - avg_created: Gem gemaakt - avg_completed: Gem afgerond - created: Gemaakt - tod30_legend: - number_of_actions: Aantal acties - time_of_day: Tijd van de dag - action_selection_title: "TRACKS:: Actie selectie" - actions_actions_avg_created_30days: In de afgelopen 30 dagen heeft u gemiddeld %{count} acties gemaakt + full_messages: + format: "%{attribute} %{message}" + models: + project: + feed_title: Tracks Projecten + feed_description: Een overzicht van alle projecten voor %{username} + todo: + error_date_must_be_future: moet een datum in de toekomst zijn + user: + error_context_not_associated: Context %{context} niet geassocieerd met gebruikers %{user}. + error_project_not_associated: Project %{project} niet geassocieerd met gebruikers %{user}. + preference: + due_on: Deadline op %{date} + due_in: Deadline over %{days} dagen + due_styles: + - Deadline over ____ dagen + - Deadline op ____ + data: + import_successful: De import was succesvol + import_errors: Er hebben zich fouten voorgedaan bij de import todos: + recurring_action_deleted: Actie werd verwijderd. Omdat deze actie herhalend is. werd een nieuwe actie toegevoegd show_from: Toon vanaf error_starring_recurring: Kon niet de ster van deze terugkerende actie niet omzetten \'%{description}\' - recurring_action_deleted: Actie werd verwijderd. Omdat deze actie herhalend is. werd een nieuwe actie toegevoegd completed_actions: Voltooide acties - completed_recurring: Afgesloten terugkerende todos added_new_next_action: Nieuwe actie toegevoegd + completed_recurring: Afgesloten terugkerende todos completed_rest_of_previous_month: Afgerond in de rest van de vorige maand blocked_by: Geblokkeerd door %{predecessors} - unable_to_add_dependency: Niet in staat om de afhankelijkheid toe te voegen star_action: Markeer deze actie met een ster completed_recurrence_completed: Er is geen actie na de terugkerende actie die u new verwijderd heeft. De herhaling is voltooid defer_date_after_due_date: Uitsteldatum is na de vervaldag. Gelieve vervaldag bewerken alvorens uitsteldatum aan te passen. + unable_to_add_dependency: Niet in staat om de afhankelijkheid toe te voegen done: Voltooid? star_action_with_description: markeer de actie '%{description}' met een ster tagged_with: gelabeld met ‘%{tag_name}’ completed: Afgerond no_deferred_actions_with: Geen uitgestelde acties met de tag '%{tag_name}' + action_due_on: (deadline actie op %{date}) no_hidden_actions: Momenteel zijn er geen verborgen acties gevonden edit_action_with_description: Bewerk de actie '%{description}' - action_due_on: (deadline actie op %{date}) - action_deleted_success: Actie succesvol verwijderd - archived_tasks_title: "TRACKS:: Gearchiveerde voltooide taken" - remove_dependency: Verwijder afhankelijkheid (zal niet de actie zelf verwijderen) list_incomplete_next_actions: Toon onvoltooide acties tags: Tags (gescheiden door komma's) - new_related_todo_created: Een nieuwe actie is toegevoegd, die behoort bij deze terugkerende todo + archived_tasks_title: "TRACKS:: Gearchiveerde voltooide taken" + remove_dependency: Verwijder afhankelijkheid (zal niet de actie zelf verwijderen) + action_deleted_success: Actie succesvol verwijderd context_changed: Context veranderd in '%{name}' + new_related_todo_created: Een nieuwe actie is toegevoegd, die behoort bij deze terugkerende todo mobile_todos_page_title: Alle acties add_another_dependency: Nog een afhankelijkheid toevoegen delete_recurring_action_title: Verwijder de terugkerende actie removed_predecessor: "'%{successor}' is verwijderd als afhankelijkheid van '%{predecessor}'." recurring_actions_title: TRACKS::Terugkerende acties next_action_needed: U dient ten minste een actie in te vullen - action_deleted_error: Verwijderen van de actie is mislukt action_saved: Actie opgeslagen scheduled_overdue: Gepland om %{days} dagen geleden te tonen - next_actions_description: "Filter:" + action_deleted_error: Verwijderen van de actie is mislukt edit_action: Actie bewerken added_new_context: Nieuwe context toegevoegd - added_new_project: Nieuw project toegevoegd - list_incomplete_next_actions_with_limit: Toont de laatste %{count} onvoltooide acties + next_actions_description: "Filter:" set_to_pending: "'%{task}' als wachtend ingesteld" + list_incomplete_next_actions_with_limit: Toont de laatste %{count} onvoltooide acties + added_new_project: Nieuw project toegevoegd next_actions_title_additions: completed: acties voltooid due_today: deadline vandaag due_within_a_week: deadline binnen een week older_completed_items: Oudere voltooide items append_in_this_project: in dit project + edit_recurring_todo: Bewerk herhalende actie error_deleting_item: Er is een fout opgetreden bij het verwijderen van het item '%{description}' task_list_title: TRACKS::Toon acties no_actions_due_this_week: Geen acties met deadline in rest van deze week - delete_recurring_action_confirm: Weet u zeker dat u wilt de terugkerende actie '%{description}' wilt verwijderen? no_recurring_todos: Momenteel zijn er geen terugkerende acties error_completing_todo: Er was een fout bij het voltooien / activeren van de terugkerende actie '%{description}' recurring_pattern_removed: Het herhalingspatroon is verwijderd van %{count} convert_to_project: Maak project no_deferred_pending_actions: Momenteel zijn er geen uitgestelde of wachtende acties + delete_recurring_action_confirm: Weet u zeker dat u wilt de terugkerende actie '%{description}' wilt verwijderen? completed_last_day: Voltooid in de laatste 24 uur - new_related_todo_created_short: een nieuwe actie gemaakt - no_project: -- Geen project -- - show_in_days: Toon over %{days} dagen - error_saving_recurring: Er is een fout opgetreden het opslaan van de terugkerende actie '%{description}' - completed_more_than_x_days_ago: Voltooid meer dan %{count} dagen geleden - all_completed: Alle afgeronde acties feed_title_in_context: in context '%{context}' + completed_more_than_x_days_ago: Voltooid meer dan %{count} dagen geleden + show_in_days: Toon over %{days} dagen + no_project: -- Geen project -- + error_saving_recurring: Er is een fout opgetreden het opslaan van de terugkerende actie '%{description}' + new_related_todo_created_short: een nieuwe actie gemaakt + all_completed: Alle afgeronde acties pending: Wachtend older_than_days: Ouder dan %{count} dagen completed_tagged_page_title: "TRACKS:: Afgeronde acties met tag %{tag_name}" @@ -389,21 +301,20 @@ nl: clear_due_date: Maak deadline leeg error_removing_dependency: Er is een fout opgetreden het verwijderen van de afhankelijke actie hidden_actions: Verborgen acties - show_on_date: Toon op %{date} was_due_on_date: had deadline op %{date} + show_on_date: Toon op %{date} recurrence_period: Herhaling periode deferred_actions_with: Uitgestelde acties met de tag '%{tag_name}' confirm_delete: Weet u zeker dat u de actie '%{description}' wilt verwijderen? recurring_deleted_success: De recurrente actie is succesvol verwijderd. - next_action_description: Actie beschrijving - next_actions_title: Tracks - Acties - deferred_tasks_title: TRACKS::Tickler no_completed_actions_with: Geen voltooide acties met de tag '%{tag_name}' + next_actions_title: Tracks - Acties + next_action_description: Actie beschrijving + deferred_tasks_title: TRACKS::Tickler clear_show_from_date: Maak de datum Tonen Vanaf leeg - calendar_page_title: TRACKS::Agenda unresolved_dependency: De waarde die u ingevoerd heeft in het afhankelijkheden veld is niet herleidbaar naar een bestaande actie. Deze waarde wordt niet bewaard met de rest van de actie. Doorgaan? + calendar_page_title: TRACKS::Agenda in_hidden_state: in verborgen toestand - completed_last_x_days: Voltooid in de laatste %{count} dagen show_today: Toon vandaag no_actions_found_title: Geen acties gevonden next_actions_due_date: @@ -412,21 +323,22 @@ nl: due_in_x_days: Deadline over %{days} dagen overdue_by_plural: Over deadline met %{days} dagen due_tomorrow: Deadline morgen - added_new_next_action_singular: Nieuwe actie toegevoegd - no_actions_with: Momenteel zijn er geen onvoltooide acties met de tag '%{tag_name}' + completed_last_x_days: Voltooid in de laatste %{count} dagen defer_x_days: one: Een dag uitstellen other: "%{count} dagen uitstellen" + no_actions_with: Momenteel zijn er geen onvoltooide acties met de tag '%{tag_name}' + added_new_next_action_singular: Nieuwe actie toegevoegd no_completed_actions: Momenteel zijn er geen voltooide acties. + deferred_pending_actions: Uitgestelde/wachtende acties has_x_pending: one: Heeft een wachtende actie other: Heeft %{count} wachtende acties feeds: completed: "Voltooid: %{date}" due: "Deadline: %{date}" - deferred_pending_actions: Uitgestelde/wachtende acties - delete_action: Verwijder actie error_deleting_recurring: Er is een fout opgetreden bij het verwijderen van het item \'%{description}\' + delete_action: Verwijder actie recurring_todos: Terugkerende acties delete: Verwijder drag_action_title: Sleep naar een andere actie om deze afhankelijk te maken van die actie @@ -437,9 +349,9 @@ nl: one: Een tickler item wordt nu zichtbaar - vernieuw de pagina om het te zien. other: "%{count} tickerl items zijn nu zichtbaar - vernieuw de pagina om ze te zien." action_marked_complete: De actie '%{description}' werd gemarkeerd als %{completed} - new_related_todo_not_created_short: een nieuwe actie is niet gemaakt completed_today: Vandaag afgerond added_new_next_action_plural: Nieuwe acties toegevoegd + new_related_todo_not_created_short: een nieuwe actie is niet gemaakt completed_rest_of_week: Afgerond in de rest van deze week calendar: get_in_ical_format: Ontvang deze agenda in iCal-formaat @@ -450,15 +362,14 @@ nl: no_actions_due_today: Geen acties met deadline vandaag due_next_month_and_later: Deadline in %{month} en later no_actions_due_after_this_month: Geen acties met deadline na deze maand - due_this_month: Deadline in rest van %{month} no_actions_due_this_month: Geen acties met deadline in de rest van deze maand - error_starring: Kon niet de ster van deze actie niet omzetten \'%{description}\' + due_this_month: Deadline in rest van %{month} show_tomorrow: Toon morgen - action_deferred: De actie '%{description}' is uitgesteld + error_starring: Kon niet de ster van deze actie niet omzetten \'%{description}\' recurrence: + ends_on_number_times: Eindigt na %{number} keer ends_on_date: Eindigt op %{date} every_work_day: Elke werkdag - ends_on_number_times: Eindigt na %{number} keer recurrence_on_due_date: de datum dat deadline van de actie is weekly_options: Instellingen voor de wekelijkse terugkerende acties weekly: Wekelijks @@ -466,6 +377,7 @@ nl: monthly: Maandelijks starts_on: Begint op daily_options: Instellingen voor dagelijks terugkerende acties + show_option_always: altijd pattern: third: derde month_names: @@ -488,10 +400,13 @@ nl: on_day_n: op dag %{n} weekly: wekelijks from: vanaf - last: laatste every_day: elke dag + last: laatste the_xth_day_of_month: de %{x} %{day} van %{month} times: voor %{number} keer + on_work_days: op werkdagen + every_year_on: elk jaar op %{date} + first: eerste day_names: - zondag - maandag @@ -500,118 +415,198 @@ nl: - donderdag - vrijdag - zaterdag - on_work_days: op werkdagen - every_year_on: elk jaar op %{date} - first: eerste show: Tonen fourth: vierde due: Deadline - until: tot every_month: elke maand - show_option_always: altijd + until: tot daily: Dagelijks - recurrence_on_options: Stel herhaling in op yearly_every_x_day: Elke %{month} %{day} + recurrence_on_options: Stel herhaling in op daily_every_number_day: Elke %{number} dag(en) show_options: Toon de actie - weekly_every_number_week: Herhaalt elke %{number} weken op ends_on: Eindigt op + weekly_every_number_week: Herhaalt elke %{number} weken op + yearly_every_xth_day: De %{day} %{day_of_week} van %{month} yearly_options: Instellingen voor jaarlijks terugkerende acties show_days_before: "%{days} dagen v\xC3\xB3\xC3\xB3r de deadline van actie" from_tickler: de datum dat de actie uit de tickler komt (geen deadline ingesteld) - yearly_every_xth_day: De %{day} %{day_of_week} van %{month} no_end_date: Geen einddatum day_x_on_every_x_month: Dag %{day} op elke %{month} maand yearly: Jaarlijks monthly_every_xth_day: De %{day} %{day_of_week} van elke %{month} maand + action_deferred: De actie '%{description}' is uitgesteld tagged_page_title: TRACKS::Tagged met '%{tag_name}' no_completed_recurring: Momenteel zijn er geen voltooide terugkerende acties added_dependency: "%{dependency} als afhankelijkheid toegevoegd." - all_completed_tagged_page_title: "TRACKS:: Alle afgeronde acties met tag %{tag_name}" - no_deferred_actions: Momenteel zijn er geen uitgestelde acties. completed_rest_of_month: Afgerond in de rest van deze maand + no_deferred_actions: Momenteel zijn er geen uitgestelde acties. + all_completed_tagged_page_title: "TRACKS:: Alle afgeronde acties met tag %{tag_name}" recurrence_completed: Er is geen volgende actie na de terugkerende actie die u zojuist hebt voltooid. De herhaling is voltooid no_actions_found: Momenteel zijn er geen onafgeronde acties. in_pending_state: in wachtende toestand error_toggle_complete: Kon deze actie niet als afgerond markeren due: Deadline action_marked_complete_error: De actie '%{description}' is niet gemarkeerd als %{completed} vanwege een fout op de server. - next_actions_description_additions: - completed: in de afgelopen %{count} dagen - due_date: met een deadline %{due_date} of eerder action_saved_to_tickler: Actie opgeslagen in tickler - overdue: Achterstallig - recurring_action_saved: Terugkerende actie opgeslagen depends_on_separate_with_commas: Afhankelijk van (gescheiden door komma's) + recurring_action_saved: Terugkerende actie opgeslagen completed_in_archive: one: Er is een voltooide actie in het archief. other: Er zijn %{count} afgeronde acties in het archief. to_tickler: naar tickler - no_incomplete_actions: Er zijn geen onvoltooide acties + next_actions_description_additions: + completed: in de afgelopen %{count} dagen + due_date: met een deadline %{due_date} of eerder + overdue: Achterstallig add_new_recurring: Voeg een nieuwe terugkerende actie toe + no_incomplete_actions: Er zijn geen onvoltooide acties + stats: + tag_cloud_title: Tag Cloud voor alle acties + tag_cloud_description: Deze tag cloud bevat tags van alle acties (afgerond, niet voltooid, zichtbaar en / of verborgen) + actions: Acties + tag_cloud_90days_title: Tag cloud met acties in afgelopen 90 dagen + totals_active_project_count: Van deze zijn %{count} actieve projecten + actions_last_year_legend: + number_of_actions: Aantal acties + months_ago: Maanden geleden + totals_first_action: Sinds uw eerste actie op %{date} + actions_avg_completion_time: Van al uw afgeronde acties, de gemiddelde tijd dat dit in beslag nam is %{count} dagen. + totals_deferred_actions: waarvan %{count} uitgestelde acties in de tickler zijn + current_running_time_of_incomplete_visible_actions: Huidige looptijd van onvolledige zichtbare acties + top10_longrunning: Top 10 langstlopende projecten + totals_action_count: u heeft een totaal van %{count} acties + actions_dow_30days_title: Dag van de week (laatste 30 dagen) + legend: + actions: Acties + number_of_days: Aantal dagen geleden + number_of_actions: Aantal acties + day_of_week: Dag van de week + percentage: Percentage + running_time: Looptijd van een actie (weken) + months_ago: Maanden geleden + running_time_legend: + actions: Acties + percentage: Percentage + weeks: Looptijd van een actie (weken). Klik op een balk voor meer info + top5_contexts: Top 5 contexten + actions_lastyear_title: Acties in de afgelopen 12 maanden + totals_actions_completed: "%{count} van deze zijn voltooid." + totals_incomplete_actions: U heeft %{count} onvolledige acties + totals_unique_tags: Van deze tags zijn %{count} uniek. + actions_avg_completed_30days: en voltooide een gemiddelde van %{count} acties per dag. + totals_blocked_actions: "%{count} zijn afhankelijk van de voltooiing van hun acties." + action_completion_time_title: Doorlooptijd (alle voltooide acties) + projects: Projecten + actions_last_year: Acties in de afgelopen jaren + totals_context_count: U heeft %{count} contexten. + totals_visible_context_count: Van deze zijn %{count} zichtbare contexten + actions_min_max_completion_days: De max-/minimum dagen tot voltooiing is %{min}/%{max}. + actions_min_completion_time: De minimale tijd tot afronding is %{time}. + tags: Tags + no_tags_available: geen tags beschikbaar + actions_day_of_week_title: Dag van de week (alle acties) + totals_project_count: U heeft %{count} projecten. + totals_hidden_project_count: "%{count} zijn verborgen" + tag_cloud_90days_description: Deze tag cloud bevat tags van acties die zijn gemaakt of voltooid in de afgelopen 90 dagen. + top5_visible_contexts_with_incomplete_actions: Top 5 zichtbare contexten met onvolledige acties + actions_30days_title: Acties in de afgelopen 30 dagen + time_of_day: Tijd van de dag (alle acties) + more_stats_will_appear: Meer statistieken zullen hier verschijnen zodra u acties hebt toegevoegd. + actions_further: en verder + tod30: Tijd van de dag (laatste 30 dagen) + running_time_all: Huidige looptijd van alle onvolledige acties + totals_tag_count: U heeft %{count} tags geplaatst op acties. + other_actions_label: (anderen) + top10_projects_30days: Top 10 project in de laatste 30 dagen + spread_of_running_actions_for_visible_contexts: Verdeling van actieve acties voor zichtbare contexten + click_to_show_actions_from_week: Klik %{link} om de acties van week %{week} en verder te zien. + actions_avg_created: In de afgelopen 12 maanden heeft u gemiddeld%{count} acties aangemaakt + spread_of_actions_for_all_context: Verdeling van acties voor alle contexten + click_to_return: Klik %{link} om terug te keren naar de statistieken pagina. + actions_selected_from_week: Gekozen acties van week + totals_completed_project_count: en %{count} zijn afgeronde projecten. + top10_projects: Top 10 projecten + totals: Totalen + time_of_day_legend: + number_of_actions: Aantal acties + time_of_day: Tijd van de dag + click_to_return_link: hier + totals_hidden_context_count: en %{count} zijn verborgen contexten. + contexts: Contexten + actions_avg_completed: en voltooide een gemiddelde van %{count} acties per maand. + no_actions_selected: Er zijn geen acties geselecteerd. + click_to_update_actions: Klik op een balk in de grafiek op de acties hieronder aan te passen. + labels: + month_avg_completed: "%{months} gem afgerond per maand" + completed: Afgerond + month_avg_created: "%{months} gem gemaakt per maand" + avg_created: Gem gemaakt + avg_completed: Gem afgerond + created: Gemaakt + running_time_all_legend: + actions: Acties + percentage: Percentage + running_time: Looptijd van een actie (weken). Klik op een balk voor meer info + tod30_legend: + number_of_actions: Aantal acties + time_of_day: Tijd van de dag + action_selection_title: "TRACKS:: Actie selectie" + actions_actions_avg_created_30days: In de afgelopen 30 dagen heeft u gemiddeld %{count} acties gemaakt notes: - delete_note_title: Verwijder de notitie '%{id}' delete_confirmation: Weet u zeker dat u de notitie '%{id}' wilt verwijderen? delete_item_title: Verwijder item + delete_note_title: Verwijder de notitie '%{id}' deleted_note: Verwijder notitie '%{id}' note_link_title: Toon notitie %{id} show_note_title: Toon notitie - note_location_link: "In:" edit_item_title: Item bewerken + note_location_link: "In:" no_notes_available: "Momenteel zijn er geen notities: voeg notities toe aan projecten vanaf de individuele project pagina's." note_header: Notitie %{id} delete_note_confirm: Weet u zeker dat u de notitie '%{id}' wilt verwijderen? - preferences: - open_id_url: Uw OpenID URL is - staleness_starts_after: Markeren openstaande acties begint na %{days} dagen - change_identity_url: Verander uw Identity URL - change_password: Wijzig uw wachtwoord - page_title: "TRACKS:: Voorkeuren" - token_description: Token (voor feeds en API gebruik) - title: Uw voorkeuren - is_false: Nee - show_number_completed: Toon %{number} voltooide items - page_title_edit: "TRACKS:: Voorkeuren bewerken" - is_true: Ja - edit_preferences: Voorkeuren bewerken - sms_context_none: Geen - generate_new_token: Genereer een nieuwe token - token_header: Uw token - current_authentication_type: Uw authenticatietype is %{auth_type} - authentication_header: Uw authenticatie - change_authentication_type: Verander uw authenticatietype - generate_new_token_confirm: Weet u dit zeker? Het genereren van een nieuw token zal de bestaande te vervangen en dit zal het extern gebruiken van de oude token laten mislukken. - tabs: - authentication: Authenticatie - tracks_behavior: Tracks gedrag - profile: Profiel - date_and_time: Datum en tijd - errors: - user_unauthorized: "401 Unauthorized: Alleen administratieve gebruikers mogen deze functie gebruiken." + states: + hidden_plural: Verborgen + review_plural: Gedateerde + completed: Afgerond + stalled: Vastgelopen + current: Bijgewerkt + completed_plural: Afgeronde + review: Gedateerde + blocked: Geblokkeerd + blocked_plural: Geblokkeerde + stalled_plural: Vastgelopen + visible_plural: Zichtbare + visible: Zichtbaar + active_plural: Actieve + current_plural: Bijgewerkte + active: Actief + hidden: Verborgen projects: - default_context_set: Stel project standaard context in op %{default_context} - no_actions_in_project: Momenteel zijn er geen onafgeronde acties in dit project - deferred_actions: Uitgestelde acties voor dit project was_marked_hidden: is gemarkeerd als verborgen edit_project_title: Bewerk project default_tags_removed_notice: De standaard tags zijn verwijderd + default_context_set: Stel project standaard context in op %{default_context} + no_actions_in_project: Momenteel zijn er geen onafgeronde acties in dit project + deferred_actions: Uitgestelde acties voor dit project all_completed_tasks_title: TRACKS::Toon alle afgeronde acties in het project '{project_name}' hide_form: Verberg formulier page_title: "TRACKS:: Project: %{project}" - to_new_project_page: Ga naar de nieuwe projectpagina - deferred_actions_empty: Er zijn geen uitgestelde acties voor dit project show_form_title: Maak een nieuw project this_project: Dit project project_state: Project is %{state}. list_completed_projects: TRACKS::Toon afgeronde projecten + to_new_project_page: Ga naar de nieuwe projectpagina no_notes_attached: Momenteel zijn er geen notities toegevoegd aan dit project + deferred_actions_empty: Er zijn geen uitgestelde acties voor dit project + notes: Notities no_last_completed_recurring_todos: Geen afgeronde herhalende acties gevonden todos_append: in dit project - notes: Notities no_last_completed_projects: Geen afgeronde projecten gevonden + hide_form_title: Verberg nieuw project formulier + list_reviews: TRACKS::Evaluatie notes_empty: Er zijn geen notities voor dit project no_projects: Momenteel zijn er geen projecten - hide_form_title: Verberg nieuw project formulier delete_project: Project verwijderen completed_actions_empty: Er zijn nog geen afgeronde acties voor dit project with_no_default_context: zonder standaard context @@ -619,38 +614,58 @@ nl: actions_in_project_title: Acties in dit project delete_project_confirmation: Weet u zeker dat u wilt het project '%{name} wilt verwijderen? with_default_context: met een standaard context '%{context_name}' - project_saved_status: Project opgeslagen + with_default_tags: en met '%{tags}' als de standaard tags is_active: is actief + set_default_tags_notice: Stel project standaard tags in op %{default_tags} completed_projects: Voltooide projecten add_note: Een notitie toevoegen add_project: Voeg project toe list_projects: "TRACKS:: Overzicht van projecten" - with_default_tags: en met '%{tags}' als de standaard tags settings: Instellingen - set_default_tags_notice: Stel project standaard tags in op %{default_tags} + project_saved_status: Project opgeslagen + completed_tasks_title: TRACKS::Toon afgeronde acties in het project '%{project_name}' delete_project_title: Verwijder het project hidden_projects: Verborgen projecten - completed_tasks_title: TRACKS::Toon afgeronde acties in het project '%{project_name}' add_note_submit: Notitie toevoegen - completed_actions: Afgeronde acties voor dit project was_marked_complete: is gemarkeerd als voltooid default_context_removed: Standaard context verwijderd - state: Dit project is %{state} - status_project_name_changed: Naam van het project werd gewijzigd + completed_actions: Afgeronde acties voor dit project default_context: De standaard context voor dit project is %{context} active_projects: Actieve projecten no_default_context: Dit project heeft geen standaard context with_no_default_tags: en zonder standaard tags + state: Dit project is %{state} edit_project_settings: Bewerk project instellingen - states: - hidden_plural: Verborgen - completed: Afgerond - completed_plural: Afgeronde - visible_plural: Zichtbare - active_plural: Actieve - visible: Zichtbaar - hidden: Verborgen - active: Actief + status_project_name_changed: Naam van het project werd gewijzigd + errors: + user_unauthorized: "401 Unauthorized: Alleen administratieve gebruikers mogen deze functie gebruiken." + preferences: + open_id_url: Uw OpenID URL is + staleness_starts_after: Markeren openstaande acties begint na %{days} dagen + change_identity_url: Verander uw Identity URL + page_title: "TRACKS:: Voorkeuren" + change_password: Wijzig uw wachtwoord + token_description: Token (voor feeds en API gebruik) + title: Uw voorkeuren + show_number_completed: Toon %{number} voltooide items + is_false: Nee + page_title_edit: "TRACKS:: Voorkeuren bewerken" + is_true: Ja + password_changed: Je wachtwoord is gewijzigd, meld je opnieuw aan. + edit_preferences: Voorkeuren bewerken + generate_new_token: Genereer een nieuwe token + sms_context_none: Geen + token_header: Uw token + updated: Voorkeuren bijgewerkt + current_authentication_type: Uw authenticatietype is %{auth_type} + change_authentication_type: Verander uw authenticatietype + authentication_header: Uw authenticatie + generate_new_token_confirm: Weet u dit zeker? Het genereren van een nieuw token zal de bestaande te vervangen en dit zal het extern gebruiken van de oude token laten mislukken. + tabs: + authentication: Authenticatie + tracks_behavior: Tracks gedrag + profile: Profiel + date_and_time: Datum en tijd time: am: ochtend formats: @@ -675,6 +690,10 @@ nl: - Oktober - November - December + order: + - :day + - :month + - :year abbr_day_names: - Zo - Ma @@ -683,10 +702,6 @@ nl: - Do - Vr - Za - order: - - :day - - :month - - :year formats: only_day: "%e" longer: "%A %d %B %Y" @@ -716,6 +731,13 @@ nl: - Okt - Nov - Dec + support: + array: + words_connector: "," + last_word_connector: ", en" + two_words_connector: en + select: + prompt: Selecteer will_paginate: previous_label: "\xC2\xABVorige" page_entries_info: @@ -731,15 +753,6 @@ nl: multi_page_html: Toon %{model} %{from} - %{to} van %{count} in totaal page_gap: "…" next_label: "Volgende \xC2\xBB" - support: - array: - last_word_connector: ", en" - words_connector: "," - two_words_connector: en - select: - prompt: Selecteer - footer: - send_feedback: Stuur reactie op %{version} dates: month_names: - Januari @@ -762,10 +775,12 @@ nl: - Donderdag - Vrijdag - Zaterdag + footer: + send_feedback: Stuur reactie op %{version} shared: multiple_next_actions: Meerdere acties (een op elke regel) - make_actions_dependent: Maak acties afhankelijk van elkaar hide_form: Verberg formulier + make_actions_dependent: Maak acties afhankelijk van elkaar toggle_single: Voeg een actie toe add_actions: Toevoegen acties add_action: Actie toevoegen @@ -784,6 +799,50 @@ nl: list_name_completed_projects: Voltooide projecten list_name_hidden_projects: Verborgen projecten list_name_hidden_contexts: Verborgen contexten + users: + successfully_deleted_user: Succesvol gebruiker %{username} verwijderd + destroy_successful: Gebruiker %{login} met succes verwijderd + total_contexts: Totaal aantal contexten + openid_url_verified: Je hebt %{url} met succes geverifieerd als je identiteit en uw authenticatie type OpenID opgeslagen. + first_user_heading: "Welkom bij TRACKS. Om te beginnen, maak dan een admin account:" + auth_type_update_error: "Er was een probleem met het bijwerken van uw authenticatietype: %{error_messages}" + failed_to_delete_user: Mislukt de gebruiker %{username} te verwijderen + new_token_generated: Nieuwe token met succes gegenereerd + total_projects: Totaal aantal projecten + signup_successful: Aanmelding succesvol voor gebruiker %{username}. + change_password_submit: Wachtwoord wijzigen + no_signups_title: "TRACKS:: Geen nieuwe aanmeldingen" + user_created: Gebruiker aangemaakt. + manage_users: Beheren gebruikers + account_signup: Aanmelden voor een account + password_updated: Wachtwoord bijgewerkt. + confirm_password: Bevestig wachtwoord + new_user_heading: "Registreer een nieuwe gebruiker:" + signup: Aanmelden + auth_type_updated: Authenticatietype bijgewerkt. + total_actions: Totaal aanal acties + desired_login: Gewenste login + choose_password: Kies een wachtwoord + change_password_title: TRACKS::Wachtwoord wijzigen + change_auth_type_title: TRACKS::Wijzig authenticatietype + change_password_prompt: Voer uw nieuwe wachtwoord in de onderstaande velden in en kies 'Wachtwoord wijzigen' om uw huidige wachtwoord met uw nieuwe te vervangen. + password_confirmation_label: Bevestig wachtwoord + destroy_error: Er is een fout opgetreden bij het verwijderen van de gebruiker '%{login}' + new_password_label: Nieuw wachtwoord + register_with_cas: Met uw CAS gebruikersnaam + label_auth_type: Authenticatietype + new_user_title: "TRACKS:: Aanmelden als de admin gebruiker" + destroy_user: Verwijder de gebruiker + total_users_count: Je hebt een totaal van %{count} gebruikers + destroy_confirmation: "Waarschuwing: dit zal de gebruiker '%{login} verwijderen met al zijn acties, contexten, projecten en notities. Weet u zeker dat u wilt doorgaan?" + you_have_to_reset_your_password: Je moet je wachtwoord opnieuw instellen + signup_new_user: Registreer nieuwe gebruiker + openid_ok_pref_failed: Je hebt succesvol de %{url} geverifieerd als je identiteit, maar er was een probleem met het opslaan van uw authenticatie voorkeuren. + change_authentication_type: Wijzigen authenticatietype + auth_change_submit: Wijzigen authenticatietype + identity_url: Identiteit URL + select_authentication_type: Selecteer uw nieuwe authenticatie type en klik op 'Wijzigen authenticatietype' om uw huidige instellingen te vervangen. + total_notes: Totaal aantal notities contexts: delete_context_title: Verwijder context all_completed_tasks_title: "TRACKS:: Alle voltooide acties in context '%{context_name}'" @@ -802,24 +861,24 @@ nl: add_context: Context toevoegen update_status_message: Naam van de context was veranderd context_name: Context naam + completed_tasks_title: "TRACKS:: Voltooid acties in de context '%{context_name}'" status_active: Context is actief new_context_post: "' zal ook gemaakt worden. Weet u dit zeker?" - completed_tasks_title: "TRACKS:: Voltooid acties in de context '%{context_name}'" - last_completed_in_context: in deze context (laatste %{number}) context_deleted: De context '%{name}' is verwijderd no_contexts_hidden: Momenteel zijn er geen verborgen contexten new_context_pre: Nieuwe context ' no_actions: Momenteel zijn er geen onafgeronde acties in deze context + last_completed_in_context: in deze context (laatste %{number}) status_hidden: Context is verborgen feedlist: actions_due_today: Acties die vandaag of eerder af moeten choose_context: Kies de context waar je een feed van wilt all_contexts: Alle contexten rss_feed: RSS Feed - legend: Legenda ical_feed: iCal feed - choose_project: Kies het project waar je een feed van wilt + legend: Legenda all_projects: Alle projecten + choose_project: Kies het project waar je een feed van wilt active_projects_wo_next: Actieve projecten zonder acties project_needed: "Er moet ten minste \xC3\xA9\xC3\xA9n project zijn voor een feed opgevraagd kan worden" select_feed_for_project: Kies de feed voor dit project @@ -829,56 +888,12 @@ nl: projects_and_actions: Actieve projecten met hun acties notice_incomplete_only: "Merk op: alle feeds laten alleen acties zien die niet afgerond zijn, tenzij anders vermeld." actions_due_next_week: Acties die binnen 7 dagen afgerond moeten + plain_text_feed: Reguliere tekst feed last_fixed_number: Laatste %{number} acties all_actions: Alle acties actions_completed_last_week: Acties afgerond in de afgelopen 7 dagen context_centric_actions: Feeds voor onafgeronde acties in een specifieke context - plain_text_feed: Reguliere tekst feed project_centric: Feeds voor onafgeronde acties in een specifiek project - users: - failed_to_delete_user: Mislukt de gebruiker %{username} te verwijderen - destroy_successful: Gebruiker %{login} met succes verwijderd - total_contexts: Totaal aantal contexten - openid_url_verified: Je hebt %{url} met succes geverifieerd als je identiteit en uw authenticatie type OpenID opgeslagen. - first_user_heading: "Welkom bij TRACKS. Om te beginnen, maak dan een admin account:" - auth_type_update_error: "Er was een probleem met het bijwerken van uw authenticatietype: %{error_messages}" - successfully_deleted_user: Succesvol gebruiker %{username} verwijderd - new_token_generated: Nieuwe token met succes gegenereerd - total_projects: Totaal aantal projecten - signup_successful: Aanmelding succesvol voor gebruiker %{username}. - user_created: Gebruiker aangemaakt. - change_password_submit: Wachtwoord wijzigen - no_signups_title: "TRACKS:: Geen nieuwe aanmeldingen" - account_signup: Aanmelden voor een account - password_updated: Wachtwoord bijgewerkt. - manage_users: Beheren gebruikers - auth_type_updated: Authenticatietype bijgewerkt. - total_actions: Totaal aanal acties - desired_login: Gewenste login - signup: Aanmelden - confirm_password: Bevestig wachtwoord - new_user_heading: "Registreer een nieuwe gebruiker:" - change_password_prompt: Voer uw nieuwe wachtwoord in de onderstaande velden in en kies 'Wachtwoord wijzigen' om uw huidige wachtwoord met uw nieuwe te vervangen. - password_confirmation_label: Bevestig wachtwoord - destroy_error: Er is een fout opgetreden bij het verwijderen van de gebruiker '%{login}' - choose_password: Kies een wachtwoord - change_password_title: TRACKS::Wachtwoord wijzigen - change_auth_type_title: TRACKS::Wijzig authenticatietype - label_auth_type: Authenticatietype - new_password_label: Nieuw wachtwoord - register_with_cas: Met uw CAS gebruikersnaam - new_user_title: "TRACKS:: Aanmelden als de admin gebruiker" - destroy_user: Verwijder de gebruiker - total_users_count: Je hebt een totaal van %{count} gebruikers - signup_new_user: Registreer nieuwe gebruiker - destroy_confirmation: "Waarschuwing: dit zal de gebruiker '%{login} verwijderen met al zijn acties, contexten, projecten en notities. Weet u zeker dat u wilt doorgaan?" - you_have_to_reset_your_password: Je moet je wachtwoord opnieuw instellen - openid_ok_pref_failed: Je hebt succesvol de %{url} geverifieerd als je identiteit, maar er was een probleem met het opslaan van uw authenticatie voorkeuren. - auth_change_submit: Wijzigen authenticatietype - identity_url: Identiteit URL - change_authentication_type: Wijzigen authenticatietype - select_authentication_type: Selecteer uw nieuwe authenticatie type en klik op 'Wijzigen authenticatietype' om uw huidige instellingen te vervangen. - total_notes: Totaal aantal notities datetime: prompts: minute: Minuut @@ -925,15 +940,15 @@ nl: other: over %{count} jaren half_a_minute: halve minuut login: - login_cas: Ga naar het CAS - user_no_expiry: Blijf ingelogd sign_in: Meld aan openid_identity_url_not_found: Sorry, geen gebruiker met die identiteit URL bestaat (%{identity_url}) - cas_no_user_found: Hallo,%{username}! Je hebt nog geen account op Tracks. + login_cas: Ga naar het CAS + user_no_expiry: Blijf ingelogd cas_login: CAS Inloggen successful_with_session_info: "Login succesvol:" please_login: Log in om Tracks te gebruiken cas_logged_in_greeting: Hallo, %{username}! U bent geauthenticeerd. + cas_no_user_found: Hallo,%{username}! Je hebt nog geen account op Tracks. cas_username_not_found: Sorry, geen gebruiker met die CAS gebruikersnaam bestaat (%{username}) mobile_use_openid: ... if inloggen met een OpenID cas_create_account: Als u willen vragen ga hier om %{signup_link} diff --git a/config/routes.rb b/config/routes.rb index ec0ed738..adf1fbca 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -25,7 +25,7 @@ ActionController::Routing::Routes.draw do |map| map.resources :notes map.resources :todos, - :member => {:toggle_check => :put, :toggle_star => :put, :defer => :put}, + :member => {:toggle_check => :put, :toggle_star => :put, :defer => :put, :mobile_done => :put}, :collection => {:check_deferred => :post, :filter_to_context => :post, :filter_to_project => :post, :done => :get, :all_done => :get } diff --git a/doc/CHANGELOG b/doc/CHANGELOG index 7aad734b..ae0944eb 100644 --- a/doc/CHANGELOG +++ b/doc/CHANGELOG @@ -15,32 +15,32 @@ == Version 2.1devel -NOTE: to use this version you need to migrate your database. Not migrating will +NOTE: To use this version you need to migrate your database. Not migrating will cause new actions not to appear! -This version of tracks has moved to a new place on github. Also the wiki moved -to github, see the changed URLs above. +This version of tracks has moved to a new place on GitHub. Also the wiki moved +to GitHub, see the changed URLs above. New and changed features: -1. redesign of the completed todos: a new overview page. Also all context and +1. Redesign of the completed todos: a new overview page. Also all context and project pages have a link to their completed actions 2. New locales (es and fr) and updated locales (de, nl) 3. You can star an action right from the form to add a new action -4. redesign of preferences page +4. Redesign of preferences page. 5. You can now mark an action complete from the tickler -6. project names can now contain comma (',') in it name +6. Project names can now contain comma (',') in it name 7. There are two example ruby scripts in /doc to use the REST API to add a todo or a project template with todos from the command line Under the hood: 1. Upgraded rails to 2.3.12, jquery to 1.6.2 and jquery-ui to 1.8.14 -2. fixed several issues with the REST API -3. upgraded the act_as_statemachine plugin. This change requires a - migration, see note above! -4. migated to bundler for gem dependencies +2. Fixed several issues with the REST API +3. Upgraded the act_as_statemachine plugin. This change requires a + migration. See note above! +4. Migated to bundler for gem dependencies See https://github.com/tracksapp/tracks/compare/v2.0...master for all -detailled changes +detailed changes == Version 2.0 @@ -50,23 +50,23 @@ New features: to a new todo in that project if no tags are supplied 3. Tracks now includes support of dependencies. Making an action dependent on another action will hide it until the dependency is completed -4. you can now drag an action from one context to another +4. You can now drag an action from one context to another 5. Support for entering multiple actions in one form 6. You can now promote an action to a project 7. It is easier to view notes on the mobile interface and other interface fixes 8. The project description supports markup -9. support for Mail.app (message://) and OneNote (onenote://) links in notes -10.The email receiver is now able to receive email from several email adresses. - In site.yml this could be set to the previous behavior (receive from one - address per user) -11.You can enable open signup (like in tracks.tra.in) -12.Cleanup of context page -13.Support for CAS for login -14.Support for adding Tracks as a GMail Widget with instructions on the - Integrations page -15.Tracks now support internationalization. First translations are German and - Dutch. See http://www.getontracks.org/wiki/Translating-Tracks it you like to - help translating Tracks to other languages +9. Support for Mail.app (message://) and OneNote (onenote://) links in notes +10. The email receiver is now able to receive email from several email adresses. + In site.yml this could be set to the previous behavior (receive from one + address per user) +11. You can enable open signup (like in tracks.tra.in) +12. Cleanup of context page +13. Support for CAS for login +14. Support for adding Tracks as a GMail Widget with instructions on the + Integrations page +15. Tracks now supports internationalization. First translations are German and + Dutch. See http://www.getontracks.org/wiki/Translating-Tracks if you'd like to + help translate Tracks to other languages Under the hood 1. All js is migrated to jQuery and most ui-widgets are migrated to jQuery-UI @@ -93,9 +93,9 @@ Under the hood: 5. Bugfixes, including fixing OpenID == Version 1.6 -1. upgrade to rails 2.0.2 -2. new mobile interface (with some iPhone compatibility fixes) -3. new search functionality to search on todos, projects, contexts and notes +1. Upgrade to rails 2.0.2 +2. New mobile interface (with some iPhone compatibility fixes) +3. New search functionality to search on todos, projects, contexts and notes 4. Bugfixes == Version 1.5 @@ -173,11 +173,6 @@ Under the hood: == Version 1.03 -13. All the adding, updating, deleting and marking actions done is performed using Ajax, so happens without needing to refresh the page. -14. There's a new setting in settings.yml ('staleness_starts') which defines the number of days before which actions get marked as stale. Let's say you set it to 7 days. Actions created between 7 and 14 days ago get marked pale yellow, those created between 14 and 28 days ago (staleness_starts x 2) get marked darker yellow, and those created more than 28 days ago (staleness_starts x 3) are fluorescent yellow! This is only applied to items without a due date, so you can add items to be done some time in the future without getting yellow splashed all over the place (thanks to Nicholas for the patch to restrict to items with no due date). -15. Contexts and projects can now be sorted in any order you like. Arrow buttons on the /contexts and /projects pages let you move an item to the top, up, down or to the bottom. For contexts, this affects the order in which they sort on the home page. Position is also used to sort the listings of active/completed/hidden contexts and projects in the 'sidebar', and in the dropdown lists on forms. -16. You can mark projects as completed (by editing the project on /projects). In the 'sidebar' active and completed projects are shown separately, but you can still view the completed project. -17. New images (from eclipse.org) for the edit, delete, notes and up, down, top and bottom buttons. I've made a greyscale version for the default, then the coloured version gets loaded when the mouse is hovering over the button. 1. Added back border="0" to images which I had mistakenly taken out. This should fix the ugly red border around images that appears in Firefox (thanks, Adam Hughes). 2. Removed the section in config/environment.rb which requires Redcloth. This was causing errors because Rails now requires Redcloth itself. This means that you now need to have Redcloth installed as a gem (gem install redcloth) (thanks, Jim). 3. SQL dumps are now available for each of the available database formats (MySQL, PostgreSQL and SQLite), as well as a separate file containing some example contents, which should work for all of the formats. These are in the tracks/db directory (thanks, Jim) @@ -190,6 +185,11 @@ Under the hood: 10. Patch by lolindrath: Sorting by date is now much smarter on the home page. Actions are sorted by ascending due date then ascending creation date, but non-due dated items sort to the bottom. This means that the most urgent items float to the top of each context list. 11. You can now uncheck actions from the completed actions list, so that they dynamically appear back in the uncompleted actions area. 12. A tiny improvement: the toggling of the individual notes now uses Element.toggle from prototype.js, so it doesn't have to be an onLoad property of the body tag. This means that you don't get the notes flashing before they are hidden when you load or reload a page. +13. All the adding, updating, deleting and marking actions done is performed using Ajax, so happens without needing to refresh the page. +14. There's a new setting in settings.yml ('staleness_starts') which defines the number of days before which actions get marked as stale. Let's say you set it to 7 days. Actions created between 7 and 14 days ago get marked pale yellow, those created between 14 and 28 days ago (staleness_starts x 2) get marked darker yellow, and those created more than 28 days ago (staleness_starts x 3) are fluorescent yellow! This is only applied to items without a due date, so you can add items to be done some time in the future without getting yellow splashed all over the place (thanks to Nicholas for the patch to restrict to items with no due date). +15. Contexts and projects can now be sorted in any order you like. Arrow buttons on the /contexts and /projects pages let you move an item to the top, up, down or to the bottom. For contexts, this affects the order in which they sort on the home page. Position is also used to sort the listings of active/completed/hidden contexts and projects in the 'sidebar', and in the dropdown lists on forms. +16. You can mark projects as completed (by editing the project on /projects). In the 'sidebar' active and completed projects are shown separately, but you can still view the completed project. +17. New images (from eclipse.org) for the edit, delete, notes and up, down, top and bottom buttons. I've made a greyscale version for the default, then the coloured version gets loaded when the mouse is hovering over the button. == Version 1.02 diff --git a/doc/README_DEVELOPERS b/doc/README_DEVELOPERS index b0a98d3e..e63c7e44 100644 --- a/doc/README_DEVELOPERS +++ b/doc/README_DEVELOPERS @@ -3,8 +3,7 @@ Tracks is using * github to host the git repository. * Assembla to manage bugs and enhancement request. -* the mailing list to discuss features and development -* the forum to discuss with users +* the mailing list to discuss features and development and interact with users See README for links to the respective sites @@ -12,35 +11,39 @@ Also see the Development pages on the wiki for details on installing, upgrading, 2. Dependencies -The dependencies are maintained by Tracks. For development we try not to vendor them - -Install them using - - rake gems:install RAILS_ENV=development - rake gems:install RAILS_ENV=test - rake gems:install RAILS_ENV=selenium +The dependencies for Tracks are maintained using bundler. Before starting your +tracks instance, you'll need to run 'bundle install' to fetch all the +dependencies 3. Wiki -There are some pointers for setting up your Tracks copy for testing at https://github.com/TracksApp/tracks/wiki/Testing/ +There are some pointers for setting up your Tracks copy for testing at +https://github.com/TracksApp/tracks/wiki/Testing/ 4. SQLITE3 FOR TESTING -By default, tests are configured to run using sqlite3 in memory mode to increase speed. You will need the sqlite3-ruby gem for this. +By default, tests are configured to run using sqlite3 in memory mode to +increase speed. You will need the sqlite3-ruby gem for this. -To avoid showing the migrations as tests are run, add the following to your database.yml below 'database: ":memory:"': +To avoid showing the migrations as tests are run, add the following to your +database.yml below 'database: ":memory:"': verbosity: quiet -If you want to run tests using another database, that's fine, too. Just change your database.yml accordingly. +If you want to run tests using another database, that's fine, too. Just change +your database.yml accordingly. -5. SELENIUM TESTS (Selenium on Rails) +5. Test::Unit tests -This testing style is deprecated and tests are being moved over to Selenium via Cucumber. +To run the Test::Unit tests run -See the wiki for more information to run the tests that are not yet migrated: https://github.com/TracksApp/tracks/wiki/Testing + rake test -6. RSPEC tests +Running the above command will run through the unit, functional, and +integration tests for Tracks. Use 'rake -T' to see a list of all rake tasks to +determine how to run each section of tests separately. + +6. RSpec tests To run the RSpec tests run @@ -56,4 +59,7 @@ and for those using javascript/ajax use rake cucumber:selenium -See the wiki for more information on testing: https://github.com/TracksApp/tracks/wiki/Testing \ No newline at end of file +In order to run the selenium tests, you'll need to have Firefox 3.x installed. +Newer versions won't work. + +See the wiki for more information on testing: https://github.com/TracksApp/tracks/wiki/Testing diff --git a/features/mobile_add_action.feature b/features/mobile_add_action.feature index 80d9939d..86537d9f 100644 --- a/features/mobile_add_action.feature +++ b/features/mobile_add_action.feature @@ -14,7 +14,7 @@ Feature: Add new next action from mobile page Scenario Outline: The new action form is prefilled with context and project Given I am on the - When I follow "0-New action" + When I follow "New" Then the selected project should be "" And the selected context should be "" @@ -29,7 +29,7 @@ Feature: Add new next action from mobile page Scenario: I can add a new todo using the mobile interface Given I am on the home page Then the badge should show 0 - When I follow "0-New action" + When I follow "New" And I fill in "Description" with "test me" And I press "Create" Then I should see "test me" diff --git a/features/mobile_edit_a_todo.feature b/features/mobile_edit_a_todo.feature index 5726d99a..3589d072 100644 --- a/features/mobile_edit_a_todo.feature +++ b/features/mobile_edit_a_todo.feature @@ -14,6 +14,7 @@ Feature: Edit a next action from the mobile view | context | description | | @mobile | test action | + @selenium Scenario: I can edit an action on the mobile page When I am on the home page Then the badge should show 1 @@ -27,10 +28,8 @@ Feature: Edit a next action from the mobile view Then I should see "changed action" And I should not see "test action" When I follow "changed action" - And I press "Edit this action" - And I check "done" - And I press "Update" - Then I should not see "changed action" + And I press "Mark complete" + Then I should see "changed action" in the completed container Scenario: Navigate from home page move this to separate features when other scenarios are created for these features diff --git a/features/project_edit.feature b/features/project_edit.feature index a21dfc2c..986eb8aa 100644 --- a/features/project_edit.feature +++ b/features/project_edit.feature @@ -33,6 +33,15 @@ Feature: Edit a project Then I should see that a project named "release tracks 1.8" is not present And I should see that a project named "release tracks 2.0" is present + @selenium + Scenario: I cannot edit the project name in two places at once + Given I have a project "release tracks 1.8" with 1 todos + When I go to the "release tracks 1.8" project + And I click to edit the project name in place + Then I should be able to change the project name in place + When I edit the project settings + Then I should not be able to change the project name in place + # Ticket #1041 @selenium Scenario: I can change the name of the project using the Edit Project Settings form diff --git a/features/step_definitions/project_steps.rb b/features/step_definitions/project_steps.rb index 145cbd06..ffbf3aaa 100644 --- a/features/step_definitions/project_steps.rb +++ b/features/step_definitions/project_steps.rb @@ -196,6 +196,39 @@ When /^I edit the project name in place to be "([^"]*)"$/ do |new_project_name| click_button "Ok" end +When /^I click to edit the project name in place$/ do + selenium.click "css=div#project_name" +end + +Then /^I should be able to change the project name in place$/ do + #Note that this is not changing the project name + selenium.wait_for_element "css=div#project_name>form>input" + selenium.click "css=div#project_name > form > button[type=cancel]" +end + +When /^I edit the project settings$/ do + @project.should_not be_nil + + click_link "link_edit_project_#{@project.id}" + selenium.wait_for_element("xpath=//div[@id='edit_project_#{@project.id}']/form//button[@id='submit_project_#{@project.id}']") + +end + +Then /^I should not be able to change the project name in place$/ do + When "I click to edit the project name in place" + found = selenium.element? "xpath=//div[@id='project_name']/form/input" + !found +end + +When /^I close the project settings$/ do + @project.should_not be_nil + click_link "Cancel" + wait_for :wait_for => :effects , :javascript_framework => 'jquery' do + true + end +end + + When /^I edit the project state of "([^"]*)" to "([^"]*)"$/ do |project_name, state_name| project = @current_user.projects.find_by_name(project_name) project.should_not be_nil diff --git a/features/step_definitions/recurring_todo_steps.rb b/features/step_definitions/recurring_todo_steps.rb index a4156078..a300434e 100644 --- a/features/step_definitions/recurring_todo_steps.rb +++ b/features/step_definitions/recurring_todo_steps.rb @@ -1,5 +1,6 @@ Given /^I have a repeat pattern called "([^"]*)"$/ do |pattern_name| context = @current_user.contexts.first + @recurring_todo = @current_user.recurring_todos.create!( :description => pattern_name, :context_id => context.id, @@ -44,10 +45,10 @@ When /^I edit the name of the pattern "([^\"]*)" to "([^\"]*)"$/ do |pattern_nam wait_for_ajax fill_in "edit_recurring_todo_description", :with => new_name - selenium.click "recurring_todo_edit_action_submit" + selenium.click "recurring_todo_edit_update_button" wait_for do - !selenium.is_visible("overlay") + !selenium.is_visible("edit-recurring-todo") end end diff --git a/lib/tagging_extensions.rb b/lib/tagging_extensions.rb index 3a992efa..2808f42a 100644 --- a/lib/tagging_extensions.rb +++ b/lib/tagging_extensions.rb @@ -2,7 +2,7 @@ class ActiveRecord::Base #:nodoc: # These extensions make models taggable. This file is automatically generated and required by your app if you run the tagging generator included with has_many_polymorphs. module TaggingExtensions - + # Add tags to self. Accepts a string of tagnames, an array of tagnames, an array of ids, or an array of Tags. # # We need to avoid name conflicts with the built-in ActiveRecord association methods, thus the underscores. @@ -21,8 +21,8 @@ class ActiveRecord::Base #:nodoc: end end end - - # Removes tags from self. Accepts a string of tagnames, an array of tagnames, an array of ids, or an array of Tags. + + # Removes tags from self. Accepts a string of tagnames, an array of tagnames, an array of ids, or an array of Tags. def _remove_tags outgoing taggable?(true) outgoing = tag_cast_to_string(outgoing) @@ -35,20 +35,20 @@ class ActiveRecord::Base #:nodoc: def tag_list # Redefined later to avoid an RDoc parse error. end - + # Replace the existing tags on self. Accepts a string of tagnames, an array of tagnames, an array of ids, or an array of Tags. - def tag_with list + def tag_with list #:stopdoc: taggable?(true) list = tag_cast_to_string(list) - + # Transactions may not be ideal for you here; be aware. - Tag.transaction do + Tag.transaction do current = tags.map(&:name) _add_tags(list - current) _remove_tags(current - list) end - + self #:startdoc: end @@ -64,10 +64,10 @@ class ActiveRecord::Base #:nodoc: def tag_list=(value) tag_with(value) - end + end + + private - private - def tag_cast_to_string obj #:nodoc: case obj when Array @@ -88,9 +88,9 @@ class ActiveRecord::Base #:nodoc: else raise "Invalid object of class #{obj.class} as tagging method parameter" end.flatten.compact.map(&:downcase).uniq - end - - # Check if a model is in the :taggables target list. The alternative to this check is to explicitly include a TaggingMethods module (which you would create) in each target model. + end + + # Check if a model is in the :taggables target list. The alternative to this check is to explicitly include a TaggingMethods module (which you would create) in each target model. def taggable?(should_raise = false) #:nodoc: unless flag = respond_to?(:tags) raise "#{self.class} is not a taggable model" if should_raise @@ -99,69 +99,69 @@ class ActiveRecord::Base #:nodoc: end end - + module TaggingFinders # Find all the objects tagged with the supplied list of tags - # + # # Usage : Model.tagged_with("ruby") # Model.tagged_with("hello", "world") # Model.tagged_with("hello", "world", :limit => 10) # # XXX This query strategy is not performant, and needs to be rewritten as an inverted join or a series of unions - # + # def tagged_with(*tag_list) options = tag_list.last.is_a?(Hash) ? tag_list.pop : {} tag_list = parse_tags(tag_list) - + scope = scope(:find) options[:select] ||= "#{table_name}.*" options[:from] ||= "#{table_name}, tags, taggings" - + sql = "SELECT #{(scope && scope[:select]) || options[:select]} " sql << "FROM #{(scope && scope[:from]) || options[:from]} " add_joins!(sql, options[:joins], scope) - + sql << "WHERE #{table_name}.#{primary_key} = taggings.taggable_id " sql << "AND taggings.taggable_type = '#{ActiveRecord::Base.send(:class_name_of_active_record_descendant, self).to_s}' " sql << "AND taggings.tag_id = tags.id " - + tag_list_condition = tag_list.map {|name| "'#{name}'"}.join(", ") - + sql << "AND (tags.name IN (#{sanitize_sql(tag_list_condition)})) " sql << "AND #{sanitize_sql(options[:conditions])} " if options[:conditions] - - columns = column_names.map do |column| + + columns = column_names.map do |column| "#{table_name}.#{column}" end.join(", ") - + sql << "GROUP BY #{columns} " sql << "HAVING COUNT(taggings.tag_id) = #{tag_list.size}" - + add_order!(sql, options[:order], scope) add_limit!(sql, options, scope) add_lock!(sql, options, scope) - + find_by_sql(sql) end - + def self.tagged_with_any(*tag_list) options = tag_list.last.is_a?(Hash) ? tag_list.pop : {} tag_list = parse_tags(tag_list) - + scope = scope(:find) options[:select] ||= "#{table_name}.*" options[:from] ||= "#{table_name}, meta_tags, taggings" - + sql = "SELECT #{(scope && scope[:select]) || options[:select]} " sql << "FROM #{(scope && scope[:from]) || options[:from]} " add_joins!(sql, options, scope) - + sql << "WHERE #{table_name}.#{primary_key} = taggings.taggable_id " sql << "AND taggings.taggable_type = '#{ActiveRecord::Base.send(:class_name_of_active_record_descendant, self).to_s}' " sql << "AND taggings.meta_tag_id = meta_tags.id " - + sql << "AND (" or_options = [] tag_list.each do |name| @@ -169,30 +169,30 @@ class ActiveRecord::Base #:nodoc: end or_options_joined = or_options.join(" OR ") sql << "#{or_options_joined}) " - - + + sql << "AND #{sanitize_sql(options[:conditions])} " if options[:conditions] - + columns = column_names.map do |column| "#{table_name}.#{column}" end.join(", ") - + sql << "GROUP BY #{columns} " - + add_order!(sql, options[:order], scope) add_limit!(sql, options, scope) add_lock!(sql, options, scope) - + find_by_sql(sql) end - + def parse_tags(tags) return [] if tags.blank? tags = Array(tags).first tags = tags.respond_to?(:flatten) ? tags.flatten : tags.split(Tag::DELIMITER) tags.map { |tag| tag.strip.squeeze(" ") }.flatten.compact.map(&:downcase).uniq end - + end include TaggingExtensions diff --git a/public/javascripts/application.js b/public/javascripts/application.js index 7e5ec824..5c2302f8 100644 --- a/public/javascripts/application.js +++ b/public/javascripts/application.js @@ -737,7 +737,8 @@ var ProjectListPage = { $('div#project_name').editable(ProjectListPage.save_project_name, { style: 'padding: 0px; width=100%;', submit: i18n['common.ok'], - cancel: i18n['common.cancel'] + cancel: i18n['common.cancel'], + onblur: 'cancel' }); /* alphabetize project list */ @@ -775,12 +776,14 @@ var ProjectListPage = { /* submit project form after edit */ $("form.edit-project-form button.positive").live('click', function (ev) { + $('div#project_name').editable('enable'); submit_with_ajax_and_block_element('form.edit-project-form', $(this)); return false; }); /* cancel edit project form */ $('form.edit-project-form a.negative').live('click', function(){ + $('div#project_name').editable('enable'); $(this).parents('.edit-form').fadeOut(200, function () { $(this).parents('.list').find('.project').fadeIn(500); $(this).parents('.container').find('.item-show').fadeIn(500); @@ -991,64 +994,89 @@ var RecurringTodosPage = { $('#recurring_edit_'+this).hide(); }); }, + reset_radio: function () { + $('input:radio[name="recurring_todo[recurring_period]"]')[0].checked = true; + }, toggle_overlay: function () { var overlay_element = document.getElementById("overlay"); overlay_element.style.visibility = (overlay_element.style.visibility == "visible") ? "hidden" : "visible"; }, setup_behavior: function() { - /* cancel button on new recurring todo form */ - $("#recurring_todo_new_action_cancel").live('click', function(){ - $('#recurring-todo-form-new-action input:text:first').focus(); - RecurringTodosPage.hide_all_recurring(); - $('#recurring_daily').show(); - RecurringTodosPage.toggle_overlay(); - }); - /* cancel button on edit recurring todo form */ - $("#recurring_todo_edit_action_cancel").live('click', function(){ - $('#recurring-todo-form-edit-action input:text:first').focus(); - RecurringTodosPage.hide_all_recurring(); - $('#recurring_daily').show(); - RecurringTodosPage.toggle_overlay(); - }); - /* change recurring period radio input on edit form */ - $("#recurring_edit_period input").live('click', function(){ - RecurringTodosPage.hide_all_edit_recurring(); - $('#recurring_edit_'+this.id.split('_')[5]).show(); - }); - /* change recurring period radio input on new form */ - $("#recurring_period input").live('click', function(){ - RecurringTodosPage.hide_all_recurring(); - $('#recurring_'+this.id.split('_')[4]).show(); - }); - /* add new recurring todo plus-button in sidebar */ - $("#add-new-recurring-todo").live('click', function(){ - $('#new-recurring-todo').show(); - $('#edit-recurring-todo').hide(); - RecurringTodosPage.toggle_overlay(); - }); - /* submit form when editing a recurring todo */ - $("#recurring_todo_edit_action_submit").live('click', function (ev) { - submit_with_ajax_and_block_element('form#recurring-todo-form-edit-action', $(this)); - return false; - }); - /* submit form for new recurring todo */ - $("#recurring_todo_new_action_submit").live('click', function (ev) { - submit_with_ajax_and_block_element('form.#recurring-todo-form-new-action', $(this)); - return false; - }); - /* set behavior for edit recurring todo */ - $(".item-container a.edit_icon").live('click', function (ev){ - get_with_ajax_and_block_element(this.href, $(this).parents(".item-container")); - return false; - }); - /* delete button to delete a todo from the list */ - $('.item-container a.delete_icon').live('click', function(evt){ - var confirm_message = $(this).attr("x_confirm_message") - if(confirm(confirm_message)){ - delete_with_ajax_and_block_element(this.href, $(this).parents('.project')); + /* add new recurring todo plus-button in sidebar */ + $("#add-new-recurring-todo").live('click', function(){ + $( "#new-recurring-todo" ).dialog( "open" ); + }); + + /* setup dialog for new repeating action */ + $( "#new-recurring-todo" ).dialog({ + autoOpen: false, + height: 690, + width: 750, + modal: true, + buttons: { + "Create": function() { submit_with_ajax_and_block_element('form.#recurring-todo-form-new-action', $(this).parents(".ui-dialog")); }, + Cancel: function() { $( this ).dialog( "close" ); } + }, + show: "fade", + hide: "fade", + close: function() { + $('#recurring-todo-form-new-action input:text:first').focus(); + RecurringTodosPage.hide_all_recurring(); + RecurringTodosPage.reset_radio(); + $('#recurring_daily').show(); + } + }); + + /* change recurring period radio input on new form */ + $("#recurring_period input").live('click', function(){ + RecurringTodosPage.hide_all_recurring(); + $('#recurring_'+this.id.split('_')[4]).show(); + }); + + /* setup dialog for new repeating action */ + $( "#edit-recurring-todo" ).dialog({ + autoOpen: false, + height: 690, + width: 750, + modal: true, + buttons: { + "Update": { + text: "Update", + id: 'recurring_todo_edit_update_button', + click: function() { submit_with_ajax_and_block_element('form#recurring-todo-form-edit-action', $(this).parents(".ui-dialog")); } + }, + Cancel: function() { $( this ).dialog( "close" ); } + }, + show: "fade", + hide: "fade", + close: function() { + $('#recurring-todo-form-edit-action input:text:first').focus(); + RecurringTodosPage.hide_all_recurring(); + RecurringTodosPage.reset_radio(); + $('#recurring_daily').show(); + } + }); + + /* change recurring period radio input on edit form */ + $("#recurring_edit_period input").live('click', function(){ + RecurringTodosPage.hide_all_edit_recurring(); + $('#recurring_edit_'+this.id.split('_')[5]).show(); + }); + + /* set behavior for edit recurring todo */ + $(".item-container a.edit_icon").live('click', function (ev){ + get_with_ajax_and_block_element(this.href, $(this).parents(".item-container")); + return false; + }); + + /* delete button to delete a todo from the list */ + $('.item-container a.delete_icon').live('click', function(evt){ + var confirm_message = $(this).attr("x_confirm_message") + if(confirm(confirm_message)){ + delete_with_ajax_and_block_element(this.href, $(this).parents('.project')); } - return false; - }); + return false; + }); } } @@ -1290,7 +1318,7 @@ function enable_rich_interaction(){ $(document).ready(function() { // fix for IE8. Without this checkboxes don't work AJAXy. See #1152 - if($.browser.msie && ($.browser.version.substring(0, 2) == "8.")) { + if($.browser.msie && ( ($.browser.version.substring(0, 2) == "8.") || ($.browser.version.substring(0, 2) == "7.") ) ) { $('body').bind('change', function() { return true; }); diff --git a/public/javascripts/i18n/jquery.ui.datepicker-cz.js b/public/javascripts/i18n/jquery.ui.datepicker-cz.js new file mode 100644 index 00000000..1038ac75 --- /dev/null +++ b/public/javascripts/i18n/jquery.ui.datepicker-cz.js @@ -0,0 +1,23 @@ +/* Czech initialisation for the jQuery UI date picker plugin. */ +/* Written by Pavel Župa (pavel.zupa@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['cz'] = { + closeText: 'zavřít', + prevText: 'předchozí', + nextText: 'další', + currentText: 'dnes', + monthNames: ['Leden','Únor','Březen','Duben','Květen','Červen', + 'Červenec','Srpen','Září','Říjen','Listopad','Prosinec'], + monthNamesShort: ['Led','Úno','Bře','Dub','Kvě','Čer', + 'Čec','Srp','Zář','Říj','Lis','Pro'], + dayNames: ['Neděle','Pondělí','Úterý','Středa','Čtvrtek','Pátek','Sobota'], + dayNamesShort: ['Ne','Po','Út','St','Čt','Pá','So'], + dayNamesMin: ['Ne','Po','Út','St','Čt','Pá','So'], + weekHeader: 'č.', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['cz']); +}); diff --git a/public/stylesheets/mobile.css b/public/stylesheets/mobile.css index 08d0426d..f4795a55 100644 --- a/public/stylesheets/mobile.css +++ b/public/stylesheets/mobile.css @@ -3,36 +3,41 @@ body { font-size: smaller; } +#content { + margin-top: 50px; +} + div.footer { font-size: XX-small; color: #999999; text-align: center; } +a, a:link, a:active, a:visited { + color: #CC3334; + padding-left: 1px; + padding-right: 1px; + text-decoration: none; +} + +a:hover { + background-color: #CC3334; + color: #FFFFFF; +} + div.footer a { text-decoration: underline; color: #999999; } -.m_t_d a { - text-decoration: none; - color: #000000; -} - -.m_t_d a:hover { - text-decoration: underline; - color: #0000FF; -} - -.m_t_d .red, .m_t_d .amber, .m_t_d .orange, .m_t_d .green{ - background-color: #999999; -} - h1 { - color: #f00; + color: #fff; font-size: small; - margin-top:.3em; - margin-bottom:.3em; + padding-top: 0.2em; + padding-bottom: 0.2em; + padding-left:8px; + margin-top:0; + margin-bottom:0; } h2 { @@ -43,6 +48,17 @@ h2 { border-top: 1px solid #777777; } +h2 a, h2 a:link, h2 a:active, h2 a:visited { + color: #666666; + text-decoration: none; +} + +h2 a:hover { + background-color: transparent; + color: #CC3334; + text-decoration: none; +} + h4.alert { border: 1px solid #666666; text-align: center; @@ -79,6 +95,15 @@ span.r { span.prj, span.ctx{ font-size: X-small; } + +#ctx, #pjr { + margin: 0.5em 0; +} + +#ctx a, #pjr a { + padding: 0.1em 0; +} + /* Draw attention to some text Same format as traffic lights */ .red { @@ -118,22 +143,22 @@ span.prj, span.ctx{ .count { color: #fff; - background: #000; - font-size: medium; + background: #f00; + padding: 0.2em; } .errors { background: #FFC2C2; } -ul.c li.star { -list-style-type: circle; +ul.c li { +list-style-type: none; } ul.c { padding: 0; margin: 0; - padding-left: 1.1em; + padding-left: 0.1em; } ul.c li { @@ -149,8 +174,44 @@ span.r { display:none; } +#topbar { + background-color: #000000; + clear: both; + color: #EEEEEE; + height: 45px; + left: 0; + margin-bottom: 5px; + position: fixed; + top: 0; + width: 100%; + z-index: 501; +} + .nav { - font-size: x-small; + color: #fff; + background: #000; + padding-top: 0.2em; + padding-bottom: 0.2em; +} + +#topbar .nav { + padding-left:8px; + margin-bottom:0.3em; +} + +.nav a, .nav a:link, .nav a:active, .nav a:visited { + color: #fff; + padding-top: 1.0em; + padding-bottom: 0.5em; +} + +.nav a:focus, .nav a:hover, .nav a:active { + background: transparent; + text-decoration: underline; +} + +.nav li:hover, .nav a:focus, .nav a:hover, .nav a:active { + color: #CCCCCC; } #database_auth_form table td { @@ -160,3 +221,10 @@ span.r { table.c { margin-left: 5px; } +.mobile-done { + display:inline; +} + +input#todo_description, input#tag_list, textarea#todo_notes, select#todo_project_id, select#todo_context_id { + width: 95%; +} diff --git a/public/stylesheets/standard.css b/public/stylesheets/standard.css index fa8f893a..337c1370 100644 --- a/public/stylesheets/standard.css +++ b/public/stylesheets/standard.css @@ -203,26 +203,6 @@ a.show_successors:hover, a.link_to_successors:hover {background-image: url(../im width: 100%; } -#overlay { - visibility: hidden; - position: absolute; - left: 0px; - top: 0px; - width: 100%; - height: 100%; - z-index: 102; - text-align: center; - background-image:url("../images/trans70.png"); -} - -#overlay #new-recurring-todo, #overlay #edit-recurring-todo { - width:750px; - background-color: #fff; - border:1px solid #000; - padding: 15px; - margin: 70px auto; -} - .recurring_container { padding: 0px 5px 0px 5px; border: 1px solid #999; @@ -231,14 +211,6 @@ a.show_successors:hover, a.link_to_successors:hover {background-image: url(../im text-align: left; } -.recurring_submit_box { - height: 25px; - padding: 5px 0; - text-align: center; - clear: both; - border: none; -} - /* Navigation links at the top */ #navcontainer { @@ -278,8 +250,8 @@ a.show_successors:hover, a.link_to_successors:hover {background-image: url(../im #navlist a:hover { color: #CCC; } #develop-notify-bar { - line-height:0.5; - background-image: url(/images/construction.gif); + line-height:0.5; + background-image: url(/images/construction.gif); background-repeat: repeat-x; } @@ -321,6 +293,9 @@ a.show_successors:hover, a.link_to_successors:hover {background-image: url(../im border: 1px solid #999; margin: 0px 0px 15px 0px; background: #fff; + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; } .completed { @@ -373,7 +348,7 @@ div#input_box { #input_box ul#predecessor_ul { list-style-type: none; - color: black; + color: red; } .show_from_input, .due_input, .project_input, .context_input, @@ -424,7 +399,7 @@ a.delete_dependency_button:hover {background-color: white;} div.item-container { padding: 2px 0px; - line-height:20px; + line-height: 20px; clear: both; } @@ -445,6 +420,7 @@ a.icon { input.item-checkbox { float: left; + margin-top: 2px; margin-left: 3px; margin-right: 3px; vertical-align: middle; @@ -753,6 +729,10 @@ The colour of the background gets progressively yellower with age */ font-size: 12pt; margin: 10px 10px 0px 0px; height:26px; + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; + } ul { diff --git a/spec/factories/factories.rb b/spec/factories/factories.rb index cbf6c0a5..8a2c550f 100644 --- a/spec/factories/factories.rb +++ b/spec/factories/factories.rb @@ -20,6 +20,7 @@ begin t.sequence(:description) { |n| "testtodo#{n}" } t.association :context end + rescue FactoryGirl::DuplicateDefinitionError # No problem, apparently this file was included already. end diff --git a/test/functional/recurring_todos_controller_test.rb b/test/functional/recurring_todos_controller_test.rb index 725c79ce..bdfeef65 100644 --- a/test/functional/recurring_todos_controller_test.rb +++ b/test/functional/recurring_todos_controller_test.rb @@ -2,7 +2,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../test_helper') class RecurringTodosControllerTest < ActionController::TestCase fixtures :users, :preferences, :projects, :contexts, :todos, :tags, :taggings, :recurring_todos - + def setup @controller = RecurringTodosController.new @request, @response = ActionController::TestRequest.new, ActionController::TestResponse.new @@ -12,30 +12,30 @@ class RecurringTodosControllerTest < ActionController::TestCase get :index assert_redirected_to :controller => 'login', :action => 'login' end - + def test_destroy_recurring_todo login_as(:admin_user) xhr :post, :destroy, :id => 1, :_source_view => 'todo' - begin + begin rc = RecurringTodo.find(1) rescue - rc = nil + rc = nil end assert_nil rc end - + def test_new_recurring_todo login_as(:admin_user) orig_rt_count = RecurringTodo.count orig_todo_count = Todo.count - put :create, - "context_name"=>"library", - "project_name"=>"Build a working time machine", - "recurring_todo" => + put :create, + "context_name"=>"library", + "project_name"=>"Build a working time machine", + "recurring_todo" => { - "daily_every_x_days"=>"1", - "daily_selector"=>"daily_every_x_day", - "description"=>"new recurring pattern", + "daily_every_x_days"=>"1", + "daily_selector"=>"daily_every_x_day", + "description"=>"new recurring pattern", "end_date" => "31/08/2010", "ends_on" => "ends_on_end_date", "monthly_day_of_week" => "1", @@ -59,15 +59,15 @@ class RecurringTodosControllerTest < ActionController::TestCase "yearly_month_of_year2"=>"8", "yearly_month_of_year"=>"6", "yearly_selector"=>"yearly_every_x_day" - }, + }, "tag_list"=>"one, two, three, four" - + # check new recurring todo added - assert_equal orig_rt_count+1, RecurringTodo.count + assert_equal orig_rt_count+1, RecurringTodo.count # check new todo added assert_equal orig_todo_count+1, Todo.count end - + def test_recurring_todo_toggle_check # the test fixtures did add recurring_todos but not the corresponding todos, # so we check complete and uncheck to force creation of a todo from the @@ -78,22 +78,22 @@ class RecurringTodosControllerTest < ActionController::TestCase xhr :post, :toggle_check, :id=>1, :_source_view=>"" recurring_todo_1 = RecurringTodo.find(1) assert recurring_todo_1.completed? - + # remove remaining todo todo = Todo.find_by_recurring_todo_id(1) todo.recurring_todo_id = 2 todo.save - + todo_count = Todo.count - + # mark as active - xhr :post, :toggle_check, :id=>1, :_source_view=>"" + xhr :post, :toggle_check, :id=>1, :_source_view=>"" recurring_todo_1.reload assert recurring_todo_1.active? - + # by making active, a new todo should be created from the pattern assert_equal todo_count+1, Todo.count - + # find the new todo and check its description new_todo = Todo.find_by_recurring_todo_id 1 assert_equal "Call Bill Gates every day", new_todo.description @@ -101,9 +101,9 @@ class RecurringTodosControllerTest < ActionController::TestCase def test_creating_recurring_todo_with_show_from_in_past login_as(:admin_user) - + @yearly = RecurringTodo.find(5) # yearly on june 8th - + # change due date in four days from now and show from 10 days before, i.e. 6 # days ago target_date = Time.now.utc + 4.days @@ -114,37 +114,37 @@ class RecurringTodosControllerTest < ActionController::TestCase # @yearly.errors.each {|obj, error| puts error} # end assert @yearly.save - + # toggle twice to force generation of new todo xhr :post, :toggle_check, :id=>5, :_source_view=>"" xhr :post, :toggle_check, :id=>5, :_source_view=>"" new_todo = Todo.find_by_recurring_todo_id 5 - + # due date should be the target_date assert_equal users(:admin_user).at_midnight(Date.new(target_date.year, target_date.month, target_date.day)), new_todo.due - + # show_from should be nil since now+4.days-10.days is in the past assert_equal nil, new_todo.show_from end - + def test_last_sunday_of_march # this test is a duplicate of the unit test. Only this test covers the # codepath in the controllers - + login_as(:admin_user) orig_rt_count = RecurringTodo.count orig_todo_count = Todo.count - put :create, - "context_name"=>"library", - "project_name"=>"Build a working time machine", - "recurring_todo" => + put :create, + "context_name"=>"library", + "project_name"=>"Build a working time machine", + "recurring_todo" => { - "daily_every_x_days"=>"1", - "daily_selector"=>"daily_every_x_day", - "description"=>"new recurring pattern", + "daily_every_x_days"=>"1", + "daily_selector"=>"daily_every_x_day", + "description"=>"new recurring pattern", "end_date" => "", "ends_on" => "no_end_date", "monthly_day_of_week" => "1", @@ -168,36 +168,36 @@ class RecurringTodosControllerTest < ActionController::TestCase "yearly_month_of_year2"=>"3", "yearly_month_of_year"=>"10", "yearly_selector"=>"yearly_every_xth_day" - }, + }, "tag_list"=>"one, two, three, four" - + # check new recurring todo added - assert_equal orig_rt_count+1, RecurringTodo.count + assert_equal orig_rt_count+1, RecurringTodo.count # check new todo added assert_equal orig_todo_count+1, Todo.count # find the newly created todo new_todo = Todo.find_by_description("new recurring pattern") assert !new_todo.nil? - + # the date should be 31 march 2013 assert_equal Time.zone.local(2013,3,31), new_todo.due end - + def test_recurring_todo_with_due_date_and_show_always login_as(:admin_user) orig_rt_count = RecurringTodo.count orig_todo_count = Todo.count - put :create, - "context_name"=>"library", - "project_name"=>"Build a working time machine", - "recurring_todo" => + put :create, + "context_name"=>"library", + "project_name"=>"Build a working time machine", + "recurring_todo" => { - "daily_every_x_days"=>"1", - "daily_selector"=>"daily_every_x_day", - "description"=>"new recurring pattern", + "daily_every_x_days"=>"1", + "daily_selector"=>"daily_every_x_day", + "description"=>"new recurring pattern", "end_date" => "", "ends_on" => "no_end_date", "monthly_day_of_week" => "1", @@ -221,20 +221,50 @@ class RecurringTodosControllerTest < ActionController::TestCase "yearly_month_of_year2"=>"3", "yearly_month_of_year"=>"10", "yearly_selector"=>"yearly_every_xth_day" - }, + }, "tag_list"=>"one, two, three, four" - + # check new recurring todo added - assert_equal orig_rt_count+1, RecurringTodo.count + assert_equal orig_rt_count+1, RecurringTodo.count # check new todo added assert_equal orig_todo_count+1, Todo.count # find the newly created recurring todo recurring_todo = RecurringTodo.find_by_description("new recurring pattern") assert !recurring_todo.nil? - + assert_equal "due_date", recurring_todo.target assert_equal true, recurring_todo.show_always? end + def test_find_and_inactivate + login_as(:admin_user) + + rt = RecurringTodo.find(recurring_todos(:call_bill_gates_every_day).id) + todo = Todo.find_by_recurring_todo_id(rt.id) + + assert_not_nil todo + assert_equal "active", todo.state, "todo should be active" + assert_equal "active", rt.state, "repeat pattern should be active" + + get :index # will call find_and_inactivate + + rt.reload + assert_equal "active", rt.state, "repeat pattern should still be active" + + # disconnect todo from pattern thus leaving the pattern without + # any active todos, but in active state + todo.reload + todo.recurring_todo_id=nil + todo.save! + + todo.reload + rt.reload + assert_equal "active", rt.state, "repeat pattern should still be active and not changed" + + get :index + rt.reload + assert_equal "completed", rt.state, "repeat pattern should be completed" + end + end diff --git a/test/functional/todos_controller_test.rb b/test/functional/todos_controller_test.rb index e8003eac..e100ac1e 100644 --- a/test/functional/todos_controller_test.rb +++ b/test/functional/todos_controller_test.rb @@ -530,7 +530,9 @@ class TodosControllerTest < ActionController::TestCase # check that the new_todo is in the tickler to show next month assert !new_todo.show_from.nil? - next_month = today + 1.month + # do not use today here. It somehow gets messed up with the timezone calculation. + next_month = (Time.zone.now + 1.month).at_midnight + assert_equal next_month.utc.to_date.to_s(:db), new_todo.show_from.utc.to_date.to_s(:db) end diff --git a/test/integration/todo_xml_api_test.rb b/test/integration/todo_xml_api_test.rb index c7892490..bb25050d 100644 --- a/test/integration/todo_xml_api_test.rb +++ b/test/integration/todo_xml_api_test.rb @@ -8,8 +8,8 @@ class TodoXmlApiTest < ActionController::IntegrationTest def setup assert_test_environment_ok - @user = users(:other_user) - @password = 'sesame' + @user = users(:admin_user) + @password = 'abracadabra' end def test_get_tickler_succeeds @@ -25,24 +25,24 @@ class TodoXmlApiTest < ActionController::IntegrationTest assert_response 401 end - def test_get_tickler_returns_all_deferred_todos - number = @user.todos.deferred.count + def test_get_tickler_returns_all_deferred_and_pending_todos + number = @user.todos.deferred.count + @user.todos.pending.count authenticated_get_xml "/tickler", @user.login, @password, {} - assert_tag :tag => "todos", :children => { :count => number, :only => { :tag => "todo" } } + assert_tag :tag => "todos", :children => { :count => number } end def test_get_tickler_omits_user_id authenticated_get_xml "/tickler", @user.login, @password, {} assert_no_tag :tag => "user_id" end - - def test_create_todo_via_xml_show_from + + def test_create_todo_with_show_from old_count = @user.todos.count authenticated_post_xml_to_todo_create " Call Warren Buffet to find out how much he makes per day - #{projects(:attendrailsconf).id} - #{contexts(:office_otheruser).id} + #{contexts(:office).id} + #{projects(:timemachine).id} #{1.week.from_now.xmlschema} " @@ -50,22 +50,169 @@ class TodoXmlApiTest < ActionController::IntegrationTest assert_equal @user.todos.count, old_count + 1 end + def test_post_create_todo_with_multiple_dependencies + authenticated_post_xml_to_todo_create " + + this will succeed 2.0 + #{contexts(:office).id} + #{projects(:timemachine).id} + + 5 + 6 + +" + + assert_response :success + todo = @user.todos.find_by_description("this will succeed 2.0") + assert_not_nil todo + assert !todo.uncompleted_predecessors.empty? + end + + def test_post_create_todo_with_single_dependency + authenticated_post_xml_to_todo_create " + + this will succeed 2.1 + #{contexts(:office).id} + #{projects(:timemachine).id} + + 6 + +" + + assert_response :success + todo = @user.todos.find_by_description("this will succeed 2.1") + assert_not_nil todo + assert !todo.uncompleted_predecessors.empty? + end + + def test_post_create_todo_with_multiple_tags + authenticated_post_xml_to_todo_create " + + this will succeed 3 + #{contexts(:office).id} + #{projects(:timemachine).id} + + starred + starred1 + starred2 + +" + + assert_response :success + todo = @user.todos.find_by_description("this will succeed 3") + assert_not_nil todo + assert_equal "starred, starred1, starred2", todo.tag_list + assert todo.starred? + end + + def test_post_create_todo_with_single_tag + authenticated_post_xml_to_todo_create " + + this will succeed 3.1 + #{contexts(:office).id} + #{projects(:timemachine).id} + + tracks + +" + + assert_response :success + todo = @user.todos.find_by_description("this will succeed 3.1") + assert_not_nil todo + assert_equal "tracks", todo.tag_list + end + + def test_post_create_todo_with_new_context + authenticated_post_xml_to_todo_create " + + this will succeed 4 + #{projects(:timemachine).id} + + @SomeNewContext + +" + + assert_response :success + todo = @user.todos.find_by_description("this will succeed 4") + assert_not_nil todo + assert_not_nil todo.context + assert_equal todo.context.name, "@SomeNewContext" + end + + def test_post_create_todo_with_name_of_existing_context + authenticated_post_xml_to_todo_create " + + this will succeed 4 + #{projects(:timemachine).id} + + #{contexts(:office).name} + +" + + assert_response :success + todo = @user.todos.find_by_description("this will succeed 4") + assert_not_nil todo + assert_not_nil todo.context + assert_equal contexts(:office).name, todo.context.name + end + + + def test_post_create_todo_with_new_project + authenticated_post_xml_to_todo_create " + + this will succeed 5 + #{contexts(:office).id} + + Make even more money + +" + + assert_response :success + todo = @user.todos.find_by_description("this will succeed 5") + assert_not_nil todo + assert_not_nil todo.project + assert_equal todo.project.name, "Make even more money" + end + + def test_post_create_todo_with_name_of_existing_project + authenticated_post_xml_to_todo_create " + + this will succeed 5 + #{contexts(:office).id} + + #{projects(:timemachine).name} + +" + + assert_response :success + todo = @user.todos.find_by_description("this will succeed 5") + assert_not_nil todo + assert_not_nil todo.project + assert_equal projects(:timemachine).name, todo.project.name + assert 1, @user.projects.all(:conditions => ["projects.name = ?", projects(:timemachine).name]).count # no duplication of project + end + def test_post_create_todo_with_wrong_project_and_context_id - authenticated_post_xml_to_todo_create "this will fail-16-11" + authenticated_post_xml_to_todo_create " + + this will fail + -16 + -11 +" assert_response 422 assert_xml_select 'errors' do assert_select 'error', 2 end end - - def test_fails_with_401_if_not_authorized_user + + def test_fails_with_401_if_not_authorized_user authenticated_post_xml_to_todo_create '', 'nobody', 'nohow' assert_response 401 end private - def authenticated_post_xml_to_todo_create(postdata = @@valid_postdata, user = users(:other_user).login, password = 'sesame') + def authenticated_post_xml_to_todo_create(postdata = @@valid_postdata, user = @user.login, password = @password) authenticated_post_xml "/todos", user, password, postdata end