mumuki-laboratory 8.6.0 → 9.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/mumuki_laboratory/application/certificate.js +17 -0
- data/app/assets/javascripts/mumuki_laboratory/application/faqs.js +90 -0
- data/app/assets/javascripts/mumuki_laboratory/application/upload.js +69 -14
- data/app/assets/javascripts/mumuki_laboratory/application/user.js +16 -5
- data/app/assets/stylesheets/mumuki_laboratory/application/_layout.scss +3 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/_modules.scss +3 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_certificate.scss +33 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_content_show.scss +15 -2
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_faqs.scss +84 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_medal.scss +1 -1
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_user_menu.scss +63 -0
- data/app/assets/stylesheets/mumuki_laboratory/application/modules/_user_profile.scss +11 -0
- data/app/controllers/api/base_controller.rb +0 -1
- data/app/controllers/api/courses_controller.rb +1 -1
- data/app/controllers/api/organizations_controller.rb +5 -2
- data/app/controllers/api/roles_controller.rb +4 -0
- data/app/controllers/api/users_controller.rb +6 -1
- data/app/controllers/certificates_controller.rb +28 -0
- data/app/controllers/concerns/with_authorization.rb +1 -16
- data/app/controllers/concerns/with_certificate_render.rb +25 -0
- data/app/controllers/concerns/with_user_params.rb +4 -0
- data/app/controllers/discussions_messages_controller.rb +0 -1
- data/app/controllers/faqs_controller.rb +6 -0
- data/app/controllers/users_controller.rb +12 -5
- data/app/helpers/breadcrumbs_helper.rb +4 -0
- data/app/helpers/certificate_helper.rb +13 -0
- data/app/helpers/content_view_helper.rb +19 -0
- data/app/helpers/exercise_input_helper.rb +8 -17
- data/app/helpers/links_helper.rb +11 -3
- data/app/helpers/menu_bar_helper.rb +15 -11
- data/app/helpers/user_menu_helper.rb +36 -0
- data/app/mailers/application_mailer.rb +0 -1
- data/app/mailers/user_mailer.rb +9 -0
- data/app/views/certificates/_certificate.html.erb +44 -0
- data/app/views/certificates/_download.html.erb +20 -0
- data/app/views/certificates/verify.html.erb +40 -0
- data/app/views/chapters/show.html.erb +15 -14
- data/app/views/complements/show.html.erb +1 -1
- data/app/views/exams/show.html.erb +1 -1
- data/app/views/{layouts → exercises}/_exercise_skipped.html.erb +0 -0
- data/app/views/exercises/_exercise_title_icons.html.erb +4 -0
- data/app/views/exercises/show.html.erb +4 -7
- data/app/views/faqs/index.html.erb +20 -0
- data/app/views/{layouts → guides}/_guide.html.erb +0 -0
- data/app/views/guides/_guide_container.html.erb +24 -0
- data/app/views/{layouts → guides}/_guide_title_icons.html.erb +1 -3
- data/app/views/layouts/_progress_listing.html.erb +1 -1
- data/app/views/layouts/_user_menu.html.erb +17 -0
- data/app/views/layouts/application.html.erb +6 -1
- data/app/views/layouts/exercise_inputs/editors/_code.html.erb +2 -1
- data/app/views/layouts/exercise_inputs/editors/_upload.html.erb +11 -2
- data/app/views/lessons/show.html.erb +1 -1
- data/app/views/user_mailer/certificate.html.erb +339 -0
- data/app/views/user_mailer/certificate.text.erb +10 -0
- data/app/views/users/_user_form.html.erb +10 -8
- data/app/views/users/certificates.html.erb +32 -0
- data/app/views/users/discussions.html.erb +28 -0
- data/app/views/users/edit.html.erb +1 -1
- data/app/views/users/messages.html.erb +27 -0
- data/app/views/users/show.html.erb +4 -51
- data/app/views/users/terms.html.erb +2 -2
- data/config/routes.rb +9 -0
- data/lib/mumuki/laboratory/locales/en.yml +13 -3
- data/lib/mumuki/laboratory/locales/es-CL.yml +13 -3
- data/lib/mumuki/laboratory/locales/es.yml +12 -2
- data/lib/mumuki/laboratory/locales/pt.yml +12 -2
- data/lib/mumuki/laboratory/version.rb +1 -1
- data/spec/controllers/certificates_controller_spec.rb +15 -0
- data/spec/controllers/organizations_api_controller_spec.rb +16 -9
- data/spec/dummy/db/schema.rb +25 -1
- data/spec/features/certificate_programs_flow_spec.rb +17 -0
- data/spec/features/exercise_flow_spec.rb +3 -3
- data/spec/features/login_flow_spec.rb +1 -1
- data/spec/features/menu_bar_spec.rb +44 -24
- data/spec/features/profile_flow_spec.rb +18 -9
- data/spec/features/terms_flow_spec.rb +30 -0
- data/spec/helpers/application_helper_spec.rb +10 -0
- data/spec/helpers/certificate_helper_spec.rb +15 -0
- data/spec/javascripts/upload-spec.js +80 -0
- metadata +86 -14
- data/app/views/layouts/_guide_container.html.erb +0 -28
@@ -1,11 +1,11 @@
|
|
1
1
|
<div class="mu-user-header">
|
2
|
-
<h1><%=
|
2
|
+
<h1><%= t(:my_profile) %></h1>
|
3
3
|
<div class="mu-profile-actions hidden-xs">
|
4
4
|
<%= edit_profile_button %>
|
5
5
|
</div>
|
6
6
|
</div>
|
7
|
-
<div class="
|
8
|
-
<div class="
|
7
|
+
<div class="mu-profile-info">
|
8
|
+
<div class="mu-profile-info-left">
|
9
9
|
<%= profile_picture_for(@user, id: 'mu-user-avatar', class: 'mu-user-avatar') %>
|
10
10
|
<% if in_gamified_context? %>
|
11
11
|
<svg class="mu-level-progress" width="300" height="300" viewBox="0 0 100 100">
|
@@ -18,7 +18,10 @@
|
|
18
18
|
</div>
|
19
19
|
<% end %>
|
20
20
|
</div>
|
21
|
-
<div class="
|
21
|
+
<div class="mu-profile-info-right">
|
22
|
+
<div>
|
23
|
+
<span> <strong><%= t :name %>:</strong> <%= "#{@user.name}" %> </span>
|
24
|
+
</div>
|
22
25
|
<% if @user.age.present? %>
|
23
26
|
<div>
|
24
27
|
<span> <strong><%= t :age %>:</strong> <%= "#{@user.age} #{t :years}" %> </span>
|
@@ -31,8 +34,7 @@
|
|
31
34
|
<span> <strong><%= t :programming_since %>:</strong> <%= t(:time_since, time: time_ago_in_words(@user.created_at)) %> </span>
|
32
35
|
</div>
|
33
36
|
</div>
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
</div>
|
37
|
+
</div>
|
38
|
+
<div class="mu-profile-actions mobile visible-xs">
|
39
|
+
<%= edit_profile_button %>
|
38
40
|
</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>
|
@@ -0,0 +1,28 @@
|
|
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(:discussions) %></h1>
|
10
|
+
</div>
|
11
|
+
<% if @watched_discussions.empty? %>
|
12
|
+
<div class="mu-tab-body">
|
13
|
+
<%= t :discussions_will_be_here %>
|
14
|
+
</div>
|
15
|
+
<% else %>
|
16
|
+
<table class="table table-striped">
|
17
|
+
<% @watched_discussions.each do |discussion| %>
|
18
|
+
<tr>
|
19
|
+
<td>
|
20
|
+
<%= icon_for_read(discussion.read_by?(@user)) %>
|
21
|
+
</td>
|
22
|
+
<td><%= link_to discussion.item.name, item_discussion_path(discussion) %></td>
|
23
|
+
<td><%= time_ago_in_words discussion.last_message_date %></td>
|
24
|
+
</tr>
|
25
|
+
<% end %>
|
26
|
+
</table>
|
27
|
+
<% end %>
|
28
|
+
</div>
|
@@ -0,0 +1,27 @@
|
|
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(:messages) %></h1>
|
10
|
+
</div>
|
11
|
+
<% if @messages.empty? %>
|
12
|
+
<div class="mu-tab-body">
|
13
|
+
<%= t :no_messages %>
|
14
|
+
</div>
|
15
|
+
<% else %>
|
16
|
+
<table class="table table-striped">
|
17
|
+
<% @messages.each do |message| %>
|
18
|
+
<tr>
|
19
|
+
<td><%= icon_for_read(message.read?) %></td>
|
20
|
+
<td><%= link_to message.exercise.name, exercise_path(message.exercise.id) %></td>
|
21
|
+
<td><%= mail_to message.sender %></td>
|
22
|
+
<td><%= time_ago_in_words message.created_at %></td>
|
23
|
+
</tr>
|
24
|
+
<% end %>
|
25
|
+
</table>
|
26
|
+
<% end %>
|
27
|
+
</div>
|
@@ -1,56 +1,9 @@
|
|
1
1
|
<%= content_for :breadcrumbs do %>
|
2
|
-
|
2
|
+
<%= breadcrumbs_for_my_account %>
|
3
3
|
<% end %>
|
4
4
|
|
5
|
-
|
6
|
-
<li role="presentation" class="active">
|
7
|
-
<a data-target="#info" aria-controls="info" role="tab" data-toggle="tab"><%= t :profile %></a>
|
8
|
-
</li>
|
9
|
-
<li role="presentation">
|
10
|
-
<a data-target="#messages" aria-controls="messages" role="tab" data-toggle="tab"><%= t :messages %></a>
|
11
|
-
</li>
|
12
|
-
<% if @watched_discussions.present? %>
|
13
|
-
<li role="presentation">
|
14
|
-
<a data-target="#discussions" aria-controls="discussions" role="tab" data-toggle="tab"><%= t :discussions %></a>
|
15
|
-
</li>
|
16
|
-
<% end %>
|
17
|
-
</ul>
|
5
|
+
<%= render partial: 'layouts/user_menu' %>
|
18
6
|
|
19
|
-
<div class="tab-
|
20
|
-
|
21
|
-
<%= render partial: 'user_form' %>
|
22
|
-
</div>
|
23
|
-
<div role="tabpanel" class="tab-pane" id="messages">
|
24
|
-
<% if @messages.empty? %>
|
25
|
-
<div class="row mu-tab-body col-md-12">
|
26
|
-
<%= t :no_messages %>
|
27
|
-
</div>
|
28
|
-
<% else %>
|
29
|
-
<table class="table table-striped">
|
30
|
-
<% @messages.each do |message| %>
|
31
|
-
<tr>
|
32
|
-
<td><%= icon_for_read(message.read?) %></td>
|
33
|
-
<td><%= link_to message.exercise.name, exercise_path(message.exercise.id) %></td>
|
34
|
-
<td><%= mail_to message.sender %></td>
|
35
|
-
<td><%= time_ago_in_words message.created_at %></td>
|
36
|
-
</tr>
|
37
|
-
<% end %>
|
38
|
-
</table>
|
39
|
-
<% end %>
|
40
|
-
</div>
|
41
|
-
<% if @watched_discussions.present? %>
|
42
|
-
<div role="tabpanel" class="tab-pane" id="discussions">
|
43
|
-
<table class="table table-striped">
|
44
|
-
<% @watched_discussions.each do |discussion| %>
|
45
|
-
<tr>
|
46
|
-
<td>
|
47
|
-
<%= icon_for_read(discussion.read_by?(@user)) %>
|
48
|
-
</td>
|
49
|
-
<td><%= link_to discussion.item.name, item_discussion_path(discussion) %></td>
|
50
|
-
<td><%= time_ago_in_words discussion.last_message_date %></td>
|
51
|
-
</tr>
|
52
|
-
<% end %>
|
53
|
-
</table>
|
54
|
-
</div>
|
55
|
-
<% end %>
|
7
|
+
<div class="col-md-9 mu-tab-body">
|
8
|
+
<%= render partial: 'user_form' %>
|
56
9
|
</div>
|
data/config/routes.rb
CHANGED
@@ -62,11 +62,20 @@ Rails.application.routes.draw do
|
|
62
62
|
|
63
63
|
# Notification subscriptions
|
64
64
|
get :unsubscribe
|
65
|
+
|
66
|
+
get :messages
|
67
|
+
get :discussions
|
68
|
+
get :certificates
|
65
69
|
end
|
66
70
|
|
71
|
+
resources :faqs, only: [:index]
|
72
|
+
|
67
73
|
resources :messages, only: [:index, :create]
|
68
74
|
get '/messages/errors' => 'messages#errors'
|
69
75
|
|
76
|
+
get 'certificates/verify/:code', to: 'certificates#verify', as: :verify_certificate
|
77
|
+
get 'certificates/download/:code', to: 'certificates#download', as: :download_certificate
|
78
|
+
|
70
79
|
# Routes by slug
|
71
80
|
get '/guides/:organization/:repository' => 'guides#show_transparently', as: :transparent_guide
|
72
81
|
get '/topics/:organization/:repository' => 'topics#show_transparently', as: :transparent_topic
|
@@ -33,6 +33,10 @@ en:
|
|
33
33
|
blocked_forum_explanation: Are you in the middle of an exam right now?
|
34
34
|
cancel: Cancel
|
35
35
|
cancel_subscription: Cancel your subscription.
|
36
|
+
certificate: Certificate
|
37
|
+
certificates: Certificates
|
38
|
+
certificates_will_be_here: Your certificates in the organization will appear here.
|
39
|
+
certificate_verified_legend: "<strong>%{full_name}</strong>'s account is verified. Mumuki certifies their successful completion of <strong>%{description}</strong>."
|
36
40
|
chapter: Chapter
|
37
41
|
chapters: Chapters
|
38
42
|
chapter_finished_html: You have finished %{chapter}!
|
@@ -45,6 +49,7 @@ en:
|
|
45
49
|
created_at_asc: Oldest
|
46
50
|
created_at_desc: Newest
|
47
51
|
comment: Comment
|
52
|
+
completed_by: Completed by
|
48
53
|
confirm: Confirm
|
49
54
|
confirm_reset: You are about to restart your exercise. Do you want to proceed?
|
50
55
|
confirm_restart: You are about to delete your progress for this guide. Do you want to proceed?
|
@@ -68,6 +73,7 @@ en:
|
|
68
73
|
new_discussion_message: New message on %{title}
|
69
74
|
discussion_updated: Discussion updated
|
70
75
|
discussions: Discussions
|
76
|
+
discussions_will_be_here: Your posts in the forum will appear here.
|
71
77
|
dont_leave_us: Don't leave us! Learning is fun. You just have to keep at it.
|
72
78
|
download: Download your solution
|
73
79
|
edit: Edit
|
@@ -109,8 +115,10 @@ en:
|
|
109
115
|
expected_state: Expected board
|
110
116
|
explain_redirect: You have registered in another organization
|
111
117
|
failed: Oops, something went wrong
|
118
|
+
faqs: FAQs
|
112
119
|
feedback: Feedback
|
113
120
|
female: Female
|
121
|
+
file_exceeds_max_size: "File size should not exceed %{size_kb}kb. Please select another file."
|
114
122
|
finish: Finish
|
115
123
|
first_name: First Name
|
116
124
|
forbidden_explanation: Please verify you have logged in with the right account
|
@@ -153,6 +161,7 @@ en:
|
|
153
161
|
let_us_know: please let us know!
|
154
162
|
level: Level
|
155
163
|
level_up: Level up!
|
164
|
+
linkedin_profile_button_locale: en_US
|
156
165
|
listen_statement: Listen to the statement
|
157
166
|
loading: Loading
|
158
167
|
load_solution_into_console: Load your solution into the console
|
@@ -169,7 +178,9 @@ en:
|
|
169
178
|
moderation: Mentoring
|
170
179
|
moderator: Mentor
|
171
180
|
more_messages: More
|
181
|
+
my_account: My account
|
172
182
|
my_doubts: My doubts
|
183
|
+
my_profile: My profile
|
173
184
|
my_submissions: My Submissions
|
174
185
|
name: Name
|
175
186
|
navigation_continue: 'Next: %{sibling}'
|
@@ -216,7 +227,6 @@ en:
|
|
216
227
|
previous_exercise: Previous
|
217
228
|
problem_with_exercise: '[Mumuki] Problem with exercise: %{title}'
|
218
229
|
processing_your_solution: We are processing you solution
|
219
|
-
profile: Profile
|
220
230
|
profile_of: Profile of %{username}
|
221
231
|
programming_since: Started programming
|
222
232
|
progress: Progresss
|
@@ -233,6 +243,7 @@ en:
|
|
233
243
|
running: running
|
234
244
|
save: Save
|
235
245
|
see_context: Watch exercise introduction animation
|
246
|
+
select_file: Select file
|
236
247
|
sending_solution: Sending solution
|
237
248
|
show: Show
|
238
249
|
sign_in: Sign in
|
@@ -289,13 +300,12 @@ en:
|
|
289
300
|
unprepared_organization_explanation: This path hasn't started yet.
|
290
301
|
unsubscribe: Unsubscribe
|
291
302
|
unsubscribed_successfully: You have successfully unsubscribed from reminders.
|
292
|
-
upload_solution: Upload Solution
|
293
303
|
uploading_solution: "Uploading solution"
|
294
304
|
upvote: Upvote
|
295
305
|
upvotes_count_desc: Most voted
|
296
306
|
upvotes_count_asc: Least voted
|
297
307
|
user: User
|
298
|
-
user_data_updated: Your data was updated
|
308
|
+
user_data_updated: Your data was updated successfully
|
299
309
|
username: Username
|
300
310
|
view_details: View details
|
301
311
|
want_permissions: The next user requires permissions
|
@@ -29,6 +29,10 @@ es-CL:
|
|
29
29
|
birthdate: Fecha de nacimiento
|
30
30
|
blocked_forum_explanation: ¿Puede que estés en medio de un examen?
|
31
31
|
cancel_subscription: Cancela tu subscripción.
|
32
|
+
certificate: Certificado
|
33
|
+
certificates: Certificados
|
34
|
+
certificates_will_be_here: Tus certificados en esta organización aparecerán aquí
|
35
|
+
certificate_verified_legend: "La cuenta de <strong>%{full_name}</strong> ha sido verificada. Mumuki certifica que completó el curso de <strong>%{description}.</strong>"
|
32
36
|
chapter: Capítulo
|
33
37
|
chapters: Capítulos
|
34
38
|
chapter_finished_html: ¡Terminaste %{chapter}! ¡Felicitaciones!
|
@@ -42,6 +46,7 @@ es-CL:
|
|
42
46
|
created_at_asc: Antiguas
|
43
47
|
created_at_desc: Nuevas
|
44
48
|
comment: Comentar
|
49
|
+
completed_by: Completado por
|
45
50
|
confirm: Confirmar
|
46
51
|
confirm_reset: Estás por reiniciar tu ejercicio. ¿Quieres continuar?
|
47
52
|
confirm_restart: Estás por borrar tu progreso en esta guía. ¿Quieres continuar?
|
@@ -68,6 +73,7 @@ es-CL:
|
|
68
73
|
new_discussion_message: Mensaje nuevo en %{title}
|
69
74
|
discussion_updated: Consulta actualizada
|
70
75
|
discussions: Consultas
|
76
|
+
discussions_will_be_here: Las preguntas que realices en el espacio de consultas aparecerán aquí.
|
71
77
|
dont_leave_us: ¡No nos abandones! Aprender a programar es divertido. Sólo tienes que seguir practicando.
|
72
78
|
download: "Descarga lo que hiciste"
|
73
79
|
edit: Editar
|
@@ -107,8 +113,10 @@ es-CL:
|
|
107
113
|
expected_state: Tablero esperado
|
108
114
|
explain_redirect: Notamos que te registraste en otra organización.
|
109
115
|
failed: Tu solución no pasó las pruebas
|
116
|
+
faqs: Preguntas Frecuentes
|
110
117
|
feedback: Problemas que encontramos
|
111
118
|
female: Mujer
|
119
|
+
file_exceeds_max_size: "El tamaño de archivo no debe exceder %{size_kb}kb. Por favor selecciona otro archivo."
|
112
120
|
finish: Terminar
|
113
121
|
first_name: Nombre
|
114
122
|
forbidden_explanation: ¿Puede que hayas ingresado con una cuenta incorrecta?
|
@@ -152,6 +160,7 @@ es-CL:
|
|
152
160
|
let_us_know: ¡Por favor avísanos!
|
153
161
|
level: Nivel
|
154
162
|
level_up: ¡Subiste de nivel!
|
163
|
+
linkedin_profile_button_locale: es_ES
|
155
164
|
listen_statement: Escucha la consigna
|
156
165
|
loading: Cargando
|
157
166
|
load_solution_into_console: Cargar la solución en la consola
|
@@ -167,10 +176,12 @@ es-CL:
|
|
167
176
|
messages_error: Los mensajes anteriores no están disponibles en este momento. ¡Vuelve a intentar más tarde!
|
168
177
|
minute: minuto
|
169
178
|
minutes: minutos
|
170
|
-
moderation:
|
179
|
+
moderation: Mentoría
|
171
180
|
moderator: Mentor
|
172
181
|
more_messages: Ver mensajes anteriores
|
182
|
+
my_account: Mi cuenta
|
173
183
|
my_doubts: Mis consultas
|
184
|
+
my_profile: Mi perfil
|
174
185
|
name: Nombre
|
175
186
|
navigation_continue: 'Siguiente %{kind}: %{sibling}'
|
176
187
|
navigation_next: Siguiente %{kind}
|
@@ -222,7 +233,6 @@ es-CL:
|
|
222
233
|
previous_exercise: Anterior
|
223
234
|
problem_with_exercise: '[Mumuki] Error con el ejercicio: %{title}'
|
224
235
|
processing_your_solution: Estamos procesando tu solución
|
225
|
-
profile: Perfil
|
226
236
|
profile_of: Perfil de %{username}
|
227
237
|
progress: Progreso
|
228
238
|
read: Leído
|
@@ -236,6 +246,7 @@ es-CL:
|
|
236
246
|
running: procesando
|
237
247
|
save: Guardar
|
238
248
|
see_context: Mira la animación del principio
|
249
|
+
select_file: Seleccionar archivo
|
239
250
|
send: Enviar
|
240
251
|
sending_solution: Enviando solución
|
241
252
|
show: Mostrar
|
@@ -297,7 +308,6 @@ es-CL:
|
|
297
308
|
unprepared_organization_explanation: ¡Este recorrido aún no ha comenzado!
|
298
309
|
unsubscribe: Dejar de recibir notificaciones
|
299
310
|
unsubscribed_successfully: Te desuscribiste exitosamente de los recordatorios.
|
300
|
-
upload_solution: "Subir solución"
|
301
311
|
uploading_solution: "Subiendo solución"
|
302
312
|
upvote: Es útil
|
303
313
|
upvotes_count_desc: Más útiles
|
@@ -34,6 +34,10 @@ es:
|
|
34
34
|
blocked_forum_explanation: ¿Puede que estés en medio de un examen?
|
35
35
|
cancel: Cancelar
|
36
36
|
cancel_subscription: Cancelá tu subscripción.
|
37
|
+
certificate: Certificado
|
38
|
+
certificates: Certificados
|
39
|
+
certificates_will_be_here: Tus certificados en esta organización aparecerán acá
|
40
|
+
certificate_verified_legend: "La cuenta de <strong>%{full_name}</strong> está verificada. Mumuki certifica que completó el curso de <strong>%{description}.</strong>"
|
37
41
|
chapter: Capítulo
|
38
42
|
chapters: Capítulos
|
39
43
|
chapter_finished_html: ¡Terminaste %{chapter}! ¡Felicitaciones!
|
@@ -46,6 +50,7 @@ es:
|
|
46
50
|
one: 1 cerrada
|
47
51
|
other: '%{count} cerradas'
|
48
52
|
comment: Comentar
|
53
|
+
completed_by: Completado por
|
49
54
|
confirm: Confirmar
|
50
55
|
confirm_reset: Estás por reiniciar tu ejercicio. ¿Querés continuar?
|
51
56
|
confirm_restart: Estás por borrar tu progreso en esta guía. ¿Querés continuar?
|
@@ -75,6 +80,7 @@ es:
|
|
75
80
|
discussion_updated: Consulta actualizada
|
76
81
|
new_discussion_message: Mensaje nuevo en %{title}
|
77
82
|
discussions: Consultas
|
83
|
+
discussions_will_be_here: Las preguntas que realices en el espacio de consultas aparecerán aquí.
|
78
84
|
dont_leave_us: ¡No nos abandones! Aprender a programar es divertido. Sólo tenés que seguir practicando.
|
79
85
|
download: "Descargá lo que hiciste"
|
80
86
|
edit: Editar
|
@@ -115,8 +121,10 @@ es:
|
|
115
121
|
expected_state: Tablero esperado
|
116
122
|
explain_redirect: Notamos que te registraste en otra organización.
|
117
123
|
failed: Tu solución no pasó las pruebas
|
124
|
+
faqs: Preguntas Frecuentes
|
118
125
|
feedback: Problemas que encontramos
|
119
126
|
female: Mujer
|
127
|
+
file_exceeds_max_size: "El tamaño de archivo no debe exceder %{size_kb}kb. Por favor seleccioná otro archivo."
|
120
128
|
finish: Terminar
|
121
129
|
first_name: Nombre
|
122
130
|
forbidden_explanation: ¿Puede que hayas ingresado con una cuenta incorrecta?
|
@@ -163,6 +171,7 @@ es:
|
|
163
171
|
let_us_know: ¡Por favor avisanos!
|
164
172
|
level: Nivel
|
165
173
|
level_up: ¡Subiste de nivel!
|
174
|
+
linkedin_profile_button_locale: es_ES
|
166
175
|
listen_statement: Escuchá la consigna
|
167
176
|
loading: Cargando
|
168
177
|
load_solution_into_console: Cargar la solución en la consola
|
@@ -181,7 +190,9 @@ es:
|
|
181
190
|
moderation: Mentoría
|
182
191
|
moderator: Mentor
|
183
192
|
more_messages: Ver mensajes anteriores
|
193
|
+
my_account: Mi cuenta
|
184
194
|
my_doubts: Mis consultas
|
195
|
+
my_profile: Mi perfil
|
185
196
|
name: Nombre
|
186
197
|
navigation_continue: 'Siguiente %{kind}: %{sibling}'
|
187
198
|
navigation_next: Siguiente %{kind}
|
@@ -233,7 +244,6 @@ es:
|
|
233
244
|
previous_exercise: Anterior
|
234
245
|
problem_with_exercise: '[Mumuki] Error con el ejercicio: %{title}'
|
235
246
|
processing_your_solution: Estamos procesando tu solución
|
236
|
-
profile: Perfil
|
237
247
|
profile_of: Perfil de %{username}
|
238
248
|
programming_since: Programando desde
|
239
249
|
progress: Progreso
|
@@ -251,6 +261,7 @@ es:
|
|
251
261
|
running: procesando
|
252
262
|
save: Guardar
|
253
263
|
see_context: Mirá la animación del principio
|
264
|
+
select_file: Seleccionar archivo
|
254
265
|
send: Enviar
|
255
266
|
sending_solution: Enviando solución
|
256
267
|
show: Mostrar
|
@@ -313,7 +324,6 @@ es:
|
|
313
324
|
unprepared_organization_explanation: Este recorrido aún no ha comenzado
|
314
325
|
unsubscribe: Dejar de recibir notificaciones
|
315
326
|
unsubscribed_successfully: Te desuscribiste exitosamente de los recordatorios.
|
316
|
-
upload_solution: "Subir solución"
|
317
327
|
uploading_solution: "Subiendo solución"
|
318
328
|
upvote: Es útil
|
319
329
|
upvotes_count_desc: Más útiles
|