From bae4b2a5b71f345b1c19ad7b329c027fc0903936 Mon Sep 17 00:00:00 2001 From: Matt Rogers Date: Sun, 13 Oct 2013 09:39:48 -0500 Subject: [PATCH 01/31] Require 'timecop' explicitly This works around a problem with bundler's autorequires when not using a standard Rails environment. --- test/models/user_test.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/test/models/user_test.rb b/test/models/user_test.rb index 42c8c472..7bde5065 100644 --- a/test/models/user_test.rb +++ b/test/models/user_test.rb @@ -1,4 +1,5 @@ require File.expand_path(File.dirname(__FILE__) + '/../test_helper') +require 'timecop' class UserTest < ActiveSupport::TestCase fixtures :users, :preferences, :projects, :contexts, :todos, :recurring_todos @@ -393,4 +394,4 @@ class UserTest < ActiveSupport::TestCase User.create({ :login => 'quire', :password => 'quire', :password_confirmation => 'quire' }.merge(options)) end -end \ No newline at end of file +end From 9fd4b845de9fd8432dd5a602b07b3f214f507721 Mon Sep 17 00:00:00 2001 From: Matt Rogers Date: Sat, 12 Oct 2013 22:06:11 -0500 Subject: [PATCH 02/31] Don't depend on the environment in the test --- test/controllers/preferences_controller_test.rb | 1 - test/models/preference_test.rb | 1 - test/models/user_test.rb | 1 - 3 files changed, 3 deletions(-) diff --git a/test/controllers/preferences_controller_test.rb b/test/controllers/preferences_controller_test.rb index 695a9ee9..9d55e83e 100644 --- a/test/controllers/preferences_controller_test.rb +++ b/test/controllers/preferences_controller_test.rb @@ -4,7 +4,6 @@ class PreferencesControllerTest < ActionController::TestCase def setup super - assert_equal "test", Rails.env assert_equal "change-me", Tracks::Config.salt end diff --git a/test/models/preference_test.rb b/test/models/preference_test.rb index d0c065fe..2fe8e273 100644 --- a/test/models/preference_test.rb +++ b/test/models/preference_test.rb @@ -4,7 +4,6 @@ class PreferenceTest < ActiveSupport::TestCase fixtures :users, :preferences def setup - assert_equal "test", ENV['RAILS_ENV'] assert_equal "change-me", Tracks::Config.salt @admin_user = User.find(1) @other_user = User.find(2) diff --git a/test/models/user_test.rb b/test/models/user_test.rb index 7bde5065..f189b0a9 100644 --- a/test/models/user_test.rb +++ b/test/models/user_test.rb @@ -5,7 +5,6 @@ class UserTest < ActiveSupport::TestCase fixtures :users, :preferences, :projects, :contexts, :todos, :recurring_todos def setup - assert_equal "test", ENV['RAILS_ENV'] assert_equal "change-me", Tracks::Config.salt @admin_user = User.find(1) @other_user = User.find(2) From 1441d53808c90f4807af95bf5cafa6223d157d90 Mon Sep 17 00:00:00 2001 From: Matt Rogers Date: Tue, 15 Oct 2013 19:59:14 -0500 Subject: [PATCH 03/31] Compare against an array instead of joining them into a string No need to create a string out of them to get a good comparison --- test/models/user_test.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/models/user_test.rb b/test/models/user_test.rb index f189b0a9..e308f84e 100644 --- a/test/models/user_test.rb +++ b/test/models/user_test.rb @@ -374,16 +374,16 @@ class UserTest < ActiveSupport::TestCase # test group counts for projects and contexts project_counts = u.todos.count_by_group(:project_id) - assert_equal "6,3,4,4", project_counts.map{|pc|pc[1]}.join(",") + assert_equal [6,3,4,4], project_counts.values context_counts = u.todos.count_by_group(:context_id) - assert_equal "7,3,1,3,1,2", context_counts.map{|cc|cc[1]}.join(",") + assert_equal [7,3,1,3,1,2], context_counts.values # add a todo to the first context and check that the count is increased u.todos.create!(:description => "yet another todo", :context => u.contexts.first) context_counts = u.todos.reload.count_by_group(:context_id) - assert_equal "8,3,1,3,1,2", context_counts.map{|cc|cc[1]}.join(",") + assert_equal [8,3,1,3,1,2], context_counts.values end protected From 2f043911c6a700892c62ff4985451c947f292ea1 Mon Sep 17 00:00:00 2001 From: Greg Sutcliffe Date: Sun, 13 Oct 2013 22:11:55 +0100 Subject: [PATCH 04/31] Extend RichMessage format to include other data Uses new Regex to detect: @ context ~ project > tickler-date < due-date # tag (repeatable) * (starred) --- app/models/message_gateway.rb | 8 +-- app/models/project.rb | 1 + app/services/rich_message_extractor.rb | 60 +++++++++++++++++--- app/services/todo_from_rich_message.rb | 20 +++++-- app/views/integrations/index.en.html.erb | 32 +++++++++++ test/models/rich_message_extractor_test.rb | 65 ++++++++++++++++++++-- test/models/todo_from_rich_message_test.rb | 19 +++++++ 7 files changed, 180 insertions(+), 25 deletions(-) diff --git a/app/models/message_gateway.rb b/app/models/message_gateway.rb index fb42dc92..b020c736 100644 --- a/app/models/message_gateway.rb +++ b/app/models/message_gateway.rb @@ -1,6 +1,4 @@ class MessageGateway < ActionMailer::Base - include ActionView::Helpers::SanitizeHelper - extend ActionView::Helpers::SanitizeHelper::ClassMethods def receive(email) user = get_receiving_user_from_email_address(email) @@ -85,11 +83,11 @@ class MessageGateway < ActionMailer::Base end def get_text_or_nil(text) - return text ? sanitize(text.strip) : nil + return text ? text.strip : nil end def get_decoded_text_or_nil(text) - return text ? sanitize(text.decoded.strip) : nil + return text ? text.decoded.strip : nil end def get_first_text_plain_part(email) @@ -99,7 +97,7 @@ class MessageGateway < ActionMailer::Base # remove all parts that are not text/plain parts.reject{|part| !part.content_type.start_with?("text/plain") } - return parts.count > 0 ? sanitize(parts[0].decoded.strip) : "" + return parts.count > 0 ? parts[0].decoded.strip : "" end def get_all_parts(parts) diff --git a/app/models/project.rb b/app/models/project.rb index 685c51c1..9350e8b5 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -12,6 +12,7 @@ class Project < ActiveRecord::Base scope :uncompleted, -> { where("NOT(state = ?)", 'completed') } scope :with_name_or_description, lambda { |body| where("name LIKE ? OR description LIKE ?", body, body) } + scope :with_namepart, lambda { |body| where("name LIKE ?", body + '%') } validates_presence_of :name validates_length_of :name, :maximum => 255 diff --git a/app/services/rich_message_extractor.rb b/app/services/rich_message_extractor.rb index a357b66d..e248ad1e 100644 --- a/app/services/rich_message_extractor.rb +++ b/app/services/rich_message_extractor.rb @@ -1,28 +1,72 @@ +require 'date' class RichMessageExtractor + include ActionView::Helpers::SanitizeHelper + extend ActionView::Helpers::SanitizeHelper::ClassMethods - RICH_MESSAGE_FIELDS_REGEX = /([^>@]*)@?([^>]*)>?(.*)/ + PROJECT_MARKER = '~' + CONTEXT_MARKER = '@' + TICKLER_MARKER = '>' + DUE_MARKER = '<' + TAG_MARKER = '#' + STAR_MARKER = '*' + + ALL_MARKERS = [ + PROJECT_MARKER, + CONTEXT_MARKER, + TICKLER_MARKER, + DUE_MARKER, + TAG_MARKER, + STAR_MARKER + ] def initialize(message) @message = message end def description - fields[1].strip + desc = select_for('') + desc.blank? ? '' : sanitize(desc[1].strip) end def context - fields[2].strip + context = select_for(CONTEXT_MARKER) + context.blank? ? '' : sanitize(context[1].strip) end def project - stripped = fields[3].strip - stripped.blank? ? nil : stripped + project = select_for PROJECT_MARKER + project.blank? ? nil : sanitize(project[1].strip) + end + + def tags + string = @message.dup + tags = [] + # Regex only matches one tag, so recurse until we have them all + while string.match /#(.*?)(?=[#{ALL_MARKERS.join}]|\Z)/ + tags << sanitize($1) + string.gsub!(/##{$1}/,'') + end + tags.empty? ? nil : tags + end + + def due + due = select_for DUE_MARKER + due.blank? ? nil : Date.parse(due[1].strip) + end + + def show_from + show_from = select_for TICKLER_MARKER + show_from.blank? ? nil : Date.parse(show_from[1].strip) + end + + def starred? + @message.include? '*' end private - def fields - @message.match(RICH_MESSAGE_FIELDS_REGEX) - end + def select_for symbol + @message.match /#{symbol}(.*?)(?=[#{ALL_MARKERS.join}]|\Z)/ + end end diff --git a/app/services/todo_from_rich_message.rb b/app/services/todo_from_rich_message.rb index f919b0bb..b1a28f22 100644 --- a/app/services/todo_from_rich_message.rb +++ b/app/services/todo_from_rich_message.rb @@ -14,6 +14,10 @@ class TodoFromRichMessage description = extractor.description context = extractor.context project = extractor.project + show_from = extractor.show_from + due = extractor.due + tags = extractor.tags + star = extractor.starred? context_id = default_context_id if context.present? @@ -33,17 +37,21 @@ class TodoFromRichMessage found_project.name = project[4..259].strip found_project.save! else - found_project = user.projects.active.find_by_namepart(project) - found_project = user.projects.find_by_namepart(project) if found_project.nil? + found_project = user.projects.active.with_namepart(project).first + found_project = user.projects.with_namepart(project).first if found_project.nil? end project_id = found_project.id unless found_project.nil? end - todo = user.todos.build + todo = user.todos.build todo.description = description - todo.raw_notes = notes - todo.context_id = context_id - todo.project_id = project_id unless project_id.nil? + todo.raw_notes = notes + todo.context_id = context_id + todo.project_id = project_id unless project_id.nil? + todo.show_from = show_from if show_from.is_a? Date + todo.due = due if due.is_a? Date + todo.tag_with tags unless tags.nil? || tags.empty? + todo.starred = star todo end end diff --git a/app/views/integrations/index.en.html.erb b/app/views/integrations/index.en.html.erb index 6fd212b3..0dc900a2 100644 --- a/app/views/integrations/index.en.html.erb +++ b/app/views/integrations/index.en.html.erb @@ -14,6 +14,7 @@
  • Automatically Email Yourself Upcoming Actions
  • Integrate Tracks with an email server to be able to send an action through email to Tracks
  • Send emails to Tracks with Mailgun +
  • Rich Todo Message email format
  • Add Tracks as a Google Gmail gadget

  • Do you have one of your own to add? @@ -122,6 +123,7 @@

    Send emails to Tracks with Mailgun

    +

    If you want to email tasks to Tracks, but cannot run a mailserver on the same host, you could use the Mailgun support built in to Tracks.

    @@ -155,6 +157,36 @@ mailmap:

    All the comments about the email format from the section above apply to the Mailgun handling, as the data is processed the same way

    + +

    Rich Todo Message Format

    +

    For both of the above methods, the follow format can be used:

    +
    my awesome todo @context ~project <131012 >131009 #tag1 #tag2 *
    +

    The fields are:

    + + + + + + + + + + + + + + + + + + + + + + +
    SymbolMeaning
    @The context to place the Todo in
    ~The project to place the Todo in
    <The due date for the Todo (may be 2 digits for day, 4 digits for month-day, or 6 digits for yeah-month-day)
    >The due date for the Todo (may be 2 digits for day, 4 digits for month-day, or 6 digits for yeah-month-day)
    #A tag to apply to the Todo - may be used multiple times
    *Flag to star the Todo
    +

    All symbols are optional, and text up to the first symbol (or end of string) is used as the description of the todo

    +

    Add Tracks as a Google Gmail gadget

    diff --git a/test/models/rich_message_extractor_test.rb b/test/models/rich_message_extractor_test.rb index 5c264685..3376c289 100644 --- a/test/models/rich_message_extractor_test.rb +++ b/test/models/rich_message_extractor_test.rb @@ -1,3 +1,4 @@ +require 'date' require 'test/unit' require 'active_support/core_ext/object/blank' require_relative '../../app/services/rich_message_extractor.rb' @@ -5,11 +6,15 @@ require_relative '../../app/services/rich_message_extractor.rb' class RichMessageExtractorTest < Test::Unit::TestCase def test_message_with_all_options - message = "ohai@some-context>in-this-project" + message = "ohai@some-context~this-project>131012<131014#tag1#tag2*" extractor = RichMessageExtractor.new(message) assert_equal "ohai", extractor.description assert_equal "some-context", extractor.context - assert_equal "in-this-project", extractor.project + assert_equal "this-project", extractor.project + assert_equal "2013-10-12", extractor.show_from.to_s + assert_equal "2013-10-14", extractor.due.to_s + assert_equal ["tag1","tag2"], extractor.tags + assert extractor.starred? end def test_message_without_project @@ -20,12 +25,12 @@ class RichMessageExtractorTest < Test::Unit::TestCase assert_equal nil, extractor.project end - def test_message_without_project - message = " ohai @ some-context" + def test_message_without_context + message = " ohai ~ some-project" extractor = RichMessageExtractor.new(message) assert_equal "ohai", extractor.description - assert_equal "some-context", extractor.context - assert_equal nil, extractor.project + assert_equal "", extractor.context + assert_equal "some-project", extractor.project end def test_message_without_project_or_context @@ -52,4 +57,52 @@ class RichMessageExtractorTest < Test::Unit::TestCase assert_equal nil, extractor.project end + def test_message_with_tags + message = "some tags#tag 1#tag2" + extractor = RichMessageExtractor.new(message) + assert_equal ["tag 1","tag2"], extractor.tags + end + + def test_message_with_no_tags + message = "no tags" + extractor = RichMessageExtractor.new(message) + assert_equal nil, extractor.tags + end + + def test_message_with_due_date + message = "datetest<141013" + extractor = RichMessageExtractor.new(message) + assert_equal "2014-10-13", extractor.due.to_s + end + + def test_message_with_no_due_date + message = "no date" + extractor = RichMessageExtractor.new(message) + assert_equal nil, extractor.due + end + + def test_message_with_show_from + message = "datetest>161013" + extractor = RichMessageExtractor.new(message) + assert_equal "2016-10-13", extractor.show_from.to_s + end + + def test_message_with_no_show_from + message = "no tickler" + extractor = RichMessageExtractor.new(message) + assert_equal nil, extractor.show_from + end + + def test_message_with_star + message = "star test*" + extractor = RichMessageExtractor.new(message) + assert extractor.starred? + end + + def test_message_with_no_star + message = "no star test" + extractor = RichMessageExtractor.new(message) + refute extractor.starred? + end + end diff --git a/test/models/todo_from_rich_message_test.rb b/test/models/todo_from_rich_message_test.rb index f9206624..2b57da38 100644 --- a/test/models/todo_from_rich_message_test.rb +++ b/test/models/todo_from_rich_message_test.rb @@ -18,4 +18,23 @@ class TodoFromRichMessageTest < ActiveSupport::TestCase assert_equal default_context_id, new_todo.context_id end + def test_from_rich_message_adds_all_fields + user = @completed.user + context = Context.create(:name => 'context') + project = Project.create(:name => 'project') + message = "description@context~project>131014<131017#tag1#tag2*" + builder = TodoFromRichMessage.new(user, context.id, message, "notes") + new_todo = builder.construct + + assert_not_nil new_todo + assert_equal "description", new_todo.description + assert_equal "notes", new_todo.notes + assert_equal context.id, new_todo.context_id + assert_equal project.id, new_todo.project_id + assert_equal "2013-10-14 00:00:00 +0100", new_todo.show_from.to_s + assert_equal "2013-10-17 00:00:00 +0100", new_todo.due.to_s + assert_equal "starred, tag1, tag2", new_todo.tags.to_s + assert new_todo.starred? + end + end From b1c306b09eb2128b8f74586407384f5a1acf4cba Mon Sep 17 00:00:00 2001 From: Matt Rogers Date: Tue, 5 Nov 2013 19:24:39 -0600 Subject: [PATCH 05/31] Fix the repo location in the install documentation --- doc/installation.textile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/installation.textile b/doc/installation.textile index b9dc4388..0ae21f9e 100644 --- a/doc/installation.textile +++ b/doc/installation.textile @@ -10,7 +10,7 @@ There are two methods of downloading Tracks: # If you want to live on the edge, you can get the latest development version from GitHub using git (bear in mind that this may be less stable than the released versions): bc. cd ~/Sites -git clone git://github.com/tracksapp/tracks.git +git clone https://github.com/TracksApp/tracks.git cd tracks From 17dca39d3a6763e30fa2fcc03c0f0241035bc9db Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Mon, 30 Dec 2013 20:52:35 +0100 Subject: [PATCH 06/31] update gems and fix i18n and aasm deprecation warnings --- Gemfile.lock | 146 +++++++++--------- app/models/project.rb | 2 +- app/models/todo.rb | 2 +- app/views/projects/show.m.erb | 2 +- app/views/projects/update_status.js.rjs | 8 +- config/application.rb | 3 + test/controllers/projects_controller_test.rb | 4 +- .../recurring_todos_controller_test.rb | 2 +- test/models/project_test.rb | 22 +-- test/models/todo_test.rb | 26 ++-- 10 files changed, 113 insertions(+), 104 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 7f3b6b77..810cae58 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,6 +1,6 @@ GIT remote: https://github.com/cucumber/aruba - revision: adbfc240d69254d7b525876b4c5bff6b721b7d65 + revision: 7afbc5c0cbae9c9a946d70c4c2735ccb86e00f08 specs: aruba (0.5.3) childprocess (>= 0.3.6) @@ -9,35 +9,35 @@ GIT GIT remote: https://github.com/rails/actionpack-xml_parser - revision: 246653ab3670f329176c1e77e6cd1a632466f06e + revision: e1516064761ea26502cd79b283f6af0fa2b1edf5 specs: - actionpack-xml_parser (1.0.0) - actionpack (>= 4.0.0.rc1, < 4.1) + actionpack-xml_parser (1.0.1) + actionpack (>= 4.0.0, < 5) GEM remote: https://rubygems.org/ specs: RedCloth (4.2.9) - aasm (3.0.22) - actionmailer (4.0.0) - actionpack (= 4.0.0) - mail (~> 2.5.3) - actionpack (4.0.0) - activesupport (= 4.0.0) + aasm (3.0.25) + actionmailer (4.0.2) + actionpack (= 4.0.2) + mail (~> 2.5.4) + actionpack (4.0.2) + activesupport (= 4.0.2) builder (~> 3.1.0) erubis (~> 2.7.0) rack (~> 1.5.2) rack-test (~> 0.6.2) - activemodel (4.0.0) - activesupport (= 4.0.0) + activemodel (4.0.2) + activesupport (= 4.0.2) builder (~> 3.1.0) - activerecord (4.0.0) - activemodel (= 4.0.0) + activerecord (4.0.2) + activemodel (= 4.0.2) activerecord-deprecated_finders (~> 1.0.2) - activesupport (= 4.0.0) + activesupport (= 4.0.2) arel (~> 4.0.0) activerecord-deprecated_finders (1.0.3) - activesupport (4.0.0) + activesupport (4.0.2) i18n (~> 0.6, >= 0.6.4) minitest (~> 4.2) multi_json (~> 1.3) @@ -45,16 +45,17 @@ GEM tzinfo (~> 0.3.37) acts_as_list (0.3.0) activerecord (>= 3.0) - arel (4.0.0) + arel (4.0.1) atomic (1.1.14) bcrypt-ruby (3.0.1) builder (3.1.4) - bullet (4.6.0) - uniform_notifier + bullet (4.7.1) + activesupport + uniform_notifier (>= 1.4.0) cache_digests (0.3.1) actionpack (>= 3.2) thread_safe - capybara (2.1.0) + capybara (2.2.0) mime-types (>= 1.16) nokogiri (>= 1.3.3) rack (>= 1.0.0) @@ -62,19 +63,19 @@ GEM xpath (~> 2.0) childprocess (0.3.9) ffi (~> 1.0, >= 1.0.11) - codeclimate-test-reporter (0.1.1) + codeclimate-test-reporter (0.2.0) simplecov (>= 0.7.1, < 1.0.0) - coffee-rails (4.0.0) + coffee-rails (4.0.1) coffee-script (>= 2.2.0) - railties (>= 4.0.0.beta, < 5.0) + railties (>= 4.0.0, < 5.0) coffee-script (2.2.0) coffee-script-source execjs coffee-script-source (1.6.3) - cucumber (1.3.8) + cucumber (1.3.10) builder (>= 2.1.2) diff-lcs (>= 1.1.3) - gherkin (~> 2.12.1) + gherkin (~> 2.12) multi_json (>= 1.7.5, < 2.0) multi_test (>= 0.0.2) cucumber-rails (1.4.0) @@ -82,89 +83,93 @@ GEM cucumber (>= 1.2.0) nokogiri (>= 1.5.0) rails (>= 3.0.0) - database_cleaner (1.1.1) - diff-lcs (1.2.4) + database_cleaner (1.2.0) + diff-lcs (1.2.5) + docile (1.1.1) erubis (2.7.0) - execjs (2.0.1) - factory_girl (4.2.0) + execjs (2.0.2) + factory_girl (4.3.0) activesupport (>= 3.0.0) - factory_girl_rails (4.2.1) - factory_girl (~> 4.2.0) + factory_girl_rails (4.3.0) + factory_girl (~> 4.3.0) railties (>= 3.0.0) - ffi (1.9.0) - gherkin (2.12.1) + ffi (1.9.3) + gherkin (2.12.2) multi_json (~> 1.3) hike (1.2.3) htmlentities (4.3.1) - i18n (0.6.5) + i18n (0.6.9) jquery-rails (3.0.4) railties (>= 3.0, < 5.0) thor (>= 0.14, < 2.0) - json (1.8.0) + json (1.8.1) libv8 (3.16.14.3) mail (2.5.4) mime-types (~> 1.16) treetop (~> 1.4.8) metaclass (0.0.1) - mime-types (1.25) - mini_portile (0.5.1) + mime-types (1.25.1) + mini_portile (0.5.2) minitest (4.7.5) mocha (0.14.0) metaclass (~> 0.0.1) - multi_json (1.8.0) + multi_json (1.8.2) multi_test (0.0.2) - mysql2 (0.3.13) - nokogiri (1.6.0) + mysql2 (0.3.14) + nokogiri (1.6.1) mini_portile (~> 0.5.0) polyglot (0.3.3) + protected_attributes (1.0.5) + activemodel (>= 4.0.1, < 5.0) rack (1.5.2) rack-mini-profiler (0.1.31) rack (>= 1.1.3) rack-test (0.6.2) rack (>= 1.0) - rails (4.0.0) - actionmailer (= 4.0.0) - actionpack (= 4.0.0) - activerecord (= 4.0.0) - activesupport (= 4.0.0) + rails (4.0.2) + actionmailer (= 4.0.2) + actionpack (= 4.0.2) + activerecord (= 4.0.2) + activesupport (= 4.0.2) bundler (>= 1.3.0, < 2.0) - railties (= 4.0.0) + railties (= 4.0.2) sprockets-rails (~> 2.0.0) - rails_autolink (1.1.4) + rails_autolink (1.1.5) rails (> 3.1) - railties (4.0.0) - actionpack (= 4.0.0) - activesupport (= 4.0.0) + railties (4.0.2) + actionpack (= 4.0.2) + activesupport (= 4.0.2) rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) - rake (10.1.0) + rake (10.1.1) ref (1.0.5) - rspec-expectations (2.14.3) + rspec-expectations (2.14.4) diff-lcs (>= 1.1.3, < 2.0) - rubyzip (0.9.9) + rubyzip (1.1.0) safe_yaml (0.9.7) sanitize (2.0.6) nokogiri (>= 1.4.4) - sass (3.2.10) - sass-rails (4.0.0) - railties (>= 4.0.0.beta, < 5.0) + sass (3.2.13) + sass-rails (4.0.1) + railties (>= 4.0.0, < 5.0) sass (>= 3.1.10) sprockets-rails (~> 2.0.0) - selenium-webdriver (2.35.1) + selenium-webdriver (2.39.0) childprocess (>= 0.2.5) multi_json (~> 1.0) - rubyzip (< 1.0.0) + rubyzip (~> 1.0) websocket (~> 1.0.4) - simplecov (0.7.1) - multi_json (~> 1.0) - simplecov-html (~> 0.7.1) - simplecov-html (0.7.1) - sprockets (2.10.0) + simplecov (0.8.2) + docile (~> 1.1.0) + multi_json + simplecov-html (~> 0.8.0) + simplecov-html (0.8.0) + sprockets (2.10.1) hike (~> 1.2) multi_json (~> 1.0) rack (~> 1.0) tilt (~> 1.1, != 1.3.0) - sprockets-rails (2.0.0) + sprockets-rails (2.0.1) actionpack (>= 3.0) activesupport (>= 3.0) sprockets (~> 2.8) @@ -180,22 +185,23 @@ GEM atomic tilt (1.4.1) timecop (0.6.3) - tolk (1.3.11) + tolk (1.4.00) + protected_attributes safe_yaml (~> 0.8) will_paginate treetop (1.4.15) polyglot polyglot (>= 0.3.1) - tzinfo (0.3.37) - uglifier (2.2.1) + tzinfo (0.3.38) + uglifier (2.4.0) execjs (>= 0.3.0) - multi_json (~> 1.0, >= 1.0.2) - uniform_notifier (1.3.0) + json (>= 1.8.0) + uniform_notifier (1.4.0) websocket (1.0.7) will_paginate (3.0.5) xpath (2.0.0) nokogiri (~> 1.3) - yard (0.8.7.2) + yard (0.8.7.3) PLATFORMS ruby diff --git a/app/models/project.rb b/app/models/project.rb index 9350e8b5..f60718ed 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -89,7 +89,7 @@ class Project < ActiveRecord::Base # as a result of acts_as_state_machine calling state=() to update the attribute def transition_to(candidate_state) case candidate_state.to_sym - when aasm_current_state + when aasm.current_state return when :hidden hide! diff --git a/app/models/todo.rb b/app/models/todo.rb index 5bc2105d..afb453e6 100644 --- a/app/models/todo.rb +++ b/app/models/todo.rb @@ -66,7 +66,7 @@ class Todo < ActiveRecord::Base # state machine include AASM - aasm_initial_state Proc.new { |t| (t.show_from && t.user && (t.show_from > t.user.date)) ? :deferred : :active} + aasm_initial_state = Proc.new { |t| (t.show_from && t.user && (t.show_from > t.user.date)) ? :deferred : :active} aasm :column => :state do diff --git a/app/views/projects/show.m.erb b/app/views/projects/show.m.erb index 8250b462..f289ca28 100644 --- a/app/views/projects/show.m.erb +++ b/app/views/projects/show.m.erb @@ -28,4 +28,4 @@ <% else -%><%= render :partial => "notes/notes_summary", :collection => @project.notes %> <% end -%>

    <%= t('projects.settings') %>

    -<%= t('projects.state', :state => project.aasm_current_state.to_s) %>. <%= @project_default_context %> +<%= t('projects.state', :state => project.aasm.current_state.to_s) %>. <%= @project_default_context %> diff --git a/app/views/projects/update_status.js.rjs b/app/views/projects/update_status.js.rjs index c15a4acb..28d62c60 100644 --- a/app/views/projects/update_status.js.rjs +++ b/app/views/projects/update_status.js.rjs @@ -1,11 +1,11 @@ # TODO: is this dead code? page.select('#project_status .active span').each do |element| - element.className = @project.aasm_current_state == :active ? 'active_state' : 'inactive_state' + element.className = @project.aasm.current_state == :active ? 'active_state' : 'inactive_state' end page.select('#project_status .hidden span').each do |element| - element.className = @project.aasm_current_state == :hidden ? 'active_state' : 'inactive_state' + element.className = @project.aasm.current_state == :hidden ? 'active_state' : 'inactive_state' end page.select('#project_status .completed span').each do |element| - element.className = @project.aasm_current_state == :completed ? 'active_state' : 'inactive_state' + element.className = @project.aasm.current_state == :completed ? 'active_state' : 'inactive_state' end -page.notify :notice, "Set project status to #{@project.aasm_current_state}", 5.0 +page.notify :notice, "Set project status to #{@project.aasm.current_state}", 5.0 diff --git a/config/application.rb b/config/application.rb index a1c95eb1..e081c524 100644 --- a/config/application.rb +++ b/config/application.rb @@ -68,5 +68,8 @@ module Tracksapp config.action_view.sanitized_allowed_protocols = 'onenote', 'message' config.middleware.insert_after ActionDispatch::ParamsParser, ActionDispatch::XmlParamsParser + + # if a locale is invalid, the Rails app will raise an error + config.i18n.enforce_available_locales = true end end diff --git a/test/controllers/projects_controller_test.rb b/test/controllers/projects_controller_test.rb index 72ee3f8d..1b2b557f 100644 --- a/test/controllers/projects_controller_test.rb +++ b/test/controllers/projects_controller_test.rb @@ -48,7 +48,7 @@ class ProjectsControllerTest < ActionController::TestCase login_as(:admin_user) xhr :post, :update, :id => 1, "project"=>{"name"=>p.name, "description"=>p.description, "state"=>"hidden"} todos.each do |t| - assert_equal :project_hidden, t.reload().aasm_current_state + assert_equal :project_hidden, t.reload().aasm.current_state end assert p.reload().hidden? end @@ -60,7 +60,7 @@ class ProjectsControllerTest < ActionController::TestCase xhr :post, :update, :id => 1, "project"=>{"name"=>p.name, "description"=>p.description, "state"=>"hidden"} xhr :post, :update, :id => 1, "project"=>{"name"=>p.name, "description"=>p.description, "state"=>"active"} todos.each do |t| - assert_equal :active, t.reload().aasm_current_state + assert_equal :active, t.reload().aasm.current_state end assert p.reload().active? end diff --git a/test/controllers/recurring_todos_controller_test.rb b/test/controllers/recurring_todos_controller_test.rb index d9e91395..30c456a7 100644 --- a/test/controllers/recurring_todos_controller_test.rb +++ b/test/controllers/recurring_todos_controller_test.rb @@ -84,7 +84,7 @@ class RecurringTodosControllerTest < ActionController::TestCase xhr :post, :toggle_check, :id=>1, :_source_view=>"" recurring_todo_1 = RecurringTodo.find(1) # reload seems to not work - assert recurring_todo_1.active?, "recurring todo should be active but is #{recurring_todo_1.aasm_current_state}" + assert recurring_todo_1.active?, "recurring todo should be active but is #{recurring_todo_1.aasm.current_state}" # by making active, a new todo should be created from the pattern assert_equal todo_count+1, Todo.count diff --git a/test/models/project_test.rb b/test/models/project_test.rb index 47ba1a5f..0605291c 100644 --- a/test/models/project_test.rb +++ b/test/models/project_test.rb @@ -48,36 +48,36 @@ class ProjectTest < ActiveSupport::TestCase # state machine def test_project_initial_state_is_active - assert_equal :active, @timemachine.aasm_current_state + assert_equal :active, @timemachine.aasm.current_state assert @timemachine.active? end def test_hide_project @timemachine.hide! - assert_equal :hidden, @timemachine.aasm_current_state + assert_equal :hidden, @timemachine.aasm.current_state assert @timemachine.hidden? end def test_activate_project @timemachine.activate! - assert_equal :active, @timemachine.aasm_current_state + assert_equal :active, @timemachine.aasm.current_state assert @timemachine.active? end def test_transition_to_another_state - assert_equal :active, @timemachine.aasm_current_state + assert_equal :active, @timemachine.aasm.current_state @timemachine.transition_to(:hidden) - assert_equal :hidden, @timemachine.aasm_current_state + assert_equal :hidden, @timemachine.aasm.current_state @timemachine.transition_to(:completed) - assert_equal :completed, @timemachine.aasm_current_state + assert_equal :completed, @timemachine.aasm.current_state @timemachine.transition_to(:active) - assert_equal :active, @timemachine.aasm_current_state + assert_equal :active, @timemachine.aasm.current_state end def test_transition_to_same_state - assert_equal :active, @timemachine.aasm_current_state + assert_equal :active, @timemachine.aasm.current_state @timemachine.transition_to(:active) - assert_equal :active, @timemachine.aasm_current_state + assert_equal :active, @timemachine.aasm.current_state end # other tests @@ -95,7 +95,7 @@ class ProjectTest < ActiveSupport::TestCase def test_complete_project assert_nil @timemachine.completed_at @timemachine.complete! - assert_equal :completed, @timemachine.aasm_current_state + assert_equal :completed, @timemachine.aasm.current_state assert @timemachine.completed? assert_not_nil @timemachine.completed_at, "completed_at not expected to be nil" assert_in_delta Time.now, @timemachine.completed_at, 1 @@ -150,7 +150,7 @@ class ProjectTest < ActiveSupport::TestCase first_todo = @moremoney.todos[0] first_todo.show_from = Time.zone.now + 1.week first_todo.save! - assert_equal :deferred, @moremoney.todos[0].aasm_current_state + assert_equal :deferred, @moremoney.todos[0].aasm.current_state assert_equal 1, @moremoney.todos.deferred.count end diff --git a/test/models/todo_test.rb b/test/models/todo_test.rb index 5d87210c..100a86a6 100644 --- a/test/models/todo_test.rb +++ b/test/models/todo_test.rb @@ -97,10 +97,10 @@ class TodoTest < ActiveSupport::TestCase def test_defer_an_existing_todo @not_completed2 - assert_equal :active, @not_completed2.aasm_current_state + assert_equal :active, @not_completed2.aasm.current_state @not_completed2.show_from = Time.zone.now + 1.week assert @not_completed2.save, "should have saved successfully" + @not_completed2.errors.to_xml - assert_equal :deferred, @not_completed2.aasm_current_state + assert_equal :deferred, @not_completed2.aasm.current_state end def test_create_a_new_deferred_todo @@ -110,41 +110,41 @@ class TodoTest < ActiveSupport::TestCase todo.context_id = 1 todo.description = 'foo' assert todo.save, "should have saved successfully" + todo.errors.to_xml - assert_equal :deferred, todo.aasm_current_state + assert_equal :deferred, todo.aasm.current_state end def test_create_a_new_deferred_todo_by_passing_attributes user = users(:other_user) todo = user.todos.build(:show_from => next_week, :context_id => 1, :description => 'foo') assert todo.save, "should have saved successfully" + todo.errors.to_xml - assert_equal :deferred, todo.aasm_current_state + assert_equal :deferred, todo.aasm.current_state end def test_toggle_completion t = @not_completed1 - assert_equal :active, t.aasm_current_state + assert_equal :active, t.aasm.current_state t.toggle_completion! - assert_equal :completed, t.aasm_current_state + assert_equal :completed, t.aasm.current_state t.toggle_completion! - assert_equal :active, t.aasm_current_state + assert_equal :active, t.aasm.current_state end def test_toggle_completion_with_show_from_in_future t = @not_completed1 t.show_from= 1.week.from_now t.save! - assert_equal :deferred, t.aasm_current_state + assert_equal :deferred, t.aasm.current_state t.toggle_completion! - assert_equal :completed, t.aasm_current_state + assert_equal :completed, t.aasm.current_state end def test_toggle_completion_with_show_from_in_past t = @not_completed1 t.update_attribute(:show_from, 1.week.ago) - assert_equal :active, t.aasm_current_state + assert_equal :active, t.aasm.current_state assert t.toggle_completion!, "shoud be able to mark active todo complete even if show_from is set in the past" - assert_equal :completed, t.aasm_current_state + assert_equal :completed, t.aasm.current_state end def test_activate_also_saves @@ -225,7 +225,7 @@ class TodoTest < ActiveSupport::TestCase t.context_id = 1 t.save! t.reload - assert_equal :active, t.aasm_current_state + assert_equal :active, t.aasm.current_state end def test_initial_state_is_deferred_when_show_from_in_future @@ -236,7 +236,7 @@ class TodoTest < ActiveSupport::TestCase t.show_from = 1.week.from_now.to_date t.save! t.reload - assert_equal :deferred, t.aasm_current_state + assert_equal :deferred, t.aasm.current_state end def test_todo_is_not_starred From 468274c5d1dbefc081d179550794d8edeae74c63 Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Tue, 31 Dec 2013 16:11:32 +0100 Subject: [PATCH 07/31] fix tests for ruby 2.1 and add 2.1 to ci test matrix --- .travis.yml | 1 + test/fixtures/recurring_todos.yml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index a8879b52..c01776a1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,7 @@ language: ruby rvm: - 1.9.3 - 2.0.0 + - 2.1 before_install: - "mysql -e 'create database tracks_test;'" diff --git a/test/fixtures/recurring_todos.yml b/test/fixtures/recurring_todos.yml index 6b22bde7..ebbb188f 100644 --- a/test/fixtures/recurring_todos.yml +++ b/test/fixtures/recurring_todos.yml @@ -20,7 +20,7 @@ def two_weeks_hence end def way_back - Time.zone.local(2008,1,1) + Time.zone.local(2008,1,1).to_s(:db) end %> From 77778da0f80ab6d4b196f775c57af4109559df13 Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Thu, 2 Jan 2014 16:45:37 +0100 Subject: [PATCH 08/31] fix #1450 by adding CSRF-token to the mobile forms --- app/views/todos/show.m.erb | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/app/views/todos/show.m.erb b/app/views/todos/show.m.erb index 30275735..3a29573d 100644 --- a/app/views/todos/show.m.erb +++ b/app/views/todos/show.m.erb @@ -4,36 +4,42 @@

    <%= t('common.actions') %>

    - - + +
    - - + + + <%= token_tag %>
    - - + + + <%= token_tag %>
    - - + + + <%= token_tag %>
    - - + + + <%= token_tag %>
    - - + + + <%= token_tag %>
    - - + + + <%= token_tag %>
    From 008d3d4c3dc301d74ee0f2678981b2ecac7b8fc4 Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Thu, 2 Jan 2014 19:41:02 +0100 Subject: [PATCH 09/31] fix mysql error on old migration. prevented ci from running --- db/migrate/046_fix_incorrectly_hidden_todos.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/migrate/046_fix_incorrectly_hidden_todos.rb b/db/migrate/046_fix_incorrectly_hidden_todos.rb index 1261954f..fca599f7 100644 --- a/db/migrate/046_fix_incorrectly_hidden_todos.rb +++ b/db/migrate/046_fix_incorrectly_hidden_todos.rb @@ -3,7 +3,7 @@ class FixIncorrectlyHiddenTodos < ActiveRecord::Migration hidden_todos_without_project = Todo.where(:state => 'project_hidden', :project_id => nil) - active_projects = Project.where(:state => 'active') + active_projects = Project.where(:state => 'active').select("id") hidden_todos_in_active_projects = Todo.where(:state => 'project_hidden').where("project_id IN (?)", active_projects) From 8da5e5c220f8ac962d9c3b88199c57e50935f3c5 Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Thu, 2 Jan 2014 20:01:05 +0100 Subject: [PATCH 10/31] fix #1446 by adding xml to path for google gadget on integration page --- app/views/integrations/index.de.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/integrations/index.de.html.erb b/app/views/integrations/index.de.html.erb index 04850541..efaa2136 100644 --- a/app/views/integrations/index.de.html.erb +++ b/app/views/integrations/index.de.html.erb @@ -131,5 +131,5 @@
  • Enable the "Add any gadget by URL" feature. You will find it at bottom of the list. Select Enable radio button and click Save Changes button.
  • Now you can see Gadgets tab added to Gmail Settings. Go to the Gadgets tab
  • Paste following link to the Add a gadget by its URL: and then click Add button:
    -
    <%= integrations_url + "/google_gadget" %>
  • +
    <%= integrations_url + "/google_gadget.xml" %>
    \ No newline at end of file From 50dcbe92e0434193e1282dca52e399c21289590e Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Fri, 3 Jan 2014 14:49:25 +0100 Subject: [PATCH 11/31] force travis to use recent bundler to support ruby 2.1 --- .travis.yml | 6 +++++- Gemfile.lock | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index c01776a1..5eeee3cb 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,10 +1,15 @@ language: ruby + rvm: - 1.9.3 - 2.0.0 - 2.1 +bundler_args: --without development + before_install: +before_install: + - "gem install bundler -v=1.5.1" - "mysql -e 'create database tracks_test;'" - "export DISPLAY=:99.0" - "sh -e /etc/init.d/xvfb start" @@ -13,7 +18,6 @@ before_install: script: "CODECLIMATE_REPO_TOKEN=5c52fdd2bbcd0734d56ddb2c3cbaac782da345273e8689d25f54a065ccc3397c bundle exec rake ci RACK_ENV=test" -bundler_args: --without development notifications: email: false diff --git a/Gemfile.lock b/Gemfile.lock index 810cae58..23f3476c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -114,7 +114,7 @@ GEM mocha (0.14.0) metaclass (~> 0.0.1) multi_json (1.8.2) - multi_test (0.0.2) + multi_test (0.0.3) mysql2 (0.3.14) nokogiri (1.6.1) mini_portile (~> 0.5.0) From 3591911d7d3dbf682f33aeecfe573c4bceb286fd Mon Sep 17 00:00:00 2001 From: Matt Rogers Date: Thu, 26 Dec 2013 22:01:17 -0600 Subject: [PATCH 12/31] Remove trailing whitespace --- Gemfile | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Gemfile b/Gemfile index 9222533d..58eeb40c 100644 --- a/Gemfile +++ b/Gemfile @@ -6,7 +6,7 @@ gem 'coffee-rails', '~>4.0.0' gem 'json' -# todo: remove xml api +# todo: remove xml api gem 'actionpack-xml_parser', git: 'https://github.com/rails/actionpack-xml_parser' # See https://github.com/sstephenson/execjs#readme for more supported runtimes @@ -17,7 +17,7 @@ gem 'uglifier', '>=1.3.0' gem 'jquery-rails' # you may comment out the database driver you will not be using. -# This will prevent a native build of the driver. Building native drivers is not +# This will prevent a native build of the driver. Building native drivers is not # always possible on all hosters gem "sqlite3" gem "mysql2" @@ -59,13 +59,13 @@ group :test do gem "aruba", git: 'https://github.com/cucumber/aruba', :require => false # need 0.5.4 for piping files; 0.5.3 is latest gem "timecop", "~> 0.6.2" - # Note that > 2.14 has problems, see: + # Note that > 2.14 has problems, see: # https://code.google.com/p/selenium/issues/detail?id=3075 - gem "selenium-webdriver" - + gem "selenium-webdriver" + # uncomment to use the webkit option. This depends on Qt being installed # gem "capybara-webkit" - + # uncomment to be able to make screenshots from scenarios #gem "capybara-screenshot" #gem "launchy" From 16f721aefb04ca45596203bbb4b4d88062bf5781 Mon Sep 17 00:00:00 2001 From: Matt Rogers Date: Sat, 4 Jan 2014 12:22:00 -0600 Subject: [PATCH 13/31] Remove an unneeded eval for an instance variable --- app/controllers/application_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index f98ac793..a5694db6 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -95,7 +95,7 @@ class ApplicationController < ActionController::Base if todos_parent.nil? count = 0 elsif (todos_parent.is_a?(Project) && todos_parent.hidden?) - count = eval "@project_project_hidden_todo_counts[#{todos_parent.id}]" + count = @project_project_hidden_todo_counts[todos_parent.id] else count = eval "@#{todos_parent.class.to_s.downcase}_not_done_counts[#{todos_parent.id}]" end From a23587370d7c2ffeb6c3820034ba4e4853c6dfc5 Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Tue, 7 Jan 2014 20:42:19 +0100 Subject: [PATCH 14/31] remove some duplication in todos_controller --- app/controllers/todos_controller.rb | 105 ++++++++++++---------------- config/locales/en.yml | 3 + 2 files changed, 48 insertions(+), 60 deletions(-) diff --git a/app/controllers/todos_controller.rb b/app/controllers/todos_controller.rb index e26f04d9..babad894 100644 --- a/app/controllers/todos_controller.rb +++ b/app/controllers/todos_controller.rb @@ -740,34 +740,29 @@ class TodosController < ApplicationController end end + def get_not_completed_for_predecessor(relation, todo_id=nil) + items = relation.todos.not_completed. + where('(LOWER(todos.description) LIKE ?)', "%#{params[:term].downcase}%") + items = items.where("AND NOT(todos.id=?)", todo_id) unless todo_id.nil? + + items. + includes(:context, :project). + reorder('description ASC'). + limit(10) + end + def auto_complete_for_predecessor unless params['id'].nil? get_todo_from_params # Begin matching todos in current project, excluding @todo itself - @items = @todo.project.todos.not_completed. - where('(LOWER(todos.description) LIKE ?) AND NOT(todos.id=?)', "%#{params[:term].downcase}%", @todo.id). - includes(:context, :project). - reorder('description ASC'). - limit(10) unless @todo.project.nil? + @items = get_not_completed_for_predecessor(@todo.project, @todo.id) unless @todo.project.nil? # Then look in the current context, excluding @todo itself - @items = @todo.context.todos.not_completed. - where('(LOWER(todos.description) LIKE ?) AND NOT(todos.id=?)', "%#{params[:term].downcase}%", @todo.id). - includes(:context, :project). - reorder('description ASC'). - limit(10) unless !@items.empty? || @todo.context.nil? + @items = get_not_completed_for_predecessor(@todo.context, @todo.id) unless !@items.empty? || @todo.context.nil? # Match todos in other projects, excluding @todo itself - @items = current_user.todos.not_completed. - where('(LOWER(todos.description) LIKE ?) AND NOT(todos.id=?)', "%#{params[:term].downcase}%", @todo.id). - includes(:context, :project). - reorder('description ASC'). - limit(10) unless !@items.empty? + @items = get_not_completed_for_predecessor(current_user, @todo.id) unless !@items.empty? else # New todo - TODO: Filter on current project in project view - @items = current_user.todos.not_completed. - where('(LOWER(todos.description) LIKE ?)', "%#{params[:term].downcase}%"). - includes(:context, :project). - reorder('description ASC'). - limit(10) + @items = get_not_complete_for_predecessor(current_user) end render :inline => format_dependencies_as_json_for_auto_complete(@items) end @@ -1013,27 +1008,23 @@ end end end + def find_completed(relation, id, include_hidden) + todos = relation.find(id).todos.completed + todos = todos.not_hidden if !include_hidden + return todos + end + def determine_completed_count + todos=nil + source_view do |from| - from.todo do - @completed_count = current_user.todos.not_hidden.completed.count - end - from.context do - todos = current_user.contexts.find(@todo.context_id).todos.completed - todos = todos.not_hidden if !@todo.context.hidden? - @completed_count = todos.count - end - from.project do - unless @todo.project_id == nil - todos = current_user.projects.find(@todo.project_id).todos.completed - todos = todos.not_hidden if !@todo.project.hidden? - @completed_count = todos.count - end - end - from.tag do - @completed_count = current_user.todos.with_tag(@tag.id).completed.count - end + from.todo { todos = current_user.todos.not_hidden.completed } + from.context { todos = find_completed(current_user.contexts, @todo.context_id, @todo.context.hidden?) } + from.project { todos = find_completed(current_user.projects, @todo.project_id, @todo.project.hidden?) unless @todo.project_id.nil? } + from.tag { todos = current_user.todos.with_tag(@tag.id).completed } end + + @completed_count = todos.nil? ? 0 : todos.count end def determine_deferred_tag_count(tag_name) @@ -1188,23 +1179,17 @@ end end end + def parse_date_for_update(date, error_msg) + begin + parse_date_per_user_prefs(date) + rescue + @todo.errors[:base] << error_msg + end + end + def update_due_and_show_from_dates - if params["todo"].has_key?("due") - begin - params["todo"]["due"] = parse_date_per_user_prefs(params["todo"]["due"]) - rescue - @todo.errors[:base] << "Invalid due date" - end - else - params["todo"]["due"] = "" - end - if params['todo']['show_from'] - begin - params['todo']['show_from'] = parse_date_per_user_prefs(params['todo']['show_from']) - rescue - @todo.errors[:base] << "Invalid show from date" - end - end + params['todo']['due'] = params["todo"].has_key?("due") ? parse_date_for_update(params["todo"]["due"], t('todos.error.invalid_due_date')) : "" + params['todo']['show_from'] = params['todo'].has_key?('show_from') ? parse_date_for_update(params['todo']['show_from'], t('todos.error.invalid_show_from_date') ) : "" end def update_completed_state @@ -1276,18 +1261,18 @@ end completed_todos.completed_after(start_of_this_day).includes(includes[:include]) end + def get_done_in_period(before, after, includes = {:include => Todo::DEFAULT_INCLUDES}) + completed_todos.completed_before(before).completed_after(after).includes(includes[:include]) + end + # all completed todos [begin_of_week, start_of_today] def get_done_rest_of_week(completed_todos, includes = {:include => Todo::DEFAULT_INCLUDES}) - start_of_this_week = Time.zone.now.beginning_of_week - start_of_this_day = Time.zone.now.beginning_of_day - completed_todos.completed_before(start_of_this_day).completed_after(start_of_this_week).includes(includes[:include]) + get_done_in_period(Time.zone.now.beginning_of_day, Time.zone.now.beginning_of_week) end # all completed todos [begin_of_month, begin_of_week] def get_done_rest_of_month(completed_todos, includes = {:include => Todo::DEFAULT_INCLUDES}) - start_of_this_month = Time.zone.now.beginning_of_month - start_of_this_week = Time.zone.now.beginning_of_week - completed_todos.completed_before(start_of_this_week).completed_after(start_of_this_month).includes(includes[:include]) + get_done_in_period(Time.zone.now.beginning_of_week, Time.zone.now.beginning_of_month) end def get_not_done_todos diff --git a/config/locales/en.yml b/config/locales/en.yml index 74a56f1c..5d18dd8e 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -464,6 +464,9 @@ en: project_completed: Completed actions in this project context_completed: Completed actions in this context tag_hidden: "Hidden actions tagged with '%{param}'" + error: + invalid_due_date: "Invalid due date" + invalid_show_from_date: "Invalid show from date" completed_today: Completed today completed_rest_of_week: Completed in the rest of this week completed_rest_of_month: Completed in the rest of this month From 5dabde222ea66098dd468e3ebc32f4c72efc57c4 Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Tue, 7 Jan 2014 20:49:37 +0100 Subject: [PATCH 15/31] dry previous commit even further --- app/controllers/todos_controller.rb | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/controllers/todos_controller.rb b/app/controllers/todos_controller.rb index babad894..6031db3e 100644 --- a/app/controllers/todos_controller.rb +++ b/app/controllers/todos_controller.rb @@ -1187,9 +1187,12 @@ end end end + def update_date_for_update(key) + params['todo'][key] = params["todo"].has_key?(key) ? parse_date_for_update(params["todo"][key], t("todos.error.invalid_#{key}_date")) : "" + end + def update_due_and_show_from_dates - params['todo']['due'] = params["todo"].has_key?("due") ? parse_date_for_update(params["todo"]["due"], t('todos.error.invalid_due_date')) : "" - params['todo']['show_from'] = params['todo'].has_key?('show_from') ? parse_date_for_update(params['todo']['show_from'], t('todos.error.invalid_show_from_date') ) : "" + %w{ due show_from }.each {|date| update_date_for_update(date) } end def update_completed_state From 908149ea61012a85a6e25e222f5f8c09542bb8fd Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Wed, 8 Jan 2014 22:04:40 +0100 Subject: [PATCH 16/31] some features that were wip-ed because of cucumber issues seem to pass --- features/edit_a_todo.feature | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/features/edit_a_todo.feature b/features/edit_a_todo.feature index 33326e3d..c3e5bda1 100644 --- a/features/edit_a_todo.feature +++ b/features/edit_a_todo.feature @@ -52,7 +52,7 @@ Feature: Edit a next action from every page | context | container for context "@home" | | project | container for project "do it!" | - @javascript @wip + @javascript Scenario Outline: Changing container of the todo in that container will hide it # this script fails on https://code.google.com/p/selenium/issues/detail?id=3075 for selenium-webdriver > 2.14. # and selenium-webdriver < 2.20 fails on firefox 11 :-( So @wip for now. This may work with webkit though @@ -247,7 +247,7 @@ Feature: Edit a next action from every page When I go to the tickler page Then I should see the todo "start later" - @javascript @wip + @javascript Scenario: I can defer a todo # this script fails on https://code.google.com/p/selenium/issues/detail?id=3075 for selenium-webdriver > 2.14. # and selenium-webdriver < 2.20 fails on firefox 11 :-( So @wip for now. This will work on webkit though @@ -258,7 +258,7 @@ Feature: Edit a next action from every page When I go to the tickler page Then I should see "start later" - @javascript @wip + @javascript Scenario: I can make a project from a todo # this script fails on https://code.google.com/p/selenium/issues/detail?id=3075 for selenium-webdriver > 2.14. # and selenium-webdriver < 2.20 fails on firefox 11 :-( So @wip for now. This will work on webkit though From def136374c861a268761e9e2fd08950dbec00ef3 Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Thu, 9 Jan 2014 08:05:14 +0100 Subject: [PATCH 17/31] fix regression. Still need to add test to controller tests --- app/controllers/todos_controller.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/controllers/todos_controller.rb b/app/controllers/todos_controller.rb index 6031db3e..e903c218 100644 --- a/app/controllers/todos_controller.rb +++ b/app/controllers/todos_controller.rb @@ -1264,18 +1264,18 @@ end completed_todos.completed_after(start_of_this_day).includes(includes[:include]) end - def get_done_in_period(before, after, includes = {:include => Todo::DEFAULT_INCLUDES}) + def get_done_in_period(completed_todos, before, after, includes = {:include => Todo::DEFAULT_INCLUDES}) completed_todos.completed_before(before).completed_after(after).includes(includes[:include]) end # all completed todos [begin_of_week, start_of_today] def get_done_rest_of_week(completed_todos, includes = {:include => Todo::DEFAULT_INCLUDES}) - get_done_in_period(Time.zone.now.beginning_of_day, Time.zone.now.beginning_of_week) + get_done_in_period(completed_todos, Time.zone.now.beginning_of_day, Time.zone.now.beginning_of_week) end # all completed todos [begin_of_month, begin_of_week] def get_done_rest_of_month(completed_todos, includes = {:include => Todo::DEFAULT_INCLUDES}) - get_done_in_period(Time.zone.now.beginning_of_week, Time.zone.now.beginning_of_month) + get_done_in_period(completed_todos, Time.zone.now.beginning_of_week, Time.zone.now.beginning_of_month) end def get_not_done_todos From 3b673f083807b94f61f92e113c3477a690db8e29 Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Thu, 9 Jan 2014 11:18:33 +0100 Subject: [PATCH 18/31] fix some failing cucumber tests --- Gemfile.lock | 4 ++-- app/controllers/application_controller.rb | 6 +++--- app/controllers/todos_controller.rb | 11 +++++++---- app/helpers/todos_helper.rb | 3 ++- app/views/todos/all_done.html.erb | 6 ++++-- features/calendar.feature | 2 +- features/edit_a_todo.feature | 6 ------ features/step_definitions/project_list_steps.rb | 8 ++++++++ features/step_definitions/todo_steps.rb | 2 -- features/support/tracks_step_helper.rb | 6 ++++-- features/view_done.feature | 12 ++++++------ lib/tracks/done_todos.rb | 8 ++++---- 12 files changed, 41 insertions(+), 33 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 23f3476c..58a6b34d 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -55,7 +55,7 @@ GEM cache_digests (0.3.1) actionpack (>= 3.2) thread_safe - capybara (2.2.0) + capybara (2.2.1) mime-types (>= 1.16) nokogiri (>= 1.3.3) rack (>= 1.0.0) @@ -122,7 +122,7 @@ GEM protected_attributes (1.0.5) activemodel (>= 4.0.1, < 5.0) rack (1.5.2) - rack-mini-profiler (0.1.31) + rack-mini-profiler (0.9.0) rack (>= 1.1.3) rack-test (0.6.2) rack (>= 1.0) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index a5694db6..bd50b0bd 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -269,7 +269,7 @@ class ApplicationController < ActionController::Base def all_done_todos_for(object) object_name = object.class.name.downcase # context or project - @source_view = object_name + @source_view = "all_done" @page_title = t("#{object_name.pluralize}.all_completed_tasks_title", "#{object_name}_name".to_sym => object.name) @done = object.todos.completed.reorder('completed_at DESC').includes(Todo::DEFAULT_INCLUDES). @@ -280,11 +280,11 @@ class ApplicationController < ActionController::Base def done_todos_for(object) object_name = object.class.name.downcase # context or project - @source_view = object_name + @source_view = "done" eval("@#{object_name} = object") @page_title = t("#{object_name.pluralize}.completed_tasks_title", "#{object_name}_name".to_sym => object.name) - @done_today, @done_rest_of_week, @done_rest_of_month = DoneTodos.done_todos_for_container(object) + @done_today, @done_rest_of_week, @done_rest_of_month = DoneTodos.done_todos_for_container(object.todos) @count = @done_today.size + @done_rest_of_week.size + @done_rest_of_month.size render :template => 'todos/done' diff --git a/app/controllers/todos_controller.rb b/app/controllers/todos_controller.rb index e903c218..5c8d1be3 100644 --- a/app/controllers/todos_controller.rb +++ b/app/controllers/todos_controller.rb @@ -522,7 +522,7 @@ class TodosController < ApplicationController @source_view = 'done' @page_title = t('todos.completed_tasks_title') - @done_today, @done_rest_of_week, @done_rest_of_month = DoneTodos.done_todos_for_container(current_user) + @done_today, @done_rest_of_week, @done_rest_of_month = DoneTodos.done_todos_for_container(current_user.todos) @count = @done_today.size + @done_rest_of_week.size + @done_rest_of_month.size respond_to do |format| @@ -672,7 +672,7 @@ class TodosController < ApplicationController end def done_by_tag_setup - @source_view = params['_source_view'] || 'tag' + @source_view = params['_source_view'] || 'done' @tag_name = sanitize(params[:name]) # sanitize to prevent XSS vunerability! @page_title = t('todos.all_completed_tagged_page_title', :tag_name => @tag_name) @tag = Tag.where(:name => @tag_name).first_or_create @@ -762,7 +762,7 @@ class TodosController < ApplicationController @items = get_not_completed_for_predecessor(current_user, @todo.id) unless !@items.empty? else # New todo - TODO: Filter on current project in project view - @items = get_not_complete_for_predecessor(current_user) + @items = get_not_completed_for_predecessor(current_user) end render :inline => format_dependencies_as_json_for_auto_complete(@items) end @@ -1003,7 +1003,10 @@ end @target_context_count = actions_in_target.count } from.done { - @remaining_in_context = DoneTodos.remaining_in_container(current_user, @original_completed_period) + @remaining_in_context = DoneTodos.remaining_in_container(current_user.todos, @original_completed_period) + } + from.all_done { + @remaining_in_context = current_user.todos.completed.count } end end diff --git a/app/helpers/todos_helper.rb b/app/helpers/todos_helper.rb index a5eeb3bc..07455c80 100644 --- a/app/helpers/todos_helper.rb +++ b/app/helpers/todos_helper.rb @@ -523,7 +523,7 @@ module TodosHelper ) end - return false if source_view_is_one_of(:calendar, :done) + return false if source_view_is_one_of(:calendar, :done, :all_done) return @remaining_in_context == 0 end @@ -692,6 +692,7 @@ module TodosHelper } page.todo { container_id = context_container_empty_id(@original_item) if @remaining_in_context == 0 } page.done { container_id = "completed_#{@original_completed_period}_container-empty-d" if @remaining_in_context == 0 } + page.all_done { container_id = "all-done-empty-nd" if @remaining_in_context == 0 } end return container_id.blank? ? "" : "$(\"##{container_id}\").slideDown(100);".html_safe end diff --git a/app/views/todos/all_done.html.erb b/app/views/todos/all_done.html.erb index d55c05c1..46c32642 100644 --- a/app/views/todos/all_done.html.erb +++ b/app/views/todos/all_done.html.erb @@ -10,9 +10,11 @@
    <%= will_paginate @done, paginate_options %>

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

    - <% if @done.empty? -%> +

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

    - <% else -%> +
    + + <% if !@done.empty? -%> <%= render :partial => "todos/todo", :collection => @done, :locals => { :parent_container_type => "completed", :suppress_context => false, :suppress_project => false } %> <% end -%>
    diff --git a/features/calendar.feature b/features/calendar.feature index 42af0d32..c58d623d 100644 --- a/features/calendar.feature +++ b/features/calendar.feature @@ -41,7 +41,7 @@ Feature: Show all due actions in a calendar view When I clear the due date of "something new" Then I should not see the todo "something new" - @javascript + @javascript Scenario: Deleting a todo will remove it from the calendar Given I have a todo "something new" in the context "@calendar" which is due tomorrow When I go to the calendar page diff --git a/features/edit_a_todo.feature b/features/edit_a_todo.feature index c3e5bda1..fb60b9aa 100644 --- a/features/edit_a_todo.feature +++ b/features/edit_a_todo.feature @@ -54,8 +54,6 @@ Feature: Edit a next action from every page @javascript Scenario Outline: Changing container of the todo in that container will hide it - # this script fails on https://code.google.com/p/selenium/issues/detail?id=3075 for selenium-webdriver > 2.14. - # and selenium-webdriver < 2.20 fails on firefox 11 :-( So @wip for now. This may work with webkit though Given I have a todo "delete me" in the context "@home" in the project "do it" And I have a project "go for it" And I have selected the view for group by @@ -249,8 +247,6 @@ Feature: Edit a next action from every page @javascript Scenario: I can defer a todo - # this script fails on https://code.google.com/p/selenium/issues/detail?id=3075 for selenium-webdriver > 2.14. - # and selenium-webdriver < 2.20 fails on firefox 11 :-( So @wip for now. This will work on webkit though When I go to the home page And I submit a new action with description "start later" in the context "@pc" And I defer "start later" for 1 day @@ -260,8 +256,6 @@ Feature: Edit a next action from every page @javascript Scenario: I can make a project from a todo - # this script fails on https://code.google.com/p/selenium/issues/detail?id=3075 for selenium-webdriver > 2.14. - # and selenium-webdriver < 2.20 fails on firefox 11 :-( So @wip for now. This will work on webkit though When I go to the home page And I submit a new action with description "buy mediacenter" in the context "@pc" And I make a project of "buy mediacenter" diff --git a/features/step_definitions/project_list_steps.rb b/features/step_definitions/project_list_steps.rb index 571d8464..22ca8c23 100644 --- a/features/step_definitions/project_list_steps.rb +++ b/features/step_definitions/project_list_steps.rb @@ -73,6 +73,14 @@ Then /^I should not see a project named "([^"]*)"$/ do |project_name| step "I should see that a project named \"#{project_name}\" is not present" end +Then(/^I should not see the project "(.*?)"$/) do |project_name| + project = @current_user.projects.where(:name => project_name).first + project.should_not be_nil + + project_xpath = "//div[@id='project_#{project.id}']" + page.should_not have_xpath(project_xpath) +end + Then /^the project "([^"]*)" should be above the project "([^"]*)"$/ do |project_high, project_low| project_list_find_index(project_high).should < project_list_find_index(project_low) end diff --git a/features/step_definitions/todo_steps.rb b/features/step_definitions/todo_steps.rb index 8e11b886..a574d6d2 100644 --- a/features/step_definitions/todo_steps.rb +++ b/features/step_definitions/todo_steps.rb @@ -15,8 +15,6 @@ When /^I delete the action "([^"]*)"$/ do |action_description| get_confirm_text.should == "Are you sure that you want to delete the action '#{todo.description}'?" wait_for_ajax - # commented out: the notice is gone if you want to check for it - # wait_for_animations_to_end end When /^I delete the todo "([^"]*)"$/ do |action_description| diff --git a/features/support/tracks_step_helper.rb b/features/support/tracks_step_helper.rb index b9bbd3e1..14518010 100644 --- a/features/support/tracks_step_helper.rb +++ b/features/support/tracks_step_helper.rb @@ -115,10 +115,12 @@ module TracksStepHelper end def open_submenu_for(todo) + wait_for_animations_to_end + submenu_arrow = "div#line_todo_#{todo.id} img.todo-submenu" page.should have_css(submenu_arrow, :visible=>true) - page.find(submenu_arrow, :match => :first).click - sleep 0.1 + arrow = page.find(submenu_arrow, :match => :first) + arrow.click submenu_css = "div#line_todo_#{todo.id} ul#ultodo_#{todo.id}" submenu = page.find(submenu_css) diff --git a/features/view_done.feature b/features/view_done.feature index f62f6e06..701fb938 100644 --- a/features/view_done.feature +++ b/features/view_done.feature @@ -136,9 +136,9 @@ Feature: Show done @javascript Scenario Outline: I can toggle a todo active from the done pages When I go to the - Then I should see "todo 1" + Then I should see the todo "todo 1" When I mark the completed todo "todo 1" active - Then I should not see "todo 1" + Then I should not see the todo "todo 1" When I go to the Then I should see "todo 1" @@ -163,13 +163,13 @@ Feature: Show done And I should see "todo 2" in the done this week container And I should see "todo 3" in the done this month container When I mark the completed todo "todo 1" active - Then I should not see "todo 1" + Then I should not see the todo "todo 1" And I should see empty message for done today of done actions When I mark the completed todo "todo 2" active - Then I should not see "todo 2" + Then I should not see the todo "todo 2" And I should see empty message for done this week of done actions When I mark the completed todo "todo 3" active - Then I should not see "todo 3" + Then I should not see the todo "todo 3" And I should see empty message for done this month of done actions @javascript @@ -196,7 +196,7 @@ Feature: Show done When I go to the done projects page Then I should see "completed project" When I edit the project state of "completed project" to "active" - Then I should not see "completed project" + Then I should not see the project "completed project" When I go to the projects page Then I should see "completed project" diff --git a/lib/tracks/done_todos.rb b/lib/tracks/done_todos.rb index 179f6661..413a9e08 100644 --- a/lib/tracks/done_todos.rb +++ b/lib/tracks/done_todos.rb @@ -1,8 +1,8 @@ class DoneTodos - def self.done_todos_for_container(user) - completed_todos = user.todos.completed + def self.done_todos_for_container(todos) + completed_todos = todos.completed return done_today(completed_todos), done_rest_of_week(completed_todos), done_rest_of_month(completed_todos) end @@ -29,8 +29,8 @@ class DoneTodos return nil end - def self.remaining_in_container(user, period) - count = self.send("done_#{period}", user.todos.completed, {}).count + def self.remaining_in_container(todos, period) + count = self.send("done_#{period}", todos.completed, {}).count return nil if period.nil? return count end From 6238029b55cb599cf4e9266da2d3ec6b6ef34439 Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Sat, 11 Jan 2014 14:33:14 +0100 Subject: [PATCH 19/31] fix regressions --- Gemfile | 2 +- app/helpers/application_helper.rb | 2 +- config/initializers/rack-mini-profiler.rb | 2 +- features/shared_add_new_todo.feature | 4 ++-- features/tagging_todos.feature | 2 +- lib/tasks/continuous_integration.rake | 1 - 6 files changed, 6 insertions(+), 7 deletions(-) diff --git a/Gemfile b/Gemfile index 58eeb40c..ca25a324 100644 --- a/Gemfile +++ b/Gemfile @@ -31,7 +31,6 @@ gem "htmlentities" gem "swf_fu" gem "rails_autolink" gem "cache_digests" -gem "rack-mini-profiler" # To use ActiveModel has_secure_password gem 'bcrypt-ruby', '~> 3.0.0' @@ -46,6 +45,7 @@ group :development do gem "yard" gem "tolk" gem "bullet" + gem "rack-mini-profiler" end group :test do diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index db0aed76..f4238999 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -245,7 +245,7 @@ module ApplicationHelper when "projects" send("#{type}_todos_project_path", @project) when "todos" - if source_view_is(:tag) + if @tag_name send("#{type}_tag_path",@tag_name) else send("#{type}_todos_path") diff --git a/config/initializers/rack-mini-profiler.rb b/config/initializers/rack-mini-profiler.rb index 93d2e299..230fa550 100644 --- a/config/initializers/rack-mini-profiler.rb +++ b/config/initializers/rack-mini-profiler.rb @@ -1,2 +1,2 @@ # Have Mini Profiler show up on the right -Rack::MiniProfiler.config.position = 'right' \ No newline at end of file +Rack::MiniProfiler.config.position = 'right' if defined?(Rack::MiniProfiler) \ No newline at end of file diff --git a/features/shared_add_new_todo.feature b/features/shared_add_new_todo.feature index 71c5b724..bf3ec31e 100644 --- a/features/shared_add_new_todo.feature +++ b/features/shared_add_new_todo.feature @@ -192,9 +192,9 @@ Feature: Add new next action from every page And I have selected the view for group by When I go to the And I submit a new action with description "hidden todo" to project "hidden project" with tags "test" in the context "visible context" - Then I should "hidden todo" + Then I should the todo "hidden todo" When I submit a new action with description "visible todo" to project "visible project" with tags "test" in the context "visible context" - Then I should "visible todo" + Then I should the todo "visible todo" Scenarios: | page | grouping | see_hidden | see_visible | diff --git a/features/tagging_todos.feature b/features/tagging_todos.feature index d67d1973..dd3fef30 100644 --- a/features/tagging_todos.feature +++ b/features/tagging_todos.feature @@ -33,7 +33,7 @@ Feature: Tagging todos Scenario: I can add a new todo from tag view with a different tag and it will not be added to the page When I go to the tag page for "tracks" And I submit a new action with description "prepare release" and the tags "release, next" in the context "@pc" - Then I should not see "prepare release" + Then I should not see the todo "prepare release" @javascript Scenario: I can move a tagged todo in tag view to a hidden project and it will move the todo on the page to the hidden container diff --git a/lib/tasks/continuous_integration.rake b/lib/tasks/continuous_integration.rake index 5a393c11..f54ede26 100644 --- a/lib/tasks/continuous_integration.rake +++ b/lib/tasks/continuous_integration.rake @@ -10,7 +10,6 @@ task :ci do |t| SimpleCov.start 'rails' [:environment, 'db:migrate', 'test:all', 'cucumber'].each do |t| - print "running '#{t}'\n" Rake::Task[t].invoke end end \ No newline at end of file From 311e63ddd167bad1b8415be0fbdd19958856817a Mon Sep 17 00:00:00 2001 From: tim madden Date: Fri, 24 Jan 2014 16:42:14 -0600 Subject: [PATCH 20/31] Fix recurring todo overlay z-index to be on top of topbar --- app/assets/stylesheets/tracks.css.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/assets/stylesheets/tracks.css.scss b/app/assets/stylesheets/tracks.css.scss index ac4c636d..0aba6569 100644 --- a/app/assets/stylesheets/tracks.css.scss +++ b/app/assets/stylesheets/tracks.css.scss @@ -233,6 +233,10 @@ a.show_successors:hover, a.link_to_successors:hover {background-image: image-url text-align: left; } +.recurring_todos .ui-front { + z-index:502; +} + /* Navigation links at the top */ #navcontainer { From 63af3bbcfad507dfb028a113f209755391540e07 Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Sun, 26 Jan 2014 15:05:27 +0100 Subject: [PATCH 21/31] make todo_from_rich_message time zone aware. test was failing. --- app/services/rich_message_extractor.rb | 8 ++++++-- app/services/todo_from_rich_message.rb | 4 ++-- test/models/todo_from_rich_message_test.rb | 4 ++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/services/rich_message_extractor.rb b/app/services/rich_message_extractor.rb index e248ad1e..9b19a855 100644 --- a/app/services/rich_message_extractor.rb +++ b/app/services/rich_message_extractor.rb @@ -51,12 +51,12 @@ class RichMessageExtractor def due due = select_for DUE_MARKER - due.blank? ? nil : Date.parse(due[1].strip) + due.blank? ? nil : Time.zone.parse(fix_date_string(due[1].strip)) end def show_from show_from = select_for TICKLER_MARKER - show_from.blank? ? nil : Date.parse(show_from[1].strip) + show_from.blank? ? nil : Time.zone.parse(fix_date_string(show_from[1].strip)) end def starred? @@ -69,4 +69,8 @@ class RichMessageExtractor @message.match /#{symbol}(.*?)(?=[#{ALL_MARKERS.join}]|\Z)/ end + def fix_date_string yymmdd + "20#{yymmdd[0..1]}-#{yymmdd[2..3]}-#{yymmdd[4..5]} 00:00" + end + end diff --git a/app/services/todo_from_rich_message.rb b/app/services/todo_from_rich_message.rb index b1a28f22..bf567797 100644 --- a/app/services/todo_from_rich_message.rb +++ b/app/services/todo_from_rich_message.rb @@ -48,8 +48,8 @@ class TodoFromRichMessage todo.raw_notes = notes todo.context_id = context_id todo.project_id = project_id unless project_id.nil? - todo.show_from = show_from if show_from.is_a? Date - todo.due = due if due.is_a? Date + todo.show_from = show_from if show_from.is_a? Time + todo.due = due if due.is_a? Time todo.tag_with tags unless tags.nil? || tags.empty? todo.starred = star todo diff --git a/test/models/todo_from_rich_message_test.rb b/test/models/todo_from_rich_message_test.rb index 2b57da38..01d9fbb6 100644 --- a/test/models/todo_from_rich_message_test.rb +++ b/test/models/todo_from_rich_message_test.rb @@ -31,8 +31,8 @@ class TodoFromRichMessageTest < ActiveSupport::TestCase assert_equal "notes", new_todo.notes assert_equal context.id, new_todo.context_id assert_equal project.id, new_todo.project_id - assert_equal "2013-10-14 00:00:00 +0100", new_todo.show_from.to_s - assert_equal "2013-10-17 00:00:00 +0100", new_todo.due.to_s + assert_equal Time.zone.parse("2013-10-14 00:00"). utc.to_s, new_todo.show_from.utc.to_s + assert_equal Time.zone.parse("2013-10-17 00:00"), new_todo.due.utc.to_s assert_equal "starred, tag1, tag2", new_todo.tags.to_s assert new_todo.starred? end From b15d195c4582fa9c45eedf4c684dbc5527a5ee8f Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Sun, 26 Jan 2014 15:10:36 +0100 Subject: [PATCH 22/31] fix test regressions. should run all tests before committing :-) --- test/models/rich_message_extractor_test.rb | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/models/rich_message_extractor_test.rb b/test/models/rich_message_extractor_test.rb index 3376c289..c2e2dba1 100644 --- a/test/models/rich_message_extractor_test.rb +++ b/test/models/rich_message_extractor_test.rb @@ -11,8 +11,8 @@ class RichMessageExtractorTest < Test::Unit::TestCase assert_equal "ohai", extractor.description assert_equal "some-context", extractor.context assert_equal "this-project", extractor.project - assert_equal "2013-10-12", extractor.show_from.to_s - assert_equal "2013-10-14", extractor.due.to_s + assert_equal Time.zone.parse("2013-10-12").utc.to_s, extractor.show_from.utc.to_s + assert_equal Time.zone.parse("2013-10-14").utc.to_s, extractor.due.utc.to_s assert_equal ["tag1","tag2"], extractor.tags assert extractor.starred? end @@ -72,7 +72,7 @@ class RichMessageExtractorTest < Test::Unit::TestCase def test_message_with_due_date message = "datetest<141013" extractor = RichMessageExtractor.new(message) - assert_equal "2014-10-13", extractor.due.to_s + assert_equal Time.zone.parse("2014-10-13").utc.to_s, extractor.due.utc.to_s end def test_message_with_no_due_date @@ -84,7 +84,7 @@ class RichMessageExtractorTest < Test::Unit::TestCase def test_message_with_show_from message = "datetest>161013" extractor = RichMessageExtractor.new(message) - assert_equal "2016-10-13", extractor.show_from.to_s + assert_equal Time.zone.parse("2016-10-13").utc.to_s, extractor.show_from.utc.to_s end def test_message_with_no_show_from From d14dc9a00caa52dff1ab1edd9bf8168967f5a78f Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Mon, 27 Jan 2014 20:06:32 +0100 Subject: [PATCH 23/31] update Gemfile --- Gemfile.lock | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 58a6b34d..37b2b6be 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,8 +1,8 @@ GIT remote: https://github.com/cucumber/aruba - revision: 7afbc5c0cbae9c9a946d70c4c2735ccb86e00f08 + revision: 99d8e6a5992af17b014783e775409bc3fd422273 specs: - aruba (0.5.3) + aruba (0.5.4) childprocess (>= 0.3.6) cucumber (>= 1.1.1) rspec-expectations (>= 2.7.0) @@ -18,7 +18,7 @@ GEM remote: https://rubygems.org/ specs: RedCloth (4.2.9) - aasm (3.0.25) + aasm (3.0.26) actionmailer (4.0.2) actionpack (= 4.0.2) mail (~> 2.5.4) @@ -61,9 +61,9 @@ GEM rack (>= 1.0.0) rack-test (>= 0.5.4) xpath (~> 2.0) - childprocess (0.3.9) + childprocess (0.4.0) ffi (~> 1.0, >= 1.0.11) - codeclimate-test-reporter (0.2.0) + codeclimate-test-reporter (0.3.0) simplecov (>= 0.7.1, < 1.0.0) coffee-rails (4.0.1) coffee-script (>= 2.2.0) @@ -85,7 +85,7 @@ GEM rails (>= 3.0.0) database_cleaner (1.2.0) diff-lcs (1.2.5) - docile (1.1.1) + docile (1.1.2) erubis (2.7.0) execjs (2.0.2) factory_girl (4.3.0) @@ -107,15 +107,15 @@ GEM mail (2.5.4) mime-types (~> 1.16) treetop (~> 1.4.8) - metaclass (0.0.1) + metaclass (0.0.2) mime-types (1.25.1) mini_portile (0.5.2) minitest (4.7.5) - mocha (0.14.0) + mocha (1.0.0) metaclass (~> 0.0.1) - multi_json (1.8.2) + multi_json (1.8.4) multi_test (0.0.3) - mysql2 (0.3.14) + mysql2 (0.3.15) nokogiri (1.6.1) mini_portile (~> 0.5.0) polyglot (0.3.3) @@ -147,9 +147,9 @@ GEM diff-lcs (>= 1.1.3, < 2.0) rubyzip (1.1.0) safe_yaml (0.9.7) - sanitize (2.0.6) + sanitize (2.1.0) nokogiri (>= 1.4.4) - sass (3.2.13) + sass (3.2.14) sass-rails (4.0.1) railties (>= 4.0.0, < 5.0) sass (>= 3.1.10) From 1649d9537461e489dfd8b507f93d6a4ce15214e1 Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Fri, 31 Jan 2014 17:44:54 +0100 Subject: [PATCH 24/31] update gemfile again and fix failing test --- Gemfile.lock | 6 +-- test/controllers/todos_controller_test.rb | 59 ++++++++++++----------- 2 files changed, 34 insertions(+), 31 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 37b2b6be..7b7cbbdb 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -18,7 +18,7 @@ GEM remote: https://rubygems.org/ specs: RedCloth (4.2.9) - aasm (3.0.26) + aasm (3.1.0) actionmailer (4.0.2) actionpack (= 4.0.2) mail (~> 2.5.4) @@ -71,7 +71,7 @@ GEM coffee-script (2.2.0) coffee-script-source execjs - coffee-script-source (1.6.3) + coffee-script-source (1.7.0) cucumber (1.3.10) builder (>= 2.1.2) diff-lcs (>= 1.1.3) @@ -99,7 +99,7 @@ GEM hike (1.2.3) htmlentities (4.3.1) i18n (0.6.9) - jquery-rails (3.0.4) + jquery-rails (3.1.0) railties (>= 3.0, < 5.0) thor (>= 0.14, < 2.0) json (1.8.1) diff --git a/test/controllers/todos_controller_test.rb b/test/controllers/todos_controller_test.rb index 6a4d5ca6..e13ca359 100644 --- a/test/controllers/todos_controller_test.rb +++ b/test/controllers/todos_controller_test.rb @@ -641,7 +641,8 @@ class TodosControllerTest < ActionController::TestCase "due(1i)"=>"2007", "due(2i)"=>"1", "due(3i)"=>"2", "show_from(1i)"=>"", "show_from(2i)"=>"", "show_from(3i)"=>"", "project_id"=>"1", - "notes"=>"test notes", "description"=>"test_mobile_create_action", "state"=>"0"}} + "notes"=>"test notes", "description"=>"test_mobile_create_action"}} + assert_redirected_to '/mobile' end @@ -714,41 +715,43 @@ class TodosControllerTest < ActionController::TestCase end def test_toggle_check_on_rec_todo_show_from_today - login_as(:admin_user) + Timecop.travel(Time.local(2014, 1, 15)) do + login_as(:admin_user) - # link todo_1 and recurring_todo_1 - recurring_todo_1 = RecurringTodo.find(1) - todo_1 = Todo.where(:recurring_todo_id => 1).first - today = Time.zone.now.at_midnight - 1.day + # link todo_1 and recurring_todo_1 + recurring_todo_1 = RecurringTodo.find(1) + todo_1 = Todo.where(:recurring_todo_id => 1).first + today = Time.zone.now.at_midnight - 1.day - # change recurrence pattern to monthly and set show_from to today - recurring_todo_1.target = 'show_from_date' - recurring_todo_1.recurring_period = 'monthly' - recurring_todo_1.recurrence_selector = 0 - recurring_todo_1.every_other1 = today.day - recurring_todo_1.every_other2 = 1 - assert recurring_todo_1.save + # change recurrence pattern to monthly and set show_from to today + recurring_todo_1.target = 'show_from_date' + recurring_todo_1.recurring_period = 'monthly' + recurring_todo_1.recurrence_selector = 0 + recurring_todo_1.every_other1 = today.day + recurring_todo_1.every_other2 = 1 + assert recurring_todo_1.save - # mark todo_1 as complete by toggle_check - xhr :post, :toggle_check, :id => todo_1.id, :_source_view => 'todo' - todo_1.reload - assert todo_1.completed? + # mark todo_1 as complete by toggle_check + xhr :post, :toggle_check, :id => todo_1.id, :_source_view => 'todo' + todo_1.reload + assert todo_1.completed? - # locate the new todo in tickler - new_todo = Todo.where(:recurring_todo_id => recurring_todo_1.id, :state => 'deferred').first - assert !new_todo.nil? + # locate the new todo in tickler + new_todo = Todo.where(:recurring_todo_id => recurring_todo_1.id, :state => 'deferred').first + assert !new_todo.nil? - assert_equal "Call Bill Gates every day", new_todo.description - # check that the new todo is not the same as todo_1 - assert_not_equal todo_1.id, new_todo.id + assert_equal "Call Bill Gates every day", new_todo.description + # check that the new todo is not the same as todo_1 + assert_not_equal todo_1.id, new_todo.id - # check that the new_todo is in the tickler to show next month - assert !new_todo.show_from.nil? + # check that the new_todo is in the tickler to show next month + assert !new_todo.show_from.nil? - # do not use today here. It somehow gets messed up with the timezone calculation. - next_month = (Time.zone.now - 1.day + 1.month).at_midnight + # do not use today here. It somehow gets messed up with the timezone calculation. + next_month = (Time.zone.now - 1.day + 1.month).at_midnight - assert_equal next_month.utc.to_date.to_s(:db), new_todo.show_from.utc.to_date.to_s(:db) + assert_equal next_month.utc.to_date.to_s(:db), new_todo.show_from.utc.to_date.to_s(:db) + end end def test_check_for_next_todo From a54f958f0daadc217531dc568ef76ac7997f6e63 Mon Sep 17 00:00:00 2001 From: Dan Rice Date: Tue, 4 Feb 2014 23:45:08 -0500 Subject: [PATCH 25/31] Fix a typo in the upgrade doc --- doc/upgrading.textile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/upgrading.textile b/doc/upgrading.textile index b9bab24b..ba19f75d 100644 --- a/doc/upgrading.textile +++ b/doc/upgrading.textile @@ -15,7 +15,7 @@ That said. To upgrade: Please note that if you intend to use Tracks with the built in webserver called WEBrick for production, you'll need to change @config.serve_static_assets@ to @true@ in @config/environments/production.rb@ in order for the images, stylesheets, and javascript files to be served correctly. -The Czech locale has been renamed from @cz@ to @cs@ in accordance with ISO standards. Users of the Czech locale will need to edit their preferences and reselct the locale under the new name. +The Czech locale has been renamed from @cz@ to @cs@ in accordance with ISO standards. Users of the Czech locale will need to edit their preferences and reselect the locale under the new name. h2. Upgrading from Tracks 2.2 to 2.2.1 and to 2.2.2 From e0336f578e6b8e11af963e5ddbdc23215ab154a2 Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Sun, 9 Feb 2014 14:39:36 +0100 Subject: [PATCH 26/31] update Tolk to github master for rails 4 support. It currently needs protected_attributes gem. --- Gemfile | 3 +- Gemfile.lock | 24 +- config/locales/cs.yml | 266 +++---- config/locales/de.yml | 121 ++-- config/locales/es.yml | 102 +-- config/locales/fr.yml | 195 +++-- config/locales/he.yml | 1570 ++++++++++++++++++++--------------------- config/locales/nl.yml | 136 ++-- 8 files changed, 1213 insertions(+), 1204 deletions(-) diff --git a/Gemfile b/Gemfile index ca25a324..ccd4095d 100644 --- a/Gemfile +++ b/Gemfile @@ -43,7 +43,8 @@ gem 'bcrypt-ruby', '~> 3.0.0' group :development do gem "yard" - gem "tolk" + gem "tolk", git: 'https://github.com/tolk/tolk' + gem 'protected_attributes' # needed for tolk. remove when tolk updates gem "bullet" gem "rack-mini-profiler" end diff --git a/Gemfile.lock b/Gemfile.lock index 7b7cbbdb..1e39faed 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -14,6 +14,15 @@ GIT actionpack-xml_parser (1.0.1) actionpack (>= 4.0.0, < 5) +GIT + remote: https://github.com/tolk/tolk + revision: d0f4bb37024ceab9a076400df5be73e960d3847e + specs: + tolk (1.4.00) + protected_attributes + safe_yaml (~> 0.8) + will_paginate + GEM remote: https://rubygems.org/ specs: @@ -45,7 +54,7 @@ GEM tzinfo (~> 0.3.37) acts_as_list (0.3.0) activerecord (>= 3.0) - arel (4.0.1) + arel (4.0.2) atomic (1.1.14) bcrypt-ruby (3.0.1) builder (3.1.4) @@ -85,7 +94,7 @@ GEM rails (>= 3.0.0) database_cleaner (1.2.0) diff-lcs (1.2.5) - docile (1.1.2) + docile (1.1.3) erubis (2.7.0) execjs (2.0.2) factory_girl (4.3.0) @@ -143,7 +152,7 @@ GEM thor (>= 0.18.1, < 2.0) rake (10.1.1) ref (1.0.5) - rspec-expectations (2.14.4) + rspec-expectations (2.14.5) diff-lcs (>= 1.1.3, < 2.0) rubyzip (1.1.0) safe_yaml (0.9.7) @@ -177,7 +186,7 @@ GEM swf_fu (2.0.4) coffee-script rails (>= 3.1) - therubyracer (0.12.0) + therubyracer (0.12.1) libv8 (~> 3.16.14.0) ref thor (0.18.1) @@ -185,10 +194,6 @@ GEM atomic tilt (1.4.1) timecop (0.6.3) - tolk (1.4.00) - protected_attributes - safe_yaml (~> 0.8) - will_paginate treetop (1.4.15) polyglot polyglot (>= 0.3.1) @@ -226,6 +231,7 @@ DEPENDENCIES json mocha mysql2 + protected_attributes rack-mini-profiler rails (~> 4.0.0) rails_autolink @@ -238,7 +244,7 @@ DEPENDENCIES swf_fu therubyracer timecop (~> 0.6.2) - tolk + tolk! uglifier (>= 1.3.0) will_paginate yard diff --git a/config/locales/cs.yml b/config/locales/cs.yml index 9328812d..c4a1cb28 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -11,7 +11,7 @@ cs: first_name: Jméno last_name: Příjmení locale: Lokále - mobile_todos_per_page: Úkolů na stránku (mobilní zobrazení) + mobile_todos_per_page: "Úkolů na stránku (mobilní zobrazení)" refresh: Interval obnovení stránky (v minutách) review_period: Interval revize projektů show_completed_projects_in_sidebar: Zobrazovat hotové projekty v sidebaru @@ -22,7 +22,7 @@ cs: sms_context: Výchozí emailový kontext sms_email: SMS email staleness_starts: Jako prošlé označit projekty starší než - time_zone: Časové pásmo + time_zone: "Časové pásmo" title_date_format: Formát data nadpisu verbose_action_descriptors: Ukecané popisovače úkolů week_starts: Začátek týdne @@ -45,7 +45,7 @@ cs: last_name: Jméno errors: full_messages: - format: '%{attribute} %{message}' + format: "%{attribute} %{message}" messages: accepted: musí být akceptováno blank: nesmí být prázdné @@ -78,14 +78,14 @@ cs: 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}' + other: "%{count} chyb brání uložení tohoto objektu %{model}" common: - action: Úkol - actions: Úkoly + action: "Úkol" + actions: "Úkoly" actions_midsentence: - one: úkolů - other: Úkoly - zero: Úkoly + one: "úkolů" + other: "Úkoly" + zero: "Úkoly" add: Přidat ajaxError: Chyba čtení ze serveru back: Zpět @@ -105,19 +105,19 @@ cs: email: Email errors_with_fields: 'Nastaly potíže s následujícími políčky:' first: První - forth: Čtvrtý - fourth: Čtvrtý + forth: "Čtvrtý" + fourth: "Čtvrtý" go_back: Zpět last: Poslední logout: Odhlásit month: měsíc months: měsíce next: Další - none: Žádný + none: "Žádný" not_available_abbr: n/a note: one: 1 na vědomí - other: '%{count} na vědomy' + other: "%{count} na vědomy" zero: 0 na vědomí notes: Poznámky numbered_step: Krok %{number} @@ -138,12 +138,12 @@ cs: pořadí bude ztraceno. alphabetically_title: Seřadit projekty abecedně by_task_count: Podle počtu úkolů - by_task_count_title: Řadit podle počtu úkolů + 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. - sort: Řadit + sort: "Řadit" third: Třetí - todo: úkol + todo: "úkol" update: Uložit website: Webová stránka week: týden @@ -165,10 +165,10 @@ cs: hide_form: Schovat formulář hide_form_title: Schovat formulář last_completed_in_context: v tomto kontextu (posledních %{number}) - new_context_post: ''' bude také vytvořen. Opravdu?' + new_context_post: "' bude také vytvořen. Opravdu?" new_context_pre: Nový kontext ' - no_contexts_active: Žádné aktivní kontexty - no_contexts_hidden: Žádné skryté kontexty + no_contexts_active: "Žádné aktivní kontexty" + no_contexts_hidden: "Žádné skryté kontexty" save_status_message: Kontext uložen show_form: Nový kontext show_form_title: Nový kontext @@ -184,55 +184,55 @@ cs: abbr_day_names: - Ne - Po - - Út + - "Út" - St - - Čt + - "Čt" - Pá - So abbr_month_names: - - Led - - Úno + - "Úno" - Bře - Dub - Kvě - - Čer - - Čec + - "Čer" + - "Čec" - Srp - Zář - - Říj + - "Říj" - Lis - Pro day_names: - Neděle - Ponělí - - Úterý + - "Úterý" - Středa - - Čtvrtek + - "Čtvrtek" - Pátek - Sobota formats: - default: '%Y-%m-%d' - long: '%B %d, %Y' - longer: '%A %B %d, %Y' - short: '%b %d' + default: "%Y-%m-%d" + long: "%B %d, %Y" + longer: "%A %B %d, %Y" + short: "%b %d" month_names: - - Leden - - Únor + - "Únor" - Březen - Duben - Květen - - Červen - - Červenec + - "Červen" + - "Červenec" - Srpen - Září - - Říjen + - "Říjen" - Listopad - Prosinec order: - rok - - ':měsíc' + - ":měsíc" - den datetime: distance_in_words: @@ -262,16 +262,16 @@ cs: other: přes %{count} let x_days: one: 1 den - other: '%{count} dní' + other: "%{count} dní" x_minutes: one: 1 minuta - other: '%{count} minut' + other: "%{count} minut" x_months: one: 1 měsíc - other: '%{count} měsíců' + other: "%{count} měsíců" x_seconds: one: 1 sekunda - other: '%{count} sekund' + other: "%{count} sekund" prompts: day: Den hour: Hodina @@ -282,8 +282,8 @@ cs: errors: user_unauthorized: '401 Neautorizováno: Jen administrátoři smí používat tuto funkci.' feedlist: - actions_completed_last_week: Úkoly dokončené v posledních sedmi dnech - actions_due_next_week: Úkoly plánované na příštích sedm dní + actions_completed_last_week: "Úkoly dokončené v posledních sedmi dnech" + actions_due_next_week: "Úkoly plánované na příštích sedm dní" actions_due_today: Akce plánované na dnes active_projects_wo_next: Aktivni projekty bez úkolů active_starred_actions: Všechny aktivní úkoly s hvězdičkou @@ -335,7 +335,7 @@ cs: export_title: Import a export dat feeds: Feedy feeds_title: Seznam dostupných feedů - help: '?' + help: "?" home: Domů home_title: Domů integrations_: Integrovat Tracks @@ -375,7 +375,7 @@ cs: login_cas: přejít na CAS login_standard: vraťte se ke standardnímu přihlášení login_with_openid: přihlašte se se svým OpenID - mobile_use_openid: …nebo přihlášení s OpenID + mobile_use_openid: "…nebo přihlášení s OpenID" openid_identity_url_not_found: Je nám líto, neexistuje uživatel s touto identitou (%{identity_url}) option_separator: nebo @@ -411,8 +411,8 @@ cs: deleted_note: Smazat poznámku '%{id}' edit_item_title: Upravit položku in_project: 'V:' - no_notes_available: 'Žádné poznámky: přidejte poznámky ze stránek jednotlivých - projektů.' + no_notes_available: "Žádné poznámky: přidejte poznámky ze stránek jednotlivých + projektů." note_header: Poznámka %{id} note_link_title: Zobrazit poznámku %{id} note_location_link: 'V:' @@ -420,20 +420,20 @@ cs: number: currency: format: - delimiter: ',' - format: '%u%n' + delimiter: "," + format: "%u%n" precision: 2 - separator: . - unit: $ + separator: "." + unit: "$" format: - delimiter: ',' + delimiter: "," precision: 3 - separator: . + separator: "." human: format: precision: 1 storage_units: - format: '%n %u' + format: "%n %u" units: byte: one: Byte @@ -459,7 +459,7 @@ cs: page_title_edit: TRACKS::Editace nastavení password_changed: Heslo bylo změněno. Prosím znovu se přihlašte. show_number_completed: Zobrazit %{number} hotových položek - sms_context_none: žádný + sms_context_none: "žádný" staleness_starts_after: Zastarání nastává po %{days} dnech tabs: authentication: Autentizace @@ -471,7 +471,7 @@ cs: token_header: Váš pešek updated: Nastavení bylo uloženo projects: - actions_in_project_title: Úkoly v tomto projetku + actions_in_project_title: "Úkoly v tomto projetku" active_projects: Aktivní projekty add_note: Nová poznámka add_note_submit: Nová poznámka @@ -496,12 +496,12 @@ cs: list_projects: TRACKS::Projekty list_reviews: TRACKS::Revize no_default_context: Tento projekt nemá výchozí kontext - no_last_completed_projects: Žádné hotové projekty - no_last_completed_recurring_todos: Žádné hotové opakované úkoly - no_notes_attached: Žádné poznámky - no_projects: Žádné projekty + no_last_completed_projects: "Žádné hotové projekty" + no_last_completed_recurring_todos: "Žádné hotové opakované úkoly" + no_notes_attached: "Žádné poznámky" + no_projects: "Žádné projekty" notes: Poznámky - notes_empty: Žádné poznámky + notes_empty: "Žádné poznámky" page_title: 'TRACKS::Projekt: %{project}' project_saved_status: Projekt byl uložen project_state: Projekt je %{state}. @@ -534,7 +534,7 @@ cs: hide_action_form_title: Skrýt formulář pro založení nového úkolu hide_form: Schovat formulář make_actions_dependent: Akce budou vzájemně závislé - multiple_next_actions: Úkoly (jeden na každém řádku) + multiple_next_actions: "Úkoly (jeden na každém řádku)" project_for_all_actions: Projekt (pro všechny) separate_tags_with_commas: oddělené čárkami tags_for_all_actions: Značky (oddělené čárkami) @@ -567,10 +567,10 @@ cs: visible: Viditelný visible_plural: Viditelné stats: - action_completion_time_title: Čas dokončení (všechny hotové úkoly) + action_completion_time_title: "Čas dokončení (všechny hotové úkoly)" action_selection_title: TRACKS::výběr úkolů - actions: Úkoly - actions_30days_title: Úkoly za posledních 30 dní + actions: "Úkoly" + actions_30days_title: "Úkoly za posledních 30 dní" actions_actions_avg_created_30days: Za posledních 30 dní bylo vytvořeno průměrně %{count} úkolů actions_avg_completed: a uzavřeno průměrně %{count} úkolů za měsíc. @@ -587,15 +587,15 @@ cs: day_of_week: Den v týdnu number_of_actions: Počet akcí actions_dow_30days_title: Dny v týdnu (posleních 30 dní) - actions_further: ' a dále' - actions_last_year: Úkoly v posledním roce + actions_further: a dále + actions_last_year: "Úkoly v posledním roce" actions_last_year_legend: months_ago: měsíců zpět number_of_actions: Počet úklolů - actions_lastyear_title: Úkoly za posledních 12 měsíců + actions_lastyear_title: "Úkoly za posledních 12 měsíců" actions_min_completion_time: Minimální čas k dokončení je %{time}. actions_min_max_completion_days: Minimum/maximum dní na dokončení je %{min}/%{max}. - actions_selected_from_week: 'Úkoly vybrané z týdne ' + actions_selected_from_week: "Úkoly vybrané z týdne" click_to_return: Klepněte %{link} pro návrat ke statistikám. click_to_return_link: zde click_to_show_actions_from_week: Klepněte %{link} pro zobrazení úkolů z týdne @@ -610,34 +610,34 @@ cs: avg_created: průměrně vytvořeno completed: Completed created: Vytvořeno - month_avg_completed: '%{months} měsíční průměr hotových' - month_avg_created: '%{months} měsíční průměr vytvořených' + month_avg_completed: "%{months} měsíční průměr hotových" + month_avg_created: "%{months} měsíční průměr vytvořených" legend: - actions: Úkoly + actions: "Úkoly" day_of_week: Den v týdnu months_ago: měsíců zpět number_of_actions: Počet úkolů number_of_days: Před kolika dny percentage: Podíl - running_time: Čas k dokončení úkolu (týdny) + running_time: "Čas k dokončení úkolu (týdny)" more_stats_will_appear: Další statistiky se zobrazí až přibyde více úkolů. no_actions_selected: Nejsou vybrány žádné úkoly. - no_tags_available: žádné štítky nejsou definovány + no_tags_available: "žádné štítky nejsou definovány" open_per_week: Aktivní (viditelné i skryté) další akce za týden open_per_week_legend: actions: Akcí weeks: Týdny - other_actions_label: (ostatní) + other_actions_label: "(ostatní)" projects: Projekty running_time_all: Aktuální čas běhu všech nehotových úkolů running_time_all_legend: - actions: Úkoly + actions: "Úkoly" percentage: Podíl - running_time: Čas běhu úkolů (týdny). Klepněte na sloupec pro další info + running_time: "Čas běhu úkolů (týdny). Klepněte na sloupec pro další info" running_time_legend: - actions: Úkoly + actions: "Úkoly" percentage: Podíl - weeks: Čas běhu úkolu (týdny). Klepněte na sloupec pro další info + weeks: "Čas běhu úkolu (týdny). Klepněte na sloupec pro další info" spread_of_actions_for_all_context: Distribuce všech úkolů do kontextů spread_of_running_actions_for_visible_contexts: Distribuce běžících úkolů do viditelných kontextů @@ -647,7 +647,7 @@ cs: tag_cloud_description: Tento mrak zahrnuje štítky všech úkolů (hotových, nehotových, viditelných i skrytých) tag_cloud_title: Mrak štítků pro všechny úkly - tags: Štítky + tags: "Štítky" time_of_day: Denní doba (všechny úkoly) time_of_day_legend: number_of_actions: Počet úkolů @@ -664,15 +664,15 @@ cs: úkoly totals: Celkem totals_action_count: máte celkem %{count} úkolů - totals_actions_completed: '%{count} z nich je hotových.' + totals_actions_completed: "%{count} z nich je hotových." totals_active_project_count: Znich %{count} je aktivních projeků - totals_blocked_actions: '%{count} je závislých na dokončení jiných akcí.' + totals_blocked_actions: "%{count} je závislých na dokončení jiných akcí." totals_completed_project_count: a %{count} je hotových projektů. totals_context_count: Máte %{count} kontextů. totals_deferred_actions: z nichž %{count} jsou odložené úkoly v Ticlkeru totals_first_action: Od vašeho prvního úkolu %{date} totals_hidden_context_count: a %{count} skrytých kontextů. - totals_hidden_project_count: '%{count} je skrytých' + totals_hidden_project_count: "%{count} je skrytých" totals_incomplete_actions: Máte %{count} nehotových úkolů totals_project_count: Máte %{count} projektů. totals_tag_count: Na akcích je umístěno %{count} štítků. @@ -681,37 +681,37 @@ cs: within_one: V rámci 1. support: array: - last_word_connector: ', a ' - two_words_connector: ' a ' - words_connector: ', ' + last_word_connector: ", a" + two_words_connector: a + words_connector: "," select: prompt: Prosím vyberte time: am: am formats: - default: '%a, %d %b %Y %H:%M:%S %z' - long: '%B %d, %Y %H:%M' - month_day: '%B %d' - short: '%d %b %H:%M' - stats: '%a %d-%m' + default: "%a, %d %b %Y %H:%M:%S %z" + long: "%B %d, %Y %H:%M" + month_day: "%B %d" + short: "%d %b %H:%M" + stats: "%a %d-%m" pm: pm todos: - action_deferred: Úkol '%{description}' byl oldožen + action_deferred: "Úkol '%{description}' byl oldožen" action_deleted_error: Nepodařilo se smazat úkol - action_deleted_success: Úkol byl úspěšně smazán - action_due_on: (úkol plánován na %{date}) - action_marked_complete: Úkol '%{description}' byl označen jako - %{completed} - action_marked_complete_error: Úkol '%{description}' NEBYL označen - jako %{completed} kvůli chybě na serveru. - action_saved: Úkol uložen - action_saved_to_tickler: Úkol byl uložen do Tickleru + action_deleted_success: "Úkol byl úspěšně smazán" + action_due_on: "(úkol plánován na %{date})" + action_marked_complete: "Úkol '%{description}' byl označen jako + %{completed}" + action_marked_complete_error: "Úkol '%{description}' NEBYL označen + jako %{completed} kvůli chybě na serveru." + action_saved: "Úkol uložen" + action_saved_to_tickler: "Úkol byl uložen do Tickleru" add_another_dependency: Přidat další závislost add_new_recurring: Vytvořit opakovaný úkol added_dependency: Přidáno %{dependency} jako závislost. added_new_context: Přidán nový kontext added_new_next_action: Přidán nový úkol - added_new_next_action_plural: Úkoly byly přidány + added_new_next_action_plural: "Úkoly byly přidány" added_new_next_action_singular: Přidán nový úkol added_new_project: Přidán nový projekt all_completed: Všechny hotové úkoly @@ -719,7 +719,7 @@ cs: all_completed_tagged_page_title: TRACKS::Hotové úkoly se štítkem %{tag_name} append_in_this_project: v tomto projektu archived_tasks_title: TRACKS::Archiv hotových úkolů - blocked_by: Čeká na %{predecessors} + blocked_by: "Čeká na %{predecessors}" calendar: due_next_week: Plánované příští týden due_this_month: Plánováno na %{month} @@ -762,7 +762,7 @@ cs: delete_action: Smazat úkol delete_recurring_action_confirm: Opravdu chcete smazat opakovaný úkol '%{description}'? delete_recurring_action_title: Smazat opakovaný úkol - deleted_success: Úkol byl úspěšně smazán. + deleted_success: "Úkol byl úspěšně smazán." depends_on: Závisí na depends_on_separate_with_commas: Závisí na (odděleno čárkami) done: Hotovo? @@ -787,9 +787,9 @@ cs: due: 'Plánováno na: %{date}' has_x_pending: one: Jeden čekající úkol - other: '%{count} čekajících úkolů' + other: "%{count} čekajících úkolů" hidden_actions: Skryté úkoly - in_hidden_state: (skrytý) + in_hidden_state: "(skrytý)" in_pending_state: ve stavu čekající list_incomplete_next_actions: Zabrazí nehotové úkoly list_incomplete_next_actions_with_limit: Zobrazuje posledních %{count} nedokončených @@ -798,7 +798,7 @@ cs: new_related_todo_created: Byl vytvořen nový úkol patřící do tohoto opakovaného úkolu new_related_todo_created_short: vytvořen nový úkol - new_related_todo_not_created_short: úkol nebyl vytvořen + new_related_todo_not_created_short: "úkol nebyl vytvořen" next_action_description: Popis úkolu next_action_needed: Je potřeba zadat aspoň jeden úkol next_actions_description: 'Filtr:' @@ -816,31 +816,31 @@ cs: completed: hotové úkoly due_today: dnes due_within_a_week: během týdne - no_actions_due_this_week: Žádné úkoly plánovány na tento týden - no_last_completed_actions: Žádné hotové úkoly - no_project: --Žádný projekt-- + no_actions_due_this_week: "Žádné úkoly plánovány na tento týden" + no_last_completed_actions: "Žádné hotové úkoly" + no_project: "--Žádný projekt--" overdue: Spožděné úkoly - pending: Čekající + pending: "Čekající" recurrence: daily: Denně daily_every_number_day: Každých %{number} dní daily_options: Nastavení pro denní opakované úkoly - day_x_on_every_x_month: '%{day}. den každý %{month}. měsíc' + day_x_on_every_x_month: "%{day}. den každý %{month}. měsíc" ends_on: Končí ends_on_date: Končí %{date} ends_on_number_times: Končí po %{number} opakováních every_work_day: Každý pracovní den monthly: Měsíčně - monthly_every_xth_day: '%{day} %{day_of_week} každý %{month}. měsíc' + monthly_every_xth_day: "%{day} %{day_of_week} každý %{month}. měsíc" monthly_options: Nastavení pro měsíční opakované úkoly no_end_date: Nikdy pattern: day_names: - neděle - pondělí - - úterý + - "úterý" - středa - - čtvrtek + - "čtvrtek" - pátek - sobota due: plánováno na @@ -850,30 +850,30 @@ cs: every_xth_day_of_every_n_months: každý %{x} %{day} každých %{n_months} every_year_on: každý rok %{date} first: první - fourth: čtvrtý + fourth: "čtvrtý" from: od last: poslední month_names: - - Leden - - Únor + - "Únor" - Březen - Duben - Květen - - Červen - - Červenec + - "Červen" + - "Červenec" - Srpen - Září - - Říjen + - "Říjen" - Listopad - Prosinec - on_day_n: '%{n}. den' + on_day_n: "%{n}. den" on_work_days: v pracovní dny second: druhý show: ukázat - the_xth_day_of_month: '%{x} %{day} měsíce %{month}' + the_xth_day_of_month: "%{x} %{day} měsíce %{month}" third: třetí - times: (%{number} opakování) + times: "(%{number} opakování)" until: do weekly: každý týden starts_on: Začíná @@ -882,13 +882,13 @@ cs: weekly_options: Nastavení pro týdenní opakované úkoly yearly: Ročně yearly_every_x_day: Každý %{month} %{day} - yearly_every_xth_day: '%{day} %{day_of_week} měsíce %{month}' + yearly_every_xth_day: "%{day} %{day_of_week} měsíce %{month}" yearly_options: Nastavení pro roční opakované úkoly recurrence_completed: Poslední opakování úkolu bylo označeno jako hotové. Opakovaný úkol je dokončený recurrence_period: Interval opakování - recurring_action_deleted: Úkol byl smazán. Protože jde o opakovaný úkol, byl vložen - nový úkol + recurring_action_deleted: "Úkol byl smazán. Protože jde o opakovaný úkol, byl + vložen nový úkol" recurring_action_saved: Opakovaný úkol byl uložen recurring_actions_title: TRACKS::Opakované úkoly recurring_deleted_success: Opakovaný úkol byl úspěšně smazán. @@ -898,7 +898,7 @@ cs: removed_predecessor: Byl odstraněn %{successor} jako závislost pro %{predecessor}. scheduled_overdue: Naplánováno zobrazení před %{days} dny see_all_completed: Můžete vidět všechny dokončené akce %{link} - set_to_pending: '%{task} nastaven jako čekající' + set_to_pending: "%{task} nastaven jako čekající" show_from: Zobrazovat od show_in_days: Zobrazit za %{days} dní show_on_date: Ukázat %{date} @@ -908,12 +908,12 @@ cs: star_action_with_description: ohvězdičkovat úkol '%{description}' tagged_page_title: TRACKS::Se štítkem '%{tag_name}' tagged_with: označeno štítkem ‘%{tag_name}’ - tags: Štítky (oddělené čárkami) + tags: "Štítky (oddělené čárkami)" task_list_title: TRACKS::Úkoly 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í.' + other: "%{count} položek v Tickleru je plánováno na dnes tickler items are now + due - obnovte stránku pro zobrazení." to_tickler: do Tickleru unable_to_add_dependency: Nepodařilo se přidat závislost unresolved_dependency: Hodnota v poli 'závisí na' neodpovídá žádnému existujícímu @@ -962,7 +962,7 @@ cs: signup_new_user: Registrace nového uživatele signup_successful: Registrace uživatele %{username} byla úspěšná. successfully_deleted_user: Uživatel %{username} byl úspěšně smazán - total_actions: Úkolů celkem + total_actions: "Úkolů celkem" total_contexts: Kontextů celkem total_notes: Poznámek celkem total_projects: Projektů celkem @@ -978,10 +978,10 @@ cs: single_page: one: Zobrazuji 1 %{model} other: Zobrazení všech %{count} %{model} - zero: Žádné %{model} nalézt + zero: "Žádné %{model} nalézt" single_page_html: one: Zobrazení 1 %{model} other: Zobrazení vše %{count} %{model} - zero: Žádné %{model} nalézt - page_gap: '…' - previous_label: '« předchozí' + zero: "Žádné %{model} nalézt" + page_gap: "…" + previous_label: "« předchozí" diff --git a/config/locales/de.yml b/config/locales/de.yml index 083933cc..f28e9f07 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -45,7 +45,7 @@ de: last_name: Nachname errors: full_messages: - format: '%{attribute} %{message}' + format: "%{attribute} %{message}" messages: accepted: muss akzeptiert werden blank: muss ausgefüllt werden @@ -116,7 +116,7 @@ de: not_available_abbr: n/b note: one: 1 Notiz - other: '%{count} Notizen' + other: "%{count} Notizen" zero: keine Notizen notes: Notizen numbered_step: Schritt %{number} @@ -126,7 +126,7 @@ de: project: Projekt projects: Projekte recurring_todos: Wiederkehrende Aufgaben - review: Überprüfung + review: "Überprüfung" search: Suchen second: Zweite server_error: Auf dem Server ist ein Fehler aufgetreten. @@ -164,7 +164,7 @@ de: hide_form: Formular verstecken hide_form_title: Formular für neuen Kontext verstecken last_completed_in_context: in diesem Kontext (letzte %{number}) - new_context_post: ''' wird ebenfalls angelegt. Fortfahren?' + new_context_post: "' wird ebenfalls angelegt. Fortfahren?" new_context_pre: Der neue Kontext ' no_contexts_active: Derzeit gibt es keine aktiven Kontexte no_contexts_hidden: Derzeit gibt es keine versteckten Kontexte @@ -211,12 +211,12 @@ de: - Freitag - Samstag formats: - default: '%d.%m.%Y' - long: '%d. %B %Y' - longer: '%A, %d. %B %Y' - month_day: '%d. %B' - only_day: '%d' - short: '%d. %b' + default: "%d.%m.%Y" + long: "%d. %B %Y" + longer: "%A, %d. %B %Y" + month_day: "%d. %B" + only_day: "%d" + short: "%d. %b" month_names: - - Januar @@ -263,16 +263,16 @@ de: other: mehr als %{count} Jahre x_days: one: 1 Tag - other: '%{count} Tage' + other: "%{count} Tage" x_minutes: one: 1 Minute - other: '%{count} Minuten' + other: "%{count} Minuten" x_months: one: 1 Monat - other: '%{count} Monate' + other: "%{count} Monate" x_seconds: one: 1 Sekunde - other: '%{count} Sekunden' + other: "%{count} Sekunden" prompts: day: Tag hour: Stunden @@ -340,7 +340,7 @@ de: export_title: Daten importieren und exportieren feeds: Feeds feeds_title: Liste der verfügbaren Feeds anzeigen - help: '?' + help: "?" home: Start home_title: Start integrations_: Tracks integrieren @@ -353,7 +353,7 @@ de: projects_title: Projekte recurring_todos: Wiederkehrende Aufgaben recurring_todos_title: Wiederkehrende Aufgaben verwalten - review_title: Überprüfung + review_title: "Überprüfung" search: Alle Einträge durchsuchen starred: Markiert starred_title: Markierte Aufgaben betrachten @@ -369,8 +369,8 @@ de: toggle_notes_title: Alle Notizen umschalten login: account_login: Account-Anmeldung - cas_create_account: 'Wenn Sie die Anfrage fortsetzen möchten, klicken Sie bitte hier: - %{signup_link}' + cas_create_account: 'Wenn Sie die Anfrage fortsetzen möchten, klicken Sie bitte + hier: %{signup_link}' cas_logged_in_greeting: Hallo, %{username}! Sie sind authentifiziert. cas_login: CAS-Anmeldung cas_no_user_found: Hallo, %{username}! Sie haben leider keinen Tracks-Account. @@ -382,7 +382,7 @@ de: login_cas: zum CAS gehen login_standard: zurück zum Standard-Login login_with_openid: Mit einer OpenID anmelden - mobile_use_openid: …oder mit einer OpenID anmelden + mobile_use_openid: "…oder mit einer OpenID anmelden" openid_identity_url_not_found: Sorry, aber es existiert kein Benutzer mit der Identitäts-URL (%{identity_url}) option_separator: oder, @@ -429,19 +429,19 @@ de: number: currency: format: - delimiter: ',' - format: '%n%u' - separator: . - unit: € + delimiter: "," + format: "%n%u" + separator: "." + unit: "€" format: - delimiter: . + delimiter: "." precision: 2 - separator: ',' + separator: "," human: format: precision: 1 storage_units: - format: '%n %u' + format: "%n %u" units: byte: one: Byte @@ -453,7 +453,7 @@ de: preferences: authentication_header: Deine Authentifizierung change_authentication_type: Authentifzierungsart ändern - change_identity_url: Ändere deine Identitäts-URL + change_identity_url: "Ändere deine Identitäts-URL" change_password: Passwort ändern current_authentication_type: Dein Authentifizierungsart ist %{auth_type} edit_preferences: Einstellungen bearbeiten @@ -621,8 +621,8 @@ de: avg_created: Durchschnittlich erstellt completed: Erledigt created: Erstellt - month_avg_completed: '%{months} Monat durchschnittlich erledigt' - month_avg_created: '%{months} Monat durchschnittlich erstellt' + month_avg_completed: "%{months} Monat durchschnittlich erledigt" + month_avg_created: "%{months} Monat durchschnittlich erstellt" legend: actions: Aufgaben day_of_week: Wochentag @@ -639,7 +639,7 @@ de: open_per_week_legend: actions: Aufgaben weeks: Wochen her - other_actions_label: (andere) + other_actions_label: "(andere)" projects: Projekte running_time_all: Aktuelle Laufzeit aller unerledigter Aufgaben. running_time_all_legend: @@ -678,15 +678,15 @@ de: unerledigten Aufgaben totals: Ingesamt totals_action_count: hatten Sie insgesamt %{count} Aufgaben - totals_actions_completed: '%{count} davon sind erledigt.' + totals_actions_completed: "%{count} davon sind erledigt." totals_active_project_count: Von diesen sind %{count} aktive Projekte - totals_blocked_actions: '%{count} hängen vom Abschluss anderer Aufgaben ab.' + totals_blocked_actions: "%{count} hängen vom Abschluss anderer Aufgaben ab." totals_completed_project_count: und %{count} sind erledigte Projekte. totals_context_count: Sie haben %{count} Kontexte. totals_deferred_actions: von denen %{count} im Notizbuch zurückgestellt sind totals_first_action: Seit deiner ersten Aufgabe am %{date} totals_hidden_context_count: und %{count} sind versteckte Kontexte. - totals_hidden_project_count: '%{count} sind versteckt' + totals_hidden_project_count: "%{count} sind versteckt" totals_incomplete_actions: Sie haben %{count} unerledigte Aufgaben totals_project_count: Sie haben %{count} Projekte. totals_tag_count: Sie haben %{count} Tags in Aufgaben. @@ -695,25 +695,25 @@ de: within_one: Innerhalb von 1 support: array: - last_word_connector: ' und ' - two_words_connector: ' und ' - words_connector: ', ' + last_word_connector: und + two_words_connector: und + words_connector: "," select: prompt: Bitte wählen Sie time: am: vormittags formats: - default: '%A, %d. %B %Y, %H:%M Uhr' - long: '%A, %d. %B %Y, %H:%M Uhr' - month_day: '%d. %B' - short: '%d. %B, %H:%M Uhr' - stats: '%a %d-%m' - time: '%H:%M' + default: "%A, %d. %B %Y, %H:%M Uhr" + long: "%A, %d. %B %Y, %H:%M Uhr" + month_day: "%d. %B" + short: "%d. %B, %H:%M Uhr" + stats: "%a %d-%m" + time: "%H:%M" pm: nachmittags todos: action_deleted_error: Fehler beim Löschen der Aufgabe action_deleted_success: Die nächste Aufgabe erfolgreich gelöscht - action_due_on: (Aufgabe fällig am %{date}) + action_due_on: "(Aufgabe fällig am %{date})" action_marked_complete: Die Aufgabe '%{description}' wurde als %{completed} markiert. action_marked_complete_error: Die Aufgabe '%{description}' wurde @@ -722,7 +722,7 @@ de: action_saved_to_tickler: Aufgabe im Notizbuch gespeichert add_another_dependency: Neue Abhängigkeit add_new_recurring: Neue wiederkehrende Aufgabe - added_dependency: '%{dependency} als Abhängigkeit hinzugefügt.' + added_dependency: "%{dependency} als Abhängigkeit hinzugefügt." added_new_context: Neuer Kontext hinzugefügt added_new_next_action: Neue Aufgabe angelegt added_new_next_action_plural: Neue weiterführende Aufgaben angelegt @@ -761,14 +761,15 @@ de: completed_tagged_page_title: 'TRACKS:: Erledigte Aufgaben mit Tag %{tag_name}' completed_tasks_title: TRACKS::Erledigte Aufgaben completed_today: Heute erledigt - confirm_delete: Sind Sie sicher, dass Sie die Aufgabe '%{description}' löschen möchten? + confirm_delete: Sind Sie sicher, dass Sie die Aufgabe '%{description}' löschen + möchten? context_changed: Kontext zu %{name} gewechselt convert_to_project: In Projekt umwandeln defer_date_after_due_date: Zurückstellungsdatum nach Ablaufdatum. Bitte passe das Ablaufdatum an, dass es vor dem Zurückstellungsdatum liegt. defer_x_days: one: Einen Tag zurückstellen - other: '%{count} Tage zurückstellen' + other: "%{count} Tage zurückstellen" deferred_actions_with: Zurückgestellte Aufgaben mit dem Tag '%{tag_name}' deferred_pending_actions: Aufgeschobene und ausstehende Aufgaben deferred_tasks_title: TRACKS::Notizbuch @@ -827,8 +828,8 @@ de: due_in_x_days: Fällig in %{days} Tagen due_today: Heute fällig due_tomorrow: Fällig morgen - overdue_by: Überfällig mit %{days} Tag - overdue_by_plural: Überfällig mit %{days} Tagen + overdue_by: "Überfällig mit %{days} Tag" + overdue_by_plural: "Überfällig mit %{days} Tagen" next_actions_title: TRACKS::Weitere Aufgaben next_actions_title_additions: completed: Aufgaben erledigt @@ -836,8 +837,8 @@ de: due_within_a_week: diese Woche fällig no_actions_due_this_week: Keine fälligen Aufgaben diese Woche no_last_completed_actions: Keine erledigten Aufgaben gefunden - no_project: --Kein Projekt-- - overdue: überfällig + no_project: "--Kein Projekt--" + overdue: "überfällig" pending: Ausstehend recurrence: daily: Täglich @@ -899,7 +900,7 @@ de: weekly_every_number_week: Kehrt jede %{number}. Woche wieder am weekly_options: Einstellungen wöchentliche Aufgaben yearly: Jährlich - yearly_every_x_day: 'Jeden %{day}. %{month} ' + yearly_every_x_day: Jeden %{day}. %{month} yearly_every_xth_day: Den %{day} %{day_of_week} des %{month} yearly_options: Einstellungen jährliche Aufgaben recurrence_completed: Nach dieser erledigten wiederkehrenden Aufgabe folgt keine @@ -913,10 +914,10 @@ de: recurring_pattern_removed: Das Wiederholungsmuster wurde entfernt %{count} recurring_todos: Wiederkehrende Aufgaben remove_dependency: Abhängigkeit löschen (löscht nicht die Aufgabe) - removed_predecessor: '%{successor} entfernt als Abhängigkeit von %{predecessor}.' + removed_predecessor: "%{successor} entfernt als Abhängigkeit von %{predecessor}." scheduled_overdue: Planmäßig angezeigt vor %{days} Tagen see_all_completed: Alle erledigten Aufgaben %{link} - set_to_pending: '%{task} als ausstehend markiert' + set_to_pending: "%{task} als ausstehend markiert" show_from: Anzeigen ab dem show_in_days: Anzeigen in %{days} Tagen show_on_date: Anzeigen am %{date} @@ -930,11 +931,13 @@ de: task_list_title: TRACKS::Aufgaben anzeigen tickler_items_due: 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.' - to_tickler: ', im Notizbuch hinterlegt' + other: "%{count} Notizbuch-Einträge sind nun fällig - lade die Seite neu, um + sie zu sehen." + to_tickler: ", im Notizbuch hinterlegt" unable_to_add_dependency: Abhängigkeit nicht hinzufügbar - unresolved_dependency: Zu dem Wert, den Sie im Feld ''Hängt ab von'' eingegeben haben, konnte keine Aufgabe gefunden werden. Dieser Wert wird nicht mit der neuen Aufgabe gespeichert. Trotzdem fortfahren? + unresolved_dependency: Zu dem Wert, den Sie im Feld ''Hängt ab von'' eingegeben + haben, konnte keine Aufgabe gefunden werden. Dieser Wert wird nicht mit der + neuen Aufgabe gespeichert. Trotzdem fortfahren? was_due_on_date: war am %{date} fällig users: account_signup: Accounteinrichtung @@ -1003,5 +1006,5 @@ de: one: Angezeigte 1 %{model} other: Anzeige aller %{count} %{model} zero: Kein %{model} gefunden - page_gap: '...' - previous_label: « Zurück + page_gap: "..." + previous_label: "« Zurück" diff --git a/config/locales/es.yml b/config/locales/es.yml index 117941e3..db488136 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -45,7 +45,7 @@ es: last_name: Apellido errors: full_messages: - format: '%{attribute} %{message}' + format: "%{attribute} %{message}" messages: accepted: debe ser aceptada blank: no puede estar en blanco @@ -77,7 +77,7 @@ es: body: 'Hubo problemas con los campos siguientes:' header: one: Un error esta prohibido %{model} se guarden - other: '%{count} errores prohíbe este %{model} que se guarden' + other: "%{count} errores prohíbe este %{model} que se guarden" common: action: Tarea actions: Tareas @@ -107,7 +107,7 @@ es: forth: Siguiente fourth: Cuarto go_back: Volver atrás - last: Último + last: "Último" logout: Salir month: mes months: meses @@ -116,7 +116,7 @@ es: not_available_abbr: n/e note: one: 1 nota - other: '%{count} notas' + other: "%{count} notas" zero: 0 notas notes: Notas numbered_step: Paso %{number} @@ -133,13 +133,13 @@ es: show_all: Mostrar todo sort: alphabetically: Alfabéticamente - alphabetically_confirm: ¿Está seguro que desea ordenar los proyectos por orden - alfabético? Esto reemplazará el orden existente. + alphabetically_confirm: "¿Está seguro que desea ordenar los proyectos por orden + alfabético? Esto reemplazará el orden existente." alphabetically_title: Proyectos de ordenar alfabéticamente by_task_count: Por número de tareas by_task_count_title: Ordenar por número de tareas - by_task_count_title_confirm: ¿Está seguro que desea ordenar los proyectos por - el número de tareas? Esto reemplazará el orden existente. + by_task_count_title_confirm: "¿Está seguro que desea ordenar los proyectos por + el número de tareas? Esto reemplazará el orden existente." sort: Ordenar third: Tercero todo: Todo @@ -155,19 +155,19 @@ es: completed_tasks_title: 'TRACKS:: Las acciones completadas en ''%{context_name}'' el contexto' context_deleted: Contexto eliminado '%{name}' - context_hide: ¿Esconder de la página principal? + context_hide: "¿Esconder de la página principal?" context_name: Nombre del contexto delete_context: Eliminar contexto - delete_context_confirmation: ¿Está seguro que desea eliminar '%{name}' el contexto? + delete_context_confirmation: "¿Está seguro que desea eliminar '%{name}' el contexto? Tenga en cuenta que esto también se eliminarán todas las acciones (la repetición) - en este contexto! + en este contexto!" delete_context_title: Eliminar contexto edit_context: Editar contexto hidden_contexts: Contextos ocultos hide_form: Esconder formulario hide_form_title: Ocultar el formulario nuevo contexto last_completed_in_context: en este contexto (últimos %{number}) - new_context_post: ''' También se ha creado. ¿Está seguro?' + new_context_post: "' También se ha creado. ¿Está seguro?" new_context_pre: Nuevo contexto ' no_contexts_active: Actualmente no hay contextos activos no_contexts_hidden: Actualmente no hay contextos ocultos @@ -214,10 +214,10 @@ es: - Viernes - Sábado formats: - default: '%Y-%m-%d' - long: '%B %d, %Y' - longer: '%A, %d %b %Y' - short: '%b %d' + default: "%Y-%m-%d" + long: "%B %d, %Y" + longer: "%A, %d %b %Y" + short: "%b %d" month_names: - - Enero @@ -260,16 +260,16 @@ es: other: en %{count} años x_days: one: 1 día - other: '%{count} días' + other: "%{count} días" x_minutes: one: 1 minuto - other: '%{count} minutos' + other: "%{count} minutos" x_months: one: 1 mes - other: '%{count} meses' + other: "%{count} meses" x_seconds: one: Un segundo - other: '%{count} segundos' + other: "%{count} segundos" prompts: day: Día hour: Hora @@ -295,7 +295,7 @@ es: context_needed: Es necesario que haya al menos un contexto antes de poder solicitar un feed ical_feed: iCal alimentación - last_fixed_number: Última %{number} acciones + last_fixed_number: "Última %{number} acciones" legend: 'Leyenda:' notice_incomplete_only: 'Nota: Todos los alimentos muestran sólo las acciones que no han sido marcadas como realizadas, a menos que se indique lo contrario.' @@ -337,7 +337,7 @@ es: export_title: Importar y exportar datos feeds: Feeds feeds_title: See a list of available feeds - help: '?' + help: "?" home: Inicio home_title: Inicio integrations_: Integrar Tracks @@ -377,7 +377,7 @@ es: login_cas: go to the CAS login_standard: go back to the standard login login_with_openid: login with an OpenID - mobile_use_openid: …or login with an OpenID + mobile_use_openid: "…or login with an OpenID" openid_identity_url_not_found: Sorry, no user by that identity URL exists (%{identity_url}) option_separator: or, please_login: Please log in to use Tracks @@ -423,16 +423,16 @@ es: number: currency: format: - delimiter: ',' - format: '%u%n' - separator: . - unit: € + delimiter: "," + format: "%u%n" + separator: "." + unit: "€" format: - delimiter: ',' - separator: . + delimiter: "," + separator: "." human: storage_units: - format: '%n %u' + format: "%n %u" units: byte: one: Byte @@ -590,7 +590,7 @@ es: day_of_week: Día de la semana number_of_actions: Número de acciones actions_dow_30days_title: Day of week (past 30 days) - actions_further: ' and further' + actions_further: and further actions_last_year: Actions in the last years actions_last_year_legend: months_ago: Months ago @@ -598,7 +598,7 @@ es: actions_lastyear_title: Actions in the last 12 months actions_min_completion_time: The minimum time to complete is %{time}. actions_min_max_completion_days: The Min-/maximum days to complete is %{min}/%{max}. - actions_selected_from_week: 'Actions selected from week ' + actions_selected_from_week: Actions selected from week click_to_return: Click %{link} to return to the statistics page. click_to_return_link: here click_to_show_actions_from_week: Click %{link} to show the actions from week %{week} @@ -613,8 +613,8 @@ es: avg_created: Avg created completed: Completed created: Created - month_avg_completed: '%{months} Month avg completed' - month_avg_created: '%{months} Month avg created' + month_avg_completed: "%{months} Month avg completed" + month_avg_created: "%{months} Month avg created" legend: actions: Tareas day_of_week: Day of week @@ -631,7 +631,7 @@ es: open_per_week_legend: actions: Acciones weeks: Semanas atrás - other_actions_label: (otros) + other_actions_label: "(otros)" projects: Projects running_time_all: Current running time of all incomplete actions running_time_all_legend: @@ -668,15 +668,15 @@ es: actions totals: Totals totals_action_count: you have a total of %{count} actions - totals_actions_completed: '%{count} of these are completed.' + totals_actions_completed: "%{count} of these are completed." totals_active_project_count: Of those %{count} are active projects - totals_blocked_actions: '%{count} are dependent on the completion of their actions.' + totals_blocked_actions: "%{count} are dependent on the completion of their actions." totals_completed_project_count: and %{count} are completed projects. totals_context_count: You have %{count} contexts. totals_deferred_actions: of which %{count} are deferred actions in the tickler totals_first_action: Since your first action on %{date} totals_hidden_context_count: and %{count} are hidden contexts. - totals_hidden_project_count: '%{count} are hidden' + totals_hidden_project_count: "%{count} are hidden" totals_incomplete_actions: You have %{count} incomplete actions totals_project_count: You have %{count} projects. totals_tag_count: You have %{count} tags placed on actions. @@ -685,19 +685,19 @@ es: within_one: Dentro de un support: array: - last_word_connector: ', y' + last_word_connector: ", y" two_words_connector: y - words_connector: ',' + words_connector: "," select: prompt: Por favor seleccione time: am: soy formats: - default: '%a, %d %b %Y %H:%M:%S %z' - long: '%B %d, %Y %H:%M' - month_day: '%B %d' - short: '%d %b %H:%M' - stats: '%a %d-%m' + default: "%a, %d %b %Y %H:%M:%S %z" + long: "%B %d, %Y %H:%M" + month_day: "%B %d" + short: "%d %b %H:%M" + stats: "%a %d-%m" pm: pm todos: no_actions: @@ -705,7 +705,7 @@ es: action_deferred: La acción \'%{description}\' se aplazó action_deleted_error: Failed to delete the action action_deleted_success: Successfully deleted next action - action_due_on: (action due on %{date}) + action_due_on: "(action due on %{date})" action_marked_complete: The action '%{description}' was marked as %{completed} action_marked_complete_error: The action '%{description}' was @@ -827,7 +827,7 @@ es: due_within_a_week: due within a week no_actions_due_this_week: No actions due in rest of this week no_last_completed_actions: No encontró las acciones realizadas - no_project: --No project-- + no_project: "--No project--" overdue: Overdue pending: Pending recurrence: @@ -907,7 +907,7 @@ es: removed_predecessor: Removed %{successor} as dependency from %{predecessor}. scheduled_overdue: Scheduled to show %{days} days ago see_all_completed: Usted puede ver todas las acciones realizadas %{link} - set_to_pending: '%{task} set to pending' + set_to_pending: "%{task} set to pending" show_from: Show from show_in_days: Show in %{days} days show_on_date: Show on %{date} @@ -921,7 +921,7 @@ es: task_list_title: TRACKS::List tasks tickler_items_due: 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.' + other: "%{count} tickler items are now due - refresh the page to see them." to_tickler: to tickler unable_to_add_dependency: Unable to add dependency unresolved_dependency: The value you entered in the dependency field did not resolve @@ -992,5 +992,5 @@ es: one: Viendo del 1 %{model} other: Viendo todos los %{count} %{model} zero: No %{model} encontrado - page_gap: '...' - previous_label: « Anterior + page_gap: "..." + previous_label: "« Anterior" diff --git a/config/locales/fr.yml b/config/locales/fr.yml index e1d055f6..cd5a8dca 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -31,24 +31,24 @@ fr: week_starts: Les semaines commencent un project: default_context_name: Contexte par défaut - default_tags: Étiquette par défaut + default_tags: "Étiquette par défaut" description: Description name: Nom todo: context: Contexte description: Description - due: Échéance + due: "Échéance" notes: Note predecessors: Dépend de project: Projet show_from: Afficher depuis - tags: Étiquettes + tags: "Étiquettes" user: first_name: Prénom last_name: Nom errors: full_messages: - format: '%{attribute} %{message}' + format: "%{attribute} %{message}" messages: accepted: doit être accepté blank: ne peux être vide @@ -81,7 +81,7 @@ fr: body: 'Il y a des problèmes avec les champs suivants :' header: one: 1 erreur a empêché ce %{model} d'être sauvegardé - other: '%{count} erreurs ont empêché ce %{model} d''être sauvegardé' + other: "%{count} erreurs ont empêché ce %{model} d'être sauvegardé" common: action: Action actions: Actions @@ -122,10 +122,10 @@ fr: not_available_abbr: n/a note: one: 1 note - other: '%{count} notes' + other: "%{count} notes" zero: non notes notes: Notes - numbered_step: Étape %{number} + numbered_step: "Étape %{number}" ok: OK optional: optionnel previous: Précédente @@ -139,13 +139,13 @@ fr: show_all: voir tous sort: alphabetically: Par ordre alphabétique - alphabetically_confirm: Êtes-vous sûr de vouloir trier ces projets par ordre - alphabétique ? L'ordre actuel sera remplacé. + alphabetically_confirm: "Êtes-vous sûr de vouloir trier ces projets par ordre + alphabétique ? L'ordre actuel sera remplacé." alphabetically_title: Trier les projets par ordre alphabétique by_task_count: Par nombre de tâches by_task_count_title: Trier par nombre de tâches - by_task_count_title_confirm: Êtes-vous sûr de vouloir trier ces projets par - nombre de tâches ? L'ordre actuel sera remplacé. + by_task_count_title_confirm: "Êtes-vous sûr de vouloir trier ces projets par + nombre de tâches ? L'ordre actuel sera remplacé." sort: Trier third: Troisième todo: Action @@ -162,15 +162,15 @@ fr: context_hide: Caché de la première page ? context_name: Nom du Contexte delete_context: Supprimer contexte - delete_context_confirmation: Êtes-vous sûr de vouloir supprimer le contexte %{name}? - Toutes les actions (répétitives) de ce contexte seront également supprimées ! + delete_context_confirmation: "Êtes-vous sûr de vouloir supprimer le contexte %{name}? + Toutes les actions (répétitives) de ce contexte seront également supprimées !" delete_context_title: Supprimer contexte edit_context: Modifier contexte hidden_contexts: Contextes cachés hide_form: Cacher le formulaire hide_form_title: Cacher le formulaire nouveau contexte last_completed_in_context: dans ce contexte (dernier %{number}) - new_context_post: ?» sera aussi créé. Êtes-vous sûr ? + new_context_post: "?» sera aussi créé. Êtes-vous sûr ?" new_context_pre: Le contexte «? no_contexts_active: Actuellement, il n'y a pas de contextes actifs no_contexts_hidden: Actuellement, il n'y a pas de contextes cachés @@ -217,12 +217,12 @@ fr: - vendredi - samedi formats: - default: '%d/%m/%Y' - long: '%e %B %Y' - longer: '%A, %d %b %Y' - month_day: '%d. %B' - only_day: '%e' - short: '%e %b' + default: "%d/%m/%Y" + long: "%e %B %Y" + longer: "%A, %d %b %Y" + month_day: "%d. %B" + only_day: "%e" + short: "%e %b" month_names: - - janvier @@ -269,16 +269,16 @@ fr: other: plus de %{count} ans x_days: one: 1 jour - other: '%{count} jours' + other: "%{count} jours" x_minutes: one: 1 minute - other: '%{count} minutes' + other: "%{count} minutes" x_months: one: 1 mois - other: '%{count} mois' + other: "%{count} mois" x_seconds: one: 1 seconde - other: '%{count} secondes' + other: "%{count} secondes" prompts: day: Jour hour: Heure @@ -333,10 +333,6 @@ fr: footer: send_feedback: Envoyer un feedback sur %{version} helpers: - button: - create: Créer %{model} - submit: Sauvegarder %{model} - update: Mettre à jour %{model} select: prompt: Sélectionnez submit: @@ -359,7 +355,7 @@ fr: new_action: 0-Nouvelle action projects: Projets starred: Favoris - tickler: Échéancier + tickler: "Échéancier" navigation: admin: Administration api_docs: API REST @@ -372,7 +368,7 @@ fr: export_title: Importer et exporter des données feeds: Flux feeds_title: Voir une liste des flux disponibles - help: '?' + help: "?" home: Accueil home_title: Accueil integrations_: Intégrer Tracks @@ -392,8 +388,8 @@ fr: starred_title: Voir vos actions préférées stats: Statistiques stats_title: Voir vos statistiques - tickler: Échéancier - tickler_title: Échéancier + tickler: "Échéancier" + tickler_title: "Échéancier" view: Vue next_actions_rss_feed: Flux RSS des prochaines actions toggle_contexts: Basculer contextes effondré @@ -413,7 +409,7 @@ fr: login_cas: Aller au CAS login_standard: retourner à l'écran de connexion standard login_with_openid: se connecter avec un OpenID - mobile_use_openid: '... ou ce connecter avec un OpenID' + mobile_use_openid: "... ou ce connecter avec un OpenID" openid_identity_url_not_found: Désolé, aucun utilisateur avec cette identité URL n'existe (%{identity_url}) option_separator: ou, @@ -428,11 +424,11 @@ fr: user_no_expiry: Rester connecté models: preference: - due_in: Échéance dans %{days} jours - due_on: Échéance le %{date} + due_in: "Échéance dans %{days} jours" + due_on: "Échéance le %{date}" due_styles: - - Échéance dans ____ jours - - Échéance le ____ + - "Échéance dans ____ jours" + - "Échéance le ____" project: feed_description: Liste de tous les projets de %{username} feed_title: Projets Tracks @@ -442,9 +438,9 @@ fr: error_context_not_associated: L'identifiant contexte %{context} n'est pas associé à l'identifiant utilisateur %{user}. notes: - delete_confirmation: Êtes-vous sur de vouloir supprimer la note «?%{id}?» ? + delete_confirmation: "Êtes-vous sur de vouloir supprimer la note «?%{id}?» ?" delete_item_title: Supprimer l'élément - delete_note_confirm: Êtes-vous sur de vouloir supprimer la note «?%{id}?» ? + delete_note_confirm: "Êtes-vous sur de vouloir supprimer la note «?%{id}?» ?" delete_note_title: Supprimer la note «?%{id}?» deleted_note: Supprimer la note «?%{id}?» edit_item_title: Modifier l'élément @@ -458,17 +454,17 @@ fr: number: currency: format: - delimiter: ',' - format: '%u%n' + delimiter: "," + format: "%u%n" precision: 2 - separator: . + separator: "." significant: false strip_insignificant_zeros: false - unit: $ + unit: "$" format: - delimiter: ',' + delimiter: "," precision: 2 - separator: . + separator: "." significant: false strip_insignificant_zeros: false human: @@ -477,7 +473,7 @@ fr: significant: true strip_insignificant_zeros: true storage_units: - format: '%n %u' + format: "%n %u" units: byte: one: Octet @@ -492,10 +488,10 @@ fr: change_identity_url: Modifier votre URL d'identité change_password: Modifier votre mot de passe current_authentication_type: Votre type d'authentification est %{auth_type} - edit_preferences: Éditer les préférences + edit_preferences: "Éditer les préférences" generate_new_token: Générer un nouveau jeton - generate_new_token_confirm: Êtes-vous sûr ? Générer un nouveau jeton va remplacer - le jeton existant et en interdire les utilisations externes. + generate_new_token_confirm: "Êtes-vous sûr ? Générer un nouveau jeton va remplacer + le jeton existant et en interdire les utilisations externes." is_false: faux is_true: vrai open_id_url: Votre URL OpenID est @@ -505,7 +501,7 @@ fr: à nouveau. show_number_completed: Montrer %{number} items réalisés sms_context_none: Aucun - staleness_starts_after: '"date de fraicher" dépassée à près %{days} days' + staleness_starts_after: "\"date de fraicher\" dépassée à près %{days} days" tabs: authentication: Authentification date_and_time: Date et heure @@ -529,10 +525,10 @@ fr: default_context_set: Définir le contexte par défaut du projet à %{default_context} default_tags_removed_notice: Supprimer les étiquettes par défaut delete_project: Supprimer projet - delete_project_confirmation: Êtes-vous sûr de vouloir supprimer le projet «?%{name}?» ? + delete_project_confirmation: "Êtes-vous sûr de vouloir supprimer le projet «?%{name}?» ?" delete_project_title: Supprimer le projet edit_project_settings: Modifier les paramètres du projet - edit_project_title: Éditer le projet + edit_project_title: "Éditer le projet" hidden_projects: Projets cachés hide_form: Cacher le formulaire hide_form_title: Cacher le formulaire nouveau projet @@ -568,8 +564,8 @@ fr: no_results: Aucun résultat à votre recherche. notes_matching_query: Notes correspondant à la requête projects_matching_query: Projets correspondant à la requête - tags_matching_query: Étiquettes correspondant à la requête - todos_matching_query: À faire correspondant à la requête + tags_matching_query: "Étiquettes correspondant à la requête" + todos_matching_query: "À faire correspondant à la requête" shared: add_action: Ajouter action add_actions: Ajouter actions @@ -581,7 +577,7 @@ fr: multiple_next_actions: Actions suivante multiples (une sur chaque ligne) project_for_all_actions: Projet pour toutes les actions separate_tags_with_commas: séparer avec des virgules - tags_for_all_actions: Étiquettes pour toutes les actions (sép. avec des virgules) + tags_for_all_actions: "Étiquettes pour toutes les actions (sép. avec des virgules)" toggle_multi: Ajouter plusieurs actions suivantes toggle_multi_title: Basculer formulaire action simple/multiple toggle_single: Ajouter action suivante @@ -676,7 +672,7 @@ fr: open_per_week_legend: actions: Actions weeks: Semaines Il ya - other_actions_label: (autres) + other_actions_label: "(autres)" projects: Projets running_time_all: Temps en cours de toutes les actions incomplètes running_time_all_legend: @@ -694,11 +690,11 @@ fr: tous les contextes tag_cloud_90days_description: Nuage d'étiquettes correspondant aux actions créées ou réalisées lors des 90 derniers jours. - tag_cloud_90days_title: Étiquettes pour les actions des 90 derniers jours + tag_cloud_90days_title: "Étiquettes pour les actions des 90 derniers jours" tag_cloud_description: Nuage d'étiquettes correspondant à la totalité des actions (réalisées, en cours, visibles ou cachées). - tag_cloud_title: Étiquettes pour toutes les actions - tags: Étiquettes + tag_cloud_title: "Étiquettes pour toutes les actions" + tags: "Étiquettes" time_of_day: Heure (toutes les actions) time_of_day_legend: number_of_actions: Nombre d'actions @@ -717,51 +713,50 @@ fr: totals_action_count: vous avez un total de %{count} actions totals_actions_completed: dont %{count} sont réalisées. totals_active_project_count: De ceux-ci %{count} sont des projets actifs - totals_blocked_actions: '%{count} dépendent de la réalisation de leurs actions' + totals_blocked_actions: "%{count} dépendent de la réalisation de leurs actions" totals_completed_project_count: et %{count} sont des projets réalisés. totals_context_count: Vous avez %{count} contextes. totals_deferred_actions: desquels %{count} sont des actions reportées dans l'échéancier totals_first_action: Depuis votre première action du %{date} totals_hidden_context_count: et %{count} sont des contextes cachés. - totals_hidden_project_count: '%{count} sont cachés' + totals_hidden_project_count: "%{count} sont cachés" totals_incomplete_actions: Vous avez %{count} actions en cours totals_project_count: Vous avez %{count} projets totals_tag_count: Vous avez %{count} étiquettes sur des actions. - totals_unique_tags: '%{count} étiquettes sont uniques.' - totals_visible_context_count: '%{count} sont des contextes visibles' + totals_unique_tags: "%{count} étiquettes sont uniques." + totals_visible_context_count: "%{count} sont des contextes visibles" within_one: Moins de 1 support: array: - last_word_connector: ', et' + last_word_connector: ", et" two_words_connector: et - words_connector: ',' + words_connector: "," select: prompt: Veuillez sélectionner time: am: am formats: - default: '%a, %d %b %Y %H:%M:%S %z' - long: '%B %d, %Y %H:%M' - month_day: '%B %d' - short: '%d %b %H:%M' - stats: '%a %d-%m' - time: '%H:%M' + default: "%a, %d %b %Y %H:%M:%S %z" + long: "%B %d, %Y %H:%M" + month_day: "%B %d" + short: "%d %b %H:%M" + stats: "%a %d-%m" + time: "%H:%M" pm: pm todos: action_deferred: L'action «?%{description}?» a été reportée action_deleted_error: La suppression de l'action a échoué action_deleted_success: L'action suivante à été supprimée avec succès - action_due_on: (action à terminer avant le %{date}) + action_due_on: "(action à terminer avant le %{date})" action_marked_complete: L'action '%{description}' a été marquée comme %{completed} - action_marked_complete_error: 'L''action ''%{description}'' n''a - PAS été marquée comme %{completed} a cause d''une erreur sur le serveur - ' + action_marked_complete_error: L'action '%{description}' n'a PAS + été marquée comme %{completed} a cause d'une erreur sur le serveur action_saved: Action sauvegardée action_saved_to_tickler: Action sauvegardée dans l'échéancier add_another_dependency: Ajouter une autre dépendance add_new_recurring: Ajouter une nouvelle action récurrente - added_dependency: '%{dependency} ajoutée comme dépendance' + added_dependency: "%{dependency} ajoutée comme dépendance" added_new_context: Nouveau context ajouté added_new_next_action: Nouvelle action suivante ajoutée added_new_next_action_plural: Nouvelles actions suivantes ajoutées @@ -775,10 +770,10 @@ fr: archived_tasks_title: TRACKS::Tâches réalisées archivées blocked_by: Bloqué par %{predecessors} calendar: - due_next_week: À réaliser la semaine prochaine - due_this_month: À réaliser avant la fin de %{month} - due_this_week: À réaliser avant la fin de cette semaine - due_today: À réaliser aujourd'hui + due_next_week: "À réaliser la semaine prochaine" + due_this_month: "À réaliser avant la fin de %{month}" + due_this_week: "À réaliser avant la fin de cette semaine" + due_today: "À réaliser aujourd'hui" get_in_ical_format: Télécharger au format iCal calendar_page_title: TRACKS::Calendrier cannot_add_dependency_to_completed_todo: Impossible d'ajouter cette action en @@ -800,7 +795,7 @@ fr: completed_rest_of_week: Complété dans le reste de cette semaine completed_tagged_page_title: TRACKS::Les tâches terminées avec marquer %{tag_name} completed_tasks_title: TRACKS::Tâches complétées - confirm_delete: Êtes-vous sûr de vouloir supprimer l'action '%{description}' ? + confirm_delete: "Êtes-vous sûr de vouloir supprimer l'action '%{description}' ?" context_changed: Contexte changé en %{name} convert_to_project: Faire projet defer_date_after_due_date: La date de report est après la date d'échéance. Veuillez @@ -820,7 +815,7 @@ fr: done: Terminé ? drag_action_title: Déplacer sur une autre action pour la rendre dépendante de cette action - due: Échéance + due: "Échéance" edit: Modifier edit_action: Modifier action edit_action_with_description: Modifier l'action '%{description}' @@ -843,7 +838,7 @@ fr: feed_title_in_project: dans le projet '%{project}' feeds: completed: 'Complété : %{date}' - due: 'Échéance : %{date}' + due: "Échéance : %{date}" has_x_pending: one: A une action en attente other: A %{count} actions en attente @@ -856,7 +851,7 @@ fr: mobile_todos_page_title: Toutes les actions new_related_todo_created: Une nouvelle tâche a été ajoutée qui appartient à cette tâche récurrente - new_related_todo_created_short: à créé une nouvelle tâche + new_related_todo_created_short: "à créé une nouvelle tâche" new_related_todo_not_created_short: n'a pas créé la tâche next_action_description: Description de la prochaine action next_action_needed: Vous devez soumettre au moins une prochaine action @@ -865,19 +860,19 @@ fr: completed: dans les %{count} derniers jours due_date: avec au plus la date d'échéance %{due_date} next_actions_due_date: - due_in_x_days: Échéance dans %{days} days - due_today: Échéance aujourd'hui - due_tomorrow: Échéance demain + due_in_x_days: "Échéance dans %{days} days" + due_today: "Échéance aujourd'hui" + due_tomorrow: "Échéance demain" overdue_by: Dépassée de %{days} jour overdue_by_plural: Dépassée de %{days} jours next_actions_title: Tracks - Prochaines Actions next_actions_title_additions: completed: Actions complétées - due_today: échéance aujourd'hui - due_within_a_week: échéance dans la semaine + due_today: "échéance aujourd'hui" + due_within_a_week: "échéance dans la semaine" no_actions_due_this_week: Pas actions à faire cette semaine no_last_completed_actions: Aucune action achevée trouvée - no_project: --Pas de projet-- + no_project: "--Pas de projet--" overdue: En retard pending: En attente recurrence: @@ -902,7 +897,7 @@ fr: - Jeudi - Vendredi - Samedi - due: Échéance + due: "Échéance" every_day: chaque jour every_month: chaque mois every_n: tous les %{n} @@ -957,23 +952,23 @@ fr: removed_predecessor: Suppression de %{successor} comme dépendance de %{predecessor} scheduled_overdue: Programmée pour apparaitre il y a %{days} jours see_all_completed: Vous pouvez voir toutes les actions accomplies %{link} - set_to_pending: '%{task} mise en attente' + set_to_pending: "%{task} mise en attente" show_from: Afficher depuis show_in_days: Afficher dans %{days} jours show_on_date: Afficher le %{date} show_today: Afficher aujourd'hui show_tomorrow: Afficher demain - star_action: Élire cette action - star_action_with_description: Élire l'action '%{description}' + star_action: "Élire cette action" + star_action_with_description: "Élire l'action '%{description}'" tagged_page_title: TRACKS::Étiquetté avec %{tag_name}' - tagged_with: étiquettées avec «?%{tag_name}?» - tags: Étiquettes (séparées par des virgules) + tagged_with: "étiquettées avec «?%{tag_name}?»" + tags: "Étiquettes (séparées par des virgules)" task_list_title: TRACKS::Lister les tâches tickler_items_due: one: Un élément de l'échéancier est arrivé à échéance ? rafraîchir la page pour le voir. - other: '%{count} éléments de l''échéancier sont arrivés à échéance ? rafraîchir - la page pour les voir.' + other: "%{count} éléments de l'échéancier sont arrivés à échéance ? rafraîchir + la page pour les voir." to_tickler: vers l'échéancier unable_to_add_dependency: Impossible d'ajouter la dépendance unresolved_dependency: La valeur saisie dans le champ dépendance ne correspond @@ -1048,5 +1043,5 @@ fr: one: Voir de 1 %{model} other: Afficher tous les %{count} %{model} zero: Aucun %{model} trouvés - page_gap: '...' - previous_label: «Précédent + page_gap: "..." + previous_label: "«Précédent" diff --git a/config/locales/he.yml b/config/locales/he.yml index 42c384f3..a71ebb65 100644 --- a/config/locales/he.yml +++ b/config/locales/he.yml @@ -3,894 +3,894 @@ he: activerecord: attributes: note: - created_at: נוצר ב - updated_at: עודכן ב + created_at: "נוצר ב" + updated_at: "עודכן ב" preference: - date_format: מבנה תאריך - due_style: סגנון תאריך יעד - first_name: שם פרטי - last_name: שם משפחה - locale: שפה - mobile_todos_per_page: מספר פעולות לדף (תצוגה ניידת) - refresh: תדירות רענון (בדקות) - review_period: תדירות רענון פרוייקט - show_completed_projects_in_sidebar: הצג פרוייקטים שהסתיימו בצד - show_hidden_contexts_in_sidebar: הצג הקשרים מוסתרים בצד - show_hidden_projects_in_sidebar: הצג פרוייקטים מוסתרים בצד - show_number_completed: הצג מספק פעולות שבוצעו - show_project_on_todo_done: עבור לעמוד הפרוייקט בסיום משימה - sms_context: דוא"ל ברירת מחדר עבור הקשר - sms_email: דואר מאת - staleness_starts: התחלת תפלות - time_zone: אזור זמן - title_date_format: מבנה תאריך כותרת - verbose_action_descriptors: תיאורי משימות מפורטים - week_starts: שבוע מתחיל ביום + date_format: "מבנה תאריך" + due_style: "סגנון תאריך יעד" + first_name: "שם פרטי" + last_name: "שם משפחה" + locale: "שפה" + mobile_todos_per_page: "מספר פעולות לדף (תצוגה ניידת)" + refresh: "תדירות רענון (בדקות)" + review_period: "תדירות רענון פרוייקט" + show_completed_projects_in_sidebar: "הצג פרוייקטים שהסתיימו בצד" + show_hidden_contexts_in_sidebar: "הצג הקשרים מוסתרים בצד" + show_hidden_projects_in_sidebar: "הצג פרוייקטים מוסתרים בצד" + show_number_completed: "הצג מספק פעולות שבוצעו" + show_project_on_todo_done: "עבור לעמוד הפרוייקט בסיום משימה" + sms_context: "דוא\"ל ברירת מחדר עבור הקשר" + sms_email: "דואר מאת" + staleness_starts: "התחלת תפלות" + time_zone: "אזור זמן" + title_date_format: "מבנה תאריך כותרת" + verbose_action_descriptors: "תיאורי משימות מפורטים" + week_starts: "שבוע מתחיל ביום" project: - default_context_name: הקשר ברירת מחדל - default_tags: תגיות ברירת מחדל - description: תיאור - name: שם + default_context_name: "הקשר ברירת מחדל" + default_tags: "תגיות ברירת מחדל" + description: "תיאור" + name: "שם" todo: - context: הקשר - description: תיאור - due: תאריך יעד - notes: פתקיות - predecessors: תלוי ב - project: פרוייקטים - show_from: הצג מ - tags: תגיות + context: "הקשר" + description: "תיאור" + due: "תאריך יעד" + notes: "פתקיות" + predecessors: "תלוי ב" + project: "פרוייקטים" + show_from: "הצג מ" + tags: "תגיות" user: - first_name: שם פרטי - last_name: שם משפחה + first_name: "שם פרטי" + last_name: "שם משפחה" errors: full_messages: - format: '%{attribute} %{message}' + format: "%{attribute} %{message}" messages: - accepted: חייב להתקבל - blank: לא יכול להיות ריק - confirmation: אינו תואם את האישור - empty: לא יכול להיות ריק - equal_to: חייב להיות שווה ל %{count} - even: חייב להיות זוגי - exclusion: שמור - greater_than: חייב להיות גדול מ %{count} - greater_than_or_equal_to: חייב להיות גודל או שווה ל %{count} - inclusion: לא מוכל ברשימה - invalid: לא יכול להכיל את תו (',') הפסיק - less_than_or_equal_to: חייב להיות קטן או שווה ל %{count} - not_a_number: אינו מספר - odd: חייב להיות אי זוגי - record_invalid: אימות נכשל %{errors} - taken: כבר נמצא בשימוש - too_long: ארוך מדי (לכל היותר %{count} תווים( - too_short: קצר צדי (לכל הפחות %{count} תווים( - wrong_length: באורך לא נכון (צריך להיות %{count} תווים( + accepted: "חייב להתקבל" + blank: "לא יכול להיות ריק" + confirmation: "אינו תואם את האישור" + empty: "לא יכול להיות ריק" + equal_to: "חייב להיות שווה ל %{count}" + even: "חייב להיות זוגי" + exclusion: "שמור" + greater_than: "חייב להיות גדול מ %{count}" + greater_than_or_equal_to: "חייב להיות גודל או שווה ל %{count}" + inclusion: "לא מוכל ברשימה" + invalid: "לא יכול להכיל את תו (',') הפסיק" + less_than_or_equal_to: "חייב להיות קטן או שווה ל %{count}" + not_a_number: "אינו מספר" + odd: "חייב להיות אי זוגי" + record_invalid: "אימות נכשל %{errors}" + taken: "כבר נמצא בשימוש" + too_long: "ארוך מדי (לכל היותר %{count} תווים(" + too_short: "קצר צדי (לכל הפחות %{count} תווים(" + wrong_length: "באורך לא נכון (צריך להיות %{count} תווים(" models: project: attributes: name: - blank: לפרוייקט חייב להיות שם - taken: כבר קיים - too_long: על שם הפרוייקט להכיל פחות מ-256 תווים + blank: "לפרוייקט חייב להיות שם" + taken: "כבר קיים" + too_long: "על שם הפרוייקט להכיל פחות מ-256 תווים" template: - body: 'בעיות בשדות הבאים:' + body: "בעיות בשדות הבאים:" common: - action: פעולה - actions: פעולות + action: "פעולה" + actions: "פעולות" actions_midsentence: - one: פעולה - other: פעולות - zero: פעולות - add: הוסף - ajaxError: שגיאה בתגובה מהשרת - back: אחורה - bugs: באגים - cancel: בטל - context: הקשר - contexts: הקשרים - contribute: תרום - create: צור + one: "פעולה" + other: "פעולות" + zero: "פעולות" + add: "הוסף" + ajaxError: "שגיאה בתגובה מהשרת" + back: "אחורה" + bugs: "באגים" + cancel: "בטל" + context: "הקשר" + contexts: "הקשרים" + contribute: "תרום" + create: "צור" days_midsentence: - one: יום - other: ימים - zero: ימים - deferred: נדחה - description: תיאור - drag_handle: משוך - email: דוא"ל - errors_with_fields: שגירות בשדות המצויינים - first: ראשון - forth: ואילך - fourth: רביעי - go_back: חזור - last: אחרון - logout: צא - month: חודש - months: חודשים - next: הבא - none: הערה - not_available_abbr: ל/י + one: "יום" + other: "ימים" + zero: "ימים" + deferred: "נדחה" + description: "תיאור" + drag_handle: "משוך" + email: "דוא\"ל" + errors_with_fields: "שגירות בשדות המצויינים" + first: "ראשון" + forth: "ואילך" + fourth: "רביעי" + go_back: "חזור" + last: "אחרון" + logout: "צא" + month: "חודש" + months: "חודשים" + next: "הבא" + none: "הערה" + not_available_abbr: "ל/י" note: - one: פתקה - other: '%{count} פתקיות' - zero: אין פתקיות - notes: פתקיות - numbered_step: צעד %{number} - ok: אוקי - optional: אפשרי - previous: הקודם - project: פרוייקט - projects: פרוייקטים - recurring_todos: פעולות מחזוריות - review: ביקורת - search: חיפוש - second: שני - server_error: התרחשה שגיאת שרת - show_all: הצג הכל + one: "פתקה" + other: "%{count} פתקיות" + zero: "אין פתקיות" + notes: "פתקיות" + numbered_step: "צעד %{number}" + ok: "אוקי" + optional: "אפשרי" + previous: "הקודם" + project: "פרוייקט" + projects: "פרוייקטים" + recurring_todos: "פעולות מחזוריות" + review: "ביקורת" + search: "חיפוש" + second: "שני" + server_error: "התרחשה שגיאת שרת" + show_all: "הצג הכל" sort: - alphabetically: אלפבתי - alphabetically_confirm: לסדר את הפרוייקטים בסדר אלפבתי? הפעולה תחליף את הסדר - הקיים - alphabetically_title: סדר פרוייקטים אלפבטית - by_task_count: לפי מספר משימות - by_task_count_title: מיין לפי מספר משימות - by_task_count_title_confirm: לסדר את הפרוייקטים לפי מספר המשימות? הפעולה תחליף - את הסדר הקיים - sort: מיין - third: שלישי - todo: משימה - update: עדכן - website: אתר - week: שבוע - weeks: שבועות - wiki: ויקי + alphabetically: "אלפבתי" + alphabetically_confirm: "לסדר את הפרוייקטים בסדר אלפבתי? הפעולה תחליף את הסדר + הקיים" + alphabetically_title: "סדר פרוייקטים אלפבטית" + by_task_count: "לפי מספר משימות" + by_task_count_title: "מיין לפי מספר משימות" + by_task_count_title_confirm: "לסדר את הפרוייקטים לפי מספר המשימות? הפעולה תחליף + את הסדר הקיים" + sort: "מיין" + third: "שלישי" + todo: "משימה" + update: "עדכן" + website: "אתר" + week: "שבוע" + weeks: "שבועות" + wiki: "ויקי" contexts: - add_context: הוספת הקשר - all_completed_tasks_title: מסלולים::כל הפעולות שבוצעו במלואן בהקשר '%{context_name}' - completed_tasks_title: מסלולים::פעולות שבוצעו במלואן בהקשר '%{context_name}' - context_deleted: נמחק הקשר '%{name}' - context_hide: הסתרה מעמוד הבית? - context_name: שם הקשר - delete_context: מחק הקשר - delete_context_confirmation: האם למחוק את ההקשר '%{name}'? יש להזהר מפני שפעולה - זו מתחוק את כל הפעולות המחזוריות בהקשר זה - delete_context_title: מחיקת הקשר - edit_context: עריכת הקשר - hidden_contexts: הקשרים מוסתרים - hide_form: הסתרת טופס - hide_form_title: הסתרת טופס הקשר חדש - last_completed_in_context: בהקשר זה (אחרונות %{number}) - new_context_post: ''' יווצרו בנוסף. האם להמשיך?' - new_context_pre: הקשר חדש ' - no_contexts_active: אין כרגע הקשרים פעילים - no_contexts_hidden: אין כרגע הקשרים מוסתרים - save_status_message: הקשר נשמר - show_form: יצירת הקשר חדש - show_form_title: הוספת הקשר - status_active: ההקשר פעיל - status_hidden: ההקשר מוסתר - todos_append: בהקשר זה - update_status_message: שונה שם ההקשר - visible_contexts: הקשרים גלויים + add_context: "הוספת הקשר" + all_completed_tasks_title: "מסלולים::כל הפעולות שבוצעו במלואן בהקשר '%{context_name}'" + completed_tasks_title: "מסלולים::פעולות שבוצעו במלואן בהקשר '%{context_name}'" + context_deleted: "נמחק הקשר '%{name}'" + context_hide: "הסתרה מעמוד הבית?" + context_name: "שם הקשר" + delete_context: "מחק הקשר" + delete_context_confirmation: "האם למחוק את ההקשר '%{name}'? יש להזהר מפני שפעולה + זו מתחוק את כל הפעולות המחזוריות בהקשר זה" + delete_context_title: "מחיקת הקשר" + edit_context: "עריכת הקשר" + hidden_contexts: "הקשרים מוסתרים" + hide_form: "הסתרת טופס" + hide_form_title: "הסתרת טופס הקשר חדש" + last_completed_in_context: "בהקשר זה (אחרונות %{number})" + new_context_post: "' יווצרו בנוסף. האם להמשיך?" + new_context_pre: "הקשר חדש '" + no_contexts_active: "אין כרגע הקשרים פעילים" + no_contexts_hidden: "אין כרגע הקשרים מוסתרים" + save_status_message: "הקשר נשמר" + show_form: "יצירת הקשר חדש" + show_form_title: "הוספת הקשר" + status_active: "ההקשר פעיל" + status_hidden: "ההקשר מוסתר" + todos_append: "בהקשר זה" + update_status_message: "שונה שם ההקשר" + visible_contexts: "הקשרים גלויים" data: - import_errors: שגיאות ביבוא - import_successful: יבוא בוצע בהצלחה + import_errors: "שגיאות ביבוא" + import_successful: "יבוא בוצע בהצלחה" date: formats: - default: '%Y-%m-%d ' - long: '%B %d, %Y ' - longer: '%A %B %d, %Y' - short: '%b %d ' + default: "%Y-%m-%d" + long: "%B %d, %Y" + longer: "%A %B %d, %Y" + short: "%b %d" datetime: distance_in_words: about_x_hours: - one: כשעה - other: כ-%{count} שעות + one: "כשעה" + other: "כ-%{count} שעות" about_x_months: - one: כחודש - other: כ-%{count} חודשים + one: "כחודש" + other: "כ-%{count} חודשים" about_x_years: - one: כשנה - other: כ-%{count} שנים + one: "כשנה" + other: "כ-%{count} שנים" almost_x_years: - one: כמעט שנה - other: כמעט %{count} שנים - half_a_minute: חצי דקה + one: "כמעט שנה" + other: "כמעט %{count} שנים" + half_a_minute: "חצי דקה" less_than_x_minutes: - one: פחות מדקה - other: פחות מ-%{count} דקות - zero: פחות מדקה + one: "פחות מדקה" + other: "פחות מ-%{count} דקות" + zero: "פחות מדקה" less_than_x_seconds: - one: פחות משנייה - other: פחות מ-%{count} שניות - zero: פחות משנייה + one: "פחות משנייה" + other: "פחות מ-%{count} שניות" + zero: "פחות משנייה" over_x_years: - one: מעלה לשנה - other: מעל %{count} שנים + one: "מעלה לשנה" + other: "מעל %{count} שנים" x_days: - one: יום - other: '%{count} ימים' + one: "יום" + other: "%{count} ימים" x_minutes: - one: דקה - other: '%{count} דקות' + one: "דקה" + other: "%{count} דקות" x_months: - one: חודש - other: '%{count} חודשים' + one: "חודש" + other: "%{count} חודשים" x_seconds: - one: שנייה - other: '%{count} שניות' + one: "שנייה" + other: "%{count} שניות" prompts: - day: יום - hour: שעה - minute: דקה - month: חודש - second: שניות - year: שנה + day: "יום" + hour: "שעה" + minute: "דקה" + month: "חודש" + second: "שניות" + year: "שנה" errors: user_unauthorized: '401 לא מאושר: רק משתמשים בדרגת מנהל רשאים להפעיל פעולה זו' feedlist: - actions_completed_last_week: פעולות שהסתיימו בשבעת הימים האחרונים - actions_due_next_week: פעולות שיש לבצע בשבעת הימים הקרובים - actions_due_today: פעולות לביצוע היום או מוקדם יותר - active_projects_wo_next: פרוייקטים פעילים ללא פעולות המשך - active_starred_actions: כל הפעולות הפעילות והמדגשות - all_actions: כל הפעולות - all_contexts: כל ההקשרים - all_projects: כל הפרוייקטים - choose_context: בחירת ההקשר עבורו דרושה הזנה - choose_project: בחירת הפרוייקט עבורו דרושה הזנה - context_centric_actions: הזנות עבור פעולות שלא נסתיימו בהקשר נתון - context_needed: צריך להיות לפחות הקשר אחד לפני שניתן לבקשר הזנה - ical_feed: הזנת iCal - last_fixed_number: '%{number} פעולות אחרונות' - legend: 'מקרא:' - notice_incomplete_only: 'הערה: כל ההזנות מציגות את כל הפעולות שלא סומנו כמבוצעות - אלא אם כן נבחר במפורש אחרת.' - plain_text_feed: הזנת טקסט פשוט - project_centric: הזנות עבור פעולות שלא הסתיימו בפרוייקט מסויים - project_needed: דרוש לפחות פרוייקט אחד לפני שניתן לבקש הזנה - projects_and_actions: פרוויקטים פעילים והפעולות שלהם - rss_feed: הזנת רסס - select_feed_for_context: בחירת ההזנה עבור ההקשר הנתון - select_feed_for_project: בחירת ההזנה עבור הפרוייקט + actions_completed_last_week: "פעולות שהסתיימו בשבעת הימים האחרונים" + actions_due_next_week: "פעולות שיש לבצע בשבעת הימים הקרובים" + actions_due_today: "פעולות לביצוע היום או מוקדם יותר" + active_projects_wo_next: "פרוייקטים פעילים ללא פעולות המשך" + active_starred_actions: "כל הפעולות הפעילות והמדגשות" + all_actions: "כל הפעולות" + all_contexts: "כל ההקשרים" + all_projects: "כל הפרוייקטים" + choose_context: "בחירת ההקשר עבורו דרושה הזנה" + choose_project: "בחירת הפרוייקט עבורו דרושה הזנה" + context_centric_actions: "הזנות עבור פעולות שלא נסתיימו בהקשר נתון" + context_needed: "צריך להיות לפחות הקשר אחד לפני שניתן לבקשר הזנה" + ical_feed: "הזנת iCal" + last_fixed_number: "%{number} פעולות אחרונות" + legend: "מקרא:" + notice_incomplete_only: "הערה: כל ההזנות מציגות את כל הפעולות שלא סומנו כמבוצעות + אלא אם כן נבחר במפורש אחרת." + plain_text_feed: "הזנת טקסט פשוט" + project_centric: "הזנות עבור פעולות שלא הסתיימו בפרוייקט מסויים" + project_needed: "דרוש לפחות פרוייקט אחד לפני שניתן לבקש הזנה" + projects_and_actions: "פרוויקטים פעילים והפעולות שלהם" + rss_feed: "הזנת רסס" + select_feed_for_context: "בחירת ההזנה עבור ההקשר הנתון" + select_feed_for_project: "בחירת ההזנה עבור הפרוייקט" footer: - send_feedback: שליחת משוב על גירסא %{version} + send_feedback: "שליחת משוב על גירסא %{version}" integrations: - applescript_next_action_prompt: 'תיאור הפעולות הבאות:' - applescript_success_after_id: נוצר - applescript_success_before_id: פעולת המשך עם זיהוי - gmail_description: חֲפִיץ להוספת מסלולים ל-Gmail - opensearch_description: חיפוש במסלולים + applescript_next_action_prompt: "תיאור הפעולות הבאות:" + applescript_success_after_id: "נוצר" + applescript_success_before_id: "פעולת המשך עם זיהוי" + gmail_description: "חֲפִיץ להוספת מסלולים ל-Gmail" + opensearch_description: "חיפוש במסלולים" layouts: mobile_navigation: contexts: 2-הקשרים - feeds: הזנות + feeds: "הזנות" home: 1-בית - logout: צא + logout: "צא" new_action: 0-פעולה חדשה - projects: פרוייקטים + projects: "פרוייקטים" starred: 4-מודגשים - tickler: מִזְכָּר + tickler: "מִזְכָּר" navigation: - admin: ניהול - api_docs: תיעוד ממשק תכנות - calendar: לוח שנה - calendar_title: לוח שנה של משימות לביצוע - completed_tasks: בוצע - completed_tasks_title: הסתיים - contexts_title: הקשרים - export: יצוא - export_title: יבוא ויצוא נתונים - feeds: הזנות - feeds_title: צפיה ברשימת ההזנות הזמינה - help: '?' - home: בית - home_title: בית - integrations_: שילוב מסלולים - manage_users: ניהול משתמשים - manage_users_title: הוספה או הסרה של משתמשים - notes_title: הצגת כל הפתקיות - organize: ארגון - preferences: העדפות - preferences_title: הצגת העדפותי - projects_title: פרוייקטים - recurring_todos: משימות מחזוריות - recurring_todos_title: ניהול פעולות מחזוריות - review_title: עריכצ ביקורת - search: חיפוש כל הפריטים - starred: מודגשים - starred_title: הצגת פעולות מודגשות - stats: סטטיסטיקה - stats_title: הצגת הסטטיסטיקה שלי - tickler: מִזְכָּר - tickler_title: מִזְכָּר - view: תצוגה - next_actions_rss_feed: הזנת רסס לפעולות המשך - toggle_contexts: הצגת שדות מוסתרים - toggle_contexts_title: הסתרת/הצגת שדות מוסתרים - toggle_notes: חשיפת פתקיות - toggle_notes_title: חשיפת כל הפתקיות + admin: "ניהול" + api_docs: "תיעוד ממשק תכנות" + calendar: "לוח שנה" + calendar_title: "לוח שנה של משימות לביצוע" + completed_tasks: "בוצע" + completed_tasks_title: "הסתיים" + contexts_title: "הקשרים" + export: "יצוא" + export_title: "יבוא ויצוא נתונים" + feeds: "הזנות" + feeds_title: "צפיה ברשימת ההזנות הזמינה" + help: "?" + home: "בית" + home_title: "בית" + integrations_: "שילוב מסלולים" + manage_users: "ניהול משתמשים" + manage_users_title: "הוספה או הסרה של משתמשים" + notes_title: "הצגת כל הפתקיות" + organize: "ארגון" + preferences: "העדפות" + preferences_title: "הצגת העדפותי" + projects_title: "פרוייקטים" + recurring_todos: "משימות מחזוריות" + recurring_todos_title: "ניהול פעולות מחזוריות" + review_title: "עריכצ ביקורת" + search: "חיפוש כל הפריטים" + starred: "מודגשים" + starred_title: "הצגת פעולות מודגשות" + stats: "סטטיסטיקה" + stats_title: "הצגת הסטטיסטיקה שלי" + tickler: "מִזְכָּר" + tickler_title: "מִזְכָּר" + view: "תצוגה" + next_actions_rss_feed: "הזנת רסס לפעולות המשך" + toggle_contexts: "הצגת שדות מוסתרים" + toggle_contexts_title: "הסתרת/הצגת שדות מוסתרים" + toggle_notes: "חשיפת פתקיות" + toggle_notes_title: "חשיפת כל הפתקיות" login: - account_login: כניסה לחשבון - cas_create_account: אם ברצונך לבקש יש להמשיך ל-%{signup_link} - cas_logged_in_greeting: שלום %{username}! הזיהוי הצליח - cas_login: התחברות שא"מ (שירות אימות מרכזי) - cas_no_user_found: '%{username} שלום! אין חשבון בשם זה במסלולים.' - cas_signup_link: בקשת משתמש - cas_username_not_found: לצערנו, לא קיים משתמש שא"מ בשם (%{username}) - log_in_again: כניסה מחודשת - logged_out: בוצעה יציאה מ-מסלולים - login_cas: הגעה אל שא"מ - login_standard: חזרה לכניסה הרגילה - login_with_openid: כניסה על OpenID - mobile_use_openid: '...או כניסה עם OpenID' - openid_identity_url_not_found: לצערנו, לא קיים משתמש עם כתובת זהות (%{identity_url}) - option_separator: או, - please_login: יש להכנס כדי להשתמש ב-מסלולים - session_time_out: פג תוקף הגישה. נא %{link} - session_will_expire: תוקף הגישה יפוג לאחר %{hours} שעה(ות) של חוסר פעילות. - session_will_not_expire: הגישה ללא תפוגה. - sign_in: כניסה - successful: כניסה בוצעה בהצלחה. ברוך שובך! - successful_with_session_info: 'כניסה מוצלחת:' - unsuccessful: כניסה נכשלה. - user_no_expiry: השארת חיבור + account_login: "כניסה לחשבון" + cas_create_account: "אם ברצונך לבקש יש להמשיך ל-%{signup_link}" + cas_logged_in_greeting: "שלום %{username}! הזיהוי הצליח" + cas_login: "התחברות שא\"מ (שירות אימות מרכזי)" + cas_no_user_found: "%{username} שלום! אין חשבון בשם זה במסלולים." + cas_signup_link: "בקשת משתמש" + cas_username_not_found: "לצערנו, לא קיים משתמש שא\"מ בשם (%{username})" + log_in_again: "כניסה מחודשת" + logged_out: "בוצעה יציאה מ-מסלולים" + login_cas: "הגעה אל שא\"מ" + login_standard: "חזרה לכניסה הרגילה" + login_with_openid: "כניסה על OpenID" + mobile_use_openid: "...או כניסה עם OpenID" + openid_identity_url_not_found: "לצערנו, לא קיים משתמש עם כתובת זהות (%{identity_url})" + option_separator: "או," + please_login: "יש להכנס כדי להשתמש ב-מסלולים" + session_time_out: "פג תוקף הגישה. נא %{link}" + session_will_expire: "תוקף הגישה יפוג לאחר %{hours} שעה(ות) של חוסר פעילות." + session_will_not_expire: "הגישה ללא תפוגה." + sign_in: "כניסה" + successful: "כניסה בוצעה בהצלחה. ברוך שובך!" + successful_with_session_info: "כניסה מוצלחת:" + unsuccessful: "כניסה נכשלה." + user_no_expiry: "השארת חיבור" models: preference: - due_in: תאריך יעד בעוד %{days} ימים - due_on: '- יעד ב%{date}' + due_in: "תאריך יעד בעוד %{days} ימים" + due_on: "- יעד ב%{date}" project: - feed_description: רשימת כל הפרוייקטים עבור %{username} - feed_title: פרוייקטים במסלולים + feed_description: "רשימת כל הפרוייקטים עבור %{username}" + feed_title: "פרוייקטים במסלולים" todo: - error_date_must_be_future: חייב להיות תאריך עתידי + error_date_must_be_future: "חייב להיות תאריך עתידי" user: - error_context_not_associated: מזהה הקשר %{context} אינו משוייך עם מזה משתמש - %{user}. - error_project_not_associated: מזהה פרוייקט %{project} אינו משוייך עם מזה משתמש - %{user}. + error_context_not_associated: "מזהה הקשר %{context} אינו משוייך עם מזה משתמש + %{user}." + error_project_not_associated: "מזהה פרוייקט %{project} אינו משוייך עם מזה משתמש + %{user}." notes: - delete_confirmation: האם למחוק את הפתקית '%{id}'? - delete_item_title: מחיקת פריט - delete_note_confirm: האם למחוק את הפתקית '%{id}'? - delete_note_title: מחיקת הפתקית '%{id}' - deleted_note: הפתקית '%{id}' נמחקה - edit_item_title: עריכת פריט - in_project: 'ב:' - no_notes_available: 'אין כרגע פתקיות: ניתן להוסיף פתקיות לפְּרוֹיֶקְטים ספציפיים - מעמוד הפְּרוֹיֶקְט' - note_header: פתקית %{id} - note_link_title: הצגת פתקית %{id} - note_location_link: 'בתוך:' - show_note_title: הצגת פתקית + delete_confirmation: "האם למחוק את הפתקית '%{id}'?" + delete_item_title: "מחיקת פריט" + delete_note_confirm: "האם למחוק את הפתקית '%{id}'?" + delete_note_title: "מחיקת הפתקית '%{id}'" + deleted_note: "הפתקית '%{id}' נמחקה" + edit_item_title: "עריכת פריט" + in_project: "ב:" + no_notes_available: "אין כרגע פתקיות: ניתן להוסיף פתקיות לפְּרוֹיֶקְטים ספציפיים + מעמוד הפְּרוֹיֶקְט" + note_header: "פתקית %{id}" + note_link_title: "הצגת פתקית %{id}" + note_location_link: "בתוך:" + show_note_title: "הצגת פתקית" number: currency: format: - delimiter: ',' - format: '%u%n ' - separator: . - unit: ₪ + delimiter: "," + format: "%u%n" + separator: "." + unit: "₪" format: - delimiter: ',' - separator: . + delimiter: "," + separator: "." human: storage_units: - format: '%u%n' + format: "%u%n" units: byte: - one: בייט - other: בתים - gb: ג'יגהבייט - kb: קילו בייט - mb: מגה בייט - tb: טרה בייט + one: "בייט" + other: "בתים" + gb: "ג'יגהבייט" + kb: "קילו בייט" + mb: "מגה בייט" + tb: "טרה בייט" preferences: - authentication_header: הזיהוי שלי - change_authentication_type: שינוי סוג הזדהות - change_identity_url: שינוי כתובת URL הזדהות - change_password: סינוי סיסמא - current_authentication_type: שיטת הזיהוי שלי היא %{auth_type} - edit_preferences: עריכת העדפות - generate_new_token: יצירת אסימון חדש - generate_new_token_confirm: בטוח? יצירת אסימון חדש תחליף את האסימון הקיים ותבטל - את השימוש בו. - is_false: שלילי - is_true: חיובי - open_id_url: כתובת זיהוי OpenID שלך היא - page_title: מסלולים::העדפות - page_title_edit: מסלולים::עריכת העדפות - password_changed: הסיסמא שונתה, יש להיכנס שנית. - show_number_completed: הצג %{number} פריטים שהסתיימו - sms_context_none: ללא - staleness_starts_after: תפלות מתחילה לאחר %{days} ימים + authentication_header: "הזיהוי שלי" + change_authentication_type: "שינוי סוג הזדהות" + change_identity_url: "שינוי כתובת URL הזדהות" + change_password: "סינוי סיסמא" + current_authentication_type: "שיטת הזיהוי שלי היא %{auth_type}" + edit_preferences: "עריכת העדפות" + generate_new_token: "יצירת אסימון חדש" + generate_new_token_confirm: "בטוח? יצירת אסימון חדש תחליף את האסימון הקיים ותבטל + את השימוש בו." + is_false: "שלילי" + is_true: "חיובי" + open_id_url: "כתובת זיהוי OpenID שלך היא" + page_title: "מסלולים::העדפות" + page_title_edit: "מסלולים::עריכת העדפות" + password_changed: "הסיסמא שונתה, יש להיכנס שנית." + show_number_completed: "הצג %{number} פריטים שהסתיימו" + sms_context_none: "ללא" + staleness_starts_after: "תפלות מתחילה לאחר %{days} ימים" tabs: - authentication: אימות - date_and_time: תאריך ושעה - profile: פרופיל - tracks_behavior: התנהגות מסלולים - title: ההגדרות שלי - token_description: אסימון (משמש להזנות ישימוש ממשק תכתנות) - token_header: האסימון שלי - updated: העדפות עודכנו + authentication: "אימות" + date_and_time: "תאריך ושעה" + profile: "פרופיל" + tracks_behavior: "התנהגות מסלולים" + title: "ההגדרות שלי" + token_description: "אסימון (משמש להזנות ישימוש ממשק תכתנות)" + token_header: "האסימון שלי" + updated: "העדפות עודכנו" projects: - actions_in_project_title: פעולות בפרוייקט זה - active_projects: פרוייקטים פעילים - add_note: הוספת פתק - add_note_submit: הוספת פתק - add_project: הוספת פרוייקט - all_completed_tasks_title: מסלולים::הצגת רשימת כל המשימות שהושלמו בפרוייקט '%{project_name}' - completed_projects: פרוייקטים שהסתיימו - completed_tasks_title: מסלולים::הצגת רשימת המשימות שהושלמו בפרוייקט '%{project_name}' - default_context: הקשר ברירת המחדש לפרוייקט זה %{context} - default_context_removed: הקשר ברירת המחדל הוסר - default_context_set: בחירת הקשר ברירת המחדל לפרוייקט ל-%{default_context} - default_tags_removed_notice: תגיות ברירת המחדל הוסרו - delete_project: מחיקת פרוייקט - delete_project_confirmation: האם למחוק את הפרוייקט '%{name}'? - delete_project_title: מחיקת הפרוייקט - edit_project_settings: עריכת הגדרות פרוייקט - edit_project_title: עריכת פרוייקט - hidden_projects: פרוייקטים שהוסתרו - hide_form: הסתרת טופס - hide_form_title: הסתרת טופס פרוייקט חדש - is_active: פעיל - list_completed_projects: מסלולים::רשימת הפרוייקטים שהולשמו - list_projects: מסלולים::רשימת פרוייקטים - list_reviews: מסלולים::סקירה - no_default_context: אין הקשר ברירת מחדל לפרוייקט זה - no_last_completed_projects: לא נמצאו פרוייקטים שהסתיימו - no_last_completed_recurring_todos: לא נמצאו משימות מחזוריות שהסתיימו - no_notes_attached: אין כרגע פתקיות המקושרות לפרוייקט זה - no_projects: אין כרגע פרוייקטים - notes: פתקיות - notes_empty: אין פתקיות לפרוייקט זה - page_title: 'מסלולים::פרוייקט: %{project}' - project_saved_status: פרוייקט נשמר - project_state: הפרוייקט %{state} - set_default_tags_notice: בחירת תגיות ברירת המחדל ל-%{default_tags} - settings: הגדרות - show_form: הוספת פרוייקט - show_form_title: יצירת פרוייקט חדש - state: הפרוייקט במצב %{state} - status_project_name_changed: שם הפרוייקט שונה - this_project: פרוייקט זה - to_new_project_page: עבור לעמוד הפרוייקט החדש - was_marked_complete: סומן כבוצע - was_marked_hidden: סומן כמוסתר - with_default_context: עם הקשר בירת מחדל '%{context_name}' - with_default_tags: עם התגיות '%{tags}' כברירת המחדל - with_no_default_context: ללא הקשר ברירת מחדל - with_no_default_tags: וללא תגיות ברירת מחדל + actions_in_project_title: "פעולות בפרוייקט זה" + active_projects: "פרוייקטים פעילים" + add_note: "הוספת פתק" + add_note_submit: "הוספת פתק" + add_project: "הוספת פרוייקט" + all_completed_tasks_title: "מסלולים::הצגת רשימת כל המשימות שהושלמו בפרוייקט '%{project_name}'" + completed_projects: "פרוייקטים שהסתיימו" + completed_tasks_title: "מסלולים::הצגת רשימת המשימות שהושלמו בפרוייקט '%{project_name}'" + default_context: "הקשר ברירת המחדש לפרוייקט זה %{context}" + default_context_removed: "הקשר ברירת המחדל הוסר" + default_context_set: "בחירת הקשר ברירת המחדל לפרוייקט ל-%{default_context}" + default_tags_removed_notice: "תגיות ברירת המחדל הוסרו" + delete_project: "מחיקת פרוייקט" + delete_project_confirmation: "האם למחוק את הפרוייקט '%{name}'?" + delete_project_title: "מחיקת הפרוייקט" + edit_project_settings: "עריכת הגדרות פרוייקט" + edit_project_title: "עריכת פרוייקט" + hidden_projects: "פרוייקטים שהוסתרו" + hide_form: "הסתרת טופס" + hide_form_title: "הסתרת טופס פרוייקט חדש" + is_active: "פעיל" + list_completed_projects: "מסלולים::רשימת הפרוייקטים שהולשמו" + list_projects: "מסלולים::רשימת פרוייקטים" + list_reviews: "מסלולים::סקירה" + no_default_context: "אין הקשר ברירת מחדל לפרוייקט זה" + no_last_completed_projects: "לא נמצאו פרוייקטים שהסתיימו" + no_last_completed_recurring_todos: "לא נמצאו משימות מחזוריות שהסתיימו" + no_notes_attached: "אין כרגע פתקיות המקושרות לפרוייקט זה" + no_projects: "אין כרגע פרוייקטים" + notes: "פתקיות" + notes_empty: "אין פתקיות לפרוייקט זה" + page_title: "מסלולים::פרוייקט: %{project}" + project_saved_status: "פרוייקט נשמר" + project_state: "הפרוייקט %{state}" + set_default_tags_notice: "בחירת תגיות ברירת המחדל ל-%{default_tags}" + settings: "הגדרות" + show_form: "הוספת פרוייקט" + show_form_title: "יצירת פרוייקט חדש" + state: "הפרוייקט במצב %{state}" + status_project_name_changed: "שם הפרוייקט שונה" + this_project: "פרוייקט זה" + to_new_project_page: "עבור לעמוד הפרוייקט החדש" + was_marked_complete: "סומן כבוצע" + was_marked_hidden: "סומן כמוסתר" + with_default_context: "עם הקשר בירת מחדל '%{context_name}'" + with_default_tags: "עם התגיות '%{tags}' כברירת המחדל" + with_no_default_context: "ללא הקשר ברירת מחדל" + with_no_default_tags: "וללא תגיות ברירת מחדל" search: - contexts_matching_query: הקשרים תואמים לשאילתא - no_results: החיפוש לא הניב תוצאות - notes_matching_query: פתקיות תואמות שאילתא - projects_matching_query: פרוייקטים תואמים שאילתא - tags_matching_query: תגיות תואמות לשאילתא - todos_matching_query: משימות תואמות שאילתא + contexts_matching_query: "הקשרים תואמים לשאילתא" + no_results: "החיפוש לא הניב תוצאות" + notes_matching_query: "פתקיות תואמות שאילתא" + projects_matching_query: "פרוייקטים תואמים שאילתא" + tags_matching_query: "תגיות תואמות לשאילתא" + todos_matching_query: "משימות תואמות שאילתא" shared: - add_action: הוספת פעולה - add_actions: הוספת פעולה - add_context: הוספת הקשר - context_for_all_actions: הקשר לכל הפעולות - hide_action_form_title: הסתרת טופס פעולות חדשות - hide_form: הסתרת טופס - make_actions_dependent: יצירת תלות בין פעולות - multiple_next_actions: פעולות המשך מרובות (פעולה אחת בשורה) - project_for_all_actions: פרוייקט לכל הפעולות - separate_tags_with_commas: מופרד בפסיקים - tags_for_all_actions: תגיות לכל הפעולות (יש להפריד בפסיקים) - toggle_multi: הוספת פעולות המשך מרובות - toggle_multi_title: טופס שינוי מצב פעולה בודדת / פעולות מרובות - toggle_single: הוספת פעולת המשך - toggle_single_title: הוספת פעולת המשך חדשה + add_action: "הוספת פעולה" + add_actions: "הוספת פעולה" + add_context: "הוספת הקשר" + context_for_all_actions: "הקשר לכל הפעולות" + hide_action_form_title: "הסתרת טופס פעולות חדשות" + hide_form: "הסתרת טופס" + make_actions_dependent: "יצירת תלות בין פעולות" + multiple_next_actions: "פעולות המשך מרובות (פעולה אחת בשורה)" + project_for_all_actions: "פרוייקט לכל הפעולות" + separate_tags_with_commas: "מופרד בפסיקים" + tags_for_all_actions: "תגיות לכל הפעולות (יש להפריד בפסיקים)" + toggle_multi: "הוספת פעולות המשך מרובות" + toggle_multi_title: "טופס שינוי מצב פעולה בודדת / פעולות מרובות" + toggle_single: "הוספת פעולת המשך" + toggle_single_title: "הוספת פעולת המשך חדשה" sidebar: - list_empty: אין - list_name_active_contexts: הקשרים פעילים - list_name_active_projects: פרוייקטים פעילים - list_name_completed_projects: פרוייקטים שהסתיימו - list_name_hidden_contexts: הקשרים מוסתרים - list_name_hidden_projects: פרוייקטים מוסתרים + list_empty: "אין" + list_name_active_contexts: "הקשרים פעילים" + list_name_active_projects: "פרוייקטים פעילים" + list_name_completed_projects: "פרוייקטים שהסתיימו" + list_name_hidden_contexts: "הקשרים מוסתרים" + list_name_hidden_projects: "פרוייקטים מוסתרים" states: - active: פעיל - active_plural: פעילים - blocked: נחסם - blocked_plural: חסומים - completed: הסתיים - completed_plural: הסתיימו - current: עדכני - current_plural: מעודכנים - hidden: מוסתרים - hidden_plural: מוסתרים - review: מתוארך - review_plural: מתוארכים - stalled: נעצר - stalled_plural: עצורים - visible: גלוי - visible_plural: גלויים + active: "פעיל" + active_plural: "פעילים" + blocked: "נחסם" + blocked_plural: "חסומים" + completed: "הסתיים" + completed_plural: "הסתיימו" + current: "עדכני" + current_plural: "מעודכנים" + hidden: "מוסתרים" + hidden_plural: "מוסתרים" + review: "מתוארך" + review_plural: "מתוארכים" + stalled: "נעצר" + stalled_plural: "עצורים" + visible: "גלוי" + visible_plural: "גלויים" stats: - action_completion_time_title: זמן סיום (כל הפעולות שהסתיימו) - action_selection_title: מסלולים::בחירת פעולה - actions: פעולות - actions_30days_title: פעולות ב-30 הימים האחרונים - actions_actions_avg_created_30days: ב-30 הימים האחרונים נוצרו בממוצע %{count} - פעולות - actions_avg_completed: והסתיימו בממוצע %{count} פעולות לחודש - actions_avg_completed_30days: והסתיימו בממוצע %{count} פעולות ליום - actions_avg_completion_time: מכל הפעוליות שנסתיימות הזמן הממוצע לסיום הוא %{count} - ימים - actions_avg_created: ב-12 החודשים האחרונים יוצרו במוצע %{count} פעולות + action_completion_time_title: "זמן סיום (כל הפעולות שהסתיימו)" + action_selection_title: "מסלולים::בחירת פעולה" + actions: "פעולות" + actions_30days_title: "פעולות ב-30 הימים האחרונים" + actions_actions_avg_created_30days: "ב-30 הימים האחרונים נוצרו בממוצע %{count} + פעולות" + actions_avg_completed: "והסתיימו בממוצע %{count} פעולות לחודש" + actions_avg_completed_30days: "והסתיימו בממוצע %{count} פעולות ליום" + actions_avg_completion_time: "מכל הפעוליות שנסתיימות הזמן הממוצע לסיום הוא %{count} + ימים" + actions_avg_created: "ב-12 החודשים האחרונים יוצרו במוצע %{count} פעולות" actions_day_of_week_legend: - day_of_week: יום בשבוע - number_of_actions: מספר פעולות - actions_day_of_week_title: יום בשבוע (כל הפעולות) + day_of_week: "יום בשבוע" + number_of_actions: "מספר פעולות" + actions_day_of_week_title: "יום בשבוע (כל הפעולות)" actions_dow_30days_legend: - day_of_week: יום בשבוע - number_of_actions: מספר פעולות - actions_dow_30days_title: יום בשבוע (30 הימים האחרונים( - actions_further: ואילך - actions_last_year: פעולות בשנים האחרונות + day_of_week: "יום בשבוע" + number_of_actions: "מספר פעולות" + actions_dow_30days_title: "יום בשבוע (30 הימים האחרונים(" + actions_further: "ואילך" + actions_last_year: "פעולות בשנים האחרונות" actions_last_year_legend: - months_ago: חודשים קודם - number_of_actions: מספר הפעולות - actions_lastyear_title: פעולות ב-12 החודשים האחרונים - actions_min_completion_time: הזמן המזערי לסיום הוא %{time}. - actions_min_max_completion_days: יחס זמן מיזערי/מירבי לסיום הוא %{min}/%{max}. - actions_selected_from_week: פעולות נבחרות משבוע - click_to_return: הקלקה על %{link} תחזיר לעמוד הסטטיסטיקה - click_to_return_link: כאן - click_to_show_actions_from_week: הקלקה על %{link} תציג את הפעולות משבוע %{week} - ואילך - click_to_update_actions: הקלקה על הבר בגרף מעדכנת את הפעולה למטה - contexts: הקשרים - current_running_time_of_incomplete_visible_actions: זמן מצטבר לכל הפעולות הגלויות - index_title: מסלולים::סטטיסטיקה + months_ago: "חודשים קודם" + number_of_actions: "מספר הפעולות" + actions_lastyear_title: "פעולות ב-12 החודשים האחרונים" + actions_min_completion_time: "הזמן המזערי לסיום הוא %{time}." + actions_min_max_completion_days: "יחס זמן מיזערי/מירבי לסיום הוא %{min}/%{max}." + actions_selected_from_week: "פעולות נבחרות משבוע" + click_to_return: "הקלקה על %{link} תחזיר לעמוד הסטטיסטיקה" + click_to_return_link: "כאן" + click_to_show_actions_from_week: "הקלקה על %{link} תציג את הפעולות משבוע %{week} + ואילך" + click_to_update_actions: "הקלקה על הבר בגרף מעדכנת את הפעולה למטה" + contexts: "הקשרים" + current_running_time_of_incomplete_visible_actions: "זמן מצטבר לכל הפעולות הגלויות" + index_title: "מסלולים::סטטיסטיקה" labels: - avg_completed: הסתיימו בממוצע - avg_created: נוצרו בממוצע - completed: הסתיימו - created: נוצרו - month_avg_completed: '%{months} הסתיימו בממוצע לחודש' - month_avg_created: '%{months} נוצרו בממוצע לחודש' + avg_completed: "הסתיימו בממוצע" + avg_created: "נוצרו בממוצע" + completed: "הסתיימו" + created: "נוצרו" + month_avg_completed: "%{months} הסתיימו בממוצע לחודש" + month_avg_created: "%{months} נוצרו בממוצע לחודש" legend: - actions: פעולות - day_of_week: יום בשבוע - months_ago: חודשים קודם - number_of_actions: מספר פעולות - number_of_days: מספר ימים קודם לכן - percentage: אחוז - running_time: זמן מצטבר לפעולה (שבועות) - more_stats_will_appear: סטטיסטיקות נוספות יוצגו כאן לאחר הוספת פעולות נוספות. - no_actions_selected: לא נבחרו פעולות - no_tags_available: אין תגיות זמינות - open_per_week: פעולות המשך (מוצגות או מוסתרות) לכל שבוע + actions: "פעולות" + day_of_week: "יום בשבוע" + months_ago: "חודשים קודם" + number_of_actions: "מספר פעולות" + number_of_days: "מספר ימים קודם לכן" + percentage: "אחוז" + running_time: "זמן מצטבר לפעולה (שבועות)" + more_stats_will_appear: "סטטיסטיקות נוספות יוצגו כאן לאחר הוספת פעולות נוספות." + no_actions_selected: "לא נבחרו פעולות" + no_tags_available: "אין תגיות זמינות" + open_per_week: "פעולות המשך (מוצגות או מוסתרות) לכל שבוע" open_per_week_legend: - actions: פעולות - weeks: שבועות קודם לכן - other_actions_label: (אחרים) - projects: פרוייקטים - running_time_all: זמן מצטבר לכל הפעולות שלא הסתיימו + actions: "פעולות" + weeks: "שבועות קודם לכן" + other_actions_label: "(אחרים)" + projects: "פרוייקטים" + running_time_all: "זמן מצטבר לכל הפעולות שלא הסתיימו" running_time_all_legend: - actions: פעולות - percentage: אחוז - running_time: זמן מצטבר לפעולות (שבועות). הקלקה על הבר למידע נוסף + actions: "פעולות" + percentage: "אחוז" + running_time: "זמן מצטבר לפעולות (שבועות). הקלקה על הבר למידע נוסף" running_time_legend: - actions: פעולות - percentage: אחוז - weeks: זמן מצטבר לפעולות (שבועות). הקלקה על הבר למידע נוסף - spread_of_actions_for_all_context: פיזור פעולות לכל ההקשרים - spread_of_running_actions_for_visible_contexts: פיזור הפעולות להקשרים גלויים - tag_cloud_90days_description: ענן התגיות מכיל תגיות עבור פעולות שנוצרו או הסתיימו - ב-90 הימים האחרונים. - tag_cloud_90days_title: ענן תגיות לפעולות ב-90 הימים האחרונים - tag_cloud_description: ענן התגיות מכיל תגיות לכל הפעולות (הסתיימו, לא הסתיימו, - גלויות ו/או מוסתרות( - tag_cloud_title: ענן תגיות לכל הפעולות - tags: תגיות - time_of_day: זמן ביום (כל הפעולות) + actions: "פעולות" + percentage: "אחוז" + weeks: "זמן מצטבר לפעולות (שבועות). הקלקה על הבר למידע נוסף" + spread_of_actions_for_all_context: "פיזור פעולות לכל ההקשרים" + spread_of_running_actions_for_visible_contexts: "פיזור הפעולות להקשרים גלויים" + tag_cloud_90days_description: "ענן התגיות מכיל תגיות עבור פעולות שנוצרו או הסתיימו + ב-90 הימים האחרונים." + tag_cloud_90days_title: "ענן תגיות לפעולות ב-90 הימים האחרונים" + tag_cloud_description: "ענן התגיות מכיל תגיות לכל הפעולות (הסתיימו, לא הסתיימו, + גלויות ו/או מוסתרות(" + tag_cloud_title: "ענן תגיות לכל הפעולות" + tags: "תגיות" + time_of_day: "זמן ביום (כל הפעולות)" time_of_day_legend: - number_of_actions: מספר פעולות - time_of_day: זמן ביום - tod30: זמן ביום (30 ימים אחרוני) + number_of_actions: "מספר פעולות" + time_of_day: "זמן ביום" + tod30: "זמן ביום (30 ימים אחרוני)" tod30_legend: - number_of_actions: מספר פעולות - time_of_day: זמן ביום + number_of_actions: "מספר פעולות" + time_of_day: "זמן ביום" top10_longrunning: 10 הפרוייקטים שרצים הכי הרבה זמן - top10_projects: עשרת הפרוייקטים המובילים - top10_projects_30days: עשרת הפרוייקטים המובילים ב-30 הימים האחרונים + top10_projects: "עשרת הפרוייקטים המובילים" + top10_projects_30days: "עשרת הפרוייקטים המובילים ב-30 הימים האחרונים" top5_contexts: 5 הקשרים מובילים top5_visible_contexts_with_incomplete_actions: 5 ההקשרים המובילים עם פעולות שלא הסתיימו - totals: סיכומים - totals_action_count: קיימות %{count} פעולות בסך הכל - totals_actions_completed: '%{count} מהם הסתיימו' - totals_active_project_count: מתוכם, %{count} הם פרוייקטים פעילים - totals_blocked_actions: '%{count} תלויים בסיום המשימות שלהם' - totals_completed_project_count: '%{count} מהם פרוייקטים שנסתיימו.' - totals_context_count: קיימים %{count} הקשרים. - totals_deferred_actions: מהן %{count} פעולות דחויות במִזְכָּר - totals_first_action: מאז הפעולה הראשונה ב-%{date} - totals_hidden_context_count: ו-%{count} בהקשרים מוסתרים. - totals_hidden_project_count: '%{count} מוסתרים' - totals_incomplete_actions: קיימות %{count} פעולות שלא הסתיימו - totals_project_count: קיימים %{count} פרוייקטים. - totals_tag_count: קיימים %{count} תגיות המשוייכות לפעולות. - totals_unique_tags: מתוך תגיות אלו, %{count} ייחודיות. - totals_visible_context_count: מתוך אלו %{count} הקשרים גלויים - within_one: תוך 1 + totals: "סיכומים" + totals_action_count: "קיימות %{count} פעולות בסך הכל" + totals_actions_completed: "%{count} מהם הסתיימו" + totals_active_project_count: "מתוכם, %{count} הם פרוייקטים פעילים" + totals_blocked_actions: "%{count} תלויים בסיום המשימות שלהם" + totals_completed_project_count: "%{count} מהם פרוייקטים שנסתיימו." + totals_context_count: "קיימים %{count} הקשרים." + totals_deferred_actions: "מהן %{count} פעולות דחויות במִזְכָּר" + totals_first_action: "מאז הפעולה הראשונה ב-%{date}" + totals_hidden_context_count: "ו-%{count} בהקשרים מוסתרים." + totals_hidden_project_count: "%{count} מוסתרים" + totals_incomplete_actions: "קיימות %{count} פעולות שלא הסתיימו" + totals_project_count: "קיימים %{count} פרוייקטים." + totals_tag_count: "קיימים %{count} תגיות המשוייכות לפעולות." + totals_unique_tags: "מתוך תגיות אלו, %{count} ייחודיות." + totals_visible_context_count: "מתוך אלו %{count} הקשרים גלויים" + within_one: "תוך 1" support: array: - last_word_connector: ', ו-' - two_words_connector: ו- - words_connector: ',' + last_word_connector: ", ו-" + two_words_connector: "ו-" + words_connector: "," select: - prompt: יש לבצע בחירה + prompt: "יש לבצע בחירה" time: - am: לפנה"צ + am: "לפנה\"צ" formats: - default: '%a, %d %b %Y %H:%M:%S %z ' - long: '%B %d, %Y ' - month_day: '%B %d ' - short: '%d %b %H:%M ' - stats: '%a %d-%m' - pm: אחה"צ + default: "%a, %d %b %Y %H:%M:%S %z" + long: "%B %d, %Y" + month_day: "%B %d" + short: "%d %b %H:%M" + stats: "%a %d-%m" + pm: "אחה\"צ" todos: - action_deferred: הפעולה '%{description}' נדחתה - action_deleted_error: נכשלה מחיקת הפעולה - action_deleted_success: פעולת המשך נמחקה בהצלחה - action_due_on: (פעולה עד %{date}) - action_marked_complete: הפעולה '%{description}' סומנה כ- %{completed} - action_marked_complete_error: הפעולה '%{description}'־לא־ סומנה - כ - %{completed} עקב שגיאת שרת - action_saved: פעולה נשמרה - action_saved_to_tickler: פעולה נשמרה למִזְכָּר - add_another_dependency: הוספת תלות נוספת - add_new_recurring: הוספת פעולה מחזורית חדשה - added_dependency: נוספה %{dependency} כתלות - added_new_context: נוסף הקשר חדש - added_new_next_action: נוספה פעולת המשך חדשה - added_new_next_action_plural: נוספו פעולות המשך חדשות - added_new_next_action_singular: נוספה פעולת המשך חדשה - added_new_project: נוסף פרוייקט חדש - all_completed: כל הפעולות שהסתיימו - all_completed_here: כאן - all_completed_tagged_page_title: מסלולים::כל הפעולות שהסתיימו עם התגית %{tag_name} - append_in_this_project: בפרוייקט זה - archived_tasks_title: 'מסלולים: משימות שהסתיימו הועברו לארכיון' - blocked_by: נחסם על ידי %{predecessors} + action_deferred: "הפעולה '%{description}' נדחתה" + action_deleted_error: "נכשלה מחיקת הפעולה" + action_deleted_success: "פעולת המשך נמחקה בהצלחה" + action_due_on: "(פעולה עד %{date})" + action_marked_complete: "הפעולה '%{description}' סומנה כ- %{completed}" + action_marked_complete_error: "הפעולה '%{description}'־לא־ סומנה + כ - %{completed} עקב שגיאת שרת" + action_saved: "פעולה נשמרה" + action_saved_to_tickler: "פעולה נשמרה למִזְכָּר" + add_another_dependency: "הוספת תלות נוספת" + add_new_recurring: "הוספת פעולה מחזורית חדשה" + added_dependency: "נוספה %{dependency} כתלות" + added_new_context: "נוסף הקשר חדש" + added_new_next_action: "נוספה פעולת המשך חדשה" + added_new_next_action_plural: "נוספו פעולות המשך חדשות" + added_new_next_action_singular: "נוספה פעולת המשך חדשה" + added_new_project: "נוסף פרוייקט חדש" + all_completed: "כל הפעולות שהסתיימו" + all_completed_here: "כאן" + all_completed_tagged_page_title: "מסלולים::כל הפעולות שהסתיימו עם התגית %{tag_name}" + append_in_this_project: "בפרוייקט זה" + archived_tasks_title: "מסלולים: משימות שהסתיימו הועברו לארכיון" + blocked_by: "נחסם על ידי %{predecessors}" calendar: - due_next_week: לשבוע הבא - due_this_month: תאריך יעד ליתרת חודש %{month} - due_this_week: להמשך השבוע - due_today: להיום - get_in_ical_format: קבלת לוח שנה זה בפורמט iCal - calendar_page_title: מסלולים::לוח שנה - cannot_add_dependency_to_completed_todo: אין אפשרות להוסיף פעולה זו כתלות לפעולה - שהסתיימה! - clear_due_date: מחיקת תאריך יעד - clear_show_from_date: נקה הצגה מתאריך - completed: הסתיימו - completed_actions_with: 'פעולות שהסתיימו עם התגית %{tag_name} ' + due_next_week: "לשבוע הבא" + due_this_month: "תאריך יעד ליתרת חודש %{month}" + due_this_week: "להמשך השבוע" + due_today: "להיום" + get_in_ical_format: "קבלת לוח שנה זה בפורמט iCal" + calendar_page_title: "מסלולים::לוח שנה" + cannot_add_dependency_to_completed_todo: "אין אפשרות להוסיף פעולה זו כתלות לפעולה + שהסתיימה!" + clear_due_date: "מחיקת תאריך יעד" + clear_show_from_date: "נקה הצגה מתאריך" + completed: "הסתיימו" + completed_actions_with: "פעולות שהסתיימו עם התגית %{tag_name}" completed_in_archive: - one: קיימת בארכיון פעולה שהסתיימה. - other: קיימות %{count} פעולות שהסתיימו בארכיון. - completed_last_day: הסתיימו ב-24 שעות האחרונות - completed_last_x_days: הסתיימו ב-%{count} הימים האחרונים - completed_recurrence_completed: אין פעולת המשך לפעולה המחזורית שנמחקה. הפעולה - המחזורית נמחקה. - completed_recurring: הסתיימו משימות מחזוריות - completed_rest_of_month: הסתיימו ביתרת החודש הנוכחי - completed_rest_of_previous_month: הסתיימו ביתרת החודש הקודם - completed_rest_of_week: הסתיימו ביתרת שבוע זה - completed_tagged_page_title: מסלולים::משימות שהסתיימו עם תגית '%{tag_name}' - completed_tasks_title: מסלולים::משימות שהושלמו - confirm_delete: האם למחוק את הפעילות '%{description}'? - context_changed: הקשר שונה ל-%{name} - convert_to_project: יצירת פרוייקט - defer_date_after_due_date: תאריך הדחייה מאוחר מתאריך היעד. יש לערוך את תאריך היעד - בהתאם לפני בקשת הדחייה. + one: "קיימת בארכיון פעולה שהסתיימה." + other: "קיימות %{count} פעולות שהסתיימו בארכיון." + completed_last_day: "הסתיימו ב-24 שעות האחרונות" + completed_last_x_days: "הסתיימו ב-%{count} הימים האחרונים" + completed_recurrence_completed: "אין פעולת המשך לפעולה המחזורית שנמחקה. הפעולה + המחזורית נמחקה." + completed_recurring: "הסתיימו משימות מחזוריות" + completed_rest_of_month: "הסתיימו ביתרת החודש הנוכחי" + completed_rest_of_previous_month: "הסתיימו ביתרת החודש הקודם" + completed_rest_of_week: "הסתיימו ביתרת שבוע זה" + completed_tagged_page_title: "מסלולים::משימות שהסתיימו עם תגית '%{tag_name}'" + completed_tasks_title: "מסלולים::משימות שהושלמו" + confirm_delete: "האם למחוק את הפעילות '%{description}'?" + context_changed: "הקשר שונה ל-%{name}" + convert_to_project: "יצירת פרוייקט" + defer_date_after_due_date: "תאריך הדחייה מאוחר מתאריך היעד. יש לערוך את תאריך + היעד בהתאם לפני בקשת הדחייה." defer_x_days: - one: דחיה ביום - other: דחיה ב-%{count} ימים - deferred_actions_with: פעולות דחויות על תגית '%{tag_name}' - deferred_pending_actions: פעולות ממתינות/דחויות - deferred_tasks_title: מסלולים::מִזְכָּר - delete: מחיקה - delete_action: מחיקת פעולה - delete_recurring_action_confirm: האם למחוק את הפעילות המחזורית '%{description}'? - delete_recurring_action_title: מחיקת פעולה מחזורית - deleted_success: הפעולה נמחקה בהצלחה - depends_on: תלוי ב - depends_on_separate_with_commas: תלוי ב- (יש להפריד בפסיקים( - done: הסתיים? - drag_action_title: יש לגרור אל פעולה אחרת כדי ליצור תלות בה - due: יעד - edit: עריכה - edit_action: עריכת פעולה - edit_action_with_description: עריכת הפעולה '%{description}' - edit_recurring_todo: ערכית פעולות מחזוריות - error_completing_todo: ארעה שגיעה בסיום / הפעלה של משימה %{description} - error_deleting_item: ארעה שגיאה במחיקת הפריט %{description} - error_deleting_recurring: ארעה שגיעה במחיקת המשימה המחזורית '%{description}' - error_removing_dependency: התרחשה שגיאה בהסרת התלות - error_saving_recurring: ארעה שגיעה בשמירת המשימה המחזורית '%{description}' - error_starring: הדגשת המשימה '%{description}' לא צלחה - error_starring_recurring: ' הדגשת המשימה המחזורית ''%{description}'' לא צלחה' - error_toggle_complete: לא ניתן לסמן משימה כ"הסתיימה" - feed_title_in_context: בהקשר '%{context}' - feed_title_in_project: בפרוייקט '%{project}' + one: "דחיה ביום" + other: "דחיה ב-%{count} ימים" + deferred_actions_with: "פעולות דחויות על תגית '%{tag_name}'" + deferred_pending_actions: "פעולות ממתינות/דחויות" + deferred_tasks_title: "מסלולים::מִזְכָּר" + delete: "מחיקה" + delete_action: "מחיקת פעולה" + delete_recurring_action_confirm: "האם למחוק את הפעילות המחזורית '%{description}'?" + delete_recurring_action_title: "מחיקת פעולה מחזורית" + deleted_success: "הפעולה נמחקה בהצלחה" + depends_on: "תלוי ב" + depends_on_separate_with_commas: "תלוי ב- (יש להפריד בפסיקים(" + done: "הסתיים?" + drag_action_title: "יש לגרור אל פעולה אחרת כדי ליצור תלות בה" + due: "יעד" + edit: "עריכה" + edit_action: "עריכת פעולה" + edit_action_with_description: "עריכת הפעולה '%{description}'" + edit_recurring_todo: "ערכית פעולות מחזוריות" + error_completing_todo: "ארעה שגיעה בסיום / הפעלה של משימה %{description}" + error_deleting_item: "ארעה שגיאה במחיקת הפריט %{description}" + error_deleting_recurring: "ארעה שגיעה במחיקת המשימה המחזורית '%{description}'" + error_removing_dependency: "התרחשה שגיאה בהסרת התלות" + error_saving_recurring: "ארעה שגיעה בשמירת המשימה המחזורית '%{description}'" + error_starring: "הדגשת המשימה '%{description}' לא צלחה" + error_starring_recurring: "הדגשת המשימה המחזורית '%{description}' לא צלחה" + error_toggle_complete: "לא ניתן לסמן משימה כ\"הסתיימה\"" + feed_title_in_context: "בהקשר '%{context}'" + feed_title_in_project: "בפרוייקט '%{project}'" feeds: - completed: 'הסתיים: %{date}' - due: יעד %{date} + completed: "הסתיים: %{date}" + due: "יעד %{date}" has_x_pending: - one: בעל פעולה דחויה אחת - other: מכיל %{count} פעולת ממתינות - hidden_actions: פעולות מוסתרות - in_hidden_state: במצב מוסתר - in_pending_state: במצב המתנה - list_incomplete_next_actions: רשימת פעולות המשך שלא הסתיימו - list_incomplete_next_actions_with_limit: רישמת %{count} פעולות ההמשך שלא הסתיימו - mobile_todos_page_title: כל הפעולות - new_related_todo_created: משימה חדשה הוספה למשימה מחזורית זו - new_related_todo_created_short: יצירת משימה חדשה - new_related_todo_not_created_short: לא נוצרה משימה - next_action_description: תיאור פעולת המשך - next_action_needed: יש להזין לפחות פעולת המשך אחת - next_actions_description: 'מסנן:' + one: "בעל פעולה דחויה אחת" + other: "מכיל %{count} פעולת ממתינות" + hidden_actions: "פעולות מוסתרות" + in_hidden_state: "במצב מוסתר" + in_pending_state: "במצב המתנה" + list_incomplete_next_actions: "רשימת פעולות המשך שלא הסתיימו" + list_incomplete_next_actions_with_limit: "רישמת %{count} פעולות ההמשך שלא הסתיימו" + mobile_todos_page_title: "כל הפעולות" + new_related_todo_created: "משימה חדשה הוספה למשימה מחזורית זו" + new_related_todo_created_short: "יצירת משימה חדשה" + new_related_todo_not_created_short: "לא נוצרה משימה" + next_action_description: "תיאור פעולת המשך" + next_action_needed: "יש להזין לפחות פעולת המשך אחת" + next_actions_description: "מסנן:" next_actions_description_additions: - completed: ב-%{count} הימים האחרונים - due_date: 'עם תאריך יעד %{due_date} או מוקדם יותר ' + completed: "ב-%{count} הימים האחרונים" + due_date: "עם תאריך יעד %{due_date} או מוקדם יותר" next_actions_due_date: - due_in_x_days: יעד בעוד %{days} ימים - due_today: להיום - due_tomorrow: למחר - overdue_by: באיחור של %{days} יום - overdue_by_plural: באיחור של %{days} ימים - next_actions_title: מסלולים - פעולות המשך + due_in_x_days: "יעד בעוד %{days} ימים" + due_today: "להיום" + due_tomorrow: "למחר" + overdue_by: "באיחור של %{days} יום" + overdue_by_plural: "באיחור של %{days} ימים" + next_actions_title: "מסלולים - פעולות המשך" next_actions_title_additions: - completed: פעולות שהסתימו - due_today: להיום - due_within_a_week: תוך שבוע - no_actions_due_this_week: אין פעולות המיועדות להמשך השבוע - no_last_completed_actions: לא נמצאו פעולות שהסתיימו - no_project: --אין פרוייקט-- - overdue: באיחור - pending: ממתין + completed: "פעולות שהסתימו" + due_today: "להיום" + due_within_a_week: "תוך שבוע" + no_actions_due_this_week: "אין פעולות המיועדות להמשך השבוע" + no_last_completed_actions: "לא נמצאו פעולות שהסתיימו" + no_project: "--אין פרוייקט--" + overdue: "באיחור" + pending: "ממתין" recurrence: - daily: יומי - daily_every_number_day: כל %{number} ימים - daily_options: הגדרות לפעולות מחזוריות יומיות - day_x_on_every_x_month: ביום %{day} בכל %{month} חודש - ends_on: מסתיים ב - ends_on_date: מסתיים ב-%{date} - ends_on_number_times: מסתיים לאחר %{number} פעמים - every_work_day: בכל יום עבודה - monthly: חודשי - monthly_every_xth_day: יום %{day} ה -%{day_of_week} בכל %{month} חודש - monthly_options: הגדרות לפעולות בחזוריות חודשית - no_end_date: אין תאריך סיום + daily: "יומי" + daily_every_number_day: "כל %{number} ימים" + daily_options: "הגדרות לפעולות מחזוריות יומיות" + day_x_on_every_x_month: "ביום %{day} בכל %{month} חודש" + ends_on: "מסתיים ב" + ends_on_date: "מסתיים ב-%{date}" + ends_on_number_times: "מסתיים לאחר %{number} פעמים" + every_work_day: "בכל יום עבודה" + monthly: "חודשי" + monthly_every_xth_day: "יום %{day} ה -%{day_of_week} בכל %{month} חודש" + monthly_options: "הגדרות לפעולות בחזוריות חודשית" + no_end_date: "אין תאריך סיום" pattern: - due: יעד - every_day: כל יום - every_month: כל חודש - every_n: כל %{n} - every_xth_day_of_every_n_months: כל %{x} %{day} בכל %{n_months} - every_year_on: בכל שנה בתאריך %{date} - first: ראשון - fourth: רביעי - from: מ - last: אחרון - on_day_n: ביום %{n} - on_work_days: בימי עבודה - second: שני - show: הצגה - the_xth_day_of_month: היום ה- %{x} %{day} בחודש %{month} - third: שלישי - times: כ-%{number} פעמים - until: עד - weekly: שבועי - starts_on: מתחיל ב - weekly: שבועי - weekly_every_number_week: חוזר כל %{number} שבוע ב - weekly_options: הגדרות לפעולות במחזוריות שבועית - yearly: שנתית - yearly_every_x_day: כל %{month} %{day} - yearly_every_xth_day: יום %{day} ה -%{day_of_week} בכל %{month} חודש - yearly_options: הגדרות לפעולות במחזוריות שנתיות - recurrence_completed: אין פעולת המשך לפעולה המחזורית שסוימה. המחזוריות הסתיימה. - recurrence_period: תקופת מחזוריות - recurring_action_deleted: פעולה נמחקה. מאחר והפעולה מחזורית. פעולה חדשה נוספה - recurring_action_saved: פעולה מחזורית נשמרה - recurring_actions_title: מסלולים::פעולות מחזוריות - recurring_deleted_success: הפעולה המחזורית נמחקה בהצלחה - recurring_pattern_removed: הדפוס המחזורי הוסר מ-%{count} - recurring_todos: משימות מחזוריות - remove_dependency: הסרת תלות (לא מוחק את הפעולה) - removed_predecessor: הוסרה%{successor} כתלות של %{predecessor}.־ - scheduled_overdue: תוזמן לתצוגה לפני %{days} ימים - see_all_completed: 'ניתן לראות כל כל הפעולות שהסתיימו כאן: %{link}' - set_to_pending: '%{task} הוגדרה כממתינה' - show_from: הצגה מ- - show_in_days: הצג בעוד %{days} ימים - show_on_date: הצג בתאריך %{date} - show_today: הצגת היום - show_tomorrow: הצגת מחר - star_action: הדגשת פעולה - star_action_with_description: הדגשת פעילות '%{description}' - tagged_page_title: מסלולים::תגיות עם '%{tag_name}' - tagged_with: מתוייג ב- ‘%{tag_name}’ - tags: תגיות (מופרדות בפסיקים) - task_list_title: מסלולים::רשימת משימות + due: "יעד" + every_day: "כל יום" + every_month: "כל חודש" + every_n: "כל %{n}" + every_xth_day_of_every_n_months: "כל %{x} %{day} בכל %{n_months}" + every_year_on: "בכל שנה בתאריך %{date}" + first: "ראשון" + fourth: "רביעי" + from: "מ" + last: "אחרון" + on_day_n: "ביום %{n}" + on_work_days: "בימי עבודה" + second: "שני" + show: "הצגה" + the_xth_day_of_month: "היום ה- %{x} %{day} בחודש %{month}" + third: "שלישי" + times: "כ-%{number} פעמים" + until: "עד" + weekly: "שבועי" + starts_on: "מתחיל ב" + weekly: "שבועי" + weekly_every_number_week: "חוזר כל %{number} שבוע ב" + weekly_options: "הגדרות לפעולות במחזוריות שבועית" + yearly: "שנתית" + yearly_every_x_day: "כל %{month} %{day}" + yearly_every_xth_day: "יום %{day} ה -%{day_of_week} בכל %{month} חודש" + yearly_options: "הגדרות לפעולות במחזוריות שנתיות" + recurrence_completed: "אין פעולת המשך לפעולה המחזורית שסוימה. המחזוריות הסתיימה." + recurrence_period: "תקופת מחזוריות" + recurring_action_deleted: "פעולה נמחקה. מאחר והפעולה מחזורית. פעולה חדשה נוספה" + recurring_action_saved: "פעולה מחזורית נשמרה" + recurring_actions_title: "מסלולים::פעולות מחזוריות" + recurring_deleted_success: "הפעולה המחזורית נמחקה בהצלחה" + recurring_pattern_removed: "הדפוס המחזורי הוסר מ-%{count}" + recurring_todos: "משימות מחזוריות" + remove_dependency: "הסרת תלות (לא מוחק את הפעולה)" + removed_predecessor: "הוסרה%{successor} כתלות של %{predecessor}.־" + scheduled_overdue: "תוזמן לתצוגה לפני %{days} ימים" + see_all_completed: "ניתן לראות כל כל הפעולות שהסתיימו כאן: %{link}" + set_to_pending: "%{task} הוגדרה כממתינה" + show_from: "הצגה מ-" + show_in_days: "הצג בעוד %{days} ימים" + show_on_date: "הצג בתאריך %{date}" + show_today: "הצגת היום" + show_tomorrow: "הצגת מחר" + star_action: "הדגשת פעולה" + star_action_with_description: "הדגשת פעילות '%{description}'" + tagged_page_title: "מסלולים::תגיות עם '%{tag_name}'" + tagged_with: "מתוייג ב- ‘%{tag_name}’" + tags: "תגיות (מופרדות בפסיקים)" + task_list_title: "מסלולים::רשימת משימות" tickler_items_due: - one: אחד מהמִזְכָּרים הגיע לתאריך היעד - יש לרענן העמוד להצגה. - other: '%{count} מהמִזְכָּרים הגיעו לתאריך היעד - יש לרענן העמוד להצגה.' - to_tickler: למִזְכָּר - unable_to_add_dependency: לא ניתן להוסיף תלות - unresolved_dependency: הערך שהוכנס בתלות לא תאם לאף פעולה קיימת. הערך לא ישמר - עם יתרת הפעולה. להמשיך? - was_due_on_date: היה מיועד עד %{date} + one: "אחד מהמִזְכָּרים הגיע לתאריך היעד - יש לרענן העמוד להצגה." + other: "%{count} מהמִזְכָּרים הגיעו לתאריך היעד - יש לרענן העמוד להצגה." + to_tickler: "למִזְכָּר" + unable_to_add_dependency: "לא ניתן להוסיף תלות" + unresolved_dependency: "הערך שהוכנס בתלות לא תאם לאף פעולה קיימת. הערך לא ישמר + עם יתרת הפעולה. להמשיך?" + was_due_on_date: "היה מיועד עד %{date}" users: - account_signup: רישום לחשבון - auth_change_submit: שינוי שיטת אימות - auth_type_update_error: 'ארעה שגיאה בעידכון שיטת האימות: %{error_messages}' - auth_type_updated: שיטת אימות עודכנה - change_auth_type_title: מסלולים::שינוי שיטת הזדהות - change_authentication_type: שינוי שיטת הזדהות - change_password_prompt: יש לכתוב את הסיסמא החדשה בשדות שלמטה ולהקליק 'שנה סיסמא' - כדי להחליף את הסיסמא הנוכחית בחדשה. - change_password_submit: שינוי סיסמא - change_password_title: מסלולים::שינוי סיסמא - choose_password: בחירת סיסמא - confirm_password: אישור סיסמא - desired_login: משתמש כניסה רצוי - destroy_confirmation: 'אזהרה: הפעולה תמחק את המשתמש ''%{login}'', כל הפעולות, - הפרוייקטים והפתקים. האם להמשיך?' - destroy_error: ארעה שגיאה במחיקת המשתמש %{login} - destroy_successful: משתמש %{login} הושמד בהצלחה - destroy_user: השמדת משתמש - failed_to_delete_user: מחיקת המשתמש %{username} נכשלה - first_user_heading: 'ברוכים הבאים אל מסלולים. כדי להתחיל, יש ליצור חשבון מנהל:' - identity_url: כתובת זהות - label_auth_type: שיטת אימות - manage_users: ניהול משתמשים - new_password_label: סיסמא חדשה - new_token_generated: אסימון חדש נוצר בהצלחה - new_user_heading: 'רישום משתמש חדש:' - new_user_title: מסלולים::רישום משתמש כמנהל - no_signups_title: מסלולים::אין רישומים - openid_ok_pref_failed: כתובת הזהות %{url} .אומתה בהצלחה אך ארעה תקלה בשמירת הגדרות - ההזדהות - openid_url_verified: כתובת הזהות %{url} .אומתה בהצלחה ואופן האימות נקבע ל-OpenID. - password_confirmation_label: אימות סיסמא - password_updated: סיסמא עודכנה. - register_with_cas: עם משתמש השא"מ שלך - select_authentication_type: יש לבחור את שיטת הזיהוי החדשה ולהלליק 'שינוי שיטת - הזדהות' לבחירת השיטה הנוכחית - signup: רישום - signup_new_user: רשום משתמש חדש - signup_successful: רישום מוצלח עבור משתמש %{username}. - successfully_deleted_user: משתמש %{username} נמחק בהצלחה - total_actions: סך פעולות - total_contexts: סך הקשרים - total_notes: כל הפתקיות - total_projects: פרויקטים בסך הכל - total_users_count: קיימים %{count} משתמשים - user_created: משתמש נוצר - you_have_to_reset_your_password: יש לאפס את הסיסמא + account_signup: "רישום לחשבון" + auth_change_submit: "שינוי שיטת אימות" + auth_type_update_error: "ארעה שגיאה בעידכון שיטת האימות: %{error_messages}" + auth_type_updated: "שיטת אימות עודכנה" + change_auth_type_title: "מסלולים::שינוי שיטת הזדהות" + change_authentication_type: "שינוי שיטת הזדהות" + change_password_prompt: "יש לכתוב את הסיסמא החדשה בשדות שלמטה ולהקליק 'שנה סיסמא' + כדי להחליף את הסיסמא הנוכחית בחדשה." + change_password_submit: "שינוי סיסמא" + change_password_title: "מסלולים::שינוי סיסמא" + choose_password: "בחירת סיסמא" + confirm_password: "אישור סיסמא" + desired_login: "משתמש כניסה רצוי" + destroy_confirmation: "אזהרה: הפעולה תמחק את המשתמש '%{login}', כל הפעולות, הפרוייקטים + והפתקים. האם להמשיך?" + destroy_error: "ארעה שגיאה במחיקת המשתמש %{login}" + destroy_successful: "משתמש %{login} הושמד בהצלחה" + destroy_user: "השמדת משתמש" + failed_to_delete_user: "מחיקת המשתמש %{username} נכשלה" + first_user_heading: "ברוכים הבאים אל מסלולים. כדי להתחיל, יש ליצור חשבון מנהל:" + identity_url: "כתובת זהות" + label_auth_type: "שיטת אימות" + manage_users: "ניהול משתמשים" + new_password_label: "סיסמא חדשה" + new_token_generated: "אסימון חדש נוצר בהצלחה" + new_user_heading: "רישום משתמש חדש:" + new_user_title: "מסלולים::רישום משתמש כמנהל" + no_signups_title: "מסלולים::אין רישומים" + openid_ok_pref_failed: "כתובת הזהות %{url} .אומתה בהצלחה אך ארעה תקלה בשמירת הגדרות + ההזדהות" + openid_url_verified: "כתובת הזהות %{url} .אומתה בהצלחה ואופן האימות נקבע ל-OpenID." + password_confirmation_label: "אימות סיסמא" + password_updated: "סיסמא עודכנה." + register_with_cas: "עם משתמש השא\"מ שלך" + select_authentication_type: "יש לבחור את שיטת הזיהוי החדשה ולהלליק 'שינוי שיטת + הזדהות' לבחירת השיטה הנוכחית" + signup: "רישום" + signup_new_user: "רשום משתמש חדש" + signup_successful: "רישום מוצלח עבור משתמש %{username}." + successfully_deleted_user: "משתמש %{username} נמחק בהצלחה" + total_actions: "סך פעולות" + total_contexts: "סך הקשרים" + total_notes: "כל הפתקיות" + total_projects: "פרויקטים בסך הכל" + total_users_count: "קיימים %{count} משתמשים" + user_created: "משתמש נוצר" + you_have_to_reset_your_password: "יש לאפס את הסיסמא" will_paginate: - next_label: הבא » + next_label: "הבא »" page_entries_info: - multi_page: מציג %{model} %{from} - %{to} מתוך %{count} בסך הכל - multi_page_html: מציג %{model} %{from} - %{to} מתוך %{count} - בסך הכל + multi_page: "מציג %{model} %{from} - %{to} מתוך %{count} בסך הכל" + multi_page_html: "מציג %{model} %{from} - %{to} מתוך %{count} + בסך הכל" single_page: - one: מציג %{model} אחד - other: מציג את כל %{count} %{model} - zero: לא נמצא %{model} + one: "מציג %{model} אחד" + other: "מציג את כל %{count} %{model}" + zero: "לא נמצא %{model}" single_page_html: - one: מציג 1 %{model} - other: מציג כל %{count} %{model} - zero: לא נמצא %{model} - page_gap: '…' - previous_label: '« הקודם' + one: "מציג 1 %{model}" + other: "מציג כל %{count} %{model}" + zero: "לא נמצא %{model}" + page_gap: "…" + previous_label: "« הקודם" diff --git a/config/locales/nl.yml b/config/locales/nl.yml index 1fdfaec8..d3977360 100644 --- a/config/locales/nl.yml +++ b/config/locales/nl.yml @@ -45,7 +45,7 @@ nl: last_name: Achternaam errors: full_messages: - format: '%{attribute} %{message}' + format: "%{attribute} %{message}" messages: accepted: moet geaccepteerd worden blank: mag niet leeg zijn @@ -78,7 +78,7 @@ nl: 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' + other: "%{count} fouten voorkomen dat dit %{model} bewaard kan worden" common: action: Actie actions: Acties @@ -117,7 +117,7 @@ nl: not_available_abbr: n/b note: one: 1 notitie - other: '%{count} notities' + other: "%{count} notities" zero: geen notities notes: Notities numbered_step: Stap %{number} @@ -165,9 +165,9 @@ nl: edit_context: Bewerk context hidden_contexts: Verborgen contexten hide_form: Verberg formulier - hide_form_title: 'Verberg formulier voor nieuwe context ' + hide_form_title: Verberg formulier voor nieuwe context last_completed_in_context: in deze context (laatste %{number}) - new_context_post: ''' zal ook gemaakt worden. Weet u dit zeker?' + new_context_post: "' zal ook gemaakt worden. Weet u dit zeker?" new_context_pre: Nieuwe context ' no_contexts_active: Momenteel zijn er geen actieve contexten no_contexts_hidden: Momenteel zijn er geen verborgen contexten @@ -184,6 +184,7 @@ nl: data: import_errors: Er hebben zich fouten voorgedaan bij de import import_successful: De import was succesvol + import_destination_invalid: Verkeerde bestemming voor import date: abbr_day_names: - Zo @@ -194,7 +195,7 @@ nl: - Vr - Za abbr_month_names: - - + - - Jan - Feb - Maa @@ -216,14 +217,14 @@ nl: - Vrijdag - Zaterdag formats: - default: '%d-%m-%Y' - long: '%e %B %Y' - longer: '%A %d %B %Y' - month_day: '%B %d' - only_day: '%e' - short: '%e %b' + default: "%d-%m-%Y" + long: "%e %B %Y" + longer: "%A %d %B %Y" + month_day: "%B %d" + only_day: "%e" + short: "%e %b" month_names: - - + - - Januari - Februari - Maart @@ -268,16 +269,16 @@ nl: other: over %{count} jaren x_days: one: 1 dag - other: '%{count} dagen' + other: "%{count} dagen" x_minutes: one: 1 minuut - other: '%{count} minuten' + other: "%{count} minuten" x_months: one: 1 maand - other: '%{count} maanden' + other: "%{count} maanden" x_seconds: one: 1 seconde - other: '%{count} seconden' + other: "%{count} seconden" prompts: day: Dag hour: Uur @@ -286,11 +287,10 @@ nl: second: Seconden year: Jaar errors: - format: '%{attribute} %{message} ' + format: "%{attribute} %{message}" messages: accepted: moet geaccepteerd worden blank: kan niet leeg zijn - confirmation: komt niet met bevestiging overeen empty: kan niet leeg zijn equal_to: moet gelijk zijn aan %{count} even: moet even zijn @@ -307,6 +307,10 @@ nl: too_long: is te lang (maximum is %{count} karakters) too_short: is te kort (minimum is %{count} karakters) wrong_length: is de verkeerde lengte (zou %{count} karakters moeten zijn) + confirmation: Komt niet met %{attribute} overeen + other_than: moet anders zijn dan %{count} + present: moet leeg zijn + taken: is al bezet user_unauthorized: '401 Unauthorized: Alleen administratieve gebruikers mogen deze functie gebruiken.' feedlist: @@ -339,10 +343,6 @@ nl: footer: send_feedback: Stuur reactie op %{version} helpers: - button: - create: Maak %{model} - submit: Bewaar %{model} - update: '%{model} bijwerken' select: prompt: Maak een keuze submit: @@ -378,7 +378,7 @@ nl: export_title: Import en export van gegevens feeds: Feeds feeds_title: Zie een lijst met beschikbare feeds - help: '?' + help: "?" home: Start home_title: Start integrations_: Integreer Tracks @@ -407,6 +407,8 @@ nl: show_empty_containers_context: Toon lege contexten show_empty_containers_project: Toon lege projecten show_empty_containers_title: Toon of verberg lege projecten of contexten + import: import + import_title: importeer gegevens next_actions_rss_feed: RSS-feed van de acties toggle_contexts: Toggle ingeklapte contexten toggle_contexts_title: Maak ingeklapte contexten (on)zichtbaar @@ -426,7 +428,7 @@ nl: login_cas: Ga naar het CAS login_standard: Ga terug naar de standaard login login_with_openid: inloggen met een OpenID - mobile_use_openid: '... if inloggen met een OpenID' + mobile_use_openid: "... if inloggen met een OpenID" openid_identity_url_not_found: Sorry, geen gebruiker met die identiteit URL bestaat (%{identity_url}) option_separator: of, @@ -473,36 +475,35 @@ nl: number: currency: format: - delimiter: . - format: '%u %n' + delimiter: "." + format: "%u %n" precision: 2 - separator: ',' - unit: € + separator: "," + unit: "€" significant: false strip_insignificant_zeros: false format: - delimiter: . + delimiter: "." precision: 3 - separator: ',' + separator: "," significant: false strip_insignificant_zeros: false human: decimal_units: - format: '%n %u' + format: "%n %u" units: billion: Biljoen million: Miljoen quadrillion: Quadriljoen thousand: Duizend trillion: Triljoen - unit: false format: - delimiter: . + delimiter: "." precision: 1 significant: true strip_insignificant_zeros: true storage_units: - format: '%n %u' + format: "%n %u" units: byte: one: Byte @@ -513,10 +514,7 @@ nl: tb: TB percentage: format: - delimiter: false - precision: - format: - delimiter: false + format: "%n%" preferences: authentication_header: Uw authenticatie change_authentication_type: Verander uw authenticatietype @@ -597,7 +595,7 @@ nl: with_default_tags: en met '%{tags}' als de standaard tags with_no_default_context: zonder standaard context with_no_default_tags: en zonder standaard tags - last_completed_in_project: (laatste %{number}) + last_completed_in_project: "(laatste %{number})" search: contexts_matching_query: Contexten passend bij zoekopdracht no_results: Uw zoekopdracht heeft geen resultaten opgeleverd. @@ -701,8 +699,8 @@ nl: avg_created: Gem gemaakt completed: Afgerond created: Gemaakt - month_avg_completed: '%{months} gem afgerond per maand' - month_avg_created: '%{months} gem gemaakt per maand' + month_avg_completed: "%{months} gem afgerond per maand" + month_avg_created: "%{months} gem gemaakt per maand" legend: actions: Acties day_of_week: Dag van de week @@ -719,7 +717,7 @@ nl: open_per_week_legend: actions: Acties weeks: Weken geleden - other_actions_label: (anderen) + other_actions_label: "(anderen)" projects: Projecten running_time_all: Huidige looptijd van alle onvolledige acties running_time_all_legend: @@ -756,15 +754,15 @@ nl: acties totals: Totalen totals_action_count: u heeft een totaal van %{count} acties - totals_actions_completed: '%{count} van deze zijn voltooid.' + totals_actions_completed: "%{count} van deze zijn voltooid." totals_active_project_count: Van deze zijn %{count} actieve projecten - totals_blocked_actions: '%{count} zijn afhankelijk van de voltooiing van hun acties.' + totals_blocked_actions: "%{count} zijn afhankelijk van de voltooiing van hun acties." totals_completed_project_count: en %{count} zijn afgeronde projecten. totals_context_count: U heeft %{count} contexten. totals_deferred_actions: waarvan %{count} uitgestelde acties in de tickler zijn totals_first_action: Sinds uw eerste actie op %{date} totals_hidden_context_count: en %{count} zijn verborgen contexten. - totals_hidden_project_count: '%{count} zijn verborgen' + totals_hidden_project_count: "%{count} zijn verborgen" totals_incomplete_actions: U heeft %{count} onvolledige acties totals_project_count: U heeft %{count} projecten. totals_tag_count: U heeft %{count} tags geplaatst op acties. @@ -773,26 +771,26 @@ nl: within_one: Binnen 1 support: array: - last_word_connector: ', en' + last_word_connector: ", en" two_words_connector: en - words_connector: ',' + words_connector: "," select: prompt: Selecteer time: am: ochtend formats: - default: '%A, %d %B %Y %H:%M:%S %z' - long: '%A, %d. %B %Y, %H:%M' - month_day: '%d %B' - short: '%d %B %H:%M' - stats: '%a %d-%m' - time: '%H:%M' + default: "%A, %d %B %Y %H:%M:%S %z" + long: "%A, %d. %B %Y, %H:%M" + month_day: "%d %B" + short: "%d %B %H:%M" + stats: "%a %d-%m" + time: "%H:%M" pm: middag todos: action_deferred: De actie '%{description}' is uitgesteld action_deleted_error: Verwijderen van de actie is mislukt action_deleted_success: Actie succesvol verwijderd - action_due_on: (deadline actie op %{date}) + action_due_on: "(deadline actie op %{date})" action_marked_complete: De actie '%{description}' werd gemarkeerd als %{completed} action_marked_complete_error: De actie '%{description}' is niet @@ -801,7 +799,7 @@ nl: action_saved_to_tickler: Actie opgeslagen in tickler add_another_dependency: Nog een afhankelijkheid toevoegen add_new_recurring: Voeg een nieuwe terugkerende actie toe - added_dependency: '%{dependency} als afhankelijkheid toegevoegd.' + added_dependency: "%{dependency} als afhankelijkheid toegevoegd." added_new_context: Nieuwe context toegevoegd added_new_next_action: Nieuwe actie toegevoegd added_new_next_action_plural: Nieuwe acties toegevoegd @@ -848,7 +846,7 @@ nl: bewerken alvorens uitsteldatum aan te passen. defer_x_days: one: Een dag uitstellen - other: '%{count} dagen uitstellen' + other: "%{count} dagen uitstellen" deferred_actions_with: Uitgestelde acties met de tag '%{tag_name}' deferred_pending_actions: Uitgestelde/wachtende acties deferred_tasks_title: TRACKS::Tickler @@ -921,7 +919,7 @@ nl: due_within_a_week: deadline binnen een week no_actions_due_this_week: Geen acties met deadline in rest van deze week no_last_completed_actions: Geen afgeronde acties gevonden - no_project: -- Geen project -- + no_project: "-- Geen project --" overdue: Achterstallig pending: Wachtend recurrence: @@ -957,7 +955,7 @@ nl: from: vanaf last: laatste month_names: - - + - - januari - februari - maart @@ -988,7 +986,7 @@ nl: yearly_every_xth_day: De %{day} %{day_of_week} van %{month} yearly_options: Instellingen voor jaarlijks terugkerende acties recurrence_on: - due_date: 'de deadline van de actie ' + due_date: de deadline van de actie from_tickler: de datum wanneer de actie getoond moet worden (geen deadline) options: Gebruik de berekende datum voor show_always: altijd @@ -1005,10 +1003,10 @@ nl: recurring_pattern_removed: Het herhalingspatroon is verwijderd van %{count} recurring_todos: Terugkerende acties remove_dependency: Verwijder afhankelijkheid (zal niet de actie zelf verwijderen) - removed_predecessor: '''%{successor}'' is verwijderd als afhankelijkheid van ''%{predecessor}''.' + removed_predecessor: "'%{successor}' is verwijderd als afhankelijkheid van '%{predecessor}'." scheduled_overdue: Gepland om %{days} dagen geleden te tonen see_all_completed: Je kan alle afgeronde acties %{link} zien - set_to_pending: '''%{task}'' als wachtend ingesteld' + set_to_pending: "'%{task}' als wachtend ingesteld" show_from: Toon vanaf show_in_days: Toon over %{days} dagen show_on_date: Toon op %{date} @@ -1022,8 +1020,8 @@ nl: task_list_title: TRACKS::Toon acties tickler_items_due: 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.' + other: "%{count} tickerl items zijn nu zichtbaar - vernieuw de pagina om ze + te zien." to_tickler: naar tickler unable_to_add_dependency: Niet in staat om de afhankelijkheid toe te voegen unresolved_dependency: De waarde die u ingevoerd heeft in het afhankelijkheden @@ -1042,6 +1040,7 @@ nl: tag_completed: Afgeronde acties getagged met '%{param}' tag_deferred_pending: Uitgestelde/wachtende acties getagged met '%{param}' tag_hidden: Verborgen acties getagged met '%{param}' + context_without_project: Acties zonder project in %{param} no_actions: completed: Momenteel zijn er geen afgeronde acties completed_recurring: Momenteel zijn er geen afgeronden herhalende acties @@ -1063,6 +1062,11 @@ nl: tag_hidden: Momenteel zijn er geen verborgen acties title: Geen acties gevonden without_project: Momenteel zijn er geen acties zonder project + not_done_context: Momenteel zijn er geen openstaande acties in deze context + not_done_project: Momenteel zijn er geen openstaande acties in dit project + error: + invalid_due_date: Ongeldige deadline datum + invalid_show_from_date: Ongeldige datum voor tonen vanaf users: account_signup: Aanmelden voor een account auth_change_submit: Wijzigen authenticatietype @@ -1130,5 +1134,5 @@ nl: one: Toon 1 %{model} other: Toon alle %{count} %{model} zero: Geen %{model} gevonden - page_gap: '…' - previous_label: «Vorige + page_gap: "…" + previous_label: "«Vorige" From a67f88bcfa00ad23d51856c2569ca9de58149bd6 Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Sun, 9 Feb 2014 14:56:05 +0100 Subject: [PATCH 27/31] restore reset_password rake task --- Gemfile | 1 + Gemfile.lock | 2 ++ lib/tasks/reset_password.rake | 24 ++++++++++++++++++++++++ 3 files changed, 27 insertions(+) create mode 100644 lib/tasks/reset_password.rake diff --git a/Gemfile b/Gemfile index ccd4095d..a44705a1 100644 --- a/Gemfile +++ b/Gemfile @@ -31,6 +31,7 @@ gem "htmlentities" gem "swf_fu" gem "rails_autolink" gem "cache_digests" +gem "highline" # for reset_password rake task # To use ActiveModel has_secure_password gem 'bcrypt-ruby', '~> 3.0.0' diff --git a/Gemfile.lock b/Gemfile.lock index 1e39faed..5e4d2caf 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -105,6 +105,7 @@ GEM ffi (1.9.3) gherkin (2.12.2) multi_json (~> 1.3) + highline (1.6.20) hike (1.2.3) htmlentities (4.3.1) i18n (0.6.9) @@ -226,6 +227,7 @@ DEPENDENCIES cucumber-rails database_cleaner factory_girl_rails + highline htmlentities jquery-rails json diff --git a/lib/tasks/reset_password.rake b/lib/tasks/reset_password.rake new file mode 100644 index 00000000..3dbd8a3c --- /dev/null +++ b/lib/tasks/reset_password.rake @@ -0,0 +1,24 @@ +namespace :tracks do + desc 'Replace the password of USER with a new one.' + task :password => :environment do + require "highline/import" + + user = User.find_by_login(ENV['USER']) + if user.nil? + puts "Sorry, we couldn't find user '#{ENV['USER']}'. To specify a different user, pass USER=username to this task." + exit 0 + end + + puts "Changing Tracks password for #{ENV['USER']}." + password = ask("New password: ") { |q| q.echo = false } + password_confirmation = ask('Retype new password: ') { |q| q.echo = false } + + begin + user.change_password(password, password_confirmation) + rescue ActiveRecord::RecordInvalid + puts "Sorry, we couldn't change #{ENV['USER']}'s password: " + user.errors.each_full { |msg| puts "- #{msg}\n" } + end + end +end + From 35d48ea4c472aa3bd40366762be992a8ae66cdbe Mon Sep 17 00:00:00 2001 From: maqiv Date: Mon, 17 Feb 2014 13:38:49 +0100 Subject: [PATCH 28/31] Added possibility to add tracks as webapp on chrome mobile. --- app/views/layouts/mobile.m.erb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/views/layouts/mobile.m.erb b/app/views/layouts/mobile.m.erb index 35c88f5d..8301c184 100644 --- a/app/views/layouts/mobile.m.erb +++ b/app/views/layouts/mobile.m.erb @@ -7,6 +7,7 @@ + <%= stylesheet_link_tag "mobile", :media => 'handheld,all' %> <%= favicon_link_tag 'favicon.ico' %> From 39c52e03b4acfd879dd0f0d70c603ced3c9fb940 Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Sun, 23 Feb 2014 14:03:57 +0100 Subject: [PATCH 29/31] fix failing tests the date in fixtures is not set by timecop. That doesn't help here --- test/controllers/todos_controller_test.rb | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/test/controllers/todos_controller_test.rb b/test/controllers/todos_controller_test.rb index e13ca359..8540d450 100644 --- a/test/controllers/todos_controller_test.rb +++ b/test/controllers/todos_controller_test.rb @@ -715,13 +715,15 @@ class TodosControllerTest < ActionController::TestCase end def test_toggle_check_on_rec_todo_show_from_today - Timecop.travel(Time.local(2014, 1, 15)) do + Timecop.travel(2014, 1, 15) do login_as(:admin_user) # link todo_1 and recurring_todo_1 recurring_todo_1 = RecurringTodo.find(1) todo_1 = Todo.where(:recurring_todo_id => 1).first - today = Time.zone.now.at_midnight - 1.day + today = Time.zone.now.at_midnight + todo_1.due = today + assert todo_1.save # change recurrence pattern to monthly and set show_from to today recurring_todo_1.target = 'show_from_date' @@ -738,17 +740,14 @@ class TodosControllerTest < ActionController::TestCase # locate the new todo in tickler new_todo = Todo.where(:recurring_todo_id => recurring_todo_1.id, :state => 'deferred').first - assert !new_todo.nil? + assert !new_todo.nil?, "the todo should be in the tickler" assert_equal "Call Bill Gates every day", new_todo.description - # check that the new todo is not the same as todo_1 - assert_not_equal todo_1.id, new_todo.id - - # check that the new_todo is in the tickler to show next month - assert !new_todo.show_from.nil? + assert_not_equal todo_1.id, new_todo.id, "check that the new todo is not the same as todo_1" + assert !new_todo.show_from.nil?, "check that the new_todo is in the tickler to show next month" # do not use today here. It somehow gets messed up with the timezone calculation. - next_month = (Time.zone.now - 1.day + 1.month).at_midnight + 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 From 6077af3ed0cbf6bc339103447a694633e5f0d339 Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Sun, 2 Mar 2014 14:20:21 +0100 Subject: [PATCH 30/31] update gems including rails --- Gemfile.lock | 77 ++++++++++++++++++++++++++-------------------------- 1 file changed, 38 insertions(+), 39 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 5e4d2caf..324f5ae7 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -16,10 +16,9 @@ GIT GIT remote: https://github.com/tolk/tolk - revision: d0f4bb37024ceab9a076400df5be73e960d3847e + revision: da2888c181493027a68f04ba7e2b9060883cc464 specs: tolk (1.4.00) - protected_attributes safe_yaml (~> 0.8) will_paginate @@ -27,38 +26,38 @@ GEM remote: https://rubygems.org/ specs: RedCloth (4.2.9) - aasm (3.1.0) - actionmailer (4.0.2) - actionpack (= 4.0.2) + aasm (3.1.1) + actionmailer (4.0.3) + actionpack (= 4.0.3) mail (~> 2.5.4) - actionpack (4.0.2) - activesupport (= 4.0.2) + actionpack (4.0.3) + activesupport (= 4.0.3) builder (~> 3.1.0) erubis (~> 2.7.0) rack (~> 1.5.2) rack-test (~> 0.6.2) - activemodel (4.0.2) - activesupport (= 4.0.2) + activemodel (4.0.3) + activesupport (= 4.0.3) builder (~> 3.1.0) - activerecord (4.0.2) - activemodel (= 4.0.2) + activerecord (4.0.3) + activemodel (= 4.0.3) activerecord-deprecated_finders (~> 1.0.2) - activesupport (= 4.0.2) + activesupport (= 4.0.3) arel (~> 4.0.0) activerecord-deprecated_finders (1.0.3) - activesupport (4.0.2) + activesupport (4.0.3) i18n (~> 0.6, >= 0.6.4) minitest (~> 4.2) multi_json (~> 1.3) thread_safe (~> 0.1) tzinfo (~> 0.3.37) - acts_as_list (0.3.0) + acts_as_list (0.4.0) activerecord (>= 3.0) arel (4.0.2) - atomic (1.1.14) + atomic (1.1.15) bcrypt-ruby (3.0.1) builder (3.1.4) - bullet (4.7.1) + bullet (4.8.0) activesupport uniform_notifier (>= 1.4.0) cache_digests (0.3.1) @@ -70,7 +69,7 @@ GEM rack (>= 1.0.0) rack-test (>= 0.5.4) xpath (~> 2.0) - childprocess (0.4.0) + childprocess (0.5.1) ffi (~> 1.0, >= 1.0.11) codeclimate-test-reporter (0.3.0) simplecov (>= 0.7.1, < 1.0.0) @@ -81,7 +80,7 @@ GEM coffee-script-source execjs coffee-script-source (1.7.0) - cucumber (1.3.10) + cucumber (1.3.11) builder (>= 2.1.2) diff-lcs (>= 1.1.3) gherkin (~> 2.12) @@ -97,15 +96,15 @@ GEM docile (1.1.3) erubis (2.7.0) execjs (2.0.2) - factory_girl (4.3.0) + factory_girl (4.4.0) activesupport (>= 3.0.0) - factory_girl_rails (4.3.0) - factory_girl (~> 4.3.0) + factory_girl_rails (4.4.1) + factory_girl (~> 4.4.0) railties (>= 3.0.0) ffi (1.9.3) gherkin (2.12.2) multi_json (~> 1.3) - highline (1.6.20) + highline (1.6.21) hike (1.2.3) htmlentities (4.3.1) i18n (0.6.9) @@ -117,7 +116,7 @@ GEM mail (2.5.4) mime-types (~> 1.16) treetop (~> 1.4.8) - metaclass (0.0.2) + metaclass (0.0.4) mime-types (1.25.1) mini_portile (0.5.2) minitest (4.7.5) @@ -128,7 +127,7 @@ GEM mysql2 (0.3.15) nokogiri (1.6.1) mini_portile (~> 0.5.0) - polyglot (0.3.3) + polyglot (0.3.4) protected_attributes (1.0.5) activemodel (>= 4.0.1, < 5.0) rack (1.5.2) @@ -136,19 +135,19 @@ GEM rack (>= 1.1.3) rack-test (0.6.2) rack (>= 1.0) - rails (4.0.2) - actionmailer (= 4.0.2) - actionpack (= 4.0.2) - activerecord (= 4.0.2) - activesupport (= 4.0.2) + rails (4.0.3) + actionmailer (= 4.0.3) + actionpack (= 4.0.3) + activerecord (= 4.0.3) + activesupport (= 4.0.3) bundler (>= 1.3.0, < 2.0) - railties (= 4.0.2) + railties (= 4.0.3) sprockets-rails (~> 2.0.0) rails_autolink (1.1.5) rails (> 3.1) - railties (4.0.2) - actionpack (= 4.0.2) - activesupport (= 4.0.2) + railties (4.0.3) + actionpack (= 4.0.3) + activesupport (= 4.0.3) rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) rake (10.1.1) @@ -164,8 +163,8 @@ GEM railties (>= 4.0.0, < 5.0) sass (>= 3.1.10) sprockets-rails (~> 2.0.0) - selenium-webdriver (2.39.0) - childprocess (>= 0.2.5) + selenium-webdriver (2.40.0) + childprocess (>= 0.5.0) multi_json (~> 1.0) rubyzip (~> 1.0) websocket (~> 1.0.4) @@ -174,7 +173,7 @@ GEM multi_json simplecov-html (~> 0.8.0) simplecov-html (0.8.0) - sprockets (2.10.1) + sprockets (2.11.0) hike (~> 1.2) multi_json (~> 1.0) rack (~> 1.0) @@ -183,7 +182,7 @@ GEM actionpack (>= 3.0) activesupport (>= 3.0) sprockets (~> 2.8) - sqlite3 (1.3.8) + sqlite3 (1.3.9) swf_fu (2.0.4) coffee-script rails (>= 3.1) @@ -191,8 +190,8 @@ GEM libv8 (~> 3.16.14.0) ref thor (0.18.1) - thread_safe (0.1.3) - atomic + thread_safe (0.2.0) + atomic (>= 1.1.7, < 2) tilt (1.4.1) timecop (0.6.3) treetop (1.4.15) From b543f530e83849097fb614323f055779e2fcd344 Mon Sep 17 00:00:00 2001 From: Reinier Balt Date: Tue, 4 Mar 2014 17:08:22 +0100 Subject: [PATCH 31/31] add recent schema.rb --- db/schema.rb | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/db/schema.rb b/db/schema.rb index 96516f59..063744e8 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -15,7 +15,7 @@ ActiveRecord::Schema.define(version: 20130227205845) do create_table "contexts", force: true do |t| t.string "name", null: false - t.integer "position" + t.integer "position", default: 0 t.integer "user_id", default: 1 t.datetime "created_at" t.datetime "updated_at" @@ -85,11 +85,11 @@ ActiveRecord::Schema.define(version: 20130227205845) do add_index "preferences", ["user_id"], name: "index_preferences_on_user_id", using: :btree create_table "projects", force: true do |t| - t.string "name", null: false - t.integer "position" - t.integer "user_id", default: 1 - t.text "description" - t.string "state", limit: 20, null: false + t.string "name", null: false + t.integer "position", default: 0 + t.integer "user_id", default: 1 + t.text "description", limit: 16777215 + t.string "state", limit: 20, null: false t.datetime "created_at" t.datetime "updated_at" t.integer "default_context_id" @@ -104,17 +104,17 @@ ActiveRecord::Schema.define(version: 20130227205845) do add_index "projects", ["user_id"], name: "index_projects_on_user_id", using: :btree create_table "recurring_todos", force: true do |t| - t.integer "user_id", default: 1 - t.integer "context_id", null: false + t.integer "user_id", default: 1 + t.integer "context_id", null: false t.integer "project_id" - t.string "description", null: false - t.text "notes" - t.string "state", limit: 20, null: false + t.string "description", null: false + t.text "notes", limit: 16777215 + t.string "state", limit: 20, null: false t.datetime "start_from" t.string "ends_on" t.datetime "end_date" t.integer "number_of_occurences" - t.integer "occurences_count", default: 0 + t.integer "occurences_count", default: 0 t.string "target" t.integer "show_from_delta" t.string "recurring_period" @@ -123,7 +123,7 @@ ActiveRecord::Schema.define(version: 20130227205845) do t.integer "every_other2" t.integer "every_other3" t.string "every_day" - t.boolean "only_work_days", default: false + t.boolean "only_work_days", default: false t.integer "every_count" t.integer "weekday" t.datetime "completed_at" @@ -141,7 +141,7 @@ ActiveRecord::Schema.define(version: 20130227205845) do t.datetime "updated_at" end - add_index "sessions", ["session_id"], name: "index_sessions_on_session_id", using: :btree + add_index "sessions", ["session_id"], name: "sessions_session_id_index", using: :btree create_table "taggings", force: true do |t| t.integer "taggable_id" @@ -162,19 +162,19 @@ ActiveRecord::Schema.define(version: 20130227205845) do add_index "tags", ["name"], name: "index_tags_on_name", using: :btree create_table "todos", force: true do |t| - t.integer "context_id", null: false + t.integer "context_id", null: false t.integer "project_id" - t.string "description", null: false - t.text "notes" + t.string "description", null: false + t.text "notes", limit: 16777215 t.datetime "created_at" t.datetime "due" t.datetime "completed_at" - t.integer "user_id", default: 1 + t.integer "user_id", default: 1 t.datetime "show_from" - t.string "state", limit: 20, null: false + t.string "state", limit: 20, null: false t.integer "recurring_todo_id" t.datetime "updated_at" - t.text "rendered_notes" + t.text "rendered_notes", limit: 16777215 end add_index "todos", ["context_id"], name: "index_todos_on_context_id", using: :btree @@ -212,7 +212,7 @@ ActiveRecord::Schema.define(version: 20130227205845) do create_table "users", force: true do |t| t.string "login", limit: 80, null: false - t.string "crypted_password", limit: 60, null: false + t.string "crypted_password", limit: 60 t.string "token" t.boolean "is_admin", default: false, null: false t.string "first_name"