From 8d546ee164efeab128f1fb4b9160edd82d4b635f Mon Sep 17 00:00:00 2001 From: Godwin Date: Sun, 13 Sep 2015 14:06:46 -0700 Subject: [PATCH] Downloadble stats --- app/controllers/conferences_controller.rb | 67 +++++- app/views/application/excel.xls.haml | 18 ++ app/views/conferences/stats.html.haml | 1 + app/views/layouts/user_mailer.html.haml | 3 +- config/initializers/mime_types.rb | 12 +- .../html_records/Broadcast-message--.html | 2 +- ...age--conferences.MyBikeBike.broadcast.html | 7 +- .../data/html_records/Create-workshop--.html | 2 +- .../html_records/See-a-more-info-link--.html | 2 +- .../html_records/See-a-register-link--.html | 2 +- ...tart-registration-from-landing-page--.html | 2 +- ...ge--conferences.MyBikeBike.register-1.html | 7 +- ...ge--conferences.MyBikeBike.register-3.html | 5 +- ...from-landing-page--email_confirmation.html | 7 +- ...nding-page--registration_confirmation.html | 5 +- .../data/html_records/View-stats--.html | 2 +- ...w-stats--conferences.MyBikeBike.stats.html | 1 + ...ats--conferences.MyBikeBike.stats.xls.html | 46 +++++ config/locales/data/translation-info.yml | 47 +++++ config/locales/es.yml | 191 ++++++++++-------- features/registration_page.feature | 1 + 21 files changed, 314 insertions(+), 116 deletions(-) create mode 100644 app/views/application/excel.xls.haml create mode 100644 config/locales/data/html_records/View-stats--conferences.MyBikeBike.stats.xls.html diff --git a/app/controllers/conferences_controller.rb b/app/controllers/conferences_controller.rb index b0ff19f..f46d7e1 100644 --- a/app/controllers/conferences_controller.rb +++ b/app/controllers/conferences_controller.rb @@ -414,6 +414,7 @@ class ConferencesController < ApplicationController raise ActiveRecord::PremissionDenied unless (current_user && @this_conference.host?(current_user)) @registrations = ConferenceRegistration.where(:conference_id => @this_conference.id) + @total_registrations = 0 @donation_count = 0 @total_donations = 0 @@ -425,6 +426,15 @@ class ConferencesController < ApplicationController @allergies = [] @other = [] + if request.format.xls? + #I18n.backend.init_page(request, params) + @excel_data = { + :columns => [:name, :email, :city, :date, :languages, :arrival, :departure, :housing, :bike, :food, :allergies, :other, :fees_paid], + :key => 'articles.conference_registration.headings', + :data => [] + } + end + @registrations.each do |r| if r.is_attending @total_registrations += 1 @@ -432,15 +442,21 @@ class ConferencesController < ApplicationController @donation_count += 1 if r.registration_fees_paid @total_donations += r.registration_fees_paid unless r.registration_fees_paid.blank? - @housing[r.housing.to_sym] ||= 0 - @housing[r.housing.to_sym] += 1 - - @bikes[r.bike.to_sym] ||= 0 - @bikes[r.bike.to_sym] += 1 - @bike_count += 1 unless r.bike.to_sym == :none + unless r.housing.blank? + @housing[r.housing.to_sym] ||= 0 + @housing[r.housing.to_sym] += 1 + end + + unless r.bike.blank? + @bikes[r.bike.to_sym] ||= 0 + @bikes[r.bike.to_sym] += 1 + @bike_count += 1 unless r.bike.to_sym == :none + end - @food[r.food.to_sym] ||= 0 - @food[r.food.to_sym] += 1 + unless r.food.blank? + @food[r.food.to_sym] ||= 0 + @food[r.food.to_sym] += 1 + end @allergies << r.allergies unless r.allergies.blank? @other << r.other unless r.other.blank? @@ -448,9 +464,43 @@ class ConferencesController < ApplicationController JSON.parse(r.languages).each do |l| @languages[l.to_sym] ||= 0 @languages[l.to_sym] += 1 + end unless r.languages.blank? + + if @excel_data + user = User.find(r.user_id) + @excel_data[:data] << { + :name => user.firstname, + :email => user.email, + :date => r.created_at.strftime("%F %T"), + :city => r.city, + :languages => ((JSON.parse(r.languages || '[]').map { |x| I18n.t"languages.#{x}" }).join(', ').to_s), + :arrival => r.arrival.strftime("%F %T"), + :departure => r.departure.strftime("%F %T"), + :housing => (I18n.t"articles.conference_registration.questions.housing.#{r.housing || 'none'}"), + :bike => (I18n.t"articles.conference_registration.questions.bike.#{r.bike || 'none'}"), + :food => (I18n.t"articles.conference_registration.questions.food.#{r.food || 'meat'}"), + :fees_paid => (r.registration_fees_paid || 0.0), + :allergies => r.allergies || '', + :other => r.other || '' + } end end end + + if ENV["RAILS_ENV"] == 'test' && request.format.xls? + request.format = :html + respond_to do |format| + format.html { render :file => 'application/excel.xls.haml', :formats => [:xls] } + end + return + end + + respond_to do |format| + format.html + format.text { render :text => content } + format.xls { render 'application/excel' } + end + end def register @@ -620,6 +670,7 @@ class ConferencesController < ApplicationController when :done @amount = ((@registration.registration_fees_paid || 0) * 100).to_i.to_s.gsub(/^(.*)(\d\d)$/, '\1.\2') end + end def registrations diff --git a/app/views/application/excel.xls.haml b/app/views/application/excel.xls.haml new file mode 100644 index 0000000..621b186 --- /dev/null +++ b/app/views/application/excel.xls.haml @@ -0,0 +1,18 @@ +- key = @excel_data[:key] || 'excel.columns' +%html + %head + = inject_css! if ENV["RAILS_ENV"] == 'test' + %title + =_!'Excel Spreadsheet' + %body + %table + %thead + %tr + - @excel_data[:columns].each do |column| + %th=_"#{key}.#{column.to_s}" + %tbody + - @excel_data[:data].each do |row| + %tr + - @excel_data[:columns].each do |column| + %td=_!row[column] + \ No newline at end of file diff --git a/app/views/conferences/stats.html.haml b/app/views/conferences/stats.html.haml index 138448f..98e9848 100644 --- a/app/views/conferences/stats.html.haml +++ b/app/views/conferences/stats.html.haml @@ -4,6 +4,7 @@ = columns(medium: 12) do %h2=_'articles.conference_registration.headings.Stats' %p=_'articles.conference_registration.paragraphs.Stats', :p + = link_to (_'links.download.Excel','Download Data in Excel Format'), stats_path(@this_conference.slug, :format => :xls), {:class => :button} = columns(medium: 6) do %ul.stats %li diff --git a/app/views/layouts/user_mailer.html.haml b/app/views/layouts/user_mailer.html.haml index cc0e953..c246bb3 100644 --- a/app/views/layouts/user_mailer.html.haml +++ b/app/views/layouts/user_mailer.html.haml @@ -42,7 +42,8 @@ padding: 10px 20px; line-height: 50px; } - h3 b a { + h3 b a, + h3 b a:visited { color: #FFF !important; background-color: #02CA9E; text-decoration: none !important; diff --git a/config/initializers/mime_types.rb b/config/initializers/mime_types.rb index 72aca7e..62cb0a8 100644 --- a/config/initializers/mime_types.rb +++ b/config/initializers/mime_types.rb @@ -1,5 +1,7 @@ -# Be sure to restart your server when you modify this file. - -# Add new mime types for use in respond_to blocks: -# Mime::Type.register "text/richtext", :rtf -# Mime::Type.register_alias "text/html", :iphone +# Be sure to restart your server when you modify this file. + +# Add new mime types for use in respond_to blocks: +# Mime::Type.register "text/richtext", :rtf +# Mime::Type.register_alias "text/html", :iphone + +Mime::Type.register "application/xls", :xls diff --git a/config/locales/data/html_records/Broadcast-message--.html b/config/locales/data/html_records/Broadcast-message--.html index 4d2f403..1d3ba71 100644 --- a/config/locales/data/html_records/Broadcast-message--.html +++ b/config/locales/data/html_records/Broadcast-message--.html @@ -46,7 +46,7 @@

San Marcos, Texas

-August 13 – 17, 2015 +August 14 – 18, 2015
diff --git a/config/locales/data/html_records/Broadcast-message--conferences.MyBikeBike.broadcast.html b/config/locales/data/html_records/Broadcast-message--conferences.MyBikeBike.broadcast.html index e9eea96..d6e82a1 100644 --- a/config/locales/data/html_records/Broadcast-message--conferences.MyBikeBike.broadcast.html +++ b/config/locales/data/html_records/Broadcast-message--conferences.MyBikeBike.broadcast.html @@ -42,7 +42,8 @@ padding: 10px 20px; line-height: 50px; } - h3 b a { + h3 b a, + h3 b a:visited { color: #FFF !important; background-color: #02CA9E; text-decoration: none !important; @@ -77,7 +78,7 @@ @@ -93,7 +94,7 @@ diff --git a/config/locales/data/html_records/Create-workshop--.html b/config/locales/data/html_records/Create-workshop--.html index 4d2f403..1d3ba71 100644 --- a/config/locales/data/html_records/Create-workshop--.html +++ b/config/locales/data/html_records/Create-workshop--.html @@ -46,7 +46,7 @@

San Marcos, Texas

-August 13 – 17, 2015 +August 14 – 18, 2015
diff --git a/config/locales/data/html_records/See-a-more-info-link--.html b/config/locales/data/html_records/See-a-more-info-link--.html index 56a315c..9b883e0 100644 --- a/config/locales/data/html_records/See-a-more-info-link--.html +++ b/config/locales/data/html_records/See-a-more-info-link--.html @@ -50,7 +50,7 @@

Halifax, Nova Scotia

-August 13 – 17, 2015 +August 14 – 18, 2015
diff --git a/config/locales/data/html_records/See-a-register-link--.html b/config/locales/data/html_records/See-a-register-link--.html index 23c3faf..7b45770 100644 --- a/config/locales/data/html_records/See-a-register-link--.html +++ b/config/locales/data/html_records/See-a-register-link--.html @@ -41,7 +41,7 @@

Sackville, New Brunswick

-August 13 – 17, 2015 +August 14 – 18, 2015
diff --git a/config/locales/data/html_records/Start-registration-from-landing-page--.html b/config/locales/data/html_records/Start-registration-from-landing-page--.html index 443d4c4..e1abce0 100644 --- a/config/locales/data/html_records/Start-registration-from-landing-page--.html +++ b/config/locales/data/html_records/Start-registration-from-landing-page--.html @@ -41,7 +41,7 @@

Halifax, Nova Scotia

-August 13 – 17, 2015 +August 14 – 18, 2015
diff --git a/config/locales/data/html_records/Start-registration-from-landing-page--Start-registration-from-landing-page--conferences.MyBikeBike.register-1.html b/config/locales/data/html_records/Start-registration-from-landing-page--Start-registration-from-landing-page--conferences.MyBikeBike.register-1.html index c6f64de..8c1b53a 100644 --- a/config/locales/data/html_records/Start-registration-from-landing-page--Start-registration-from-landing-page--conferences.MyBikeBike.register-1.html +++ b/config/locales/data/html_records/Start-registration-from-landing-page--Start-registration-from-landing-page--conferences.MyBikeBike.register-1.html @@ -42,7 +42,8 @@ padding: 10px 20px; line-height: 50px; } - h3 b a { + h3 b a, + h3 b a:visited { color: #FFF !important; background-color: #02CA9E; text-decoration: none !important; @@ -80,7 +81,7 @@

-Confirm now +Confirm now

@@ -94,7 +95,7 @@ diff --git a/config/locales/data/html_records/Start-registration-from-landing-page--Start-registration-from-landing-page--conferences.MyBikeBike.register-3.html b/config/locales/data/html_records/Start-registration-from-landing-page--Start-registration-from-landing-page--conferences.MyBikeBike.register-3.html index 7ab4aa2..d834542 100644 --- a/config/locales/data/html_records/Start-registration-from-landing-page--Start-registration-from-landing-page--conferences.MyBikeBike.register-3.html +++ b/config/locales/data/html_records/Start-registration-from-landing-page--Start-registration-from-landing-page--conferences.MyBikeBike.register-3.html @@ -42,7 +42,8 @@ padding: 10px 20px; line-height: 50px; } - h3 b a { + h3 b a, + h3 b a:visited { color: #FFF !important; background-color: #02CA9E; text-decoration: none !important; @@ -89,7 +90,7 @@ diff --git a/config/locales/data/html_records/Start-registration-from-landing-page--email_confirmation.html b/config/locales/data/html_records/Start-registration-from-landing-page--email_confirmation.html index c6f64de..8c1b53a 100644 --- a/config/locales/data/html_records/Start-registration-from-landing-page--email_confirmation.html +++ b/config/locales/data/html_records/Start-registration-from-landing-page--email_confirmation.html @@ -42,7 +42,8 @@ padding: 10px 20px; line-height: 50px; } - h3 b a { + h3 b a, + h3 b a:visited { color: #FFF !important; background-color: #02CA9E; text-decoration: none !important; @@ -80,7 +81,7 @@

-Confirm now +Confirm now

@@ -94,7 +95,7 @@ diff --git a/config/locales/data/html_records/Start-registration-from-landing-page--registration_confirmation.html b/config/locales/data/html_records/Start-registration-from-landing-page--registration_confirmation.html index 7ab4aa2..d834542 100644 --- a/config/locales/data/html_records/Start-registration-from-landing-page--registration_confirmation.html +++ b/config/locales/data/html_records/Start-registration-from-landing-page--registration_confirmation.html @@ -42,7 +42,8 @@ padding: 10px 20px; line-height: 50px; } - h3 b a { + h3 b a, + h3 b a:visited { color: #FFF !important; background-color: #02CA9E; text-decoration: none !important; @@ -89,7 +90,7 @@ diff --git a/config/locales/data/html_records/View-stats--.html b/config/locales/data/html_records/View-stats--.html index 87ded10..8c39829 100644 --- a/config/locales/data/html_records/View-stats--.html +++ b/config/locales/data/html_records/View-stats--.html @@ -46,7 +46,7 @@

Anchorage, Alaska

-August 13 – 17, 2015 +August 14 – 18, 2015
diff --git a/config/locales/data/html_records/View-stats--conferences.MyBikeBike.stats.html b/config/locales/data/html_records/View-stats--conferences.MyBikeBike.stats.html index d993ea8..56771fd 100644 --- a/config/locales/data/html_records/View-stats--conferences.MyBikeBike.stats.html +++ b/config/locales/data/html_records/View-stats--conferences.MyBikeBike.stats.html @@ -56,6 +56,7 @@

Stats

Check Out who's coming and what they've paid so far. See at a glance how much accommodation is needed and what people prefer to eat.

+Download Data in Excel Format
  • Total Registrations

    diff --git a/config/locales/data/html_records/View-stats--conferences.MyBikeBike.stats.xls.html b/config/locales/data/html_records/View-stats--conferences.MyBikeBike.stats.xls.html new file mode 100644 index 0000000..db79fa2 --- /dev/null +++ b/config/locales/data/html_records/View-stats--conferences.MyBikeBike.stats.xls.html @@ -0,0 +1,46 @@ + + + +Excel Spreadsheet + + + +
- +
-© Bike!Bike! 2015 +© Bike!Bike! 2015
-© Bike!Bike! 2015 +© Bike!Bike! 2015
-© Bike!Bike! 2015 +© Bike!Bike! 2015
-© Bike!Bike! 2015 +© Bike!Bike! 2015
-© Bike!Bike! 2015 +© Bike!Bike! 2015
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
What is your name?emailcitydateWhich languages do you speak?ArrivalDepartureDo you need a place to stay?Do you need a bike?What are your eating habits?Do you have any allergies?Is there anything else you'd like to tell us?fees paid
Jeffsomeguy@bikebike.orgSomewhere2015-09-13 18:31:18English2015-09-28 00:00:002015-09-28 00:00:00Indoor LocationMediumOmnivore0.0
+ + + \ No newline at end of file diff --git a/config/locales/data/translation-info.yml b/config/locales/data/translation-info.yml index 578612b..8a573de 100644 --- a/config/locales/data/translation-info.yml +++ b/config/locales/data/translation-info.yml @@ -517,6 +517,7 @@ languages.en: - View-stats--conferences.MyBikeBike.stats - View-stats--conferences.MyBikeBike.stats - View-stats--conferences.MyBikeBike.stats + - View-stats--conferences.MyBikeBike.stats.xls - Create-workshop--confirm.test - Create-workshop--confirm.test - Create-workshop-- @@ -911,10 +912,12 @@ articles.conference_registration.paragraphs.Registration_Info: articles.conference_registration.headings.name: pages: - "/conferences/:slug/register" + - "/conferences/:slug/stats" context: What is your name? examples: - Start-registration-from-landing-page--conferences.MyBikeBike.register-3 - Start-registration-from-landing-page--conferences.MyBikeBike.register-6 + - View-stats--conferences.MyBikeBike.stats.xls forms.labels.generic.name: pages: - "/conferences/:slug/register" @@ -951,10 +954,12 @@ forms.labels.generic.departure: articles.conference_registration.headings.languages: pages: - "/conferences/:slug/register" + - "/conferences/:slug/stats" context: Which languages do you speak? examples: - Start-registration-from-landing-page--conferences.MyBikeBike.register-3 - Start-registration-from-landing-page--conferences.MyBikeBike.register-6 + - View-stats--conferences.MyBikeBike.stats.xls languages.es: pages: - "/conferences/:slug/register" @@ -976,10 +981,12 @@ languages.fr: articles.conference_registration.headings.housing: pages: - "/conferences/:slug/register" + - "/conferences/:slug/stats" context: Do you need a place to stay? examples: - Start-registration-from-landing-page--conferences.MyBikeBike.register-3 - Start-registration-from-landing-page--conferences.MyBikeBike.register-6 + - View-stats--conferences.MyBikeBike.stats.xls articles.conference_registration.questions.housing.none: pages: - "/conferences/:slug/register" @@ -998,13 +1005,16 @@ articles.conference_registration.questions.housing.house: examples: - Start-registration-from-landing-page--conferences.MyBikeBike.register-3 - View-stats--conferences.MyBikeBike.stats + - View-stats--conferences.MyBikeBike.stats.xls articles.conference_registration.headings.bike: pages: - "/conferences/:slug/register" + - "/conferences/:slug/stats" context: Do you need a bike? examples: - Start-registration-from-landing-page--conferences.MyBikeBike.register-3 - Start-registration-from-landing-page--conferences.MyBikeBike.register-6 + - View-stats--conferences.MyBikeBike.stats.xls articles.conference_registration.questions.bike.none: pages: - "/conferences/:slug/register" @@ -1023,6 +1033,7 @@ articles.conference_registration.questions.bike.medium: examples: - Start-registration-from-landing-page--conferences.MyBikeBike.register-3 - View-stats--conferences.MyBikeBike.stats + - View-stats--conferences.MyBikeBike.stats.xls articles.conference_registration.questions.bike.large: pages: - "/conferences/:slug/register" @@ -1031,10 +1042,12 @@ articles.conference_registration.questions.bike.large: articles.conference_registration.headings.food: pages: - "/conferences/:slug/register" + - "/conferences/:slug/stats" context: What are your eating habits? examples: - Start-registration-from-landing-page--conferences.MyBikeBike.register-3 - Start-registration-from-landing-page--conferences.MyBikeBike.register-6 + - View-stats--conferences.MyBikeBike.stats.xls articles.conference_registration.questions.food.meat: pages: - "/conferences/:slug/register" @@ -1042,6 +1055,7 @@ articles.conference_registration.questions.food.meat: examples: - Start-registration-from-landing-page--conferences.MyBikeBike.register-3 - View-stats--conferences.MyBikeBike.stats + - View-stats--conferences.MyBikeBike.stats.xls articles.conference_registration.questions.food.vegetarian: pages: - "/conferences/:slug/register" @@ -1056,10 +1070,12 @@ articles.conference_registration.questions.food.vegan: articles.conference_registration.headings.allergies: pages: - "/conferences/:slug/register" + - "/conferences/:slug/stats" context: Do you have any allergies? examples: - Start-registration-from-landing-page--conferences.MyBikeBike.register-3 - Start-registration-from-landing-page--conferences.MyBikeBike.register-6 + - View-stats--conferences.MyBikeBike.stats.xls forms.labels.generic.allergies: pages: - "/conferences/:slug/register" @@ -1074,6 +1090,7 @@ articles.conference_registration.headings.other: - Start-registration-from-landing-page--conferences.MyBikeBike.register-3 - Start-registration-from-landing-page--conferences.MyBikeBike.register-6 - View-stats--conferences.MyBikeBike.stats + - View-stats--conferences.MyBikeBike.stats.xls forms.labels.generic.other: pages: - "/conferences/:slug/register" @@ -1268,8 +1285,10 @@ articles.conference_registration.headings.Your_Registration: articles.conference_registration.headings.arrival: pages: - "/conferences/:slug/register" + - "/conferences/:slug/stats" examples: - Start-registration-from-landing-page--conferences.MyBikeBike.register-6 + - View-stats--conferences.MyBikeBike.stats.xls time.formats.long: pages: - "/conferences/:slug/register" @@ -1285,8 +1304,10 @@ time.am: articles.conference_registration.headings.departure: pages: - "/conferences/:slug/register" + - "/conferences/:slug/stats" examples: - Start-registration-from-landing-page--conferences.MyBikeBike.register-6 + - View-stats--conferences.MyBikeBike.stats.xls articles.conference_registration.none: pages: - "/conferences/:slug/register" @@ -1345,6 +1366,12 @@ articles.conference_registration.paragraphs.Stats: context: p examples: - View-stats--conferences.MyBikeBike.stats +links.download.Excel: + pages: + - "/conferences/:slug/stats" + context: Download Data in Excel Format + examples: + - View-stats--conferences.MyBikeBike.stats articles.conference_registration.terms.Total_Registrations: pages: - "/conferences/:slug/stats" @@ -1415,6 +1442,26 @@ menu.submenu.registration.Broadcast: - Broadcast-message--conferences.MyBikeBike.broadcast-1 - Broadcast-message--conferences.MyBikeBike.broadcast-2 - Broadcast-message--conferences.MyBikeBike.broadcast-3 +articles.conference_registration.headings.email: + pages: + - "/conferences/:slug/stats" + examples: + - View-stats--conferences.MyBikeBike.stats.xls +articles.conference_registration.headings.city: + pages: + - "/conferences/:slug/stats" + examples: + - View-stats--conferences.MyBikeBike.stats.xls +articles.conference_registration.headings.date: + pages: + - "/conferences/:slug/stats" + examples: + - View-stats--conferences.MyBikeBike.stats.xls +articles.conference_registration.headings.fees_paid: + pages: + - "/conferences/:slug/stats" + examples: + - View-stats--conferences.MyBikeBike.stats.xls geography.subregions.US.TX: pages: - "/" diff --git a/config/locales/es.yml b/config/locales/es.yml index 2a304d9..c7515be 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -32,11 +32,11 @@ es: - viernes - sábado formats: - default: "%d/%m/%Y" - long: "%d de %B de %Y" - short: "%d de %b" - span_same_month_date_2: "%e, %Y" - span_same_month_date_1: "%B %e" + default: '%d/%m/%Y' + long: '%d de %B de %Y' + short: '%d de %b' + span_same_month_date_2: '%e, %Y' + span_same_month_date_1: '%B %e' month_names: - - enero @@ -55,7 +55,7 @@ es: - :day - :month - :year - date_span: "%{date_1} – %{date_2}" + date_span: '%{date_1} – %{date_2}' datetime: distance_in_words: about_x_hours: @@ -82,16 +82,16 @@ es: other: más de %{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: 1 segundo - other: "%{count} segundos" + other: '%{count} segundos' prompts: day: Día hour: Hora @@ -100,10 +100,11 @@ es: second: Segundos year: Año errors: - format: "%{attribute} %{message}" + format: '%{attribute} %{message}' messages: accepted: debe ser aceptado blank: no puede estar en blanco + present: debe estar en blanco confirmation: no coincide empty: no puede estar vacío equal_to: debe ser igual a %{count} @@ -119,10 +120,14 @@ es: not_an_integer: debe ser un entero odd: debe ser impar record_invalid: 'La validación falló: %{errors}' + restrict_dependent_destroy: + one: No se puede eliminar el registro porque existe un %{record} dependiente + many: No se puede eliminar el registro porque existen %{record} dependientes taken: ya está en uso too_long: es demasiado largo (%{count} caracteres máximo) too_short: es demasiado corto (%{count} caracteres mínimo) wrong_length: no tiene la longitud correcta (%{count} caracteres exactos) + other_than: debe ser distinto de %{count} template: body: 'Se encontraron problemas con los siguientes campos:' header: @@ -138,22 +143,22 @@ es: number: currency: format: - delimiter: "." - format: "%n %u" + delimiter: . + format: '%n %u' precision: 2 - separator: "," + separator: ',' significant: false strip_insignificant_zeros: false - unit: "€" + unit: € format: - delimiter: "." + delimiter: . precision: 3 - separator: "," + separator: ',' significant: false strip_insignificant_zeros: false human: decimal_units: - format: "%n %u" + format: '%n %u' units: billion: mil millones million: millón @@ -167,7 +172,7 @@ es: significant: true strip_insignificant_zeros: true storage_units: - format: "%n %u" + format: '%n %u' units: byte: one: Byte @@ -184,19 +189,19 @@ es: delimiter: '' support: array: - last_word_connector: ", y " - two_words_connector: " y " - words_connector: ", " + last_word_connector: ', y ' + two_words_connector: ' y ' + words_connector: ', ' time: am: am formats: - default: "%A, %d de %B de %Y %H:%M:%S %z" - long: "%d de %B de %Y %H:%M" - short: "%d de %b %H:%M" + default: '%A, %d de %B de %Y %H:%M:%S %z' + long: '%d de %B de %Y %H:%M' + short: '%d de %b %H:%M' pm: pm languages: af: afrikáans - ar: "árabe" + ar: árabe az: azerí bg: búlgaro bn: bengalí @@ -692,14 +697,14 @@ es: conference_registration: headings: Registration_Info: Registro - arrival_and_departure: "¿Que día llegas a Guadalajara?" - allergies: "¿Eres alergico a algo?" - languages: "¿Hablas?" - food: "¿Que comes?" + arrival_and_departure: ¿Que día llegas a Guadalajara? + allergies: ¿Eres alergico a algo? + languages: ¿Hablas? + food: ¿Que comes? Enter_Your_Email: Correo electrónico location: Ciudad y pais  name: Nombre - Allergies: "¿Eres alergico a algo?" + Allergies: ¿Eres alergico a algo? Workshops: Actividades Your_Workshops: Actividades Policy_Agreement: Acuerdo del Espacio Mas Seguro @@ -707,25 +712,25 @@ es: Stats: Estadísticas Payment: Pago Your_Registration: Tu registro - Youre_Done: "¡Estás listx!" + Youre_Done: ¡Estás listx! arrival: Llegada - bike: "¿Necesitas una bici?" + bike: ¿Necesitas una bici? departure: Salida email_confirm: Confirmar correo electrónico - housing: "¿Necesitas hospedaje?" - other: "¿Hay algo más que quisieras decirnos?" + housing: ¿Necesitas hospedaje? + other: ¿Hay algo más que quisieras decirnos? payment: Cargos pagados payment_confirm: Por favor confirma tu pago paragraphs: - Registration_Info: EL REGISTRO ESTÁ ABIERTOOOOO! :) Por favor llénalo lo más - pronto que puedas, cualquier pregunta o mejora puedes comentarla más abajo, - estamos preparando una página de preguntas frecuentes sobre el evento para - la página web. + Registration_Info: Por favor llena esta forma de registro para ayudarnos a + prepararnos para tu llegada a Guadalajara. Si tienes alguna pregunta o información + que no te hayamos pedido por favor llena el campo "Más información" al final + de la página. Payment: Las y los esperamos del 1 al 4 de octubre del 2015.Más información en: bikebike@gdlenbici.org Workshops: 'Título de la actividad: Que necesitas? Tipo de espacio? Tema? Quién es responsable? Descripción? Tiempo?' - Policy_Agreement: Acuerdo del espacio mas Seguro + Policy_Agreement: Acuerdo de Espacios Más Seguros Confirm_Agreement: Al hacer click en el botón "Acepto", estás comprometiéndote a cumplir el Acuerdo de Espacios Más Seguros de Bike!Bike!. ¡Gracias! Email_Participants: Esta página se usa para contactar a todxs lxs participantes. @@ -738,12 +743,12 @@ es: al ser confirmada podrás completar el registro, agregar talleres y pagar el donativo de registro. Si ya te registraste puedes re-confirmar tu dirección de e-mail para modificar los detalles de tu registro. - currency: "(cantidades en dólares americanos $USD)" - done: "¡Gracias por registrarte para Bike!Bike!" - email_confirm: "¡Ve a tu bandeja de entrada! Deberías ver un e-mail por parte + currency: (cantidades en dólares americanos $USD) + done: ¡Gracias por registrarte para Bike!Bike! + email_confirm: ¡Ve a tu bandeja de entrada! Deberías ver un e-mail por parte de Bike!Bike! en unos momentos. Contendrá un enlace sobre el cual debes hacer click. Revisa tu bandeja de correo no deseado si no lo ves. Si tienes - algún problema, por favor envía un e-mail a admin@bikebike.org" + algún problema, por favor envía un e-mail a admin@bikebike.org participants_emailed: Tu correo ha sido enviado a todxs lxs participantes de %{conference_title}. payment_confirm: Estás por confirmar tu pago de %{amount} para el registro. @@ -756,24 +761,24 @@ es: vegan: Vegano bike: large: Grande - medium: Mediano - small: Pequeno + medium: Mediana + small: Pequeña none: Nada housing: - house: Lugar interior - none: Yo voy a encontrar mis accomodaciones. - tent: La carpa + house: Espacio interior + none: Yo encontraré donde dormir. + tent: Espacio para tienda de campaña terms: Bikes: Bici - Donation_Count: Donar - Languages: "¿Hablas?" - Total_Donations: Donar + Donation_Count: Contéo de donaciones + Languages: Lenguajes + Total_Donations: Donaciones totales Food: Comida Housing: Hospedaje Total_Registrations: Registros totales actions: View_Workshops: Ver Talleres - none: "(ninguno)" + none: (ninguno) notes: Test_Email_Sent: Un email fue enviado a %{email_address} about_bikebike: @@ -809,14 +814,14 @@ es: sobre cómo puedes obtener hospedaje por tu cuenta y otros lugares recomendados para visitar, también debe ser proveída por el anfitrión en la página de la conferencia o en un documento físico al llegar a la conferencia. ' - Volunteer: "¡Sí, por favor! " + Volunteer: '¡Sí, por favor! ' headings: - Amenities: Donde puedo dormir? Donde puedo comer? Como puedo ir de vuelta? - Types_of_Workshops: Que tipos de actividades va ver? - Volunteer: Puedo hacer voluntario? - What_is_BikeBike: Que es Bike!Bike!? - Who_is_Invited: Quienes son los invitados? - bicycle_project: Que es una proyecto bicicleta de la comunidad? + Amenities: ¿Dónde puedo dormir? ¿Qué puedo comer? ¿Cómo puedo moverme? + Types_of_Workshops: ¿Qué tipo de talleres habrá? + Volunteer: ¿Puedo ser voluntario? + What_is_BikeBike: ¿Qué es Bike!Bike!? + Who_is_Invited: ¿Quién es invitado? + bicycle_project: ¿Qué es un proyecto ciclista comunitario? term: education: Los talleres tienen un enfoque en la educación, en enseñar a otros cómo arreglar bicicletas @@ -831,12 +836,12 @@ es: paragraphs: info: 'Título de la actividad: Que necesitas? Tipo de espacio? Tema? Quién es responsable? Descripción? Tiempo?' - Workshops: "¿Tienes alguna habilidad emocionante que quieres compartir con + Workshops: ¿Tienes alguna habilidad emocionante que quieres compartir con nosotros? ¿Quieres charlar sobre crear espacios comunitarios seguros? ¿Quieres asegurarte de que hagamos un buen paseo el fin de semana? ¡Propón un taller! No te preocupes si no eres unx expertx, queremos escuchar acerca de las experiencias de todxs dentro de los diferentes talleres comunitarios de - los que venimos con sus diferentes configuraciones." + los que venimos con sus diferentes configuraciones. new_workshop: 'Anteriormente los talleres se han podido integrar en una serie de categorías amplias: organización/estructura (cómo iniciar un taller comunitario, cómo registrar una asociación sin fines de lucro, toma de decisiones mediante @@ -848,10 +853,10 @@ es: ver!' notes: Las notas se comparten solo con lxs organizadorxs de la conferencia y con lxs facilitadorxs de los talleres. - space: "¿Qué tipo de espacio necesitas para tu taller?" - theme: "¿Cuáles de estos temas describen mejor tu taller? Esto ayudará a los + space: ¿Qué tipo de espacio necesitas para tu taller? + theme: ¿Cuáles de estos temas describen mejor tu taller? Esto ayudará a los anfitriones a evitar conflictos de horario. Seleciona 'otro' si ninguna - de las opciones se relaciona de ninguna forma." + de las opciones se relaciona de ninguna forma. headings: facilitators: facilitadores Delete_Workshop: Eliminar Actividad @@ -864,9 +869,9 @@ es: theme: Tema policy: headings: - The_Agreement: Acuerdo del Espacio Mas Seguro - How: "¿Cómo se hace cumplir esta política?" - Why: "¿Porqué tener un Acuerdo de Espacios Más Seguros?" + The_Agreement: Acuerdo de Espacios Más Seguros + How: ¿Cómo se hace cumplir esta política? + Why: ¿Porqué tener un Acuerdo de Espacios Más Seguros? paragraphs: How: La ciudad anfitriona tiene la responsabilidad de mediar en cualquier situación concerniente a Espacios Más Seguros. Ellas decidirán qué amerita @@ -938,13 +943,13 @@ es: select_language: Cambia tu idioma facebook: Unirte a nuestro grupo de Facebook text: - Help_contribute: ayudar a contribuir + Help_contribute: Ayuda o contribuye File_an_Issue: Reportar un problema page_titles: - About_BikeBike: Quienes Bike!Bike! + About_BikeBike: Acerca de Bike!Bike! about: About_BikeBike: Quienes Bike!Bike! - Safe_Space_Policy: Acuerdo del Espacio Mas Seguro + Safe_Space_Policy: Acuerdo de Espacio Más Seguro conferences: Conference_Registration: Registro Create_Workshop: Crear taller @@ -973,7 +978,7 @@ es: translate: content: translate_now: Translar ahora - can_you_help: "¿Se puede traducir del %%{language_a} al %%{language_b}?" + can_you_help: ¿Se puede traducir del %%{language_a} al %%{language_b}? outdated_translation: El contenido que ha sido superado translation_out_of_date: Contenido traducido en esta página puede no ser exacta un_translated: Contenido sin traducir @@ -997,9 +1002,9 @@ es: other: plural two: dos Incomplete_Locales: Incomplete Languages - Locale_Translations: "%{language} Traducciones" + Locale_Translations: '%{language} Traducciones' context: - other: "%{context} (× %{count})" + other: '%{context} (× %{count})' context_title: 'Contexto:' default_value: Predeterminado no_value: Indefinido @@ -1019,32 +1024,44 @@ es: variables: Variables site: go_to_locale: Ver el sitio %%{language} ahora - locale_is_available: "%%{site_name} está disponible en %%{language}" - locale_needs_help: "¿Puedes ayudar a traducir el sitio al %%{language}?" + locale_is_available: '%%{site_name} está disponible en %%{language}' + locale_needs_help: ¿Puedes ayudar a traducir el sitio al %%{language}? locale_not_available: Lo sentimos, %%{site_name} no está disponible en %%{language}. volunteer: become_a_volunteer: Conviértete en un traductor voluntario - volunteer: "¿Puedes ayudar a traducir esto?" + volunteer: ¿Puedes ayudar a traducir esto? menu: submenu: registration: Registration: Registro Workshops: Actividades Broadcast: Emitir - Edit: Estadísticas - Stats: Por favor revisa tu e-mail + Edit: Editar conferencia + Stats: Estadísticas page_descriptions: - home: Bike! Bike! Una conferencia de colectivos en bicicleta, cooperativas, tiendas - de bicicletas de bricolaje sin fines de lucro + home: Bike!Bike! Una conferencia de colectivos ciclistas, cooperativas y talleres + de bicicletas autogestivos sin fines de lucro. email: confirmation: link: please_confirm: Confirmar ahora paragraph: - please_confirm: "¡Hola! Para ingresar al registro y otras funciones de Bike!Bike! - confirma tu dirección de e-mail por favor." + please_confirm: ¡Hola! Para ingresar al registro y otras funciones de Bike!Bike! + confirma tu dirección de e-mail por favor. subject: confirm_email: E-mail de confirmación + registration_confirmed: ¡Gracias por registrarte para %%{conference_title}! + general: + paragraph: + see_you: ¡Nos vemos en %{conference_location}! + thank_you: Gracias %{name}, + registration: + paragraph: + confirmed: Te has registrado exitosamente para %{conference_title}, Puedes + modificar los detalles de tu registro, pagar o agregar talleres en cualquier + momento reiniciando el proceso de registro. Si aún tienes que pagar o agregar + tus talleres y quieres hacerlo te pedimos que lo hagas lo más pronto posible + para ayudarnos a prepararnos para tu llegada. roles: workshops: facilitator: @@ -1066,3 +1083,11 @@ es: organization: Asuntos organizacionales other: Otro race_gender: Políticas de raza, género o clase + acticles: + conferences: + headings: + Proposed_Workshops: Talleres propuestos + paragraphs: + Proposed_Workshops: ¿Te gustaría facilitar tu propio taller? Simplemente regístrate + y visita la página de Talleres. Si ya te registraste puedes acceder a la + página reiniciando el proceso de registro. diff --git a/features/registration_page.feature b/features/registration_page.feature index 3cb426c..50797fb 100644 --- a/features/registration_page.feature +++ b/features/registration_page.feature @@ -64,6 +64,7 @@ Feature: Registration Page And I am on the stats page Then I should see Total Registrations + And I click the Excel link Scenario: Create workshop Given There is an upcoming conference in San Marcos TX