mumuki-laboratory 9.0.0 → 9.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/mumuki_laboratory/application/certificate.js +17 -0
  3. data/app/assets/javascripts/mumuki_laboratory/application/discussions.js +43 -2
  4. data/app/assets/javascripts/mumuki_laboratory/application/faqs.js +90 -0
  5. data/app/assets/javascripts/mumuki_laboratory/application/organization.js +32 -0
  6. data/app/assets/javascripts/mumuki_laboratory/application/submissions-store.js +1 -1
  7. data/app/assets/javascripts/mumuki_laboratory/application/user.js +49 -5
  8. data/app/assets/stylesheets/mumuki_laboratory/application/_modules.scss +3 -0
  9. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_activity.scss +12 -0
  10. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_certificate.scss +33 -0
  11. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_discussion.scss +14 -2
  12. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_faqs.scss +84 -0
  13. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_user_menu.scss +30 -2
  14. data/app/assets/stylesheets/mumuki_laboratory/application/modules/_user_profile.scss +1 -0
  15. data/app/controllers/certificates_controller.rb +28 -0
  16. data/app/controllers/concerns/with_certificate_render.rb +25 -0
  17. data/app/controllers/discussions_messages_controller.rb +6 -2
  18. data/app/controllers/faqs_controller.rb +6 -0
  19. data/app/controllers/users_controller.rb +17 -0
  20. data/app/helpers/certificate_helper.rb +13 -0
  21. data/app/helpers/discussions_helper.rb +5 -1
  22. data/app/helpers/links_helper.rb +9 -1
  23. data/app/helpers/menu_bar_helper.rb +14 -10
  24. data/app/helpers/user_activity_helper.rb +48 -0
  25. data/app/helpers/user_menu_helper.rb +27 -5
  26. data/app/mailers/application_mailer.rb +0 -1
  27. data/app/mailers/user_mailer.rb +9 -0
  28. data/app/views/certificates/_certificate.html.erb +44 -0
  29. data/app/views/certificates/_download.html.erb +20 -0
  30. data/app/views/certificates/verify.html.erb +40 -0
  31. data/app/views/discussions/_description_message.html.erb +1 -1
  32. data/app/views/discussions/_message.html.erb +1 -1
  33. data/app/views/discussions/_new_message.html.erb +13 -2
  34. data/app/views/discussions/new.html.erb +1 -1
  35. data/app/views/faqs/index.html.erb +20 -0
  36. data/app/views/layouts/_main.html.erb +4 -0
  37. data/app/views/layouts/_user_menu.html.erb +12 -16
  38. data/app/views/layouts/application.html.erb +6 -1
  39. data/app/views/layouts/exercise_inputs/editors/_code.html.erb +2 -1
  40. data/app/views/user_mailer/certificate.html.erb +339 -0
  41. data/app/views/user_mailer/certificate.text.erb +10 -0
  42. data/app/views/users/_activity_indicator.html.erb +17 -0
  43. data/app/views/users/activity.html.erb +37 -0
  44. data/app/views/users/certificates.html.erb +32 -0
  45. data/config/routes.rb +9 -0
  46. data/lib/mumuki/laboratory/extensions.rb +1 -0
  47. data/lib/mumuki/laboratory/extensions/date_and_time.rb +11 -0
  48. data/lib/mumuki/laboratory/locales/en.yml +20 -1
  49. data/lib/mumuki/laboratory/locales/es-CL.yml +25 -3
  50. data/lib/mumuki/laboratory/locales/es.yml +25 -3
  51. data/lib/mumuki/laboratory/locales/pt.yml +26 -1
  52. data/lib/mumuki/laboratory/version.rb +1 -1
  53. data/spec/controllers/certificates_controller_spec.rb +15 -0
  54. data/spec/controllers/discussions_messages_controller_spec.rb +20 -1
  55. data/spec/dummy/db/schema.rb +5 -1
  56. data/spec/features/certificate_programs_flow_spec.rb +17 -0
  57. data/spec/features/discussion_flow_spec.rb +2 -0
  58. data/spec/features/menu_bar_spec.rb +20 -0
  59. data/spec/features/profile_flow_spec.rb +12 -0
  60. data/spec/features/user_activity_flow_spec.rb +65 -0
  61. data/spec/helpers/application_helper_spec.rb +10 -0
  62. data/spec/helpers/certificate_helper_spec.rb +15 -0
  63. data/spec/helpers/user_activity_helper_spec.rb +32 -0
  64. metadata +171 -99
@@ -0,0 +1,10 @@
1
+ <%= t :new_certificate_mailer_title %>
2
+
3
+ <%= t :new_certificate_mailer_p1 %>
4
+ <%= t :new_certificate_mailer_p2 %>
5
+
6
+
7
+ © Copyright 2015-<%= DateTime.now.year %> Mumuki.
8
+
9
+ <%= t :stop_emails? %>
10
+ <%= t :cancel_subscription %>
@@ -0,0 +1,17 @@
1
+ <div class="row">
2
+ <div class="col-md-12">
3
+ <h3><%= title %></h3>
4
+ </div>
5
+ </div>
6
+ <div class="row">
7
+ <% stats.each do |s| %>
8
+ <div class="col-md-6">
9
+ <div class="jumbotron mu-user-activity-indicator">
10
+ <h1>
11
+ <%= s[:value] %>
12
+ <p><%= s[:name].downcase %></p>
13
+ </h1>
14
+ </div>
15
+ </div>
16
+ <% end %>
17
+ </div>
@@ -0,0 +1,37 @@
1
+ <%= content_for :breadcrumbs do %>
2
+ <%= breadcrumbs_for_my_account %>
3
+ <% end %>
4
+
5
+ <%= render partial: 'layouts/user_menu' %>
6
+
7
+ <div class="col-md-9 mu-tab-body">
8
+ <div class="mu-user-header">
9
+ <h1><%= t(:activity) %></h1>
10
+ </div>
11
+ <div class="col-md-8">
12
+ <%= render partial: 'activity_indicator',
13
+ locals: {
14
+ title: t(:exercises),
15
+ stats: exercises_activity_stats
16
+ } %>
17
+
18
+ <%= render partial: 'activity_indicator',
19
+ locals: {
20
+ title: t(:forum),
21
+ stats: messages_activity_stats
22
+ } %>
23
+ </div>
24
+
25
+ <div class="col-md-4">
26
+ <ul class="nav nav-pills nav-stacked mu-user-activity-selector">
27
+ <li <%= mark_period_if_active nil %>>
28
+ <%= link_to t(:total), activity_user_path %>
29
+ </li>
30
+ <% activity_selector_week_range_for.each do |(week_start, week_end)| %>
31
+ <li <%= mark_period_if_active week_start %>>
32
+ <%= link_to t(:week_of, date: l(week_start)), activity_user_path(date_from: week_start, date_to: week_end) %>
33
+ </li>
34
+ <% end %>
35
+ </ul>
36
+ </div>
37
+ </div>
@@ -0,0 +1,32 @@
1
+ <%= content_for :breadcrumbs do %>
2
+ <%= breadcrumbs_for_my_account %>
3
+ <% end %>
4
+
5
+ <%= render partial: 'layouts/user_menu' %>
6
+
7
+ <div class="col-md-9 mu-tab-body">
8
+ <div class="mu-user-header">
9
+ <h1><%= t(:certificates) %></h1>
10
+ </div>
11
+ <% if @certificates.empty? %>
12
+ <div class="mu-tab-body">
13
+ <%= t :certificates_will_be_here %>
14
+ </div>
15
+ <% else %>
16
+ <div class="col-md-12">
17
+ <div class="mu-list-group">
18
+ <% @certificates.each do |certificate| %>
19
+ <span class="mu-list-group-item">
20
+ <a href="<%= download_certificate_path certificate.code %>" target="_blank"><i class="fas fa-fw fa-download"></i></a>
21
+ <span class="mu-divider-vertical"></span>
22
+ <a href="<%= linkedin_post_url certificate %>" target="_blank"><i class="fab fa-fw fa-linkedin"></i></a>
23
+ <span class="mu-divider-vertical"></span>
24
+ <a href="<%= verify_certificate_path certificate.code %>" target="_blank">
25
+ <span class="mu-text-capitalize"><%= certificate.title %> - <%= certificate.description %></span>
26
+ </a>
27
+ </span>
28
+ <% end %>
29
+ </div>
30
+ </div>
31
+ <% end %>
32
+ </div>
data/config/routes.rb CHANGED
@@ -21,6 +21,7 @@ Rails.application.routes.draw do
21
21
  post :question, on: :member
22
22
  end
23
23
  end
24
+ get '/discussions/messages/preview', to: 'discussions_messages#preview', as: :preview_discussion_message
24
25
 
25
26
  resources :exam_registrations, only: [:show]
26
27
  resources :exam_authorization_requests, only: [:show, :create, :update]
@@ -65,11 +66,19 @@ Rails.application.routes.draw do
65
66
 
66
67
  get :messages
67
68
  get :discussions
69
+ get :activity
70
+ get :certificates
71
+
68
72
  end
69
73
 
74
+ resources :faqs, only: [:index]
75
+
70
76
  resources :messages, only: [:index, :create]
71
77
  get '/messages/errors' => 'messages#errors'
72
78
 
79
+ get 'certificates/verify/:code', to: 'certificates#verify', as: :verify_certificate
80
+ get 'certificates/download/:code', to: 'certificates#download', as: :download_certificate
81
+
73
82
  # Routes by slug
74
83
  get '/guides/:organization/:repository' => 'guides#show_transparently', as: :transparent_guide
75
84
  get '/topics/:organization/:repository' => 'topics#show_transparently', as: :transparent_topic
@@ -1 +1,2 @@
1
+ require_relative './extensions/date_and_time'
1
2
  require_relative './extensions/request'
@@ -0,0 +1,11 @@
1
+ module DateAndTime
2
+ module Calculations
3
+ # Polyfill, already implemented on Rails 5.2
4
+ # https://api.rubyonrails.org/classes/DateAndTime/Calculations.html#method-i-prev_occurring
5
+ def prev_occurring(day_of_week)
6
+ ago = wday - DAYS_INTO_WEEK.fetch(day_of_week)
7
+ ago += 7 unless ago > 0
8
+ advance(days: -ago)
9
+ end
10
+ end
11
+ end
@@ -14,6 +14,8 @@ en:
14
14
  appendix: Appendix
15
15
  appendix_teaser: Do you want to learn more? <a href="%{link}">Check this chapter's appendix</a>"
16
16
  approved_message: Validated by mentor
17
+ approved_messages:
18
+ other: validated
17
19
  are_you_sure: Are you sure you want to %{action}?
18
20
  ask_a_question: Ask a question!
19
21
  ask_community: Ask community for help
@@ -33,6 +35,10 @@ en:
33
35
  blocked_forum_explanation: Are you in the middle of an exam right now?
34
36
  cancel: Cancel
35
37
  cancel_subscription: Cancel your subscription.
38
+ certificate: Certificate
39
+ certificates: Certificates
40
+ certificates_will_be_here: Your certificates in the organization will appear here.
41
+ certificate_verified_legend: "<strong>%{full_name}</strong>'s account is verified. Mumuki certifies their successful completion of <strong>%{description}</strong>."
36
42
  chapter: Chapter
37
43
  chapters: Chapters
38
44
  chapter_finished_html: You have finished %{chapter}!
@@ -45,6 +51,7 @@ en:
45
51
  created_at_asc: Oldest
46
52
  created_at_desc: Newest
47
53
  comment: Comment
54
+ completed_by: Completed by
48
55
  confirm: Confirm
49
56
  confirm_reset: You are about to restart your exercise. Do you want to proceed?
50
57
  confirm_restart: You are about to delete your progress for this guide. Do you want to proceed?
@@ -72,6 +79,7 @@ en:
72
79
  dont_leave_us: Don't leave us! Learning is fun. You just have to keep at it.
73
80
  download: Download your solution
74
81
  edit: Edit
82
+ edit_message: Edit message
75
83
  edit_profile: Edit profile
76
84
  editor_placeholder: "write your solution here..."
77
85
  email: Email
@@ -110,6 +118,7 @@ en:
110
118
  expected_state: Expected board
111
119
  explain_redirect: You have registered in another organization
112
120
  failed: Oops, something went wrong
121
+ faqs: FAQs
113
122
  feedback: Feedback
114
123
  female: Female
115
124
  file_exceeds_max_size: "File size should not exceed %{size_kb}kb. Please select another file."
@@ -155,6 +164,7 @@ en:
155
164
  let_us_know: please let us know!
156
165
  level: Level
157
166
  level_up: Level up!
167
+ linkedin_profile_button_locale: en_US
158
168
  listen_statement: Listen to the statement
159
169
  loading: Loading
160
170
  load_solution_into_console: Load your solution into the console
@@ -169,6 +179,9 @@ en:
169
179
  messages: Messages
170
180
  messages_error: Previous messages are unavailable. Please try again later.
171
181
  moderation: Mentoring
182
+ messages_pluralized:
183
+ one: Message
184
+ other: Messages
172
185
  moderator: Mentor
173
186
  more_messages: More
174
187
  my_account: My account
@@ -217,6 +230,8 @@ en:
217
230
  permissions: Permissions
218
231
  please_fill_profile_data: Please complete your profile data to continue!
219
232
  please_validate: 'Please validate your data before continue:'
233
+ preview: Preview
234
+ preview_error: The preview cannot be shown. Check your internet connection or try with a shorter message.
220
235
  previous_exercise: Previous
221
236
  problem_with_exercise: '[Mumuki] Problem with exercise: %{title}'
222
237
  processing_your_solution: We are processing you solution
@@ -249,11 +264,13 @@ en:
249
264
  skipped_solve_anyway: Solve anyway
250
265
  solution: Solution
251
266
  solved: Solved
252
- solved_count: '%{count} solved'
253
267
  solve_doubts: Solve other's doubts
254
268
  solve_more_exercises_to_level_up: Solve <span>number</span> more exercises to advance to the next level.
255
269
  solve_your_doubts: Solve your doubts
256
270
  solve_your_doubts_teaser: Do you have any doubts?
271
+ solved_count: '%{count} solved'
272
+ solved_exercises_count: solved
273
+ solved_exercises_percentage: done
257
274
  something_went_wrong: Something went wrong!
258
275
  sort: Sort
259
276
  sources: Sources
@@ -286,6 +303,7 @@ en:
286
303
  to_pending_review: Mark as solved
287
304
  to_solved: Mark as solved
288
305
  unauthorized_explanation: You have no permissions for this content. Maybe you logged in with another account.
306
+ total: Total
289
307
  undo_upvote: Undo upvote
290
308
  unlocked_medal_as_avatar: You earned this medal! You can now choose it as an avatar.
291
309
  unspecified: I'd rather not say
@@ -303,6 +321,7 @@ en:
303
321
  view_details: View details
304
322
  want_permissions: The next user requires permissions
305
323
  we_miss_you: We miss you!
324
+ week_of: Week of %{date}
306
325
  welcome: Welcome to %{name}!
307
326
  working: "Working"
308
327
  wrong_answer: The answer is wrong
@@ -13,6 +13,9 @@ es-CL:
13
13
  appendix_teaser: ¿Quieres saber más? <a href="%{link}">Consulta el apéndice de este capítulo</a>
14
14
  are_you_sure: '¿Estás seguro que quieres %{action}?'
15
15
  ask_a_question: ¡Haz una pregunta!
16
+ approved_messages:
17
+ one: validado
18
+ other: validados
16
19
  ask_community: Pregunta a la comunidad
17
20
  ask_redirect: ¿Quieres que te llevemos ahí?
18
21
  ask_the_first_question: ¡Haz la primera pregunta!
@@ -29,6 +32,10 @@ es-CL:
29
32
  birthdate: Fecha de nacimiento
30
33
  blocked_forum_explanation: ¿Puede que estés en medio de un examen?
31
34
  cancel_subscription: Cancela tu subscripción.
35
+ certificate: Certificado
36
+ certificates: Certificados
37
+ certificates_will_be_here: Tus certificados en esta organización aparecerán aquí
38
+ certificate_verified_legend: "La cuenta de <strong>%{full_name}</strong> ha sido verificada. Mumuki certifica que completó el curso de <strong>%{description}.</strong>"
32
39
  chapter: Capítulo
33
40
  chapters: Capítulos
34
41
  chapter_finished_html: ¡Terminaste %{chapter}! ¡Felicitaciones!
@@ -42,6 +49,7 @@ es-CL:
42
49
  created_at_asc: Antiguas
43
50
  created_at_desc: Nuevas
44
51
  comment: Comentar
52
+ completed_by: Completado por
45
53
  confirm: Confirmar
46
54
  confirm_reset: Estás por reiniciar tu ejercicio. ¿Quieres continuar?
47
55
  confirm_restart: Estás por borrar tu progreso en esta guía. ¿Quieres continuar?
@@ -72,6 +80,7 @@ es-CL:
72
80
  dont_leave_us: ¡No nos abandones! Aprender a programar es divertido. Sólo tienes que seguir practicando.
73
81
  download: "Descarga lo que hiciste"
74
82
  edit: Editar
83
+ edit_message: Editar mensaje
75
84
  editor_placeholder: "...escribe tu solución acá..."
76
85
  email: Email
77
86
  error_description: Esto es lo que se conoce como <span class="error-link">%{error}</span>.
@@ -108,6 +117,7 @@ es-CL:
108
117
  expected_state: Tablero esperado
109
118
  explain_redirect: Notamos que te registraste en otra organización.
110
119
  failed: Tu solución no pasó las pruebas
120
+ faqs: Preguntas Frecuentes
111
121
  feedback: Problemas que encontramos
112
122
  female: Mujer
113
123
  file_exceeds_max_size: "El tamaño de archivo no debe exceder %{size_kb}kb. Por favor selecciona otro archivo."
@@ -154,6 +164,7 @@ es-CL:
154
164
  let_us_know: ¡Por favor avísanos!
155
165
  level: Nivel
156
166
  level_up: ¡Subiste de nivel!
167
+ linkedin_profile_button_locale: es_ES
157
168
  listen_statement: Escucha la consigna
158
169
  loading: Cargando
159
170
  load_solution_into_console: Cargar la solución en la consola
@@ -167,6 +178,9 @@ es-CL:
167
178
  message: Mensaje
168
179
  messages: Mensajes
169
180
  messages_error: Los mensajes anteriores no están disponibles en este momento. ¡Vuelve a intentar más tarde!
181
+ messages_pluralized:
182
+ one: Mensaje
183
+ other: Mensajes
170
184
  minute: minuto
171
185
  minutes: minutos
172
186
  moderation: Mentoría
@@ -223,6 +237,8 @@ es-CL:
223
237
  permissions: Permisos
224
238
  please_fill_profile_data: ¡Completa tus datos personales para continuar!
225
239
  please_validate: 'Estás a punto de ingresar al curso. Para poder ofrecerte una mejor experiencia, por favor valida que tus datos a continuación sean reales y correctos.'
240
+ preview: Vista previa
241
+ preview_error: No se puede mostrar la vista previa. Revisa tu conexión a internet o prueba con un mensaje más corto.
226
242
  previous_exercise: Anterior
227
243
  problem_with_exercise: '[Mumuki] Error con el ejercicio: %{title}'
228
244
  processing_your_solution: Estamos procesando tu solución
@@ -253,15 +269,19 @@ es-CL:
253
269
  skipped_solve_anyway: Resolver de todos modos
254
270
  solution: Solución
255
271
  solved: Resuelta
256
- solved_count:
257
- one: 1 resuelta
258
- other: '%{count} resueltas'
259
272
  solved_exercises: Ejercicios Resueltos
260
273
  solve_doubts: Resuelve consultas
261
274
  solve_more_exercises_to_level_up: Resuelve <span>number</span> ejercicios más para pasar al siguiente nivel.
262
275
  solve_your_doubts: Consulta tus dudas
263
276
  solve_your_doubts_teaser: ¿Tienes alguna consulta?
264
277
  something_went_wrong: ¡Ups!, algo no anduvo bien...
278
+ solved_count:
279
+ one: 1 resuelta
280
+ other: '%{count} resueltas'
281
+ solved_exercises_count:
282
+ one: resuelto
283
+ other: resueltos
284
+ solved_exercises_percentage: realizado
265
285
  sort: Ordenar
266
286
  sources: Bibliografía
267
287
  start_lesson: ¡Comienza esta lección!
@@ -293,6 +313,7 @@ es-CL:
293
313
  to_pending_review: Resolver
294
314
  to_solved: Resolver
295
315
  unauthorized_explanation: ¡Ups! Esto es lo que se conoce como %{error}, es decir que no iniciaste sesión.
316
+ total: Total
296
317
  uncategorized: No categorizado
297
318
  undo_upvote: No es útil
298
319
  unlocked_medal_as_avatar: ¡Obtuviste esta medalla! Ya puedes elegirla como avatar.
@@ -311,6 +332,7 @@ es-CL:
311
332
  view_details: Ver detalles
312
333
  want_permissions: El siguiente usuario requiere permisos
313
334
  we_miss_you: ¡Te extrañamos!
335
+ week_of: Semana del %{date}
314
336
  will_paginate:
315
337
  previous_label: "&#8592; Anterior"
316
338
  next_label: "Siguiente &#8594;"
@@ -17,6 +17,9 @@ es:
17
17
  approved_message: Validado por mentor
18
18
  are_you_sure: '¿Estás seguro que querés %{action}?'
19
19
  ask_a_question: ¡Hacé una pregunta!
20
+ approved_messages:
21
+ one: validado
22
+ other: validados
20
23
  ask_community: Preguntá a la comunidad
21
24
  ask_redirect: ¿Querés que te llevemos ahí?
22
25
  ask_the_first_question: ¡Hacé la primera pregunta!
@@ -34,6 +37,10 @@ es:
34
37
  blocked_forum_explanation: ¿Puede que estés en medio de un examen?
35
38
  cancel: Cancelar
36
39
  cancel_subscription: Cancelá tu subscripción.
40
+ certificate: Certificado
41
+ certificates: Certificados
42
+ certificates_will_be_here: Tus certificados en esta organización aparecerán acá
43
+ certificate_verified_legend: "La cuenta de <strong>%{full_name}</strong> está verificada. Mumuki certifica que completó el curso de <strong>%{description}.</strong>"
37
44
  chapter: Capítulo
38
45
  chapters: Capítulos
39
46
  chapter_finished_html: ¡Terminaste %{chapter}! ¡Felicitaciones!
@@ -46,6 +53,7 @@ es:
46
53
  one: 1 cerrada
47
54
  other: '%{count} cerradas'
48
55
  comment: Comentar
56
+ completed_by: Completado por
49
57
  confirm: Confirmar
50
58
  confirm_reset: Estás por reiniciar tu ejercicio. ¿Querés continuar?
51
59
  confirm_restart: Estás por borrar tu progreso en esta guía. ¿Querés continuar?
@@ -79,6 +87,7 @@ es:
79
87
  dont_leave_us: ¡No nos abandones! Aprender a programar es divertido. Sólo tenés que seguir practicando.
80
88
  download: "Descargá lo que hiciste"
81
89
  edit: Editar
90
+ edit_message: Editar mensaje
82
91
  edit_profile: Editar perfil
83
92
  editor_placeholder: "...escribí tu solución acá..."
84
93
  email: Email
@@ -116,6 +125,7 @@ es:
116
125
  expected_state: Tablero esperado
117
126
  explain_redirect: Notamos que te registraste en otra organización.
118
127
  failed: Tu solución no pasó las pruebas
128
+ faqs: Preguntas Frecuentes
119
129
  feedback: Problemas que encontramos
120
130
  female: Mujer
121
131
  file_exceeds_max_size: "El tamaño de archivo no debe exceder %{size_kb}kb. Por favor seleccioná otro archivo."
@@ -165,6 +175,7 @@ es:
165
175
  let_us_know: ¡Por favor avisanos!
166
176
  level: Nivel
167
177
  level_up: ¡Subiste de nivel!
178
+ linkedin_profile_button_locale: es_ES
168
179
  listen_statement: Escuchá la consigna
169
180
  loading: Cargando
170
181
  load_solution_into_console: Cargar la solución en la consola
@@ -178,6 +189,9 @@ es:
178
189
  message: Mensaje
179
190
  messages: Mensajes
180
191
  messages_error: Los mensajes anteriores no están disponibles en este momento. ¡Volvé a intentar mas tarde!
192
+ messages_pluralized:
193
+ one: Mensaje
194
+ other: Mensajes
181
195
  minute: minuto
182
196
  minutes: minutos
183
197
  moderation: Mentoría
@@ -234,6 +248,8 @@ es:
234
248
  permissions: Permisos
235
249
  please_fill_profile_data: ¡Completá tus datos personales para continuar!
236
250
  please_validate: 'Estás a punto de ingresar al curso. Para poder ofrecerte una mejor experiencia, por favor validá que tus datos a continuación sean reales y correctos.'
251
+ preview: Vista previa
252
+ preview_error: No se puede mostrar la vista previa. Revisá tu conexión a internet o probá con un mensaje más corto.
237
253
  previous_exercise: Anterior
238
254
  problem_with_exercise: '[Mumuki] Error con el ejercicio: %{title}'
239
255
  processing_your_solution: Estamos procesando tu solución
@@ -268,15 +284,19 @@ es:
268
284
  skipped_solve_anyway: Resolver de todos modos
269
285
  solution: Solución
270
286
  solved: Resuelta
271
- solved_count:
272
- one: 1 resuelta
273
- other: '%{count} resueltas'
274
287
  solved_exercises: Ejercicios Resueltos
275
288
  solve_doubts: Resolvé consultas
276
289
  solve_more_exercises_to_level_up: Resolvé <span>number</span> ejercicios más para pasar al siguiente nivel.
277
290
  solve_your_doubts: Consultá tus dudas
278
291
  solve_your_doubts_teaser: ¿Tenés alguna consulta?
279
292
  something_went_wrong: ¡Ups!, algo no anduvo bien...
293
+ solved_count:
294
+ one: 1 resuelta
295
+ other: '%{count} resueltas'
296
+ solved_exercises_count:
297
+ one: resuelto
298
+ other: resueltos
299
+ solved_exercises_percentage: realizado
280
300
  sort: Ordenar
281
301
  sources: Bibliografía
282
302
  start_lesson: ¡Comenzá esta lección!
@@ -309,6 +329,7 @@ es:
309
329
  to_pending_review: Resolver
310
330
  to_solved: Resolver
311
331
  unauthorized_explanation: ¡Ups! Esto es lo que se conoce como %{error}, es decir que no iniciaste sesión.
332
+ total: Total
312
333
  uncategorized: No categorizado
313
334
  undo_upvote: No es útil
314
335
  unlocked_medal_as_avatar: ¡Obtuviste esta medalla! Ya podés elegirla como avatar.
@@ -328,6 +349,7 @@ es:
328
349
  want_permissions: El siguiente usuario requiere permisos
329
350
  we_miss_you: ¡Te extrañamos!
330
351
  welcome: ¡Te damos la bienvenida a %{name}!
352
+ week_of: Semana del %{date}
331
353
  will_paginate:
332
354
  previous_label: "&#8592; Anterior"
333
355
  next_label: "Siguiente &#8594;"