mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-04-26 22:13:32 -04:00
Merge remote-tracking branch 'codecombat/master'
This commit is contained in:
commit
750e22ae05
51 changed files with 812 additions and 1142 deletions
app
assets
core
lib/surface
locale
models
schemas/models
styles
templates
views
scripts/analytics/mongodb/queries
server
classrooms
commons
lib
queues/scoring
routes
trial_requests
users
spec
test/app/views/editor/level
BIN
app/assets/docs/CodeCombatCoursesGettingStartedGuide.pdf
Normal file → Executable file
BIN
app/assets/docs/CodeCombatCoursesGettingStartedGuide.pdf
Normal file → Executable file
Binary file not shown.
BIN
app/assets/docs/CodeCombatTeacherGuideCourse2.pdf
Executable file
BIN
app/assets/docs/CodeCombatTeacherGuideCourse2.pdf
Executable file
Binary file not shown.
|
@ -47,6 +47,10 @@
|
|||
(window,document,"script","51a79585ee207206390002a2");
|
||||
</script>
|
||||
|
||||
<!-- start Mixpanel --><script type="text/javascript">(function(e,b){if(!b.__SV){var a,f,i,g;window.mixpanel=b;b._i=[];b.init=function(a,e,d){function f(b,h){var a=h.split(".");2==a.length&&(b=b[a[0]],h=a[1]);b[h]=function(){b.push([h].concat(Array.prototype.slice.call(arguments,0)))}}var c=b;"undefined"!==typeof d?c=b[d]=[]:d="mixpanel";c.people=c.people||[];c.toString=function(b){var a="mixpanel";"mixpanel"!==d&&(a+="."+d);b||(a+=" (stub)");return a};c.people.toString=function(){return c.toString(1)+".people (stub)"};i="disable time_event track track_pageview track_links track_forms register register_once alias unregister identify name_tag set_config people.set people.set_once people.increment people.append people.union people.track_charge people.clear_charges people.delete_user".split(" ");
|
||||
for(g=0;g<i.length;g++)f(c,i[g]);b._i.push([a,e,d])};b.__SV=1.2;a=e.createElement("script");a.type="text/javascript";a.async=!0;a.src="undefined"!==typeof MIXPANEL_CUSTOM_LIB_URL?MIXPANEL_CUSTOM_LIB_URL:"file:"===e.location.protocol&&"//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js".match(/^\/\//)?"https://cdn.mxpnl.com/libs/mixpanel-2-latest.min.js":"//cdn.mxpnl.com/libs/mixpanel-2-latest.min.js";f=e.getElementsByTagName("script")[0];f.parentNode.insertBefore(a,f)}})(document,window.mixpanel||[]);
|
||||
mixpanel.init("e71a4e60db7e1dc5e685be96776280f9");</script><!-- end Mixpanel -->
|
||||
|
||||
<script src="https://checkout.stripe.com/checkout.js"></script>
|
||||
|
||||
<!-- IE9 doesn't support defer attribute: https://github.com/h5bp/lazyweb-requests/issues/42 -->
|
||||
|
|
|
@ -64,7 +64,7 @@ module.exports = class Tracker
|
|||
|
||||
for userTrait in ['email', 'anonymous', 'dateCreated', 'name', 'testGroupNumber', 'gender', 'lastLevel', 'siteref', 'ageRange']
|
||||
traits[userTrait] ?= me.get(userTrait)
|
||||
console.log 'Would identify', traits if debugAnalytics
|
||||
console.log 'Would identify', me.id, traits if debugAnalytics
|
||||
return unless @isProduction and not me.isAdmin()
|
||||
|
||||
# Errorception
|
||||
|
@ -76,19 +76,29 @@ module.exports = class Tracker
|
|||
__insp?.push ['identify', me.id]
|
||||
__insp?.push ['tagSession', traits]
|
||||
|
||||
# Mixpanel
|
||||
# https://mixpanel.com/help/reference/javascript
|
||||
mixpanel.identify(me.id)
|
||||
mixpanel.register(traits)
|
||||
|
||||
trackPageView: ->
|
||||
name = Backbone.history.getFragment()
|
||||
console.log "Would track analytics pageview: '/#{name}'" if debugAnalytics
|
||||
url = "/#{name}"
|
||||
console.log "Would track analytics pageview: #{url}" if debugAnalytics
|
||||
@trackEventInternal 'Pageview', url: name unless me?.isAdmin() and @isProduction
|
||||
return unless @isProduction and not me.isAdmin()
|
||||
|
||||
# Google Analytics
|
||||
# https://developers.google.com/analytics/devguides/collection/analyticsjs/pages
|
||||
ga? 'send', 'pageview', "/#{name}"
|
||||
ga? 'send', 'pageview', url
|
||||
|
||||
trackEvent: (action, properties={}) =>
|
||||
# Mixpanel
|
||||
mixpanelIncludes = ['courses', 'courses/purchase', 'courses/teachers', 'courses/students', 'schools', 'teachers', 'teachers/freetrial']
|
||||
mixpanel.track('page viewed', 'page name' : name, url : url) if name in mixpanelIncludes
|
||||
|
||||
trackEvent: (action, properties={}, includeIntegrations=[]) =>
|
||||
@trackEventInternal action, _.cloneDeep properties unless me?.isAdmin() and @isProduction
|
||||
console.log 'Tracking external analytics event:', action, properties if debugAnalytics
|
||||
console.log 'Tracking external analytics event:', action, properties, includeIntegrations if debugAnalytics
|
||||
return unless me and @isProduction and not me.isAdmin()
|
||||
|
||||
# Google Analytics
|
||||
|
@ -105,6 +115,10 @@ module.exports = class Tracker
|
|||
# http://www.inspectlet.com/docs#tagging
|
||||
__insp?.push ['tagSession', action: action, properies: properties]
|
||||
|
||||
# Mixpanel
|
||||
# Only log explicit events for now
|
||||
mixpanel.track(action, properties) if 'Mixpanel' in includeIntegrations
|
||||
|
||||
trackEventInternal: (event, properties) =>
|
||||
# Skipping heavily logged actions we don't use internally
|
||||
unless event in ['Simulator Result', 'Started Level Load', 'Finished Level Load']
|
||||
|
|
|
@ -42,6 +42,7 @@ module.exports = FacebookHandler = class FacebookHandler extends CocoClass
|
|||
FB.api('/me', {fields: 'email,last_name,first_name,gender'}, @onReceiveMeInfo)
|
||||
|
||||
onReceiveMeInfo: (r) =>
|
||||
console.log "Got Facebook user info:", r
|
||||
unless r.email
|
||||
console.error('could not get data, since no email provided')
|
||||
return
|
||||
|
|
|
@ -15,7 +15,7 @@ module.exports = class Label extends CocoClass
|
|||
@sprite = options.sprite
|
||||
@camera = options.camera
|
||||
@layer = options.layer
|
||||
@style = options.style ? Label.STYLE_SAY
|
||||
@style = options.style ? (@sprite?.thang?.labelStyle || Label.STYLE_SAY)
|
||||
console.error @toString(), 'needs a sprite.' unless @sprite
|
||||
console.error @toString(), 'needs a camera.' unless @camera
|
||||
console.error @toString(), 'needs a layer.' unless @layer
|
||||
|
|
|
@ -684,7 +684,10 @@ module.exports = Lank = class Lank extends CocoClass
|
|||
return unless @thang
|
||||
blurb = if @thang.health <= 0 then null else @thang.sayMessage # Dead men tell no tales
|
||||
blurb = null if blurb in ['For Thoktar!', 'Bones!', 'Behead!', 'Destroy!', 'Die, humans!'] # Let's just hear, not see, these ones.
|
||||
labelStyle = if /Hero Placeholder/.test(@thang.id) then Label.STYLE_DIALOGUE else Label.STYLE_SAY
|
||||
if /Hero Placeholder/.test(@thang.id)
|
||||
labelStyle = Label.STYLE_DIALOGUE
|
||||
else
|
||||
labelStyle = @thang.labelStyle ? Label.STYLE_SAY
|
||||
@addLabel 'say', labelStyle if blurb
|
||||
if @labels.say?.setText blurb
|
||||
@notifySpeechUpdated blurb: blurb
|
||||
|
|
|
@ -990,8 +990,10 @@
|
|||
getting_started_3: "You'll see student's progress below as they sign up and join your class."
|
||||
additional_resources: "Additional Resources"
|
||||
additional_resources_1_pref: "Download/print our"
|
||||
additional_resources_1_mid: "Course 1 Teacher's Guide"
|
||||
additional_resources_1_suff: "explanations and solutions to each level."
|
||||
additional_resources_1_mid: "Course 1" # {change}
|
||||
additional_resources_1_mid2: "and"
|
||||
additional_resources_1_mid3: "Course 2"
|
||||
additional_resources_1_suff: "teacher's guides with solutions for each level." # {change}
|
||||
additional_resources_2_pref: "Complete our"
|
||||
additional_resources_2_suff: "to get two free enrollments for the rest of our paid courses."
|
||||
additional_resources_3_pref: "Visit our"
|
||||
|
@ -1000,6 +1002,9 @@
|
|||
additional_resources_4_pref: "Check out our"
|
||||
additional_resources_4_mid: "Schools Page"
|
||||
additional_resources_4_suff: "to learn more about CodeCombat's classroom offerings."
|
||||
educator_wiki_pref: "Or check out our new"
|
||||
educator_wiki_mid: "educator wiki"
|
||||
educator_wiki_suff: "to browse the guide online."
|
||||
your_classes: "Your Classes"
|
||||
no_classes: "No classes yet!"
|
||||
create_new_class1: "create new class"
|
||||
|
@ -1032,6 +1037,7 @@
|
|||
ambassador_title: "Ambassador"
|
||||
ambassador_title_description: "(Support)"
|
||||
ambassador_summary: "Tame our forum users and provide direction for those with questions. Our ambassadors represent CodeCombat to the world."
|
||||
teacher_title: "Teacher"
|
||||
|
||||
editor:
|
||||
main_title: "CodeCombat Editors"
|
||||
|
@ -1188,6 +1194,7 @@
|
|||
ambassador_join_note_strong: "Note"
|
||||
ambassador_join_note_desc: "One of our top priorities is to build multiplayer where players having difficulty solving levels can summon higher level wizards to help them. This will be a great way for ambassadors to do their thing. We'll keep you posted!"
|
||||
ambassador_subscribe_desc: "Get emails on support updates and multiplayer developments."
|
||||
teacher_subscribe_desc: "Get emails on updates and announcements for teachers."
|
||||
changes_auto_save: "Changes are saved automatically when you toggle checkboxes."
|
||||
diligent_scribes: "Our Diligent Scribes:"
|
||||
powerful_archmages: "Our Powerful Archmages:"
|
||||
|
|
|
@ -660,7 +660,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
password_tab: "Contraseña"
|
||||
emails_tab: "Correos"
|
||||
admin: "Admin"
|
||||
# manage_subscription: "Click here to manage your subscription."
|
||||
manage_subscription: "Click aquí para administrar tu subscripción"
|
||||
new_password: "Nueva Contraseña"
|
||||
new_password_verify: "Verificar"
|
||||
type_in_email: "Ingrese su correo electrónico para confirmar la eliminación de su cuenta."
|
||||
|
@ -865,26 +865,26 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
topics: "Tópicos"
|
||||
hours_content: "Horas de contenido:"
|
||||
get_free: "Obtenga curso GRATIS"
|
||||
# enroll_paid: "Enroll Students in Paid Courses"
|
||||
enroll_paid: "Anotar estudiantes en cursos pagos."
|
||||
you_have1: "Tiene"
|
||||
# you_have2: "unused paid enrollments"
|
||||
# use_one: "Use 1 paid enrollment for"
|
||||
# use_multiple: "Use paid enrollments for the following students:"
|
||||
# already_enrolled: "already enrolled"
|
||||
# licenses_remaining: "licenses remaining:"
|
||||
licenses_remaining: "licencias restantes:"
|
||||
# insufficient_enrollments: "insufficient paid enrollments"
|
||||
# enroll_students: "Enroll Students"
|
||||
# get_enrollments: "Get More Enrollments"
|
||||
# change_language: "Change Course Language"
|
||||
change_language: "Cambiar idioma del curso"
|
||||
keep_using: "Seguir Usando"
|
||||
switch_to: "Cambiar a"
|
||||
greetings: "Saludos!"
|
||||
learn_p: "Aprender Python"
|
||||
learn_j: "Aprender JavaScript"
|
||||
# language_cannot_change: "Language cannot be changed once students join a class."
|
||||
# back_classrooms: "Back to my classrooms"
|
||||
# back_courses: "Back to my courses"
|
||||
# edit_details: "Edit class details"
|
||||
language_cannot_change: "El lenguaje no puede ser cambiado una vez que el estudiante ingreso a la clase."
|
||||
back_classrooms: "Volver a mis aulas"
|
||||
back_courses: "Volver a mis cursos"
|
||||
edit_details: "Editar detallesde clase"
|
||||
# enrolled_courses: "enrolled in paid courses:"
|
||||
# purchase_enrollments: "Purchase Enrollments"
|
||||
remove_student: "Quitar alumno"
|
||||
|
@ -898,14 +898,14 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
play_campaign_description: "Estas listo para dar el siguiente paso! Explora cientos de desafiantes niveles, aprende habilidades avanzadas de programación, y compite en arenas multijugador!"
|
||||
create_account_title: "Crea una Cuenta"
|
||||
create_account_description: "Registrate gratis con una cuenta CodeCombat y obten acceso a mas niveles, mas habilidades de programacion, y mas diversion!"
|
||||
# preview_campaign_title: "Preview Campaign"
|
||||
preview_campaign_title: "Previsualizar campaña"
|
||||
# preview_campaign_description: "Take a sneak peek at all that CodeCombat has to offer before signing up for your FREE account."
|
||||
arena: "Arena"
|
||||
# arena_soon_title: "Arena Coming Soon"
|
||||
arena_soon_title: "Arena pronto disponible"
|
||||
# arena_soon_description: "We are working on a multiplayer arena for classrooms at the end of"
|
||||
not_enrolled1: "No inscrito"
|
||||
# not_enrolled2: "Ask your teacher to enroll you in the next course."
|
||||
# next_course: "Next Course"
|
||||
not_enrolled2: "Preguntale a tu maestro para anotarte en el proximo curso."
|
||||
next_course: "Próximo curso"
|
||||
coming_soon1: "Próximamente"
|
||||
coming_soon2: "Estamos trabajando duro para hacer mas cursos para ti!"
|
||||
available_levels: "Niveles Disponibles"
|
||||
|
@ -917,62 +917,62 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
# play_now_learn_2: "while loops to solve pesky puzzles"
|
||||
play_now_learn_3: "cadenas & variables para personalizar acciones"
|
||||
play_now_learn_4: "como vencer a un ogro (habilidades importantes en la vida!)"
|
||||
# welcome_to_page: "Welcome to your Courses page!"
|
||||
# completed_hoc: "Amazing! You've completed the Hour of Code course!"
|
||||
welcome_to_page: "¡Bienvenido a tu página de cursose!"
|
||||
completed_hoc: "¡Asombroso! ¡Has completado el curso de la hora de código!"
|
||||
ready_for_more_header: "Listo para mas? Juega el modo campaña!"
|
||||
ready_for_more_1: "Usa las gemas para desbloquear nuevos objetos!"
|
||||
# ready_for_more_2: "Play through brand new worlds and challenges"
|
||||
# ready_for_more_3: "Learn even more programming!"
|
||||
ready_for_more_2: "Juega atravez de nuevos mundos y desafios"
|
||||
ready_for_more_3: "¡Aprendé todavía más programando!"
|
||||
saved_games: "Juegos Guardados"
|
||||
# hoc: "Hour of Code"
|
||||
hoc: "Hora del código"
|
||||
my_classes: "Mis Clases"
|
||||
# class_added: "Class successfully added!"
|
||||
# view_class: "view class"
|
||||
class_added: "Clase añadida satisfactoriamente!"
|
||||
view_class: "ver clase"
|
||||
view_levels: "ver niveles"
|
||||
# join_class: "Join A Class"
|
||||
# ask_teacher_for_code: "Ask your teacher if you have a CodeCombat class code! If so, enter it below:"
|
||||
join_class: "Unirse a clase"
|
||||
ask_teacher_for_code: "Preguntalé a tu profesor si tu tienes un código de CodeCombat! Si lo tiene, ingresalo debajo:"
|
||||
# enter_c_code: "<Enter Class Code>"
|
||||
# join: "Join"
|
||||
# joining: "Joining class"
|
||||
# course_complete: "Course Complete"
|
||||
# play_arena: "Play Arena"
|
||||
join: "Unirse"
|
||||
joining: "Uniendose a claseJoining class"
|
||||
course_complete: "Curso completo"
|
||||
play_arena: "Jugar Arena"
|
||||
start: "Iniciar"
|
||||
# last_level: "Last Level"
|
||||
# welcome_to_hoc: "Adventurers, welcome to our Hour of Code!"
|
||||
# logged_in_as: "Logged in as:"
|
||||
# not_you: "Not you?"
|
||||
# welcome_back: "Hi adventurer, welcome back!"
|
||||
# continue_playing: "Continue Playing"
|
||||
# more_options: "More options:"
|
||||
# option1_header: "Option 1: Invite students via email"
|
||||
last_level: "Último nivel"
|
||||
welcome_to_hoc: "Aventureros, bienvenidos a su Hora del Código!!"
|
||||
logged_in_as: "Logeado como:"
|
||||
not_you: "No eres tú?"
|
||||
welcome_back: "Hola aventurero, bienvenido nuevamente!"
|
||||
continue_playing: "Seguir jugando"
|
||||
more_options: "Másopciones:"
|
||||
option1_header: "Opción 1: Invitar estudiantes vía email"
|
||||
# option1_body: "Students will automatically be sent an invitation to join this class, and will need to create an account with a username and password."
|
||||
# option2_header: "Option 2: Send URL to your students"
|
||||
option2_header: "Opción 2: Enviarles la URL a tus estudiantes"
|
||||
# option2_body: "Students will be asked to enter an email address, username and password to create an account."
|
||||
# option3_header: "Option 3: Direct students to codecombat.com/courses"
|
||||
option3_header: "Opción 3: Dirigir estudiantes a to codecombat.com/courses"
|
||||
# option3_body: "Give students the following passcode to enter along with an email address, username and password when they create an account."
|
||||
# thank_you_pref: "Thank you for your purchase! You can now assign"
|
||||
# thank_you_suff: "more students to paid courses."
|
||||
thank_you_pref: "Gracias por tu compra! Ahora puedes asignar"
|
||||
thank_you_suff: "más estudiantes a cursos pagos."
|
||||
# return_to_class: "Return to classroom"
|
||||
# return_to_course_man: "Return to course management."
|
||||
# students_not_enrolled: "students not enrolled"
|
||||
# total_all_classes: "Total Across All Classes"
|
||||
# how_many_enrollments: "How many additional paid enrollments do you need?"
|
||||
# each_student_access: "Each student in a class will get access to Courses 2-4 once they are enrolled in paid courses. You may assign each course to each student individually."
|
||||
# purchase_now: "Purchase Now"
|
||||
purchase_now: "Comprar Ahora"
|
||||
# enrollments: "enrollments"
|
||||
remove_student1: "Quitar alumno"
|
||||
# are_you_sure: "Are you sure you want to remove this student from this class?"
|
||||
are_you_sure: "¿Estás seguro que quieres quitar este alumno de tu clase?"
|
||||
# remove_description1: "Student will lose access to this classroom and assigned classes. Progress and gameplay is NOT lost, and the student can be added back to the classroom at any time."
|
||||
# remove_description2: "The activated paid license will not be returned."
|
||||
keep_student: "Mantener alumno"
|
||||
# removing_user: "Removing user"
|
||||
# to_join_ask: "To join a class, ask your teacher for an unlock code."
|
||||
# join_this_class: "Join Class"
|
||||
# enter_here: "<enter unlock code here>"
|
||||
removing_user: "Removiendo usuario"
|
||||
to_join_ask: "Para ingresar a una clase, preguntale a tu maestro por un código de acceso."
|
||||
join_this_class: "Ingresar clase"
|
||||
enter_here: "<Ingresar el código aquí>"
|
||||
# successfully_joined: "Successfully joined"
|
||||
# click_to_start: "Click here to start taking"
|
||||
# my_courses: "My Courses"
|
||||
# classroom: "Classroom"
|
||||
my_courses: "Mis Cursos"
|
||||
classroom: "Aulas"
|
||||
# use_school_email: "use your school email if you have one"
|
||||
# unique_name: "a unique name no one has chosen"
|
||||
pick_something: "Escoge algo que recuerdes"
|
||||
|
|
|
@ -4,7 +4,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
|
|||
no_ie: "המשחק לא עובד באקפלורר 8 וישן יותר. סליחה!" # Warning that only shows up in IE8 and older
|
||||
no_mobile: "המשחק לא עוצב לטלפונים ואולי לא יעבוד" # Warning that shows up on mobile devices
|
||||
play: "שחק" # The big play button that opens up the campaign view.
|
||||
# play_campaign_version: "Play Campaign Version" # Shows up under big play button if you only play /courses
|
||||
play_campaign_version: "שחק בגרסת המסע" # Shows up under big play button if you only play /courses
|
||||
old_browser: "או או, נראה כי הדפדפן שלך יותר מידי ישן כדי להריץ את המשחק. סליחה!" # Warning that shows up on really old Firefox/Chrome/Safari
|
||||
old_browser_suffix: "אתה יכול לנסות בכול מקרה אבל זה כנראה לא יעבוד."
|
||||
ipad_browser: "חדשות רעות: CodeCombat לא עובד בדפדפן של הiPad-. חדשות טובות: גרסת הiPad של המשחק ממתינה לאישור מחברת Apple."
|
||||
|
@ -17,7 +17,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
|
|||
nav:
|
||||
play: "שלבים" # The top nav bar entry where players choose which levels to play
|
||||
community: "קהילה"
|
||||
# courses: "Courses"
|
||||
courses: "מסלולים"
|
||||
editor: "עורך"
|
||||
blog: "בלוג"
|
||||
forum: "פורום"
|
||||
|
@ -33,7 +33,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
|
|||
contact: "צור קשר"
|
||||
twitter_follow: "עקוב אחרינו בטוויטר"
|
||||
teachers: "מורים"
|
||||
# careers: "Careers"
|
||||
careers: "קריירות"
|
||||
|
||||
modal:
|
||||
close: "סגור"
|
||||
|
@ -52,7 +52,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
|
|||
|
||||
play:
|
||||
play_as: "שחק בתור " # Ladder page
|
||||
# compete: "Compete!" # Course details page
|
||||
compete: "הושלם!" # Course details page
|
||||
spectate: "צופה" # Ladder page
|
||||
players: "שחקנים" # Hover over a level on /play
|
||||
hours_played: "שעות משחק" # Hover over a level on /play
|
||||
|
@ -75,7 +75,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
|
|||
subscription_required: "יש צורך במנוי"
|
||||
anonymous: "משתמש אנונימי"
|
||||
level_difficulty: "רמת קושי: "
|
||||
# play_classroom_version: "Play Classroom Version" # Choose a level in campaign version that you also can play in one of your courses
|
||||
play_classroom_version: "שיק בגרסה הכיתתית" # Choose a level in campaign version that you also can play in one of your courses
|
||||
campaign_beginner: "מסע המתחילים"
|
||||
awaiting_levels_adventurer_prefix: ".אנחנו מוסיפים חמישה שלבים בכל שבוע" # {change}
|
||||
awaiting_levels_adventurer: "הירשם כהרפתקן"
|
||||
|
@ -83,7 +83,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
|
|||
adjust_volume: "שנה ווליום"
|
||||
campaign_multiplayer: "זירות רב-המשתתפים"
|
||||
campaign_multiplayer_description: "..."
|
||||
# campaign_old_multiplayer: "(Deprecated) Old Multiplayer Arenas"
|
||||
campaign_old_multiplayer: "(לא מומלץ) זירות מרובי משתתפים ישנות"
|
||||
# campaign_old_multiplayer_description: "Relics of a more civilized age. No simulations are run for these older, hero-less multiplayer arenas."
|
||||
|
||||
share_progress_modal:
|
||||
|
@ -114,9 +114,9 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
|
|||
log_in: "כנס עם סיסמה"
|
||||
required: ".יש להתחבר על מנת לגשת לשלב זה"
|
||||
login_switch: "? כבר יש לך משתמש"
|
||||
# school_name: "School Name and City"
|
||||
# optional: "optional"
|
||||
# school_name_placeholder: "Example High School, Springfield, IL"
|
||||
school_name: "שם בית ספר ועיר"
|
||||
optional: "רשות"
|
||||
school_name_placeholder: "לדוגמה: תיכון עירוני X, תל אביב."
|
||||
|
||||
recover:
|
||||
recover_account_title: "שחזר סיסמה"
|
||||
|
@ -157,15 +157,15 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
|
|||
general:
|
||||
and: "וגם"
|
||||
name: "שם"
|
||||
date: "Date"
|
||||
date: "תאריך"
|
||||
body: "גוף"
|
||||
version: "גרסה"
|
||||
pending: "ממתין"
|
||||
accepted: "התקבל"
|
||||
rejected: "נדחה"
|
||||
withdrawn: "האוייב נסוג"
|
||||
# accept: "Accept"
|
||||
# reject: "Reject"
|
||||
accept: "מסכים"
|
||||
reject: "דחה"
|
||||
# withdraw: "Withdraw"
|
||||
submitter: "מוסר"
|
||||
submitted: "נמסר"
|
||||
|
@ -221,12 +221,12 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
|
|||
years: "שנים"
|
||||
|
||||
play_level:
|
||||
# completed_level: "Completed Level:"
|
||||
# course: "Course:"
|
||||
completed_level: "שלב שהושלם:"
|
||||
course: "מסלול:"
|
||||
done: "סיים"
|
||||
# next_level: "Next Level:"
|
||||
# next_game: "Next game"
|
||||
# show_menu: "Show game menu"
|
||||
next_level: "השלב הבא:"
|
||||
next_game: "המשחק הבא"
|
||||
show_menu: "הצג תפריט משחק"
|
||||
home: "בית" # Not used any more, will be removed soon.
|
||||
level: "שלב" # Like "Level: Dungeons of Kithgard"
|
||||
skip: "דלג"
|
||||
|
@ -256,13 +256,13 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
|
|||
victory_saving_progress: "שומר התקדמות"
|
||||
victory_go_home: "חזור הביתה"
|
||||
victory_review: "!ספר לנו עוד"
|
||||
# victory_review_placeholder: "How was the level?"
|
||||
victory_review_placeholder: "איך היה השלב?"
|
||||
victory_hour_of_code_done: "?סיימת"
|
||||
victory_hour_of_code_done_yes: "שלי Hour of Code™! כן, סיימתי עם ה"
|
||||
victory_experience_gained: "שנצבר XP"
|
||||
victory_gems_gained: "אבני חן שנצברו"
|
||||
victory_new_item: "חפץ חדש"
|
||||
# victory_viking_code_school: "Holy smokes, that was a hard level you just beat! If you aren't already a software developer, you should be. You just got fast-tracked for acceptance with Viking Code School, where you can take your skills to the next level and become a professional web developer in 14 weeks."
|
||||
victory_viking_code_school: "אבוקדו קדוש, זה היה שלב קשה שסיימת! אם אתה עדיין לא מפתח תוכנה, אתה צריך להיות אחד. בדיוק עלית על הכביש המהיר בכדי להתקבל ל Viking Code School, שם תוכל לשאת את כישוריך לרמה הבאה ותוכל להפוך למפתח רשת מקצועי תוך 14 שבועות בלבד."
|
||||
victory_become_a_viking: "הפוך לוויקינג"
|
||||
guide_title: "מדריך"
|
||||
tome_cast_button_run: "הפעל"
|
||||
|
@ -297,7 +297,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
|
|||
tip_scrub_shortcut: "Ctrl+[ ו Ctrl+] האץ אחורה וקדימה באמצעות" # {change}
|
||||
tip_guide_exists: ".לחץ על המדריך, בתוך תפריט המשחק (למעלה בקצה העמוד), למידע שימושי"
|
||||
tip_open_source: "!הוא 100% קוד פתוח CodeCombat"
|
||||
# tip_tell_friends: "Enjoying CodeCombat? Tell your friends about us!"
|
||||
tip_tell_friends: "נהנה מCodeCombat? ספר לחבריךעלינו!"
|
||||
tip_beta_launch: ".הפיץ את גרסת הבטא באוקטובר, 2013 CodeCombat"
|
||||
tip_think_solution: ".תחשוב על הפתרון, לא על הבעיה"
|
||||
tip_theory_practice: "תיאורטית, אין הבדל בין התאוריה לאימון. אבל באימון, יש. - יוגי ברה"
|
||||
|
@ -307,7 +307,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
|
|||
tip_baby_coders: ".בעתיד, אפילו תינוקות יהיו כשפי על"
|
||||
tip_morale_improves: ".הטעינה תמשיך עד שהמורל ישתפר"
|
||||
tip_all_species: ".אנחנו מאמינים בשוויון הזדמנויות לכל היצורים בלמידת תכנות"
|
||||
# tip_reticulating: "Reticulating spines."
|
||||
tip_reticulating: "Reticulating spines."
|
||||
tip_harry: " ,תה' מכשף"
|
||||
tip_great_responsibility: "עם כישרון גדול בתכנות באה גם אחריות דיבאגינג גדולה."
|
||||
tip_munchkin: "אם לא תאכל את הירקות, מאצ'קין יבוא אליך בלילה כשאתה ישן."
|
||||
|
@ -410,7 +410,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
|
|||
feature7: "פרטיים <strong>שבטים</strong>"
|
||||
free: "חינם"
|
||||
month: "חודש"
|
||||
# must_be_logged: "You must be logged in first. Please create an account or log in from the menu above."
|
||||
must_be_logged: "עליך להיות מחובר תחילה. אנא צור חשבון חדש או היכנס לחשבונך באמצעות התפריט למעלה."
|
||||
subscribe_title: "רכוש מנוי"
|
||||
unsubscribe: "הסר מנוי"
|
||||
confirm_unsubscribe: "אשר הסרת מנוי"
|
||||
|
@ -484,10 +484,10 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
|
|||
blocks: "הגנה" # As in "this shield blocks this much damage"
|
||||
backstab: "פגיעה בגב" # As in "this dagger does this much backstab damage"
|
||||
skills: "מיומנויות"
|
||||
# attack_1: "Deals"
|
||||
attack_1: "מבצעים"
|
||||
# attack_2: "of listed"
|
||||
# attack_3: "weapon damage."
|
||||
# health_1: "Gains"
|
||||
health_1: "רווחים"
|
||||
# health_2: "of listed"
|
||||
# health_3: "armor health."
|
||||
speed_1: "זז במהירות של"
|
||||
|
@ -499,8 +499,8 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
|
|||
skill_docs:
|
||||
writable: "ניתן לכתיבה" # Hover over "attack" in Your Skills while playing a level to see most of this
|
||||
read_only: "לקריאה בלבד"
|
||||
# action: "Action"
|
||||
# spell: "Spell"
|
||||
action: "פעולה"
|
||||
spell: "כישוף"
|
||||
action_name: "שם"
|
||||
action_cooldown: "לוקח"
|
||||
action_specific_cooldown: ":זמן להתקררות"
|
||||
|
|
|
@ -587,35 +587,35 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
|
|||
more_info_3: "でCodeCombatを使っている教育者の仲間とつながりましょう。"
|
||||
|
||||
teachers_survey:
|
||||
# title: "Teacher Survey"
|
||||
# must_be_logged: "You must be logged in first. Please create an account or log in from the menu above."
|
||||
# retrieving: "Retrieving information..."
|
||||
# being_reviewed_1: "Your application for a free trial is being"
|
||||
# being_reviewed_2: "reviewed."
|
||||
# approved_1: "Your application for a free trial was"
|
||||
# approved_2: "approved!"
|
||||
# approved_4: "You can now enroll your students on the"
|
||||
# approved_5: "courses"
|
||||
# approved_6: "page."
|
||||
# denied_1: "Your application for a free trial has been"
|
||||
# denied_2: "denied."
|
||||
# contact_1: "Please contact"
|
||||
# contact_2: "if you have further questions."
|
||||
# description_1: "We offer free trials to teachers. You will be given 2 free enrollments which can be used to enroll students in paid courses."
|
||||
# description_1b: "You can find more information on our"
|
||||
# description_2: "teachers"
|
||||
# description_3: "page."
|
||||
# description_4: "Please fill out this quick survey and we’ll email you setup instructions."
|
||||
# email: "Email Address"
|
||||
title: "教師用アンケート"
|
||||
must_be_logged: "最初にログインしてください。アカウントを作成するか、上記のメニューからログインしてください。"
|
||||
retrieving: "情報を取得しています..."
|
||||
being_reviewed_1: "無料トライアルの申し込みが"
|
||||
being_reviewed_2: "レビューされています。"
|
||||
approved_1: "無料トライアルの申し込みが"
|
||||
approved_2: "承認されました!"
|
||||
approved_4: "以下のページで生徒を入会させることができます:"
|
||||
approved_5: "コース"
|
||||
approved_6: "ページ。"
|
||||
denied_1: "無料トライアルの申し込みが"
|
||||
denied_2: "拒否されました。"
|
||||
contact_1: "お問い合わせください"
|
||||
contact_2: "ご質問がある場合は"
|
||||
description_1: "教師の方に無料トライアルを提供しています。有料コースで生徒さんを入会させるのに使用できる、2つの無料入会権が与えられます。"
|
||||
description_1b: "詳細は以下のページで参照してください:"
|
||||
description_2: "教師用"
|
||||
description_3: "ページ。"
|
||||
description_4: "この簡易アンケートに記入をお願いします。設定手順をメールにてお送りします。"
|
||||
email: "電子メールアドレス"
|
||||
school: "学校名"
|
||||
location: "市町村"
|
||||
# age_students: "How old are your students?"
|
||||
# under: "Under"
|
||||
# other: "Other:"
|
||||
# amount_students: "How many students do you teach?"
|
||||
# hear_about: "How did you hear about CodeCombat?"
|
||||
# fill_fields: "Please fill out all fields."
|
||||
# thanks: "Thanks! We'll send you setup instructions shortly."
|
||||
age_students: "生徒さんの年齢を教えてください。"
|
||||
under: "未満"
|
||||
other: "その他:"
|
||||
amount_students: "何人の生徒さんをお持ちですか?"
|
||||
hear_about: "CodeCombatをどのようにお知りなりましたか?"
|
||||
fill_fields: "全てのフィールドを記入してください。"
|
||||
thanks: "ありがとうございます。設定の手順を追ってお送りします。"
|
||||
|
||||
versions:
|
||||
save_version_title: "新しいバージョンをセーブ"
|
||||
|
@ -623,9 +623,9 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
|
|||
submitting_patch: "パッチを送信中..."
|
||||
cla_prefix: "変更を適用するには, 私達のCLAに同意する必要があります。"
|
||||
cla_url: "CLA"
|
||||
# cla_suffix: "."
|
||||
cla_suffix: "。"
|
||||
cla_agree: "同意する"
|
||||
# owner_approve: "An owner will need to approve it before your changes will become visible."
|
||||
owner_approve: "ユーザーは変更が実際に表示される前に同意する必要があります。"
|
||||
|
||||
contact:
|
||||
contact_us: "お問い合わせ"
|
||||
|
@ -660,23 +660,23 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
|
|||
password_tab: "パスワード"
|
||||
emails_tab: "メール"
|
||||
admin: "管理者"
|
||||
# manage_subscription: "Click here to manage your subscription."
|
||||
manage_subscription: "購読を管理するにはここをクリックしてください。"
|
||||
new_password: "新パスワード"
|
||||
new_password_verify: "新パスワードを再入力"
|
||||
type_in_email: "アカウントの削除を確認するために、メールアドレスを入力して下さい。"
|
||||
type_in_email_progress: "進捗を消すために、メールアドレスを入力してください。"
|
||||
type_in_password: "そして、パスワードを入力してください。"
|
||||
email_subscriptions: "ニュースレターの購読"
|
||||
email_subscriptions_none: "No Email Subscriptions."
|
||||
email_subscriptions_none: "ニュースレターの購読はありません。"
|
||||
email_announcements: "お知らせ"
|
||||
email_announcements_description: "CodeCombatの最新のニュースや進展をメールで受け取る"
|
||||
email_notifications: "通知"
|
||||
# email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity."
|
||||
# email_any_notes: "Any Notifications"
|
||||
# email_any_notes_description: "Disable to stop all activity notification emails."
|
||||
email_notifications_summary: "CodeCombatアクティビティに関する自動電子メール通知の管理。"
|
||||
email_any_notes: "すべての通知"
|
||||
email_any_notes_description: "アクティビティすべての通知メールを停止することを無効にします。"
|
||||
email_news: "ニュース"
|
||||
email_recruit_notes: "求人"
|
||||
# email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job."
|
||||
email_recruit_notes_description: "上手にプレイしてくれる場合、(更に良い)仕事を紹介するためにこちらから連絡を差し上げる場合があります。"
|
||||
contributor_emails: "開発を手伝ってくれる人向けのメール"
|
||||
contribute_prefix: "私達は開発を手伝ってくれる人を探しています。 詳しくは "
|
||||
contribute_page: "こちらのページ"
|
||||
|
|
|
@ -4,20 +4,20 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
|
|||
no_ie: "죄송하지만 코드컴뱃은 인터넷 익스플로러 8에서는 동작하지 않습니다." # Warning that only shows up in IE8 and older
|
||||
no_mobile: "코드 컴뱃은 모바일 기기용으로 제작되지 않았습니다. 아마 동작하지 않을 가능성이 높습니다." # Warning that shows up on mobile devices
|
||||
play: "시작" # The big play button that opens up the campaign view.
|
||||
# play_campaign_version: "Play Campaign Version" # Shows up under big play button if you only play /courses
|
||||
play_campaign_version: "캠페인 버전 플레이" # Shows up under big play button if you only play /courses
|
||||
old_browser: "브라우저가 너무 오래된 버전이라 코드 컴뱃을 실행할 수 없습니다." # Warning that shows up on really old Firefox/Chrome/Safari
|
||||
old_browser_suffix: "시도해볼 수는 있겠지만..안될 수도 있습니다."
|
||||
# ipad_browser: "Bad news: CodeCombat doesn't run on iPad in the browser. Good news: our native iPad app is awaiting Apple approval."
|
||||
ipad_browser: "슬픈 소식: 코드컴뱃은 아이패드의 브라우저에서 구동되지않습니다. 좋은 소식: 우리의 아이패드 앱은 애플의 승인을 기다리고있습니다 ."
|
||||
campaign: "캠페인"
|
||||
for_beginners: "초보자용"
|
||||
multiplayer: "멀티플레이어" # Not currently shown on home page
|
||||
for_developers: "개발자용" # Not currently shown on home page.
|
||||
# or_ipad: "Or download for iPad"
|
||||
or_ipad: "또는 아이패드의 다운로드"
|
||||
|
||||
nav:
|
||||
play: "레벨" # The top nav bar entry where players choose which levels to play
|
||||
community: "커뮤니티"
|
||||
# courses: "Courses"
|
||||
courses: "코스"
|
||||
editor: "에디터"
|
||||
blog: "블로그"
|
||||
forum: "포럼"
|
||||
|
@ -33,7 +33,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
|
|||
contact: "문의"
|
||||
twitter_follow: "팔로우"
|
||||
teachers: "선생님들"
|
||||
# careers: "Careers"
|
||||
careers: "채용"
|
||||
|
||||
modal:
|
||||
close: "닫기"
|
||||
|
@ -52,7 +52,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
|
|||
|
||||
play:
|
||||
play_as: "Play As " # Ladder page
|
||||
# compete: "Compete!" # Course details page
|
||||
compete: "경쟁!" # Course details page
|
||||
spectate: "관중모드" # Ladder page
|
||||
players: "플레이어" # Hover over a level on /play
|
||||
hours_played: "플레이한 시간" # Hover over a level on /play
|
||||
|
@ -68,14 +68,14 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
|
|||
achievements: "성취한 목표" # Tooltip on achievement list button from /play
|
||||
account: "계정" # Tooltip on account button from /play
|
||||
settings: "설정" # Tooltip on settings button from /play
|
||||
# poll: "Poll" # Tooltip on poll button from /play
|
||||
poll: "투표" # Tooltip on poll button from /play
|
||||
next: "다음" # Go from choose hero to choose inventory before playing a level
|
||||
change_hero: "영웅 교체" # Go back from choose inventory to choose hero
|
||||
buy_gems: "젬 구매"
|
||||
# subscription_required: "Subscription Required"
|
||||
subscription_required: "가입 필수"
|
||||
anonymous: "이름없는 플레이어"
|
||||
level_difficulty: "난이도: "
|
||||
# play_classroom_version: "Play Classroom Version" # Choose a level in campaign version that you also can play in one of your courses
|
||||
play_classroom_version: "교실 버전 플레이" # Choose a level in campaign version that you also can play in one of your courses
|
||||
campaign_beginner: "초보자 캠페인"
|
||||
awaiting_levels_adventurer_prefix: "매주 마다 새로운 레벨이 생깁니다."
|
||||
awaiting_levels_adventurer: "모험자로 등록 하세요!"
|
||||
|
@ -83,16 +83,16 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
|
|||
adjust_volume: "소리 조절"
|
||||
campaign_multiplayer: "멀티 플레이어 전투장"
|
||||
campaign_multiplayer_description: "... 이곳에서 당신은 다른 인간 플레이어들과 직접 결투할 수 있습니다."
|
||||
# campaign_old_multiplayer: "(Deprecated) Old Multiplayer Arenas"
|
||||
# campaign_old_multiplayer_description: "Relics of a more civilized age. No simulations are run for these older, hero-less multiplayer arenas."
|
||||
campaign_old_multiplayer: "(추천하지 않습니다) 숙련된 멀티플레이어 경쟁"
|
||||
campaign_old_multiplayer_description: "더 문명화 된 시대의 유물. 어떤 시뮬레이션은 이러한 이전, 영웅없는 멀티 경기장에 대해 실행되지 않습니다."
|
||||
|
||||
share_progress_modal:
|
||||
# blurb: "You’re making great progress! Tell your parent how much you've learned with CodeCombat."
|
||||
blurb: "당신은 큰 진전을 보이고있습니다! 당신이 코드컴뱃으로 얼마나 많이 배웠는지 부모님게 말하십시오."
|
||||
email_invalid: "이메일 주소가 올바르지 않습니다."
|
||||
# form_blurb: "Enter your parent's email below and we’ll show them!"
|
||||
form_blurb: "아래에 부모님의 이메일을 입력하고 우리는 그것들을 보여줍니다!"
|
||||
form_label: "이메일"
|
||||
placeholder: "이메일"
|
||||
# title: "Excellent Work, Apprentice"
|
||||
title: "우수한, 초심자"
|
||||
|
||||
login:
|
||||
sign_up: "계정 생성"
|
||||
|
@ -100,8 +100,8 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
|
|||
logging_in: "로그인 중"
|
||||
log_out: "로그아웃"
|
||||
forgot_password: "비밀번호를 잊으셨나요?"
|
||||
# authenticate_gplus: "Authenticate G+"
|
||||
# load_profile: "Load G+ Profile"
|
||||
authenticate_gplus: "G+ 인증"
|
||||
load_profile: "G+ 프로필 불러오기"
|
||||
finishing: "완료중.."
|
||||
sign_in_with_facebook: "Facebook으로 로그인"
|
||||
sign_in_with_gplus: "G+로 로그인"
|
||||
|
@ -114,9 +114,9 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
|
|||
log_in: "비밀번호로 로그인"
|
||||
required: "진행하기 전에 로그인이 필요합니다."
|
||||
login_switch: "이미 계정이 있으신가요?"
|
||||
# school_name: "School Name and City"
|
||||
# optional: "optional"
|
||||
# school_name_placeholder: "Example High School, Springfield, IL"
|
||||
school_name: "학교 이름과 도시"
|
||||
optional: "옵션"
|
||||
school_name_placeholder: "예시 고등학교, 스프링필드, IL"
|
||||
|
||||
recover:
|
||||
recover_account_title: "계정 복구"
|
||||
|
@ -142,7 +142,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
|
|||
save: "저장"
|
||||
publish: "내보내기"
|
||||
create: "생성"
|
||||
fork: "Fork"
|
||||
fork: "포크"
|
||||
play: "시작" # When used as an action verb, like "Play next level"
|
||||
retry: "재시도"
|
||||
actions: "행동"
|
||||
|
@ -164,20 +164,20 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
|
|||
accepted: "적용됨"
|
||||
rejected: "거부됨"
|
||||
withdrawn: "취소됨"
|
||||
# accept: "Accept"
|
||||
# reject: "Reject"
|
||||
# withdraw: "Withdraw"
|
||||
accept: "승인"
|
||||
reject: "보류"
|
||||
withdraw: "철수"
|
||||
submitter: "제출자"
|
||||
submitted: "제출됨"
|
||||
commit_msg: "커밋 메세지"
|
||||
version_history: "버전 히스토리"
|
||||
version_history_for: "버전 히스토리 : "
|
||||
# select_changes: "Select two changes below to see the difference."
|
||||
# undo_prefix: "Undo"
|
||||
select_changes: "차이를 보기위해 두 가지 사항을 변경하도록 선택합니다."
|
||||
undo_prefix: "되돌리기"
|
||||
undo_shortcut: "(Ctrl+Z)"
|
||||
# redo_prefix: "Redo"
|
||||
redo_prefix: "다시하기"
|
||||
redo_shortcut: "(Ctrl+Shift+Z)"
|
||||
# play_preview: "Play preview of current level"
|
||||
play_preview: "현재 수준의 미리보기 재생"
|
||||
result: "결과"
|
||||
results: "결과들"
|
||||
description: "설명"
|
||||
|
@ -221,12 +221,12 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
|
|||
years: "년"
|
||||
|
||||
play_level:
|
||||
# completed_level: "Completed Level:"
|
||||
# course: "Course:"
|
||||
completed_level: "완료된 레벨:"
|
||||
course: "코스:"
|
||||
done: "완료"
|
||||
# next_level: "Next Level:"
|
||||
# next_game: "Next game"
|
||||
# show_menu: "Show game menu"
|
||||
next_level: "다음 레벨:"
|
||||
next_game: "다음 게임"
|
||||
show_menu: "게임 매뉴 보이기"
|
||||
home: "홈" # Not used any more, will be removed soon.
|
||||
level: "레벨" # Like "Level: Dungeons of Kithgard"
|
||||
skip: "넘어가기"
|
||||
|
@ -256,40 +256,40 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
|
|||
victory_saving_progress: "저장하기"
|
||||
victory_go_home: "홈으로"
|
||||
victory_review: "리뷰를 남겨주세요"
|
||||
# victory_review_placeholder: "How was the level?"
|
||||
victory_review_placeholder: "어떤 레벨입니까?"
|
||||
victory_hour_of_code_done: "정말 종료합니까?"
|
||||
victory_hour_of_code_done_yes: "네 내 Hour of Code™ 완료했습니다!"
|
||||
victory_experience_gained: "획득한 경험치"
|
||||
victory_gems_gained: "획득한 젬"
|
||||
victory_new_item: "새로운 아이템"
|
||||
# victory_viking_code_school: "Holy smokes, that was a hard level you just beat! If you aren't already a software developer, you should be. You just got fast-tracked for acceptance with Viking Code School, where you can take your skills to the next level and become a professional web developer in 14 weeks."
|
||||
victory_viking_code_school: "놀랍습니다, 당신은 그냥 이길 힘든 수준이었습니다! 이미 소프트웨어 개발자가 아닌 경우, 당신은 비이킹 코드 학교에서 빠르게 이해할것입니다, 당신이 다음 레벨에서 자신의 능력을 14주 동안 전문 웹 개발자가 될 수있는 곳입니다."
|
||||
victory_become_a_viking: "바이킹이 되세요"
|
||||
guide_title: "가이드"
|
||||
# tome_cast_button_run: "Run"
|
||||
# tome_cast_button_running: "Running"
|
||||
# tome_cast_button_ran: "Ran"
|
||||
# tome_submit_button: "Submit"
|
||||
# tome_reload_method: "Reload original code for this method" # Title text for individual method reload button.
|
||||
# tome_select_method: "Select a Method"
|
||||
# tome_see_all_methods: "See all methods you can edit" # Title text for method list selector (shown when there are multiple programmable methods).
|
||||
tome_cast_button_run: "실행"
|
||||
tome_cast_button_running: "실행중"
|
||||
tome_cast_button_ran: "실행됨"
|
||||
tome_submit_button: "적용"
|
||||
tome_reload_method: "이 방법에 대한 원래의 코드를 다시불러오기" # Title text for individual method reload button.
|
||||
tome_select_method: "방법 선택"
|
||||
tome_see_all_methods: "편집 할 수있는 모든 방법을 참조하십시오" # Title text for method list selector (shown when there are multiple programmable methods).
|
||||
tome_select_a_thang: "누군가를 선택하세요. "
|
||||
tome_available_spells: "사용 가능한 마법"
|
||||
# tome_your_skills: "Your Skills"
|
||||
# tome_current_method: "Current Method"
|
||||
# code_saved: "Code Saved"
|
||||
tome_your_skills: "당신의 스킬"
|
||||
tome_current_method: "최근 방법"
|
||||
code_saved: "코드가 저장됨"
|
||||
skip_tutorial: "넘기기 (esc)"
|
||||
keyboard_shortcuts: "단축키"
|
||||
loading_ready: "준비!"
|
||||
# loading_start: "Start Level"
|
||||
loading_start: "레벨 시작"
|
||||
problem_alert_title: "코드를 수정하세요"
|
||||
time_current: "현재:"
|
||||
time_total: "최대:"
|
||||
# time_goto: "Go to:"
|
||||
# non_user_code_problem_title: "Unable to Load Level"
|
||||
# infinite_loop_title: "Infinite Loop Detected"
|
||||
# infinite_loop_description: "The initial code to build the world never finished running. It's probably either really slow or has an infinite loop. Or there might be a bug. You can either try running this code again or reset the code to the default state. If that doesn't fix it, please let us know."
|
||||
# check_dev_console: "You can also open the developer console to see what might be going wrong."
|
||||
# check_dev_console_link: "(instructions)"
|
||||
time_goto: "가기:"
|
||||
non_user_code_problem_title: "레벨을 로드 할 수 없습니다"
|
||||
infinite_loop_title: "무한 루프 감지"
|
||||
infinite_loop_description: "세계를 구축하는 초기 코드는 결코 실행이 완료되지 않습니다. 아마도 하나의 정말 느리거나 또는 무한 루프가 있습니다. 혹은 버그일수있습니다. 당신은 다시 이 코드를 실행하려고하거나 기본 상태로 코드를 재설정 할 수 있습니다. 그게 해결되지 않으면, 저희에게 알려 주시기 바랍니다."
|
||||
check_dev_console: "또한 잘못 갈 수를 알기 위해 개발자 콘솔을 열 수 있습니다."
|
||||
check_dev_console_link: "(명령어)"
|
||||
infinite_loop_try_again: "다시 시도해보세요."
|
||||
infinite_loop_reset_level: "레벨 리셋"
|
||||
infinite_loop_comment_out: "내 코드를 일시적 주석처리하기"
|
||||
|
@ -297,7 +297,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
|
|||
tip_scrub_shortcut: "Ctrl+[, Ctrl+] 를 이용해 실행 속도를 빠르게 할 수 있어요"
|
||||
tip_guide_exists: "화면 상단의 가이드를 클릭해보세요. 유용한 정보를 얻을 수 있습니다."
|
||||
tip_open_source: "코드 컴뱃은 100% 오픈 소스 기반입니다!"
|
||||
# tip_tell_friends: "Enjoying CodeCombat? Tell your friends about us!"
|
||||
tip_tell_friends: "코드 컴뱃을 즐기셨나요? 친구에게 알려주십시오"
|
||||
tip_beta_launch: "코드 컴뱃은 2013년 10월에 베타 서비스를 출시했습니다."
|
||||
tip_think_solution: "해결 방법을 고민해보세요, 문제를 고민하지 말구요"
|
||||
# tip_theory_practice: "In theory, there is no difference between theory and practice. But in practice, there is. - Yogi Berra"
|
||||
|
@ -326,7 +326,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
|
|||
# tip_extrapolation: "There are only two kinds of people: those that can extrapolate from incomplete data..."
|
||||
# tip_superpower: "Coding is the closest thing we have to a superpower."
|
||||
# tip_control_destiny: "In real open source, you have the right to control your own destiny. - Linus Torvalds"
|
||||
# tip_no_code: "No code is faster than no code."
|
||||
tip_no_code: "코드가 없는것보다 빠른것은 없습니다."
|
||||
tip_code_never_lies: "코드는 절대로 거짓말을 하지 않는다. 주석은 가끔 하지만. — Ron Jeffries"
|
||||
# tip_reusable_software: "Before software can be reusable it first has to be usable."
|
||||
# tip_optimization_operator: "Every language has an optimization operator. In most languages that operator is ‘//’"
|
||||
|
@ -341,8 +341,8 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
|
|||
# tip_recurse: "To iterate is human, to recurse divine. - L. Peter Deutsch"
|
||||
# tip_free_your_mind: "You have to let it all go, Neo. Fear, doubt, and disbelief. Free your mind. - Morpheus"
|
||||
# tip_strong_opponents: "Even the strongest of opponents always has a weakness. - Itachi Uchiha"
|
||||
# tip_paper_and_pen: "Before you start coding, you can always plan with a sheet of paper and a pen."
|
||||
# tip_solve_then_write: "First, solve the problem. Then, write the code. - John Johnson"
|
||||
tip_paper_and_pen: "코딩을 하기전에, 당신은 항상 종이와 펜으로 계획을 지니고 있어야합니다."
|
||||
tip_solve_then_write: "먼저, 문제를 해결하세요. 그러고, 코드를 쓰는겁니다. - John Johnson"
|
||||
|
||||
game_menu:
|
||||
inventory_tab: "인벤토리"
|
||||
|
@ -355,24 +355,24 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
|
|||
auth_tab: "가입하기"
|
||||
inventory_caption: "장비 장착"
|
||||
choose_hero_caption: "영웅 및 언어 선택 "
|
||||
# save_load_caption: "... and view history"
|
||||
save_load_caption: "... 그리고 기록보기"
|
||||
options_caption: "설정들을 바꾸기"
|
||||
guide_caption: "문서들과 팁들"
|
||||
multiplayer_caption: "친구들과 플레이 하세요!"
|
||||
auth_caption: "진행사항을 저장하세요"
|
||||
|
||||
leaderboard:
|
||||
# view_other_solutions: "View Leaderboards"
|
||||
view_other_solutions: "리더보드 보기"
|
||||
scores: "점수"
|
||||
top_players: "상위 플레이어"
|
||||
day: "오늘"
|
||||
week: "이번 주"
|
||||
# all: "All-Time"
|
||||
# time: "Time"
|
||||
# damage_taken: "Damage Taken"
|
||||
# damage_dealt: "Damage Dealt"
|
||||
# difficulty: "Difficulty"
|
||||
# gold_collected: "Gold Collected"
|
||||
all: "모든-시간"
|
||||
time: "시간"
|
||||
damage_taken: "데미지 정도"
|
||||
damage_dealt: "죽음을 맞은 데미지"
|
||||
difficulty: "난이도"
|
||||
gold_collected: "수집된 골드"
|
||||
|
||||
inventory:
|
||||
equipped_item: "장착됨"
|
||||
|
@ -391,33 +391,33 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
|
|||
pile_gems: "gem 묶음"
|
||||
chest_gems: "gem 상자"
|
||||
purchasing: "구매중..."
|
||||
declined: "Your card was declined"
|
||||
declined: "귀하의 카드가 거부되었습니다"
|
||||
retrying: "서버에러, 다시 시도하세요."
|
||||
prompt_title: "gem 부족"
|
||||
prompt_body: "gem이 더 필요하신가요?"
|
||||
prompt_button: "Enter Shop"
|
||||
prompt_button: "샵 앤터"
|
||||
recovered: "gem 구매후 브라우져를 새로고침 하세요."
|
||||
price: "x{{gems}} / 한달"
|
||||
|
||||
# subscribe:
|
||||
subscribe:
|
||||
# comparison_blurb: "Sharpen your skills with a CodeCombat subscription!"
|
||||
# feature1: "110+ basic levels across 4 worlds"
|
||||
# feature2: "10 powerful <strong>new heroes</strong> with unique skills!"
|
||||
# feature3: "80+ bonus levels"
|
||||
feature3: "80+ 보너스 레벨들"
|
||||
# feature4: "<strong>{{gems}} bonus gems</strong> every month!"
|
||||
# feature5: "Video tutorials"
|
||||
# feature6: "Premium email support"
|
||||
feature5: "영상 튜토리얼"
|
||||
feature6: "프리미엄 이메일 지원"
|
||||
# feature7: "Private <strong>Clans</strong>"
|
||||
# free: "Free"
|
||||
# month: "month"
|
||||
free: "프리"
|
||||
month: "달"
|
||||
# must_be_logged: "You must be logged in first. Please create an account or log in from the menu above."
|
||||
# subscribe_title: "Subscribe"
|
||||
# unsubscribe: "Unsubscribe"
|
||||
# confirm_unsubscribe: "Confirm Unsubscribe"
|
||||
subscribe_title: "구독"
|
||||
unsubscribe: "구독 해제"
|
||||
confirm_unsubscribe: "구독 해제 확인"
|
||||
# never_mind: "Never Mind, I Still Love You"
|
||||
# thank_you_months_prefix: "Thank you for supporting us these last"
|
||||
# thank_you_months_suffix: "months."
|
||||
# thank_you: "Thank you for supporting CodeCombat."
|
||||
thank_you: "CodeCombat을 도와주셔서 감사합니다."
|
||||
# sorry_to_see_you_go: "Sorry to see you go! Please let us know what we could have done better."
|
||||
# unsubscribe_feedback_placeholder: "O, what have we done?"
|
||||
# parent_button: "Ask your parent"
|
||||
|
@ -496,29 +496,29 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
|
|||
# level_to_unlock: "Level to unlock:" # Label for which level you have to beat to unlock a particular hero (click a locked hero in the store to see)
|
||||
# restricted_to_certain_heroes: "Only certain heroes can play this level."
|
||||
|
||||
# skill_docs:
|
||||
skill_docs:
|
||||
# writable: "writable" # Hover over "attack" in Your Skills while playing a level to see most of this
|
||||
# read_only: "read-only"
|
||||
# action: "Action"
|
||||
# spell: "Spell"
|
||||
# action_name: "name"
|
||||
action_name: "이름"
|
||||
# action_cooldown: "Takes"
|
||||
# action_specific_cooldown: "Cooldown"
|
||||
# action_damage: "Damage"
|
||||
# action_range: "Range"
|
||||
action_damage: "데미지"
|
||||
action_range: "사거리"
|
||||
# action_radius: "Radius"
|
||||
# action_duration: "Duration"
|
||||
# example: "Example"
|
||||
# ex: "ex" # Abbreviation of "example"
|
||||
example: "예제"
|
||||
ex: "예시" # Abbreviation of "example"
|
||||
# current_value: "Current Value"
|
||||
# default_value: "Default value"
|
||||
# parameters: "Parameters"
|
||||
# returns: "Returns"
|
||||
returns: "뒤로가기"
|
||||
# granted_by: "Granted by"
|
||||
|
||||
# save_load:
|
||||
# granularity_saved_games: "Saved"
|
||||
# granularity_change_history: "History"
|
||||
save_load:
|
||||
granularity_saved_games: "저장됨"
|
||||
granularity_change_history: "기록"
|
||||
|
||||
options:
|
||||
# general_options: "General Options" # Check out the Options tab in the Game Menu while playing a level
|
||||
|
@ -586,20 +586,20 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
|
|||
# more_info_2: "teachers forum"
|
||||
# more_info_3: "is a good place to connect with fellow educators who are using CodeCombat."
|
||||
|
||||
# teachers_survey:
|
||||
teachers_survey:
|
||||
# title: "Teacher Survey"
|
||||
# must_be_logged: "You must be logged in first. Please create an account or log in from the menu above."
|
||||
# retrieving: "Retrieving information..."
|
||||
# being_reviewed_1: "Your application for a free trial is being"
|
||||
# being_reviewed_2: "reviewed."
|
||||
being_reviewed_2: "검토됨."
|
||||
# approved_1: "Your application for a free trial was"
|
||||
# approved_2: "approved!"
|
||||
# approved_4: "You can now enroll your students on the"
|
||||
# approved_5: "courses"
|
||||
# approved_6: "page."
|
||||
approved_6: "페이지."
|
||||
# denied_1: "Your application for a free trial has been"
|
||||
# denied_2: "denied."
|
||||
# contact_1: "Please contact"
|
||||
denied_2: "거절됨."
|
||||
contact_1: "연락해주세요."
|
||||
# contact_2: "if you have further questions."
|
||||
# description_1: "We offer free trials to teachers. You will be given 2 free enrollments which can be used to enroll students in paid courses."
|
||||
# description_1b: "You can find more information on our"
|
||||
|
@ -620,7 +620,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
|
|||
versions:
|
||||
save_version_title: "새로운 버전을 저장합니다"
|
||||
new_major_version: "신규 버전"
|
||||
# submitting_patch: "Submitting Patch..."
|
||||
submitting_patch: "패치 적용중..."
|
||||
cla_prefix: "변경사항을 저장하기 위해서는, 먼저 계약사항에 동의 하셔야 합니다."
|
||||
cla_url: "CLA"
|
||||
cla_suffix: "."
|
||||
|
|
|
@ -151,7 +151,7 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith
|
|||
watch: "Žiūrėti"
|
||||
unwatch: "Nebežiūrėti"
|
||||
submit_patch: "Pateikti pataisymą"
|
||||
submit_changes: "Pateikti pakeitimus"
|
||||
submit_changes: "Išsaugoti pakeitimus"
|
||||
save_changes: "Saugoti pakeitimus"
|
||||
|
||||
general:
|
||||
|
@ -284,12 +284,12 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith
|
|||
problem_alert_title: "Taisyti kodą"
|
||||
time_current: "Dabar:"
|
||||
time_total: "Max:"
|
||||
# time_goto: "Go to:"
|
||||
time_goto: "Eiti į:"
|
||||
non_user_code_problem_title: "Nepavyko pakrauti lygio"
|
||||
infinite_loop_title: "Pastebėtas begalinis ciklas!"
|
||||
# infinite_loop_description: "The initial code to build the world never finished running. It's probably either really slow or has an infinite loop. Or there might be a bug. You can either try running this code again or reset the code to the default state. If that doesn't fix it, please let us know."
|
||||
# check_dev_console: "You can also open the developer console to see what might be going wrong."
|
||||
# check_dev_console_link: "(instructions)"
|
||||
check_dev_console_link: "(instrukcijos)"
|
||||
infinite_loop_try_again: "Bandyk dar kartą"
|
||||
infinite_loop_reset_level: "Pradėti lygi išnaujo"
|
||||
infinite_loop_comment_out: "Užkomentuoti mano kodą"
|
||||
|
@ -308,7 +308,7 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith
|
|||
# tip_morale_improves: "Loading will continue until morale improves."
|
||||
# tip_all_species: "We believe in equal opportunities to learn programming for all species."
|
||||
# tip_reticulating: "Reticulating spines."
|
||||
# tip_harry: "Yer a Wizard, "
|
||||
tip_harry: "Tu esi Burtininkas, "
|
||||
# tip_great_responsibility: "With great coding skill comes great debug responsibility."
|
||||
# tip_munchkin: "If you don't eat your vegetables, a munchkin will come after you while you're asleep."
|
||||
# tip_binary: "There are only 10 types of people in the world: those who understand binary, and those who don't."
|
||||
|
@ -577,115 +577,115 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith
|
|||
# carlos_title: "Region Manager, Brazil"
|
||||
# carlos_blurb: "Celery Man"
|
||||
|
||||
# teachers:
|
||||
# who_for_title: "Who is CodeCombat for?"
|
||||
# who_for_1: "We recommend CodeCombat for students aged 9 and up. No prior programming experience is needed. We've designed CodeCombat to appeal to both boys and girls."
|
||||
# who_for_2: "Our Courses system allows teachers to set up classrooms, track progress and assign additional content to students through a dedicated interface."
|
||||
# more_info_title: "Where can I find more information?"
|
||||
# more_info_1: "Our"
|
||||
# more_info_2: "teachers forum"
|
||||
# more_info_3: "is a good place to connect with fellow educators who are using CodeCombat."
|
||||
teachers:
|
||||
who_for_title: "Kam skirtas CodeCombat?"
|
||||
who_for_1: "Mes rekomenduojame CodeCombat mokiniams nuo 9-erių metų. Nereikia turėti jokios programavimo patirties. Mes sukūrėme CodeCombat taip, kad patiktų ir berniukams ir mergaitėms."
|
||||
who_for_2: "Mūsų Kursų sistema, suteikia galimybę pasiruošti pamokų užduotims, stebėti mokinių pasiekimus ir priskirti papildomą turinį mokiniams, per patogią sąsają."
|
||||
more_info_title: "Kur galėčiau rasti daugiau informacijos?"
|
||||
more_info_1: "Mūsų"
|
||||
more_info_2: "mokytojų forumas"
|
||||
more_info_3: "patogi vieta susisiekti su kolegomis mokytojais kurie naudoja CodeCombat."
|
||||
|
||||
# teachers_survey:
|
||||
# title: "Teacher Survey"
|
||||
# must_be_logged: "You must be logged in first. Please create an account or log in from the menu above."
|
||||
# retrieving: "Retrieving information..."
|
||||
# being_reviewed_1: "Your application for a free trial is being"
|
||||
# being_reviewed_2: "reviewed."
|
||||
# approved_1: "Your application for a free trial was"
|
||||
# approved_2: "approved!"
|
||||
# approved_4: "You can now enroll your students on the"
|
||||
# approved_5: "courses"
|
||||
# approved_6: "page."
|
||||
# denied_1: "Your application for a free trial has been"
|
||||
# denied_2: "denied."
|
||||
# contact_1: "Please contact"
|
||||
# contact_2: "if you have further questions."
|
||||
# description_1: "We offer free trials to teachers. You will be given 2 free enrollments which can be used to enroll students in paid courses."
|
||||
# description_1b: "You can find more information on our"
|
||||
# description_2: "teachers"
|
||||
# description_3: "page."
|
||||
# description_4: "Please fill out this quick survey and we’ll email you setup instructions."
|
||||
# email: "Email Address"
|
||||
# school: "Name of School"
|
||||
# location: "Name of City"
|
||||
# age_students: "How old are your students?"
|
||||
# under: "Under"
|
||||
# other: "Other:"
|
||||
# amount_students: "How many students do you teach?"
|
||||
# hear_about: "How did you hear about CodeCombat?"
|
||||
# fill_fields: "Please fill out all fields."
|
||||
# thanks: "Thanks! We'll send you setup instructions shortly."
|
||||
teachers_survey:
|
||||
title: "Mokytojo Apklausa"
|
||||
must_be_logged: "Turite būti prisijungę. Prašom susikurti paskyrą arba prisijungti viršutinėje meniu juostoje."
|
||||
retrieving: "Renkama informacija..."
|
||||
being_reviewed_1: "Jūsų prašymas nemokamai bandomajai versijai gauti"
|
||||
being_reviewed_2: "peržiūrimas."
|
||||
approved_1: "Jūsų prašymas nemokamai bandomajai versijai gauti"
|
||||
approved_2: "patvirtintas!"
|
||||
approved_4: "Dabar galite nukreipti savo mokinius į"
|
||||
approved_5: "kursų"
|
||||
approved_6: "puslapį."
|
||||
denied_1: "Jūsų prašymas nemokamai bandomajai versijai gauti"
|
||||
denied_2: "atmestas."
|
||||
contact_1: "Prašome susisiekti"
|
||||
contact_2: "jei turite daugiau klausimų."
|
||||
description_1: "Mokytojams mes siūlome, nemokamai išbandyti bandomają versiją. Jūs gausite 2 nemokamus pakvietimus, kuriuos galite panaudoti savo mokiniams mokamuose kursuose."
|
||||
description_1b: "Daugiau informacijos rasite mūsų"
|
||||
description_2: "mokytojų"
|
||||
description_3: "puslapyje."
|
||||
description_4: "Prašome užpildyti šią trumpą apklausos formą ir mes atsiųsime paruošimo instrukcijas el. paštu."
|
||||
email: "El. pašto adresas"
|
||||
school: "Mokyklos pavadinimas"
|
||||
location: "Miestas"
|
||||
age_students: "Kokio amžiaus jūsų mokiniai?"
|
||||
under: "Mažiau nei"
|
||||
other: "Kita:"
|
||||
amount_students: "Kiek mokinių mokote?"
|
||||
hear_about: "Iš kur sužinojote apie CodeCombat?"
|
||||
fill_fields: "Prašome užpildyti visus laukus."
|
||||
thanks: "Dėkojame! Netrukus atsiųsime paruošimo instrukcijas."
|
||||
|
||||
# versions:
|
||||
# save_version_title: "Save New Version"
|
||||
# new_major_version: "New Major Version"
|
||||
# submitting_patch: "Submitting Patch..."
|
||||
# cla_prefix: "To save changes, first you must agree to our"
|
||||
# cla_url: "CLA"
|
||||
# cla_suffix: "."
|
||||
# cla_agree: "I AGREE"
|
||||
# owner_approve: "An owner will need to approve it before your changes will become visible."
|
||||
versions:
|
||||
save_version_title: "Išsaugoti Naują Versiją"
|
||||
new_major_version: "Nauja Pagrindinė Versija"
|
||||
submitting_patch: "Pateikiamas Pataisymas..."
|
||||
cla_prefix: "Kad išsaugoti pakeitimus, turite sutikti su mūsų"
|
||||
cla_url: "PLS" # In Lithuanian language full translation (Pagalbininko Licensinė Sutartis - PLS). If no translation needed here, just remove changes :)
|
||||
cla_suffix: "."
|
||||
cla_agree: "AŠ SUTINKU"
|
||||
owner_approve: "Sąvininkas pirmiausiai turi patvirtinti, kad jūsų pakeitimai būtų matomi."
|
||||
|
||||
# contact:
|
||||
# contact_us: "Contact CodeCombat"
|
||||
# welcome: "Good to hear from you! Use this form to send us email. "
|
||||
# forum_prefix: "For anything public, please try "
|
||||
# forum_page: "our forum"
|
||||
# forum_suffix: " instead."
|
||||
# faq_prefix: "There's also a"
|
||||
# faq: "FAQ"
|
||||
# subscribe_prefix: "If you need help figuring out a level, please"
|
||||
# subscribe: "buy a CodeCombat subscription"
|
||||
# subscribe_suffix: "and we'll be happy to help you with your code."
|
||||
# subscriber_support: "Since you're a CodeCombat subscriber, your email will get our priority support."
|
||||
# screenshot_included: "Screenshot included."
|
||||
# where_reply: "Where should we reply?"
|
||||
# send: "Send Feedback"
|
||||
contact:
|
||||
contact_us: "Susisiekti su CodeCombat"
|
||||
welcome: "Maloniai jus išklausysime! Naudokitės šia forma, kad išsiųstumėte mus elektroninį laišką."
|
||||
forum_prefix: "Norint pasisakyti viešai, naudokitės "
|
||||
forum_page: "mūsų forumu."
|
||||
forum_suffix: ""
|
||||
faq_prefix: "Taip pat turime vietą"
|
||||
faq: "DUK"
|
||||
subscribe_prefix: "Jei reikalinga pagalbos įveikiant lygį, prašome"
|
||||
subscribe: "įsigyti CodeCombat abonementą"
|
||||
subscribe_suffix: "ir męs mielai jums padėsime."
|
||||
subscriber_support: "Kadangi turite CodeCombat abonementą, jūsų elektroniniai laiškai mums tampa įpatingai svarbūs."
|
||||
screenshot_included: "Ekrano kopija pridėta."
|
||||
where_reply: "Kur mums atsakyti?"
|
||||
send: "Siųsti užklausą"
|
||||
|
||||
# account_settings:
|
||||
# title: "Account Settings"
|
||||
# not_logged_in: "Log in or create an account to change your settings."
|
||||
# autosave: "Changes Save Automatically"
|
||||
# me_tab: "Me"
|
||||
# picture_tab: "Picture"
|
||||
# delete_account_tab: "Delete Your Account"
|
||||
# wrong_email: "Wrong Email"
|
||||
# wrong_password: "Wrong Password"
|
||||
# upload_picture: "Upload a picture"
|
||||
# delete_this_account: "Delete this account permanently"
|
||||
# reset_progress_tab: "Reset All Progress"
|
||||
# reset_your_progress: "Clear all your progress and start over"
|
||||
# god_mode: "God Mode"
|
||||
# password_tab: "Password"
|
||||
# emails_tab: "Emails"
|
||||
# admin: "Admin"
|
||||
# manage_subscription: "Click here to manage your subscription."
|
||||
# new_password: "New Password"
|
||||
# new_password_verify: "Verify"
|
||||
# type_in_email: "Type in your email to confirm account deletion."
|
||||
# type_in_email_progress: "Type in your email to confirm deleting your progress."
|
||||
# type_in_password: "Also, type in your password."
|
||||
# email_subscriptions: "Email Subscriptions"
|
||||
# email_subscriptions_none: "No Email Subscriptions."
|
||||
# email_announcements: "Announcements"
|
||||
# email_announcements_description: "Get emails on the latest news and developments at CodeCombat."
|
||||
# email_notifications: "Notifications"
|
||||
# email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity."
|
||||
# email_any_notes: "Any Notifications"
|
||||
# email_any_notes_description: "Disable to stop all activity notification emails."
|
||||
# email_news: "News"
|
||||
# email_recruit_notes: "Job Opportunities"
|
||||
# email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job."
|
||||
# contributor_emails: "Contributor Class Emails"
|
||||
# contribute_prefix: "We're looking for people to join our party! Check out the "
|
||||
# contribute_page: "contribute page"
|
||||
# contribute_suffix: " to find out more."
|
||||
# email_toggle: "Toggle All"
|
||||
# error_saving: "Error Saving"
|
||||
# saved: "Changes Saved"
|
||||
# password_mismatch: "Password does not match."
|
||||
# password_repeat: "Please repeat your password."
|
||||
account_settings:
|
||||
title: "Paskyros Nustatymai"
|
||||
not_logged_in: "Norint pakeisti paskyros nustatymus turite prisijungti arba susikurti paskyrą."
|
||||
autosave: "Pakeitimai Išsaugomi Automatiškai"
|
||||
me_tab: "Aš"
|
||||
picture_tab: "Nuotrauka"
|
||||
delete_account_tab: "Pašalinti Mano Paskyrą"
|
||||
wrong_email: "Neteisingas el. pašto adresas"
|
||||
wrong_password: "Neteisingas slaptažodis"
|
||||
upload_picture: "Įkelti nuotrauką"
|
||||
delete_this_account: "Tuoj pat pašalinti šią paskyrą"
|
||||
reset_progress_tab: "Atstatyti Viską Išnaujo"
|
||||
reset_your_progress: "Viską išvalyti ir pradėti išnaujo"
|
||||
god_mode: "God Mode(Dievo Režimas)"
|
||||
password_tab: "Slaptažodis"
|
||||
emails_tab: "Pranešimai"
|
||||
admin: "Administratorius"
|
||||
manage_subscription: "Abonemento valdymas, spauskite čia."
|
||||
new_password: "Naujas slaptažodis"
|
||||
new_password_verify: "Patvirtinimas"
|
||||
type_in_email: "Paskyros pašalinimo patvirtinimui, įveskite el. pašto adresą."
|
||||
type_in_email_progress: "Norint pradėti išnaujo įveskite el. pašto adresą."
|
||||
type_in_password: "Taip pat, įveskite slaptažodį."
|
||||
email_subscriptions: "El. pašto abonementai"
|
||||
email_subscriptions_none: "Nėra el. pašto abonementų."
|
||||
email_announcements: "Skelbimai"
|
||||
email_announcements_description: "Gauk svarbiausią informaciją apie naujienas ir projekto vystymo eigą tiesiai iš CodeCombat."
|
||||
email_notifications: "Pranešimai"
|
||||
email_notifications_summary: "Automatinių pranešimų, susijusių su CodeCombat veikla, valdymas."
|
||||
email_any_notes: "Visi pranešimai"
|
||||
email_any_notes_description: "Nuimkite varnelę, kad nebegautumėte jokių pranešimų."
|
||||
email_news: "Naujienos"
|
||||
email_recruit_notes: "Darbo Pasiūlymai"
|
||||
email_recruit_notes_description: "Jei viską atliksite tikrai gerai, mes galime pasiūlyti (geresnį) darbą."
|
||||
contributor_emails: "Pranešimai Pagalbininkų Kategorijai"
|
||||
contribute_prefix: "Mes ieškome norinčių prisijungti prie mūsų grupės! Ieškantiems daugiau informacijos siūlome apsilankykti "
|
||||
contribute_page: "pagalbininkų puslapyje."
|
||||
contribute_suffix: ""
|
||||
email_toggle: "Perjungti visus"
|
||||
error_saving: "Klaida Išsaugant"
|
||||
saved: "Pakeitimai Išsaugoti"
|
||||
password_mismatch: "Slaptažodžiai nesutampa."
|
||||
password_repeat: "Pakartokite slaptažodį."
|
||||
|
||||
keyboard_shortcuts:
|
||||
keyboard_shortcuts: "Mygtukai"
|
||||
|
@ -727,65 +727,65 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith
|
|||
# social_hipchat: "Chat with us in the public CodeCombat Slack channel"
|
||||
# contribute_to_the_project: "Contribute to the project"
|
||||
|
||||
# clans:
|
||||
# clan: "Clan"
|
||||
# clans: "Clans"
|
||||
# new_name: "New clan name"
|
||||
# new_description: "New clan description"
|
||||
# make_private: "Make clan private"
|
||||
# subs_only: "subscribers only"
|
||||
# create_clan: "Create New Clan"
|
||||
# private_preview: "Preview"
|
||||
# private_clans: "Private Clans"
|
||||
# public_clans: "Public Clans"
|
||||
# my_clans: "My Clans"
|
||||
# clan_name: "Clan Name"
|
||||
# name: "Name"
|
||||
# chieftain: "Chieftain"
|
||||
# type: "Type"
|
||||
# edit_clan_name: "Edit Clan Name"
|
||||
# edit_clan_description: "Edit Clan Description"
|
||||
# edit_name: "edit name"
|
||||
# edit_description: "edit description"
|
||||
# private: "(private)"
|
||||
# summary: "Summary"
|
||||
# average_level: "Average Level"
|
||||
# average_achievements: "Average Achievements"
|
||||
# delete_clan: "Delete Clan"
|
||||
# leave_clan: "Leave Clan"
|
||||
# join_clan: "Join Clan"
|
||||
# invite_1: "Invite:"
|
||||
# invite_2: "*Invite players to this Clan by sending them this link."
|
||||
# members: "Members"
|
||||
# progress: "Progress"
|
||||
# not_started_1: "not started"
|
||||
# started_1: "started"
|
||||
# complete_1: "complete"
|
||||
# exp_levels: "Expand levels"
|
||||
# rem_hero: "Remove Hero"
|
||||
# status: "Status"
|
||||
# complete_2: "Complete"
|
||||
# started_2: "Started"
|
||||
# not_started_2: "Not Started"
|
||||
# view_solution: "Click to view solution."
|
||||
# view_attempt: "Click to view attempt."
|
||||
# latest_achievement: "Latest Achievement"
|
||||
# playtime: "Playtime"
|
||||
# last_played: "Last played"
|
||||
# leagues_explanation: "Play in a league against other clan members in these multiplayer arena instances."
|
||||
# track_concepts1: "Track concepts"
|
||||
# track_concepts2a: "learned by each student"
|
||||
# track_concepts2b: "learned by each member"
|
||||
# track_concepts3a: "Track levels completed for each student"
|
||||
# track_concepts3b: "Track levels completed for each member"
|
||||
# track_concepts4a: "See your students'"
|
||||
# track_concepts4b: "See your members'"
|
||||
# track_concepts5: "solutions"
|
||||
# track_concepts6a: "Sort students by name or progress"
|
||||
# track_concepts6b: "Sort members by name or progress"
|
||||
# track_concepts7: "Requires invitation"
|
||||
# track_concepts8: "to join"
|
||||
# private_require_sub: "Private clans require a subscription to create or join."
|
||||
clans:
|
||||
clan: "Klanas"
|
||||
clans: "Klanai"
|
||||
new_name: "Klano pavadinimas"
|
||||
new_description: "Klano aprašymas"
|
||||
make_private: "Privatus klanas"
|
||||
subs_only: "tik abonentams"
|
||||
create_clan: "Sukurti Klaną"
|
||||
private_preview: "Peržiūra"
|
||||
private_clans: "Privatūs Klanai"
|
||||
public_clans: "Vieši Klanai"
|
||||
my_clans: "Mano Klanai"
|
||||
clan_name: "Klano Pavadinimas"
|
||||
name: "Vardas"
|
||||
chieftain: "Vadas"
|
||||
type: "Tipas"
|
||||
edit_clan_name: "Keisti Klano Pavadinimą"
|
||||
edit_clan_description: "Keisti Klano Aprašymą"
|
||||
edit_name: "keisti pavadinimą"
|
||||
edit_description: "keisti aprašymą"
|
||||
private: "(privatus)"
|
||||
summary: "Suvestinė"
|
||||
average_level: "Lygių vidurkis"
|
||||
average_achievements: "Pasiekimų vidurkis"
|
||||
delete_clan: "Pašalinti klaną"
|
||||
leave_clan: "Išeiti iš klano"
|
||||
join_clan: "Prisijungti prie klano"
|
||||
invite_1: "Pakvietimas:"
|
||||
invite_2: "*Kvieskite žaidėjus į klaną nusiųsdami šią nuorodą."
|
||||
members: "Nariai"
|
||||
progress: "Pažanga"
|
||||
not_started_1: "nepradėta"
|
||||
started_1: "pradėta"
|
||||
complete_1: "pabaigta"
|
||||
exp_levels: "Išplėsti lygius"
|
||||
rem_hero: "Pašalinti Herojų"
|
||||
status: "Būsena"
|
||||
complete_2: "Pabaigta"
|
||||
started_2: "Pradėta"
|
||||
not_started_2: "Nepradėta"
|
||||
view_solution: "Peržiūrėti sprendimą."
|
||||
view_attempt: "Peržiūrėti bandymą."
|
||||
latest_achievement: "Naujausias Pasiekimas"
|
||||
playtime: "Viso žaista"
|
||||
last_played: "Paskutinį kartą žaista"
|
||||
leagues_explanation: "Pasirink lygą ir varžykis su kitų klanų nariais."
|
||||
track_concepts1: "Sekite "
|
||||
track_concepts2a: "kitų mokinių idėjas"
|
||||
track_concepts2b: "kitų narių idėjas"
|
||||
track_concepts3a: "Stebėkite kitų mokinių įveiktus lygius"
|
||||
track_concepts3b: "Stebėkite kitų narių įveiktus lygius"
|
||||
track_concepts4a: "Peržiūrėkite mokinių"
|
||||
track_concepts4b: "Peržiūrėkite narių"
|
||||
track_concepts5: "sprendimus"
|
||||
track_concepts6a: "Išrikiuokite mokinius pagal vardą arba pažangą"
|
||||
track_concepts6b: "Išrikiuokite narius pagal vardą arba pažangą"
|
||||
track_concepts7: "Norint tapti nariu"
|
||||
track_concepts8: "reikalingas kvietimas"
|
||||
private_require_sub: "Norint sukurti privatų ar prisijungti prie privataus klano, reikalingas abonementas."
|
||||
|
||||
# courses:
|
||||
# course: "Course"
|
||||
|
@ -1120,9 +1120,9 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith
|
|||
# add_system_title: "Add Systems to Level"
|
||||
# done_adding: "Done Adding"
|
||||
|
||||
# article:
|
||||
# edit_btn_preview: "Preview"
|
||||
# edit_article_title: "Edit Article"
|
||||
article:
|
||||
edit_btn_preview: "Peržiūra"
|
||||
edit_article_title: "Redaguoti straipsnį"
|
||||
|
||||
polls:
|
||||
priority: "Prioritetas"
|
||||
|
|
|
@ -4,7 +4,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
|||
no_ie: "CodeCombat не работает в IE8 или более старых версиях. Нам очень жаль!" # Warning that only shows up in IE8 and older
|
||||
no_mobile: "CodeCombat не приспособлен для работы на мобильных устройствах и может не работать!" # Warning that shows up on mobile devices
|
||||
play: "Играть" # The big play button that opens up the campaign view.
|
||||
# play_campaign_version: "Play Campaign Version" # Shows up under big play button if you only play /courses
|
||||
play_campaign_version: "Играть в кампанию" # Shows up under big play button if you only play /courses
|
||||
old_browser: "Ой, ваш браузер слишком стар для запуска CodeCombat. Извините!" # Warning that shows up on really old Firefox/Chrome/Safari
|
||||
old_browser_suffix: "Вы всё равно можете попробовать, но, скорее всего, это не будет работать."
|
||||
ipad_browser: "Плохие новости: CodeCombat не запускается в браузере IPad. Хорошие новости: наше нативное приложение для IPad ожидает одобрения от Apple."
|
||||
|
@ -17,7 +17,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
|||
nav:
|
||||
play: "Уровни" # The top nav bar entry where players choose which levels to play
|
||||
community: "Сообщество"
|
||||
# courses: "Courses"
|
||||
courses: "Курсы"
|
||||
editor: "Редактор"
|
||||
blog: "Блог"
|
||||
forum: "Форум"
|
||||
|
@ -52,7 +52,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
|||
|
||||
play:
|
||||
play_as: "Играть за " # Ladder page
|
||||
# compete: "Compete!" # Course details page
|
||||
compete: "Соревноваться!" # Course details page
|
||||
spectate: "Наблюдать" # Ladder page
|
||||
players: "игроки" # Hover over a level on /play
|
||||
hours_played: "часов сыграно" # Hover over a level on /play
|
||||
|
@ -75,7 +75,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
|||
subscription_required: "Требуется подписка"
|
||||
anonymous: "Неизвестный игрок"
|
||||
level_difficulty: "Сложность: "
|
||||
# play_classroom_version: "Play Classroom Version" # Choose a level in campaign version that you also can play in one of your courses
|
||||
play_classroom_version: "Играть в версию для работы в классе" # Choose a level in campaign version that you also can play in one of your courses
|
||||
campaign_beginner: "Кампания для новичков"
|
||||
awaiting_levels_adventurer_prefix: "Мы выпускаем новые уровни каждую неделю."
|
||||
awaiting_levels_adventurer: "Зарегистрируйтесь в качестве Искателя приключений"
|
||||
|
@ -83,7 +83,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
|||
adjust_volume: "Регулировать громкость"
|
||||
campaign_multiplayer: "Арены для мультиплеера"
|
||||
campaign_multiplayer_description: "... в которых вы соревнуетесь в программировании с другими игроками."
|
||||
# campaign_old_multiplayer: "(Deprecated) Old Multiplayer Arenas"
|
||||
campaign_old_multiplayer: "(Устаревшее) Старые многопользовательские арены"
|
||||
# campaign_old_multiplayer_description: "Relics of a more civilized age. No simulations are run for these older, hero-less multiplayer arenas."
|
||||
|
||||
share_progress_modal:
|
||||
|
@ -114,9 +114,9 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
|||
log_in: "вход с паролем"
|
||||
required: "Войдите для того, чтобы продолжить."
|
||||
login_switch: "Уже есть аккаунт?"
|
||||
# school_name: "School Name and City"
|
||||
# optional: "optional"
|
||||
# school_name_placeholder: "Example High School, Springfield, IL"
|
||||
school_name: "Название школы and город"
|
||||
optional: "не обязательно"
|
||||
school_name_placeholder: "Школа № 2, город Электросталь, Московская область"
|
||||
|
||||
recover:
|
||||
recover_account_title: "Восстановить аккаунт"
|
||||
|
@ -166,7 +166,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
|||
withdrawn: "Отозвано"
|
||||
accept: "Принять"
|
||||
reject: "Отклонить"
|
||||
# withdraw: "Withdraw"
|
||||
withdraw: "Изъять"
|
||||
submitter: "Податель"
|
||||
submitted: "Представлено"
|
||||
commit_msg: "Сопроводительное сообщение"
|
||||
|
@ -221,10 +221,10 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
|||
years: "лет"
|
||||
|
||||
play_level:
|
||||
# completed_level: "Completed Level:"
|
||||
# course: "Course:"
|
||||
completed_level: "Завершённый уровень:"
|
||||
course: "Курс:"
|
||||
done: "Готово"
|
||||
# next_level: "Next Level:"
|
||||
next_level: "Следующий уровень:"
|
||||
next_game: "Следующая игра"
|
||||
show_menu: "Показать меню игры"
|
||||
home: "На главную" # Not used any more, will be removed soon.
|
||||
|
@ -342,7 +342,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
|||
tip_free_your_mind: "Отвлекись от всего, Нео. Страх, неверие, сомнения отбрось — очисти свой разум. - Morpheus"
|
||||
tip_strong_opponents: "Даже сильнейший противник имеет слабость. - Itachi Uchiha"
|
||||
tip_paper_and_pen: "Прежде чем начать программировать, вы всегда можете попробовать с листом бумаги и ручкой."
|
||||
# tip_solve_then_write: "First, solve the problem. Then, write the code. - John Johnson"
|
||||
tip_solve_then_write: "Сперва реши задачу, затем пиши код. - Джон Джонсон"
|
||||
|
||||
game_menu:
|
||||
inventory_tab: "Инвентарь"
|
||||
|
@ -594,15 +594,15 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
|||
being_reviewed_2: "на рассмотрении." # {change}
|
||||
approved_1: "Ваша заявка на бесплатную пробную подписку была" # {change}
|
||||
approved_2: "утверждена." # {change}
|
||||
# approved_4: "You can now enroll your students on the"
|
||||
# approved_5: "courses"
|
||||
# approved_6: "page."
|
||||
approved_4: "Теперь вы можете регистрировать ваших учеников на"
|
||||
approved_5: "курсы"
|
||||
approved_6: "страница."
|
||||
denied_1: "Ваша заявка на бесплатную пробную подписку была" # {change}
|
||||
denied_2: "отклонена." # {change}
|
||||
contact_1: "Пожалуйста, свяжитесь с"
|
||||
contact_2: ", если у вас остались вопросы."
|
||||
description_1: "Мы предлагаем бесплатные подписки учителям в целях ознакомления. Вы можете найти больше информации на нашей странице"
|
||||
# description_1b: "You can find more information on our"
|
||||
description_1b: "Вы можете найти больше информации на"
|
||||
description_2: "учителей"
|
||||
description_3: ""
|
||||
description_4: "Пожалуйста, заполните эту маленькую анкету и мы вышлем вам инструкции по установке на email."
|
||||
|
@ -736,7 +736,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
|||
subs_only: "только для подписчиков"
|
||||
create_clan: "Создать новый клан"
|
||||
private_preview: "Превью"
|
||||
# private_clans: "Private Clans"
|
||||
private_clans: "Тайные кланы"
|
||||
public_clans: "Публичные кланы"
|
||||
my_clans: "Мои кланы"
|
||||
clan_name: "Имя клана"
|
||||
|
@ -768,7 +768,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
|||
started_2: "Начат"
|
||||
not_started_2: "Не начат"
|
||||
view_solution: "Нажмите, чтобы увидеть решение."
|
||||
# view_attempt: "Click to view attempt."
|
||||
view_attempt: "Нажмите чтобы посмотреть попытку."
|
||||
latest_achievement: "Последнее достижение"
|
||||
playtime: "Время игры"
|
||||
last_played: "Последняя игра"
|
||||
|
@ -780,17 +780,17 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
|||
# track_concepts3b: "Track levels completed for each member"
|
||||
# track_concepts4a: "See your students'"
|
||||
# track_concepts4b: "See your members'"
|
||||
# track_concepts5: "solutions"
|
||||
# track_concepts6a: "Sort students by name or progress"
|
||||
# track_concepts6b: "Sort members by name or progress"
|
||||
# track_concepts7: "Requires invitation"
|
||||
# track_concepts8: "to join"
|
||||
# private_require_sub: "Private clans require a subscription to create or join."
|
||||
track_concepts5: "решения"
|
||||
track_concepts6a: "Сортировать студентов по имени или прогрессу"
|
||||
track_concepts6b: "Сортировать членов по имени или прогрессу"
|
||||
track_concepts7: "Требуется приглашение"
|
||||
track_concepts8: "вступить"
|
||||
private_require_sub: "Требуется подписка чтобы создать тайный клан или вступить в него."
|
||||
|
||||
courses:
|
||||
course: "Курс"
|
||||
courses: "Курсы"
|
||||
# create_new_class: "Create New Class"
|
||||
create_new_class: "Создать новый класс"
|
||||
not_enrolled: "Вы не записаны на этот курс."
|
||||
visit_pref: "Пожалуйста, зайдите на"
|
||||
visit_suf: "страницу для записи."
|
||||
|
@ -865,151 +865,151 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
|||
topics: "Темы"
|
||||
hours_content: "Много часов материала:"
|
||||
get_free: "Получить бесплатный курс"
|
||||
# enroll_paid: "Enroll Students in Paid Courses"
|
||||
# you_have1: "You have"
|
||||
enroll_paid: "Записать учеников на платные курсы"
|
||||
you_have1: "У вас есть"
|
||||
# you_have2: "unused paid enrollments"
|
||||
# use_one: "Use 1 paid enrollment for"
|
||||
# use_multiple: "Use paid enrollments for the following students:"
|
||||
# already_enrolled: "already enrolled"
|
||||
already_enrolled: "уже зачислен"
|
||||
# licenses_remaining: "licenses remaining:"
|
||||
# insufficient_enrollments: "insufficient paid enrollments"
|
||||
# enroll_students: "Enroll Students"
|
||||
# get_enrollments: "Get More Enrollments"
|
||||
# change_language: "Change Course Language"
|
||||
# keep_using: "Keep Using"
|
||||
# switch_to: "Switch To"
|
||||
# greetings: "Greetings!"
|
||||
# learn_p: "Learn Python"
|
||||
# learn_j: "Learn JavaScript"
|
||||
# language_cannot_change: "Language cannot be changed once students join a class."
|
||||
# back_classrooms: "Back to my classrooms"
|
||||
# back_courses: "Back to my courses"
|
||||
# edit_details: "Edit class details"
|
||||
change_language: "Изменить язык программирования курса"
|
||||
keep_using: "Продолжить использовать"
|
||||
switch_to: "Переключить на"
|
||||
greetings: "Поздравления!"
|
||||
learn_p: "Изучать Python"
|
||||
learn_j: "Изучать JavaScript"
|
||||
language_cannot_change: "Язык не может быть изменён после того как ученик присоединился к классу."
|
||||
back_classrooms: "Назад к моим классам"
|
||||
back_courses: "Назад к моим курсам"
|
||||
edit_details: "Редактировать описание класса"
|
||||
# enrolled_courses: "enrolled in paid courses:"
|
||||
# purchase_enrollments: "Purchase Enrollments"
|
||||
# remove_student: "remove student"
|
||||
remove_student: "удалить ученика"
|
||||
# assign: "Assign"
|
||||
# to_assign: "to assign paid courses."
|
||||
# teacher: "Teacher"
|
||||
# complete: "Complete"
|
||||
teacher: "Учитель"
|
||||
complete: "Завершить"
|
||||
# none: "None"
|
||||
# save: "Save"
|
||||
# play_campaign_title: "Play the Campaign"
|
||||
save: "Сохранить"
|
||||
play_campaign_title: "Играть в кампанию"
|
||||
# play_campaign_description: "You’re ready to take the next step! Explore hundreds of challenging levels, learn advanced programming skills, and compete in multiplayer arenas!"
|
||||
# create_account_title: "Create an Account"
|
||||
create_account_title: "Создать учётную запись"
|
||||
# create_account_description: "Sign up for a FREE CodeCombat account and gain access to more levels, more programming skills, and more fun!"
|
||||
# preview_campaign_title: "Preview Campaign"
|
||||
# preview_campaign_description: "Take a sneak peek at all that CodeCombat has to offer before signing up for your FREE account."
|
||||
# arena: "Arena"
|
||||
# arena_soon_title: "Arena Coming Soon"
|
||||
arena: "Арена"
|
||||
arena_soon_title: "Арена скоро появится"
|
||||
# arena_soon_description: "We are working on a multiplayer arena for classrooms at the end of"
|
||||
# not_enrolled1: "Not enrolled"
|
||||
# not_enrolled2: "Ask your teacher to enroll you in the next course."
|
||||
# next_course: "Next Course"
|
||||
# coming_soon1: "Coming soon"
|
||||
not_enrolled2: "Попросите учителя зачислить вас на следующий курс."
|
||||
next_course: "Следующий курс"
|
||||
coming_soon1: "Скоро появится"
|
||||
# coming_soon2: "We are hard at work making more courses for you!"
|
||||
# available_levels: "Available Levels"
|
||||
# welcome_to_courses: "Adventurers, welcome to Courses!"
|
||||
# ready_to_play: "Ready to play?"
|
||||
# start_new_game: "Start New Game"
|
||||
# play_now_learn_header: "Play now to learn"
|
||||
# play_now_learn_1: "basic syntax to control your character"
|
||||
# play_now_learn_2: "while loops to solve pesky puzzles"
|
||||
# play_now_learn_3: "strings & variables to customize actions"
|
||||
# play_now_learn_4: "how to defeat an ogre (important life skills!)"
|
||||
# welcome_to_page: "Welcome to your Courses page!"
|
||||
# completed_hoc: "Amazing! You've completed the Hour of Code course!"
|
||||
# ready_for_more_header: "Ready for more? Play the campaign mode!"
|
||||
# ready_for_more_1: "Use gems to unlock new items!"
|
||||
welcome_to_courses: "Искатели приключений, добро пожаловать на курсы!"
|
||||
ready_to_play: "Готовы приступить к игре?"
|
||||
start_new_game: "Начать новую игру"
|
||||
play_now_learn_header: "Начать обучающую игру"
|
||||
play_now_learn_1: "базовый синтаксис управления персонажем"
|
||||
play_now_learn_2: "циклы while чтобы решать противные головоломки"
|
||||
play_now_learn_3: "строки и переменные чтобы настраивать действия"
|
||||
play_now_learn_4: "Как победить огра (важные жизненные навыки!)"
|
||||
welcome_to_page: "Добро пожаловать на вашу страницу курсов!"
|
||||
completed_hoc: "Изумительно! Вы прошли курс Час кода!"
|
||||
ready_for_more_header: "Хотите продолжить? Играйте в режиме кампании!"
|
||||
ready_for_more_1: "Используйте самоцветы чтобы разблокировать новые предметы!"
|
||||
# ready_for_more_2: "Play through brand new worlds and challenges"
|
||||
# ready_for_more_3: "Learn even more programming!"
|
||||
# saved_games: "Saved Games"
|
||||
# hoc: "Hour of Code"
|
||||
# my_classes: "My Classes"
|
||||
# class_added: "Class successfully added!"
|
||||
# view_class: "view class"
|
||||
# view_levels: "view levels"
|
||||
# join_class: "Join A Class"
|
||||
ready_for_more_3: "Учитесь программировнию дальше!"
|
||||
saved_games: "Сохранённые игры"
|
||||
hoc: "Час кода"
|
||||
my_classes: "Мои классы"
|
||||
class_added: "Класс успешно добавлен!"
|
||||
view_class: "смотреть класс"
|
||||
view_levels: "смотреть уровни"
|
||||
join_class: "Присоединиться к классу"
|
||||
# ask_teacher_for_code: "Ask your teacher if you have a CodeCombat class code! If so, enter it below:"
|
||||
# enter_c_code: "<Enter Class Code>"
|
||||
# join: "Join"
|
||||
# join: "Присоединиться"
|
||||
# joining: "Joining class"
|
||||
# course_complete: "Course Complete"
|
||||
# play_arena: "Play Arena"
|
||||
# start: "Start"
|
||||
# last_level: "Last Level"
|
||||
# welcome_to_hoc: "Adventurers, welcome to our Hour of Code!"
|
||||
course_complete: "Курс завершён"
|
||||
play_arena: "Играть Арену"
|
||||
# start: "Старт"
|
||||
# last_level: "Последний уровень"
|
||||
welcome_to_hoc: "Искатели приключений, добро пожаловать на Час кода!"
|
||||
# logged_in_as: "Logged in as:"
|
||||
# not_you: "Not you?"
|
||||
# welcome_back: "Hi adventurer, welcome back!"
|
||||
# not_you: "Не вы?"
|
||||
# welcome_back: "Привет, искатель приключений, добро пожаловать!"
|
||||
# continue_playing: "Continue Playing"
|
||||
# more_options: "More options:"
|
||||
# option1_header: "Option 1: Invite students via email"
|
||||
more_options: "Другие варианты:"
|
||||
option1_header: "Вариант 1: Пригласить учеников по email"
|
||||
# option1_body: "Students will automatically be sent an invitation to join this class, and will need to create an account with a username and password."
|
||||
# option2_header: "Option 2: Send URL to your students"
|
||||
option2_header: "Вариант 2: Послать URL вашим ученикам"
|
||||
# option2_body: "Students will be asked to enter an email address, username and password to create an account."
|
||||
# option3_header: "Option 3: Direct students to codecombat.com/courses"
|
||||
option3_header: "Вариант 3: Направить учеников на codecombat.com/courses"
|
||||
# option3_body: "Give students the following passcode to enter along with an email address, username and password when they create an account."
|
||||
# thank_you_pref: "Thank you for your purchase! You can now assign"
|
||||
# thank_you_suff: "more students to paid courses."
|
||||
# return_to_class: "Return to classroom"
|
||||
# return_to_course_man: "Return to course management."
|
||||
return_to_course_man: "Вернуться к управлению курсом."
|
||||
# students_not_enrolled: "students not enrolled"
|
||||
# total_all_classes: "Total Across All Classes"
|
||||
total_all_classes: "Общее по всем классам"
|
||||
# how_many_enrollments: "How many additional paid enrollments do you need?"
|
||||
# each_student_access: "Each student in a class will get access to Courses 2-4 once they are enrolled in paid courses. You may assign each course to each student individually."
|
||||
# purchase_now: "Purchase Now"
|
||||
# enrollments: "enrollments"
|
||||
# remove_student1: "Remove Student"
|
||||
remove_student1: "Удалить ученика"
|
||||
# are_you_sure: "Are you sure you want to remove this student from this class?"
|
||||
# remove_description1: "Student will lose access to this classroom and assigned classes. Progress and gameplay is NOT lost, and the student can be added back to the classroom at any time."
|
||||
# remove_description2: "The activated paid license will not be returned."
|
||||
# keep_student: "Keep Student"
|
||||
keep_student: "Оставить ученика"
|
||||
# removing_user: "Removing user"
|
||||
# to_join_ask: "To join a class, ask your teacher for an unlock code."
|
||||
# join_this_class: "Join Class"
|
||||
# enter_here: "<enter unlock code here>"
|
||||
# enter_here: "<Ввести здесь код разблокировки>"
|
||||
# successfully_joined: "Successfully joined"
|
||||
# click_to_start: "Click here to start taking"
|
||||
# my_courses: "My Courses"
|
||||
# classroom: "Classroom"
|
||||
my_courses: "Мои курсы"
|
||||
classroom: "Класс"
|
||||
# use_school_email: "use your school email if you have one"
|
||||
# unique_name: "a unique name no one has chosen"
|
||||
# pick_something: "pick something you can remember"
|
||||
# class_code: "Class Code"
|
||||
# optional_ask: "optional - ask your teacher to give you one!"
|
||||
# optional_school: "optional - what school do you go to?"
|
||||
# start_playing: "Start Playing"
|
||||
# skip_this: "Skip this, I'll create an account later!"
|
||||
# welcome: "Welcome"
|
||||
# getting_started: "Getting Started with Courses"
|
||||
optional_ask: "Как вариант - попросите учителя дать вам какой-нибудь!"
|
||||
optional_school: "Не обязательное - в какую школу вы ходите?"
|
||||
start_playing: "Начать играть"
|
||||
skip_this: "Пропустить это, я создам учетную запись позже!"
|
||||
welcome: "Добро пожаловать"
|
||||
getting_started: "Начать проходить курсы"
|
||||
# download_getting_started: "Download Getting Started Guide [PDF]"
|
||||
# getting_started_1: "Create a new class by clicking the green 'Create New Class' button below."
|
||||
# getting_started_2: "Once you've created a class, click the blue 'Add Students' button."
|
||||
# getting_started_3: "You'll see student's progress below as they sign up and join your class."
|
||||
# additional_resources: "Additional Resources"
|
||||
# additional_resources_1_pref: "Download/print our"
|
||||
additional_resources: "Дополнительные ресурсы"
|
||||
additional_resources_1_pref: "Скачать/распечатать наш"
|
||||
# additional_resources_1_mid: "Course 1 Teacher's Guide"
|
||||
# additional_resources_1_suff: "explanations and solutions to each level."
|
||||
# additional_resources_2_pref: "Complete our"
|
||||
# additional_resources_2_suff: "to get two free enrollments for the rest of our paid courses."
|
||||
# additional_resources_3_pref: "Visit our"
|
||||
additional_resources_3_pref: "Посетить наш"
|
||||
# additional_resources_3_mid: "Teacher Forums"
|
||||
# additional_resources_3_suff: "to connect to fellow educators who are using CodeCombat."
|
||||
# additional_resources_4_pref: "Check out our"
|
||||
# additional_resources_4_mid: "Schools Page"
|
||||
# additional_resources_4_suff: "to learn more about CodeCombat's classroom offerings."
|
||||
# your_classes: "Your Classes"
|
||||
your_classes: "Ваши классы"
|
||||
# no_classes: "No classes yet!"
|
||||
# create_new_class1: "create new class"
|
||||
create_new_class1: "создать новый класс"
|
||||
# available_courses: "Available Courses"
|
||||
# unused_enrollments: "Unused enrollments available:"
|
||||
# students_access: "All students get access to Introduction to Computer Science for free. One enrollment per student is required to assign them to paid CodeCombat courses. A single student does not need multiple enrollments to access all paid courses."
|
||||
# active_courses: "active courses"
|
||||
# no_students: "No students yet!"
|
||||
# add_students1: "add students"
|
||||
# view_edit: "view/edit"
|
||||
# students_enrolled: "students enrolled"
|
||||
no_students: "Ещё нет учеников!"
|
||||
add_students1: "добавить учеников"
|
||||
view_edit: "смотреть/редактировать"
|
||||
students_enrolled: "учеников зачислено"
|
||||
# length: "Length:"
|
||||
|
||||
classes:
|
||||
|
@ -1254,11 +1254,11 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
|||
rules: "Правила"
|
||||
winners: "Победители"
|
||||
league: "Лига"
|
||||
# red_ai: "Red CPU" # "Red AI Wins", at end of multiplayer match playback
|
||||
# blue_ai: "Blue CPU"
|
||||
# wins: "Wins" # At end of multiplayer match playback
|
||||
# humans: "Red" # Ladder page display team name
|
||||
# ogres: "Blue"
|
||||
red_ai: "CPU красного" # "Red AI Wins", at end of multiplayer match playback
|
||||
blue_ai: "CPU синего"
|
||||
wins: "Победы" # At end of multiplayer match playback
|
||||
humans: "Красный" # Ladder page display team name
|
||||
ogres: "Синий"
|
||||
|
||||
user:
|
||||
stats: "Характеристики"
|
||||
|
@ -1406,16 +1406,16 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
|
|||
campaigns: "Кампании"
|
||||
poll: "Опрос"
|
||||
user_polls_record: "История опросов"
|
||||
# course: "Course"
|
||||
# courses: "Courses"
|
||||
# course_instance: "Course Instance"
|
||||
# course_instances: "Course Instances"
|
||||
# classroom: "Classroom"
|
||||
# classrooms: "Classrooms"
|
||||
# clan: "Clan"
|
||||
# clans: "Clans"
|
||||
# members: "Members"
|
||||
# users: "Users"
|
||||
course: "Курс"
|
||||
courses: "Курсы"
|
||||
course_instance: "Экземпляр курса"
|
||||
course_instances: "Экземпляры курса"
|
||||
classroom: "Класс"
|
||||
classrooms: "Классы"
|
||||
clan: "Клан"
|
||||
clans: "Кланы"
|
||||
members: "Члены"
|
||||
users: "пользователи"
|
||||
|
||||
concepts:
|
||||
advanced_strings: "Продвинутые строки"
|
||||
|
|
|
@ -19,11 +19,11 @@ module.exports = class User extends CocoModel
|
|||
broadName: ->
|
||||
name = @get('name')
|
||||
return name if name
|
||||
name = _.filter([@get('firstName'), @get('lastName')]).join('')
|
||||
name = _.filter([@get('firstName'), @get('lastName')]).join(' ')
|
||||
return name if name
|
||||
email = @get('email')
|
||||
return email if email
|
||||
return ''
|
||||
return 'Anoner'
|
||||
|
||||
getPhotoURL: (size=80, useJobProfilePhoto=false, useEmployerPageAvatar=false) ->
|
||||
photoURL = if useJobProfilePhoto then @get('jobProfile')?.photoURL else null
|
||||
|
|
|
@ -79,6 +79,7 @@ _.extend UserSchema.properties,
|
|||
archmageNews: {$ref: '#/definitions/emailSubscription'}
|
||||
artisanNews: {$ref: '#/definitions/emailSubscription'}
|
||||
diplomatNews: {$ref: '#/definitions/emailSubscription'}
|
||||
teacherNews: {$ref: '#/definitions/emailSubscription'}
|
||||
scribeNews: {$ref: '#/definitions/emailSubscription'}
|
||||
|
||||
# notifications
|
||||
|
|
|
@ -1,344 +0,0 @@
|
|||
@import "app/styles/bootstrap/variables"
|
||||
|
||||
#profile-view
|
||||
$sideBackground: rgb(220, 220, 220)
|
||||
#login-message
|
||||
h1, h2, h3, h4
|
||||
font-family: Arial, Helvetica, sans-serif
|
||||
color: #333333
|
||||
width: 100%
|
||||
text-align: center
|
||||
margin-top: 200px
|
||||
.profile-control-bar
|
||||
background-color: $sideBackground
|
||||
width: 100%
|
||||
text-align: center
|
||||
|
||||
.profile-completion-progress
|
||||
width: 100%
|
||||
height: 33px
|
||||
margin-bottom: 0
|
||||
border-radius: 0
|
||||
background-color: darken($sideBackground, 15%)
|
||||
|
||||
.progress-bar
|
||||
line-height: 33px
|
||||
font-size: 16px
|
||||
|
||||
.progress-text
|
||||
position: absolute
|
||||
width: 100%
|
||||
text-align: center
|
||||
line-height: 33px
|
||||
font-size: 16px
|
||||
color: white
|
||||
text-shadow: 0px 1px 0px black
|
||||
|
||||
button, a.btn
|
||||
margin: 10px 2px 10px 2px
|
||||
|
||||
&:disabled
|
||||
border-radius: 0
|
||||
opacity: 1
|
||||
|
||||
i
|
||||
margin-right: 5px
|
||||
|
||||
.sample-profile
|
||||
position: absolute
|
||||
right: 5px
|
||||
|
||||
.main-content-area
|
||||
padding: 0
|
||||
background-color: white
|
||||
|
||||
.flat-button
|
||||
width: 100%
|
||||
margin-bottom: 10px
|
||||
background: rgb(78, 78, 78)
|
||||
border: 0
|
||||
border-radius: 0
|
||||
padding: 10px
|
||||
|
||||
.public-profile-container
|
||||
padding: 20px
|
||||
|
||||
img.profile-photo
|
||||
width: 256px
|
||||
border-radius: 6px
|
||||
|
||||
.job-profile-container
|
||||
width: 100%
|
||||
height: 100%
|
||||
min-height: 600px
|
||||
padding: 0
|
||||
display: table
|
||||
|
||||
h1, h2, h3, h4, h5, h6
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif
|
||||
color: #555
|
||||
|
||||
ul.links, ul.projects, ul.sessions
|
||||
margin: 0
|
||||
padding: 0
|
||||
|
||||
li
|
||||
list-style: none
|
||||
|
||||
.job-profile-row
|
||||
height: 100%
|
||||
display: table-row
|
||||
$side-width: 250px
|
||||
$side-padding: 5px
|
||||
$middle-width: 524px
|
||||
$middle-padding: 20px
|
||||
|
||||
.full-height-column
|
||||
height: 100%
|
||||
padding: $side-padding
|
||||
display: table-cell
|
||||
vertical-align: top
|
||||
|
||||
h3:first-child
|
||||
margin: 5px 0 5px 0
|
||||
|
||||
.left-column
|
||||
width: $side-width - 2 * $side-padding
|
||||
padding: $side-padding
|
||||
background-color: $sideBackground
|
||||
|
||||
.sub-column
|
||||
width: $side-width - 2 * $side-padding
|
||||
overflow-wrap: break-word
|
||||
|
||||
#profile-photo-container
|
||||
position: relative
|
||||
margin-bottom: 10px
|
||||
|
||||
img.profile-photo
|
||||
width: $side-width - 2 * $side-padding
|
||||
border-radius: 6px
|
||||
|
||||
.profile-caption
|
||||
background-color: rgba(0, 0, 0, 0.5)
|
||||
color: white
|
||||
border-bottom-right-radius: 6px
|
||||
border-bottom-left-radius: 6px
|
||||
position: absolute
|
||||
width: 100%
|
||||
bottom: 0px
|
||||
text-align: center
|
||||
|
||||
ul.links
|
||||
text-align: center
|
||||
li.has-icon
|
||||
display: inline-block
|
||||
img
|
||||
margin: 0 0 10px 0
|
||||
li.has-icon:not(:nth-child(5))
|
||||
img
|
||||
margin: 0 5px 10px 5px
|
||||
|
||||
#contact-candidate
|
||||
margin-top: 20px
|
||||
background-color: rgb(177, 55, 25)
|
||||
padding: 15px
|
||||
font-size: 20px
|
||||
|
||||
.middle-column
|
||||
width: $middle-width - 2 * $middle-padding
|
||||
padding-left: $middle-padding
|
||||
padding-right: $middle-padding
|
||||
background-color: white
|
||||
|
||||
.sub-column
|
||||
width: $middle-width - 2 * $middle-padding
|
||||
overflow-wrap: break-word
|
||||
|
||||
&.double-column
|
||||
width: $middle-width + $side-width + 2 * $side-padding - 2 * $middle-padding
|
||||
$middle-padding-double: 30px
|
||||
padding-left: $middle-padding-double
|
||||
padding-right: $middle-padding-double
|
||||
|
||||
.sub-column
|
||||
width: $middle-width + $side-width + 2 * $side-padding - 2 * $middle-padding - 2 * $middle-padding-double
|
||||
overflow-wrap: break-word
|
||||
|
||||
code
|
||||
background-color: $sideBackground
|
||||
color: #555
|
||||
margin: 2px 0
|
||||
display: inline-block
|
||||
text-transform: lowercase
|
||||
|
||||
.long-description
|
||||
margin-top: 10px
|
||||
img
|
||||
max-width: 524px - 60px
|
||||
max-height: 200px
|
||||
|
||||
.experience-header
|
||||
margin-top: 25px
|
||||
|
||||
.header-icon
|
||||
margin-right: 10px
|
||||
width: 32px
|
||||
height: 32px
|
||||
|
||||
.experience-entry
|
||||
margin-bottom: 15px
|
||||
|
||||
.duration
|
||||
margin-left: 10px
|
||||
margin-bottom: 10px
|
||||
|
||||
#job-profile-notes
|
||||
width: 100%
|
||||
height: 100px
|
||||
|
||||
#remark-treema
|
||||
background-color: white
|
||||
border: 0
|
||||
padding-top: 0
|
||||
|
||||
.right-column
|
||||
width: $side-width
|
||||
background-color: $sideBackground
|
||||
|
||||
.sub-column
|
||||
width: $side-width - 2 * $side-padding
|
||||
overflow-wrap: break-word
|
||||
|
||||
> h3:first-child
|
||||
background-color: white
|
||||
padding: 5px 5px
|
||||
margin: 5px 2px 5px 2px
|
||||
|
||||
ul.projects
|
||||
li
|
||||
margin-bottom: 10px
|
||||
padding: 5px 3px
|
||||
border: 2px solid $sideBackground
|
||||
transition: .5s ease-in-out
|
||||
position: relative
|
||||
background-color: white
|
||||
|
||||
&:hover
|
||||
border-color: rgb(100, 130, 255)
|
||||
|
||||
a
|
||||
position: relative
|
||||
z-index: 2
|
||||
|
||||
> a
|
||||
position: absolute
|
||||
width: 100%
|
||||
height: 100%
|
||||
top: 0
|
||||
left: 0
|
||||
z-index: 1
|
||||
|
||||
.project-image
|
||||
width: 230px
|
||||
height: 115px
|
||||
background-size: cover
|
||||
background-repeat: no-repeat
|
||||
background-position: center
|
||||
|
||||
-webkit-filter: grayscale(100%)
|
||||
-webkit-transition: .5s ease-in-out
|
||||
-moz-filter: grayscale(100%)
|
||||
-moz-transition: .5s ease-in-out
|
||||
-o-filter: grayscale(100%)
|
||||
-o-transition: .5s ease-in-out
|
||||
filter: grayscale(100%)
|
||||
transition: .5s ease-in-out
|
||||
|
||||
ul.projects li:hover .project-image, .project-image:hover
|
||||
-webkit-filter: grayscale(0%)
|
||||
-moz-filter: grayscale(0%)
|
||||
-o-filter: grayscale(0%)
|
||||
filter: grayscale(0%)
|
||||
|
||||
.main-content-area
|
||||
|
||||
.job-profile-container
|
||||
.editable-section
|
||||
position: relative
|
||||
transition: box-shadow 0.5s easeInOutQuad
|
||||
min-height: 30px
|
||||
|
||||
&.just-saved
|
||||
box-shadow: 0px 0px 20px 0px #080
|
||||
z-index: 1
|
||||
|
||||
.editable-form
|
||||
display: none
|
||||
background-color: white
|
||||
padding: 5px 5px 5px 5px
|
||||
|
||||
.skill-array-item
|
||||
display: inline-block
|
||||
|
||||
input
|
||||
width: 120px
|
||||
margin: 5px
|
||||
|
||||
.project-image
|
||||
width: 210px
|
||||
height: 105px
|
||||
cursor: pointer
|
||||
|
||||
.editable-icon
|
||||
display: none
|
||||
|
||||
.job-profile-container.editable-profile
|
||||
|
||||
.full-height-column.deemphasized
|
||||
background-color: $sideBackground
|
||||
|
||||
.saving
|
||||
opacity: 0.75
|
||||
|
||||
.editable-thinner
|
||||
padding-right: 30px
|
||||
|
||||
.editable-icon
|
||||
display: block
|
||||
position: absolute
|
||||
right: 5px
|
||||
top: 5px
|
||||
font-size: 20px
|
||||
color: $blue
|
||||
opacity: 0.5
|
||||
|
||||
.edit-label
|
||||
color: $blue
|
||||
font-weight: 300
|
||||
|
||||
.edit-example-button
|
||||
background-color: transparentize($blue, 0.25)
|
||||
|
||||
.edit-example-text
|
||||
color: $blue
|
||||
|
||||
code.edit-example-tag
|
||||
color: $blue
|
||||
|
||||
.emphasized
|
||||
outline: 1px solid $green
|
||||
|
||||
.editable-section.deemphasized:not(.just-saved), .our-notes-section.deemphasized
|
||||
opacity: 0.5
|
||||
|
||||
.editable-section:hover
|
||||
cursor: pointer
|
||||
outline: 1px solid $blue
|
||||
|
||||
.editable-icon
|
||||
opacity: 1.0
|
||||
cursor: pointer
|
||||
|
||||
.editable-form
|
||||
cursor: default
|
|
@ -1,74 +0,0 @@
|
|||
#admin-candidates-view
|
||||
|
||||
h1, h2, h3
|
||||
font: Arial
|
||||
|
||||
.see-candidates-header
|
||||
margin: 30px
|
||||
text-align: center
|
||||
|
||||
#see-candidates
|
||||
cursor: pointer
|
||||
|
||||
.employer_icon
|
||||
width: 125px
|
||||
float: left
|
||||
margin: 0px 15px 15px 0px
|
||||
|
||||
.information_row
|
||||
height: 150px
|
||||
padding-right: 15px
|
||||
|
||||
#leftside
|
||||
width: 500px
|
||||
float: left
|
||||
|
||||
#rightside
|
||||
width: 500px
|
||||
float: left
|
||||
|
||||
.tablesorter
|
||||
//img
|
||||
// display: none
|
||||
|
||||
.tablesorter-header
|
||||
cursor: pointer
|
||||
&:hover
|
||||
color: black
|
||||
|
||||
&:first-child
|
||||
// Make sure that "Developer #56" doesn't wrap onto second row
|
||||
min-width: 110px
|
||||
|
||||
.tablesorter-headerAsc
|
||||
background-color: #cfc
|
||||
|
||||
.tablesorter-headerDesc
|
||||
background-color: #ccf
|
||||
|
||||
tr
|
||||
cursor: pointer
|
||||
|
||||
tr.expired
|
||||
opacity: 0.5
|
||||
|
||||
code
|
||||
background-color: rgb(220, 220, 220)
|
||||
color: #555
|
||||
margin: 2px 0
|
||||
display: inline-block
|
||||
text-transform: lowercase
|
||||
|
||||
td:nth-child(3) select
|
||||
min-width: 100px
|
||||
td:nth-child(6) select
|
||||
min-width: 50px
|
||||
td:nth-child(7) select
|
||||
min-width: 100px
|
||||
|
||||
#employers-view, #profile-view.viewed-by-employer
|
||||
#outer-content-wrapper, #intermediate-content-wrapper, #inner-content-wrapper
|
||||
background: #949494
|
||||
|
||||
.main-content-area
|
||||
background-color: #EAEAEA
|
|
@ -18,9 +18,20 @@
|
|||
.name-row
|
||||
@extend .body-row
|
||||
max-width: 300px
|
||||
.description-row
|
||||
@extend .body-row
|
||||
max-width: 520px
|
||||
.small-name-row
|
||||
@extend .body-row
|
||||
max-width: 200px
|
||||
.watch-row
|
||||
@extend .body-row
|
||||
max-width: 80px
|
||||
text-align: center
|
||||
&.watching
|
||||
opacity: 1.0
|
||||
&.not-watching
|
||||
opacity: 0.5
|
||||
|
||||
tr.mine
|
||||
background-color: #f8ecaa
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
@import "app/styles/mixins"
|
||||
@import "app/styles/bootstrap/variables"
|
||||
|
||||
#ladder-home-view
|
||||
#main-ladder-view
|
||||
.level
|
||||
width: 100%
|
||||
position: relative
|
||||
|
|
|
@ -1,52 +0,0 @@
|
|||
@import "app/styles/mixins"
|
||||
@import "app/styles/bootstrap/variables"
|
||||
|
||||
#employers-wrapper
|
||||
background-color: #B4B4B4
|
||||
height: 100%
|
||||
#outer-content-wrapper, #intermediate-content-wrapper, #inner-content-wrapper
|
||||
background: #B4B4B4
|
||||
|
||||
.navbar, #top-nav, .content.clearfix
|
||||
background-color: #B4B4B4
|
||||
|
||||
.footer
|
||||
border-top: none
|
||||
background-color: #B4B4B4
|
||||
padding-bottom: 50px
|
||||
|
||||
|
||||
#employer-content-area
|
||||
margin: auto
|
||||
|
||||
.employer-modal-background-wrapper
|
||||
background-color: white
|
||||
border: 2px #333333 solid
|
||||
border-radius: 4px
|
||||
h1, h2, h3, h4, h5
|
||||
color: black
|
||||
font-family: Arial, Helvetica, sans-serif
|
||||
.input-large
|
||||
font-size: 28px
|
||||
height: 60px
|
||||
border: 2px rgb(231,231,231) solid
|
||||
box-shadow: none
|
||||
width: 70%
|
||||
margin-left: 15%
|
||||
#create-account-button, #contract-agreement-button, #login-button
|
||||
background: #fce232 /* Old browsers */
|
||||
background: -moz-linear-gradient(top, #fce232 0%, #ea8e2b 100%)
|
||||
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#fce232), color-stop(100%,#ea8e2b))
|
||||
background: -webkit-linear-gradient(top, #fce232 0%,#ea8e2b 100%)
|
||||
background: -o-linear-gradient(top, #fce232 0%,#ea8e2b 100%)
|
||||
background: -ms-linear-gradient(top, #fce232 0%,#ea8e2b 100%)
|
||||
background: linear-gradient(to bottom, #fce232 0%,#ea8e2b 100%)
|
||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#fce232', endColorstr='#ea8e2b',GradientType=0 )
|
||||
height: 60px
|
||||
font-size: 24px
|
||||
color: black
|
||||
.login-link
|
||||
text-decoration: underline
|
||||
#login-button
|
||||
margin-left: 40%
|
||||
width: 20%
|
|
@ -159,7 +159,7 @@ else
|
|||
| (Translator)
|
||||
input#email_diplomatNews(name="email_diplomatNews", type="checkbox", checked=subs.diplomatNews)
|
||||
span(data-i18n="contribute.diplomat_subscribe_desc").help-block Get emails about i18n developments and, eventually, levels to translate.
|
||||
|
||||
|
||||
.form-group.checkbox
|
||||
label.control-label(for="email_ambassadorNews")
|
||||
span(data-i18n="classes.ambassador_title")
|
||||
|
@ -169,7 +169,13 @@ else
|
|||
| (Support)
|
||||
input#email_ambassadorNews(name="email_ambassadorNews", type="checkbox", checked=subs.ambassadorNews)
|
||||
span(data-i18n="contribute.ambassador_subscribe_desc").help-block Get emails on support updates and multiplayer developments.
|
||||
|
||||
|
||||
.form-group.checkbox
|
||||
label.control-label(for="email_teacherNews")
|
||||
span(data-i18n="classes.teacher_title")
|
||||
input#email_teacherNews(name="email_teacherNews", type="checkbox", checked=subs.teacherNews)
|
||||
span(data-i18n="contribute.teacher_subscribe_desc").help-block
|
||||
|
||||
button#toggle-all-btn.btn.btn-primary.form-control(data-i18n="account_settings.email_toggle") Toggle All
|
||||
|
||||
.panel.panel-default
|
||||
|
|
|
@ -55,7 +55,7 @@ block content
|
|||
for user in view.users.models
|
||||
.row
|
||||
.col-md-6
|
||||
.student-name= user.broadName() || 'Anoner'
|
||||
.student-name= user.broadName()
|
||||
.col-md-6
|
||||
if view.teacherMode
|
||||
a.remove-student-link.pull-right.text-uppercase(data-user-id=user.id)
|
||||
|
|
|
@ -34,7 +34,13 @@ block content
|
|||
li
|
||||
span.spr(data-i18n="courses.additional_resources_1_pref")
|
||||
a(href='http://codecombat.com/docs/CodeCombatTeacherGuideCourse1.pdf', data-i18n="courses.additional_resources_1_mid")
|
||||
span.spl(data-i18n="courses.additional_resources_1_suff")
|
||||
span.spl.spr(data-i18n="courses.additional_resources_1_mid2")
|
||||
a(href='http://codecombat.com/docs/CodeCombatTeacherGuideCourse2.pdf', data-i18n="courses.additional_resources_1_mid3")
|
||||
span.spl.spr(data-i18n="courses.additional_resources_1_suff")
|
||||
li
|
||||
span.spr(data-i18n="courses.educator_wiki_pref")
|
||||
a(href='https://sites.google.com/a/codecombat.com/teacher-guides/', data-i18n="courses.educator_wiki_mid")
|
||||
span.spl(data-i18n="courses.educator_wiki_suff")
|
||||
li
|
||||
span.spr(data-i18n="courses.additional_resources_2_pref")
|
||||
a(href='/teachers/freetrial', data-i18n="teachers_survey.title")
|
||||
|
|
|
@ -1 +1,35 @@
|
|||
extends /templates/common/table
|
||||
|
||||
block tableResultsHeader
|
||||
tr
|
||||
th(colspan=4)
|
||||
span(data-i18n="general.results")
|
||||
| Results
|
||||
span
|
||||
|: #{documents.length}
|
||||
|
||||
block tableHeader
|
||||
tr
|
||||
th(data-i18n="general.name") Name
|
||||
th(data-i18n="general.description") Description
|
||||
th(data-i18n="general.version") Version
|
||||
th(data-i18n="common.watch") Watch
|
||||
|
||||
block tableBody
|
||||
for document in documents
|
||||
- var data = document.attributes;
|
||||
tr(class=document.get('creator') == me.id ? 'mine' : '')
|
||||
td(title=data.name).name-row
|
||||
a(href="/editor/#{page}/#{data.slug || data._id}")
|
||||
| #{data.name}
|
||||
td(title=data.description).description-row
|
||||
| #{data.description}
|
||||
td #{data.version.major}.#{data.version.minor}
|
||||
if document.watching()
|
||||
td.watch-row.watching
|
||||
span(aria-hidden="true").glyphicon.glyphicon-eye-open
|
||||
span(data-i18n="common.watch").sr-only Watch
|
||||
else
|
||||
td.watch-row.not-watching
|
||||
span(aria-hidden="true").glyphicon.glyphicon-eye-close
|
||||
span(data-i18n="common.unwatch").sr-only Unwatch
|
|
@ -1,21 +0,0 @@
|
|||
body
|
||||
#fb-root
|
||||
#employers-wrapper
|
||||
block header
|
||||
.nav
|
||||
.content.clearfix
|
||||
.navbar-header
|
||||
a.navbar-brand(href='/')
|
||||
img(src="/images/pages/base/recruitment_logo.png", title="CodeCombat - Learn how to code by playing a game", alt="CodeCombat")
|
||||
block outer_content
|
||||
#outer-content-wrapper
|
||||
|
||||
#intermediate-content-wrapper
|
||||
|
||||
#inner-content-wrapper
|
||||
.main-content-area#employer-content-area
|
||||
block content
|
||||
p If this is showing, you dun goofed
|
||||
|
||||
block footer
|
||||
.footer
|
|
@ -21,11 +21,11 @@ module.exports = class SalesView extends RootView
|
|||
|
||||
onClickLogin: (e) ->
|
||||
@openModalView new AuthModal(mode: 'login') if me.get('anonymous')
|
||||
window.tracker?.trackEvent 'Started Login', category: 'Sales', label: 'Sales Login'
|
||||
window.tracker?.trackEvent 'Started Login', category: 'Sales', label: 'Sales Login', ['Mixpanel']
|
||||
|
||||
onClickSignup: (e) ->
|
||||
@openModalView new AuthModal() if me.get('anonymous')
|
||||
window.tracker?.trackEvent 'Started Signup', category: 'Sales', label: 'Sales Create'
|
||||
window.tracker?.trackEvent 'Started Signup', category: 'Sales', label: 'Sales Create', ['Mixpanel']
|
||||
|
||||
logoutRedirectURL: false
|
||||
|
||||
|
|
|
@ -82,3 +82,4 @@ module.exports = class TeachersFreeTrialView extends RootView
|
|||
console.error 'Error saving trial request', response
|
||||
success: (model, response, options) =>
|
||||
@refreshData()
|
||||
window.tracker?.trackEvent 'Submit Trial Request', category: 'Teachers', label: 'Trial Request', ['Mixpanel']
|
||||
|
|
|
@ -7,7 +7,7 @@ class PendingPatchesCollection extends CocoCollection
|
|||
url: '/db/patch?view=pending'
|
||||
model: Patch
|
||||
|
||||
module.exports = class PatchesView extends RootView
|
||||
module.exports = class PendingPatchesView extends RootView
|
||||
id: 'pending-patches-view'
|
||||
template: template
|
||||
|
||||
|
|
|
@ -43,6 +43,7 @@ module.exports = class SubscribeModal extends ModalView
|
|||
@setupPaymentMethodsInfoPopover()
|
||||
if @basicProduct
|
||||
@$el.find('.gem-amount').html $.i18n.t('subscribe.feature4').replace('{{gems}}', @basicProduct.get('gems'))
|
||||
@playSound 'game-menu-open'
|
||||
|
||||
setupParentButtonPopover: ->
|
||||
popoverTitle = $.i18n.t 'subscribe.parent_email_title'
|
||||
|
@ -221,3 +222,7 @@ module.exports = class SubscribeModal extends ModalView
|
|||
@state = 'unknown_error'
|
||||
@stateMessage = "#{xhr.status}: #{xhr.responseText}"
|
||||
@render()
|
||||
|
||||
onHidden: ->
|
||||
super()
|
||||
@playSound 'game-menu-close'
|
||||
|
|
|
@ -2,7 +2,7 @@ Classroom = require 'models/Classroom'
|
|||
ModalView = require 'views/core/ModalView'
|
||||
template = require 'templates/courses/classroom-settings-modal'
|
||||
|
||||
module.exports = class AddLevelSystemModal extends ModalView
|
||||
module.exports = class ClassroomSettingsModal extends ModalView
|
||||
id: 'classroom-settings-modal'
|
||||
template: template
|
||||
|
||||
|
|
|
@ -79,6 +79,7 @@ module.exports = class ClassroomView extends RootView
|
|||
onLoaded: ->
|
||||
@teacherMode = me.isAdmin() or @classroom.get('ownerID') is me.id
|
||||
userSessions = @sessions.groupBy('creator')
|
||||
@users.remove(@users.where({ deleted: true }))
|
||||
for user in @users.models
|
||||
user.sessions = new CocoCollection(userSessions[user.id], { model: LevelSession })
|
||||
user.sessions.comparator = 'changed'
|
||||
|
|
|
@ -4,7 +4,7 @@ auth = require 'core/auth'
|
|||
forms = require 'core/forms'
|
||||
User = require 'models/User'
|
||||
|
||||
module.exports = class StudentSignInModal extends ModalView
|
||||
module.exports = class StudentLogInModal extends ModalView
|
||||
id: 'student-log-in-modal'
|
||||
template: template
|
||||
|
||||
|
|
|
@ -104,13 +104,11 @@ class SolutionsNode extends TreemaArrayNode
|
|||
|
||||
onClickFillDefaults: (e) =>
|
||||
e.preventDefault()
|
||||
sources = {}
|
||||
if source = @parent.data.source
|
||||
sources.javascript = source
|
||||
|
||||
|
||||
sources = { javascript: @parent.data.source }
|
||||
_.extend sources, @parent.data.languages or {}
|
||||
solutions = _.clone(@data)
|
||||
solutions = _.filter(solutions, (solution) -> not _.isEmpty(solution) )
|
||||
for language in _.keys(sources)
|
||||
source = sources[language]
|
||||
solution = _.findWhere(solutions, {language: language})
|
||||
|
@ -120,5 +118,5 @@ class SolutionsNode extends TreemaArrayNode
|
|||
language: language
|
||||
passes: true
|
||||
})
|
||||
|
||||
|
||||
@set('/', solutions)
|
|
@ -6,6 +6,7 @@ module.exports = class LevelSearchView extends SearchView
|
|||
model: require 'models/Level'
|
||||
modelURL: '/db/level'
|
||||
tableTemplate: require 'templates/editor/level/table'
|
||||
projection: ['slug', 'name', 'description', 'version', 'watchers', 'creator']
|
||||
page: 'level'
|
||||
|
||||
getRenderData: ->
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
I18NEditModelView = require './I18NEditModelView'
|
||||
ThangType = require 'models/ThangType'
|
||||
|
||||
module.exports = class ThangTypeI18NView extends I18NEditModelView
|
||||
id: 'thang-type-i18n-view'
|
||||
module.exports = class I18NEditThangTypeView extends I18NEditModelView
|
||||
id: 'i18n-thang-type-view'
|
||||
modelClass: ThangType
|
||||
|
||||
buildTranslationList: ->
|
||||
|
|
|
@ -11,8 +11,8 @@ class LevelSessionsCollection extends CocoCollection
|
|||
super()
|
||||
@url = "/db/user/#{me.id}/level.sessions?project=state.complete,levelID"
|
||||
|
||||
module.exports = class LadderHomeView extends RootView
|
||||
id: 'ladder-home-view'
|
||||
module.exports = class MainLadderView extends RootView
|
||||
id: 'main-ladder-view'
|
||||
template: template
|
||||
|
||||
constructor: (options) ->
|
||||
|
|
|
@ -1,4 +0,0 @@
|
|||
AuthModal = require 'views/core/AuthModal'
|
||||
|
||||
module.exports = class SignupModalView extends AuthModal
|
||||
mode: 'signup'
|
|
@ -2,7 +2,7 @@ ModalView = require 'views/core/ModalView'
|
|||
template = require 'templates/play/modal/share-progress-modal'
|
||||
storage = require 'core/storage'
|
||||
|
||||
module.exports = class SubscribeModal extends ModalView
|
||||
module.exports = class ShareProgressModal extends ModalView
|
||||
id: 'share-progress-modal'
|
||||
template: template
|
||||
plain: true
|
||||
|
|
|
@ -55,7 +55,7 @@
|
|||
"aether": "~0.4.0",
|
||||
"async": "0.2.x",
|
||||
"aws-sdk": "~2.0.0",
|
||||
"bayesian-battle": "0.0.x",
|
||||
"bayesian-battle": "0.0.7",
|
||||
"coffee-script": "1.9.x",
|
||||
"connect": "2.7.x",
|
||||
"express": "~3.0.6",
|
||||
|
@ -98,7 +98,7 @@
|
|||
"css-brunch": "^1.7.0",
|
||||
"fs-extra": "^0.26.2",
|
||||
"jade-brunch": "1.7.5",
|
||||
"jasmine": "^2.3.2",
|
||||
"jasmine": "^2.4.1",
|
||||
"javascript-brunch": "> 1.0 < 1.8",
|
||||
"karma": "~0.13",
|
||||
"karma-chrome-launcher": "~0.1.2",
|
||||
|
|
|
@ -1,17 +1,108 @@
|
|||
// Latest teacher trial requests
|
||||
/* global ISODate */
|
||||
// Latest approved teacher trial requests
|
||||
|
||||
// Usage:
|
||||
// mongo <address>:<port>/<database> <script file> -u <username> -p <password>
|
||||
|
||||
var startDay = '2015-10-01';
|
||||
var endDay = '2016-10-01';
|
||||
print('Date range:', startDay, endDay);
|
||||
var userIDs = getTrialRequestApplicants(startDay, endDay);
|
||||
print('Trial request applicants found:', userIDs.length);
|
||||
var userEmails = getUserEmails(userIDs);
|
||||
print('User emails found:', userEmails.length);
|
||||
for (var i = 0; i < userEmails.length; i++) {
|
||||
print(userEmails[i]);
|
||||
var startDay = '2015-11-01';
|
||||
var endDay = '2016-01-01';
|
||||
print('Date range:', startDay, 'up to', endDay);
|
||||
|
||||
var users = getUsers(startDay, endDay);
|
||||
print('Teachers found:', users.length);
|
||||
print("User Id\tStudent Count\tTrial Type\tEmail\tName\tSchool");
|
||||
for (var i = 0; i < users.length; i++) {
|
||||
if (users[i].schoolName) {
|
||||
print(users[i].id, '\t', users[i].studentCount, '\t', users[i].type, '\t', users[i].email, '\t', users[i].name, '\t', users[i].schoolName);
|
||||
}
|
||||
}
|
||||
|
||||
function getUsers(startDay, endDay) {
|
||||
var cursor, doc, userID;
|
||||
|
||||
// Find approved trial requests
|
||||
var startObj = objectIdWithTimestamp(ISODate(startDay + "T00:00:00.000Z"));
|
||||
var endObj = objectIdWithTimestamp(ISODate(endDay + "T00:00:00.000Z"))
|
||||
cursor = db['trial.requests'].find(
|
||||
{$and:
|
||||
[
|
||||
{_id: {$gte: startObj}},
|
||||
{_id: {$lt: endObj}},
|
||||
{status: 'approved'}
|
||||
]
|
||||
},
|
||||
{applicant: 1, type: 1}
|
||||
);
|
||||
|
||||
var userIDs = [];
|
||||
var userTrialTypeMap = {};
|
||||
var orphanedTrialRequests = [];
|
||||
while (cursor.hasNext()) {
|
||||
doc = cursor.next();
|
||||
if (doc.applicant) {
|
||||
userIDs.push(doc.applicant);
|
||||
userID = doc.applicant.valueOf();
|
||||
if (!userTrialTypeMap[userID] || userTrialTypeMap[userID] !== 'course') userTrialTypeMap[userID] = doc.type;
|
||||
}
|
||||
else {
|
||||
orphanedTrialRequests.push(doc._id);
|
||||
}
|
||||
}
|
||||
|
||||
// May have orphaned trial requests due to previous external import of requests from Google form
|
||||
if (orphanedTrialRequests.length > 0) {
|
||||
cursor = db.prepaids.find({'properties.trialRequestID': {$in: orphanedTrialRequests}}, {creator: 1});
|
||||
while (cursor.hasNext()) {
|
||||
doc = cursor.next();
|
||||
if (doc.creator) {
|
||||
userIDs.push(doc.creator);
|
||||
userID = doc.creator.valueOf();
|
||||
if (!userTrialTypeMap[userID] || userTrialTypeMap[userID] !== 'course') userTrialTypeMap[userID] = doc.type;
|
||||
}
|
||||
else {
|
||||
print('No creator!');
|
||||
printjson(doc);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Find user class sizes
|
||||
var userClassroomStudentsMap = {};
|
||||
cursor = db.classrooms.find({ownerID: {$in: userIDs}}, {members: 1, ownerID: 1});
|
||||
while (cursor.hasNext()) {
|
||||
doc = cursor.next();
|
||||
if (doc.members) {
|
||||
userID = doc.ownerID.valueOf();
|
||||
if (!userClassroomStudentsMap[userID]) userClassroomStudentsMap[userID] = 0;
|
||||
userClassroomStudentsMap[userID] = doc.members.length;
|
||||
}
|
||||
}
|
||||
|
||||
// Build user data
|
||||
var users = [];
|
||||
cursor = db['users'].find({$and: [{_id: {$in: userIDs}}, {deleted: {$exists: false}}, {anonymous: false}]}, {emailLower: 1, name: 1, schoolName: 1});
|
||||
while (cursor.hasNext()) {
|
||||
doc = cursor.next();
|
||||
userID = doc._id.valueOf();
|
||||
var userData = {
|
||||
id: userID,
|
||||
email: doc.emailLower,
|
||||
name: doc.name || "",
|
||||
schoolName: doc.schoolName || "",
|
||||
studentCount: userClassroomStudentsMap[userID] || 0,
|
||||
type: userTrialTypeMap[userID]
|
||||
};
|
||||
users.push(userData);
|
||||
}
|
||||
|
||||
users.sort(function(a, b) {
|
||||
if (a.studentCount > b.studentCount) return -1;
|
||||
else if (a.studentCount === b.studentCount) return a.email.localeCompare(b.email);
|
||||
return 1;
|
||||
});
|
||||
|
||||
return users;
|
||||
}
|
||||
|
||||
function objectIdWithTimestamp(timestamp) {
|
||||
|
@ -24,60 +115,3 @@ function objectIdWithTimestamp(timestamp) {
|
|||
return constructedObjectId
|
||||
}
|
||||
|
||||
function getTrialRequestApplicants(startDay, endDay) {
|
||||
var startObj = objectIdWithTimestamp(ISODate(startDay + "T00:00:00.000Z"));
|
||||
var endObj = objectIdWithTimestamp(ISODate(endDay + "T00:00:00.000Z"))
|
||||
var cursor = db['trial.requests'].find(
|
||||
{$and:
|
||||
[
|
||||
{_id: {$gte: startObj}},
|
||||
{_id: {$lt: endObj}}
|
||||
]
|
||||
},
|
||||
{applicant: 1}
|
||||
);
|
||||
|
||||
var applicantIDs = [];
|
||||
var orphanedTrialRequests = [];
|
||||
while (cursor.hasNext()) {
|
||||
var myDoc = cursor.next();
|
||||
if (myDoc.applicant) {
|
||||
applicantIDs.push(myDoc.applicant);
|
||||
}
|
||||
else {
|
||||
orphanedTrialRequests.push(myDoc._id);
|
||||
}
|
||||
}
|
||||
|
||||
// May have orphaned trial requests due to previous external import of requests from Google form
|
||||
if (orphanedTrialRequests.length > 0) {
|
||||
cursor = db.prepaids.find({'properties.trialRequestID': {$in: orphanedTrialRequests}}, {creator: 1});
|
||||
while (cursor.hasNext()) {
|
||||
var myDoc = cursor.next();
|
||||
if (myDoc.creator) {
|
||||
applicantIDs.push(myDoc.creator);
|
||||
}
|
||||
else {
|
||||
print('No creator!');
|
||||
printjson(myDoc);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return applicantIDs;
|
||||
}
|
||||
|
||||
function getUserEmails(userIDs) {
|
||||
var cursor = db['users'].find({_id: {$in: userIDs}}, {emailLower: 1});
|
||||
|
||||
var userEmails = [];
|
||||
while (cursor.hasNext()) {
|
||||
var myDoc = cursor.next();
|
||||
if (myDoc.emailLower) {
|
||||
userEmails.push(myDoc.emailLower);
|
||||
}
|
||||
}
|
||||
userEmails.sort()
|
||||
return userEmails;
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@ config = require '../../server_config'
|
|||
plugins = require '../plugins/plugins'
|
||||
User = require '../users/User'
|
||||
jsonSchema = require '../../app/schemas/models/classroom.schema'
|
||||
utils = require '../lib/utils'
|
||||
|
||||
ClassroomSchema = new mongoose.Schema {}, {strict: false, minimize: false, read:config.mongo.readpref}
|
||||
|
||||
|
@ -18,12 +19,10 @@ ClassroomSchema.statics.editableProperties = [
|
|||
'aceConfig'
|
||||
]
|
||||
|
||||
# 250 words; will want to use 4 code words once we get past 10M classrooms.
|
||||
words = 'angry apple arm army art baby back bad bag ball bath bean bear bed bell best big bird bite blue boat book box boy bread burn bus cake car cat chair city class clock cloud coat coin cold cook cool corn crash cup dark day deep desk dish dog door down draw dream drink drop dry duck dust east eat egg enemy eye face false farm fast fear fight find fire flag floor fly food foot fork fox free fruit full fun funny game gate gift glass goat gold good green hair half hand happy heart heavy help hide hill home horse house ice idea iron jelly job jump key king lamp large last late lazy leaf left leg life light lion lock long luck map mean milk mix moon more most mouth music name neck net new next nice night north nose old only open page paint pan paper park party path pig pin pink place plane plant plate play point pool power pull push queen rain ready red rest rice ride right ring road rock room run sad safe salt same sand sell shake shape share sharp sheep shelf ship shirt shoe shop short show sick side silly sing sink sit size sky sleep slow small snow sock soft soup south space speed spell spoon star start step stone stop sweet swim sword table team thick thin thing think today tooth top town tree true turn type under want warm watch water west wide win word yes zoo'.split(' ')
|
||||
|
||||
ClassroomSchema.statics.generateNewCode = (done) ->
|
||||
tryCode = ->
|
||||
codeCamel = _.map(_.sample(words, 3), (s) -> s[0].toUpperCase() + s.slice(1)).join('')
|
||||
# Use 4 code words once we get past 10M classrooms
|
||||
codeCamel = utils.getCodeCamel(3)
|
||||
code = codeCamel.toLowerCase()
|
||||
Classroom.findOne code: code, (err, classroom) ->
|
||||
return done() if err
|
||||
|
@ -31,8 +30,6 @@ ClassroomSchema.statics.generateNewCode = (done) ->
|
|||
tryCode()
|
||||
tryCode()
|
||||
|
||||
#ClassroomSchema.plugin plugins.NamedPlugin
|
||||
|
||||
ClassroomSchema.pre('save', (next) ->
|
||||
return next() if @get('code')
|
||||
Classroom.generateNewCode (code, codeCamel) =>
|
||||
|
|
|
@ -3,6 +3,6 @@ config = require '../../server_config'
|
|||
module.exports.MAILCHIMP_LIST_ID = 'e9851239eb'
|
||||
module.exports.MAILCHIMP_GROUP_ID = '4529'
|
||||
|
||||
# these two need to be parallel
|
||||
module.exports.MAILCHIMP_GROUPS = ['Announcements', 'Adventurers', 'Artisans', 'Archmages', 'Scribes', 'Diplomats', 'Ambassadors']
|
||||
module.exports.NEWS_GROUPS = ['generalNews', 'adventurerNews', 'artisanNews', 'archmageNews', 'scribeNews', 'diplomatNews', 'ambassadorNews']
|
||||
# These two need to be parallel
|
||||
module.exports.MAILCHIMP_GROUPS = ['Announcements', 'Adventurers', 'Artisans', 'Archmages', 'Scribes', 'Diplomats', 'Ambassadors', 'Teachers']
|
||||
module.exports.NEWS_GROUPS = ['generalNews', 'adventurerNews', 'artisanNews', 'archmageNews', 'scribeNews', 'diplomatNews', 'ambassadorNews', 'teacherNews']
|
||||
|
|
|
@ -6,6 +6,11 @@ config = require '../../server_config'
|
|||
module.exports =
|
||||
isID: (id) -> _.isString(id) and id.length is 24 and id.match(/[a-f0-9]/gi)?.length is 24
|
||||
|
||||
getCodeCamel: (numWords=3) ->
|
||||
# 250 words
|
||||
words = 'angry apple arm army art baby back bad bag ball bath bean bear bed bell best big bird bite blue boat book box boy bread burn bus cake car cat chair city class clock cloud coat coin cold cook cool corn crash cup dark day deep desk dish dog door down draw dream drink drop dry duck dust east eat egg enemy eye face false farm fast fear fight find fire flag floor fly food foot fork fox free fruit full fun funny game gate gift glass goat gold good green hair half hand happy heart heavy help hide hill home horse house ice idea iron jelly job jump key king lamp large last late lazy leaf left leg life light lion lock long luck map mean milk mix moon more most mouth music name neck net new next nice night north nose old only open page paint pan paper park party path pig pin pink place plane plant plate play point pool power pull push queen rain ready red rest rice ride right ring road rock room run sad safe salt same sand sell shake shape share sharp sheep shelf ship shirt shoe shop short show sick side silly sing sink sit size sky sleep slow small snow sock soft soup south space speed spell spoon star start step stone stop sweet swim sword table team thick thin thing think today tooth top town tree true turn type under want warm watch water west wide win word yes zoo'.split(' ')
|
||||
_.map(_.sample(words, numWords), (s) -> s[0].toUpperCase() + s.slice(1)).join('')
|
||||
|
||||
objectIdFromTimestamp: (timestamp) ->
|
||||
# mongoDB ObjectId contains creation date in first 4 bytes
|
||||
# So, it can be used instead of a redundant created field
|
||||
|
|
|
@ -41,16 +41,13 @@ module.exports.formatSessionInformation = (session) ->
|
|||
shouldUpdateLastOpponentSubmitDateForLeague: session.shouldUpdateLastOpponentSubmitDateForLeague
|
||||
|
||||
module.exports.calculateSessionScores = (callback) ->
|
||||
sessionIDs = _.pluck @clientResponseObject.sessions, 'sessionID'
|
||||
sessionIDs = _.map @clientResponseObject.sessions, 'sessionID'
|
||||
async.map sessionIDs, retrieveOldSessionData.bind(@), (err, oldScores) =>
|
||||
if err? then return callback err, {error: 'There was an error retrieving the old scores'}
|
||||
try
|
||||
oldScoreArray = _.toArray putRankingFromMetricsIntoScoreObject @clientResponseObject, oldScores
|
||||
newScoreArray = updatePlayerSkills oldScoreArray
|
||||
createSessionScoreUpdate.call @, scoreObject for scoreObject in newScoreArray
|
||||
callback err, newScoreArray
|
||||
catch e
|
||||
callback e
|
||||
oldScoreArray = _.toArray putRankingFromMetricsIntoScoreObject @clientResponseObject, oldScores
|
||||
newScoreArray = updatePlayerSkills oldScoreArray
|
||||
createSessionScoreUpdate.call @, scoreObject for scoreObject in newScoreArray
|
||||
callback null, newScoreArray
|
||||
|
||||
retrieveOldSessionData = (sessionID, callback) ->
|
||||
formatOldScoreObject = (session) =>
|
||||
|
@ -151,7 +148,7 @@ module.exports.addMatchToSessionsAndUpdate = (newScoreObject, callback) ->
|
|||
#log.info "Match object computed, result: #{JSON.stringify(matchObject, null, 2)}"
|
||||
#log.info 'Writing match object to database...'
|
||||
#use bind with async to do the writes
|
||||
sessionIDs = _.pluck @clientResponseObject.sessions, 'sessionID'
|
||||
sessionIDs = _.map @clientResponseObject.sessions, 'sessionID'
|
||||
async.each sessionIDs, updateMatchesInSession.bind(@, matchObject), (err) ->
|
||||
callback err
|
||||
|
||||
|
|
|
@ -8,6 +8,7 @@ errors = require '../commons/errors'
|
|||
languages = require '../routes/languages'
|
||||
sendwithus = require '../sendwithus'
|
||||
log = require 'winston'
|
||||
utils = require '../lib/utils'
|
||||
|
||||
module.exports.setup = (app) ->
|
||||
authentication.serializeUser((user, done) -> done(null, user._id))
|
||||
|
@ -101,7 +102,10 @@ module.exports.setup = (app) ->
|
|||
if not user
|
||||
return errors.notFound(res, [{message: 'not found', property: 'email'}])
|
||||
|
||||
user.set('passwordReset', Math.random().toString(36).slice(2, 7).toUpperCase())
|
||||
user.set('passwordReset', utils.getCodeCamel())
|
||||
emailContent = "<h3>Your temporary password: <b>#{user.get('passwordReset')}</b></h3>"
|
||||
emailContent += "<p>Reset your password at <a href=\"http://codecombat.com/account/settings\">http://codecombat.com/account/settings</a></p>"
|
||||
emailContent += "<p>Your old password cannot be retrieved.</p>"
|
||||
user.save (err) =>
|
||||
return errors.serverError(res) if err
|
||||
unless config.unittest
|
||||
|
@ -111,8 +115,8 @@ module.exports.setup = (app) ->
|
|||
address: req.body.email
|
||||
email_data:
|
||||
subject: 'CodeCombat Recovery Password'
|
||||
title: 'Recovery Password'
|
||||
content: "<p>Your CodeCombat recovery password for email #{req.body.email} is: #{user.get('passwordReset')}</p><p>Log in at <a href=\"http://codecombat.com/account/settings\">http://codecombat.com/account/settings</a> and change it.</p><p>Hope this helps!</p>"
|
||||
title: ''
|
||||
content: emailContent
|
||||
sendwithus.api.send context, (err, result) ->
|
||||
if err
|
||||
console.error "Error sending password reset email: #{err.message or err}"
|
||||
|
|
|
@ -5,6 +5,7 @@ hipchat = require '../hipchat'
|
|||
sendwithus = require '../sendwithus'
|
||||
Prepaid = require '../prepaids/Prepaid'
|
||||
jsonSchema = require '../../app/schemas/models/trial_request.schema'
|
||||
User = require '../users/User'
|
||||
|
||||
TrialRequestSchema = new mongoose.Schema {}, {strict: false, minimize: false, read:config.mongo.readpref}
|
||||
|
||||
|
@ -32,6 +33,19 @@ TrialRequestSchema.post 'save', (doc) ->
|
|||
sendwithus.api.send emailParams, (err, result) =>
|
||||
log.error "sendwithus trial request approved error: #{err}, result: #{result}" if err
|
||||
|
||||
# Subscribe to teacher news group
|
||||
User.findById doc.get('applicant'), (err, user) =>
|
||||
if err
|
||||
log.error "Trial request user find error: #{err}"
|
||||
return
|
||||
emails = _.cloneDeep(user.get('emails') ? {})
|
||||
emails.teacherNews ?= {}
|
||||
emails.teacherNews.enabled = true
|
||||
user.update {$set: {emails: emails}}, {}, (err) =>
|
||||
if err
|
||||
log.error "Trial request user update error: #{err}"
|
||||
return
|
||||
|
||||
TrialRequestSchema.statics.privateProperties = []
|
||||
TrialRequestSchema.statics.editableProperties = [
|
||||
'created'
|
||||
|
|
|
@ -76,6 +76,7 @@ emailNameMap =
|
|||
diplomatNews: 'translator'
|
||||
ambassadorNews: 'support'
|
||||
anyNotes: 'notification'
|
||||
teacherNews: 'teacher'
|
||||
|
||||
UserSchema.methods.setEmailSubscription = (newName, enabled) ->
|
||||
oldSubs = _.clone @get('emailSubscriptions')
|
||||
|
|
|
@ -38,43 +38,58 @@ if (database.generateMongoConnectionString() !== dbString) {
|
|||
|
||||
jasmine.DEFAULT_TIMEOUT_INTERVAL = 1000 * 120; // for long Stripe tests
|
||||
|
||||
describe('Server Test Helper', function() {
|
||||
it('starts the test server', function(done) {
|
||||
var server = require('../../server');
|
||||
server.startServer(done);
|
||||
var initialized = false;
|
||||
beforeEach(function(done) {
|
||||
if (initialized) {
|
||||
return done();
|
||||
}
|
||||
|
||||
var async = require('async');
|
||||
async.series([
|
||||
function(cb) {
|
||||
// Start the server
|
||||
var server = require('../../server');
|
||||
server.startServer(cb);
|
||||
},
|
||||
function(cb) {
|
||||
// 5. Check actual database
|
||||
var User = require('../../server/users/User');
|
||||
User.find({}).count(function(err, count) {
|
||||
// For this to serve as a line of defense against testing with the
|
||||
// production DB, tests must be run with
|
||||
expect(err).toBeNull();
|
||||
expect(count).toBeLessThan(100);
|
||||
if(err || count >= 100) {
|
||||
// the only way to be sure we don't keep going with the tests
|
||||
process.exit(1);
|
||||
}
|
||||
GLOBAL.mc.lists.subscribe = _.noop;
|
||||
cb()
|
||||
});
|
||||
},
|
||||
function(cb) {
|
||||
// Clear db
|
||||
var mongoose = require('mongoose');
|
||||
mongoose.connection.db.command({dropDatabase:1}, function(err, result) {
|
||||
if (err) { console.log(err); }
|
||||
cb(err);
|
||||
});
|
||||
},
|
||||
function(cb) {
|
||||
// Initialize products
|
||||
var request = require('request');
|
||||
request.get(getURL('/db/products'), function(err, res, body) {
|
||||
expect(err).toBe(null);
|
||||
expect(res.statusCode).toBe(200);
|
||||
cb(err);
|
||||
});
|
||||
}
|
||||
],
|
||||
function(err) {
|
||||
if (err) {
|
||||
process.exit(1);
|
||||
}
|
||||
initialized = true;
|
||||
done();
|
||||
});
|
||||
|
||||
it('checks the db is fairly empty', function(done) {
|
||||
// 5. Check actual database.
|
||||
var User = require('../../server/users/User');
|
||||
User.find({}).count(function(err, count) {
|
||||
// For this to serve as a line of defense against testing with the
|
||||
// production DB, tests must be run with
|
||||
expect(err).toBeNull();
|
||||
expect(count).toBeLessThan(100);
|
||||
if(err || count >= 100) {
|
||||
// the only way to be sure we don't keep going with the tests
|
||||
process.exit(1);
|
||||
}
|
||||
GLOBAL.mc.lists.subscribe = _.noop;
|
||||
done()
|
||||
});
|
||||
});
|
||||
|
||||
it('clears the db', function(done) {
|
||||
var mongoose = require('mongoose');
|
||||
mongoose.connection.db.command({dropDatabase:1}, function(err, result) {
|
||||
if (err) { console.log(err); }
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('initializes products', function(done) {
|
||||
var request = require('request');
|
||||
request.get(getURL('/db/products'), function(err, res, body) {
|
||||
expect(err).toBe(null);
|
||||
expect(res.statusCode).toBe(200);
|
||||
done();
|
||||
});
|
||||
})
|
||||
});
|
|
@ -134,7 +134,11 @@ describe 'Trial Requests', ->
|
|||
expect(prepaid.get('type')).toEqual('course')
|
||||
expect(prepaid.get('creator')).toEqual(user.get('_id'))
|
||||
expect(prepaid.get('maxRedeemers')).toEqual(2)
|
||||
done()
|
||||
User.findById user._id, (err, user) =>
|
||||
expect(err).toBeNull()
|
||||
return done(err) if err
|
||||
expect(user.get('emails')?.teacherNews?.enabled).toEqual(true)
|
||||
done()
|
||||
|
||||
it 'Deny trial request', (done) ->
|
||||
loginNewUser (user) ->
|
||||
|
|
|
@ -8,6 +8,7 @@ describe 'LevelEditView', ->
|
|||
view = new LevelEditView({}, 'something')
|
||||
request = jasmine.Ajax.requests.first()
|
||||
request.respondWith {status: 200, responseText: JSON.stringify(emptyLevel)}
|
||||
me.set('anonymous', false) # otherwise button may be disabled an not fire
|
||||
view.render()
|
||||
spyOn(view, 'openModalView')
|
||||
view.$el.find('#revert-button').click()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue