mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-12-13 17:21:19 -05:00
Merge branch 'master' into production
This commit is contained in:
commit
a5630c97c0
16 changed files with 580 additions and 490 deletions
|
@ -17,11 +17,10 @@ module.exports = class CocoRouter extends Backbone.Router
|
|||
if window.serverConfig.picoCTF
|
||||
return @routeDirectly 'play/CampaignView', ['picoctf'], {}
|
||||
# Testing new home page
|
||||
group = me.getHomepageGroup()
|
||||
return @routeDirectly('HomeView', [], { withTeacherNote: true }) if group is 'home-with-note'
|
||||
return @routeDirectly('NewHomeView', [], { jumbotron: 'student' }) if group is 'new-home-student'
|
||||
return @routeDirectly('NewHomeView', [], { jumbotron: 'characters' }) if group is 'new-home-characters'
|
||||
return @routeDirectly('HomeView', [])
|
||||
# group = me.getHomepageGroup()
|
||||
# return @routeDirectly('NewHomeView', [], { jumbotron: 'student' }) if group is 'new-home-student'
|
||||
# return @routeDirectly('NewHomeView', [], { jumbotron: 'characters' }) if group is 'new-home-characters'
|
||||
return @routeDirectly('NewHomeView', [])
|
||||
|
||||
'about': go('AboutView')
|
||||
|
||||
|
|
|
@ -28,11 +28,17 @@ module.exports = class SpriteBuilder
|
|||
anim.initialize(mode ? createjs.MovieClip.INDEPENDENT, startPosition ? 0, loops ? true, labels)
|
||||
for tweenData in animData.tweens
|
||||
tween = createjs.Tween
|
||||
stopped = false
|
||||
for func in tweenData
|
||||
args = _.cloneDeep(func.a)
|
||||
@dereferenceArgs(args, locals)
|
||||
tween = tween[func.n](args...)
|
||||
anim.timeline.addTween(tween)
|
||||
if tween[func.n]
|
||||
tween = tween[func.n](args...)
|
||||
else
|
||||
# If we, say, skipped a shadow get(), then the wait() may not be present
|
||||
stopped = true
|
||||
break
|
||||
anim.timeline.addTween(tween) unless stopped
|
||||
|
||||
anim.nominalBounds = new createjs.Rectangle(animData.bounds...)
|
||||
if animData.frameBounds
|
||||
|
|
|
@ -4,7 +4,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
no_ie: "CodeCombat läuft nicht im IE 8 oder älteren Browsern. Tut uns leid!" # Warning that only shows up in IE8 and older
|
||||
no_mobile: "CodeCombat ist nicht für Mobilgeräte optimiert und funktioniert möglicherweise nicht." # Warning that shows up on mobile devices
|
||||
play: "Spielen" # 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: "Spiele die Kampagnen Version" # Shows up under big play button if you only play /courses
|
||||
old_browser: "Oh! Dein Browser ist zu alt für CodeCombat. Tut uns leid!" # Warning that shows up on really old Firefox/Chrome/Safari
|
||||
old_browser_suffix: "Du kannst es trotzdem versuchen, aber es wird wahrscheinlich nicht funktionieren."
|
||||
ipad_browser: "Die schlechte Nachricht: CodeCombat läuft auf dem iPad nicht im Browser. Die gute Nachricht: Unsere iPad App wartet gerade auf die Zustimmung von Apple."
|
||||
|
@ -17,7 +17,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
nav:
|
||||
play: "Spielen" # The top nav bar entry where players choose which levels to play
|
||||
community: "Community"
|
||||
# courses: "Courses"
|
||||
courses: "Kurse"
|
||||
editor: "Editor"
|
||||
blog: "Blog"
|
||||
forum: "Forum"
|
||||
|
@ -75,7 +75,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
subscription_required: "Abonnement benötigt"
|
||||
anonymous: "Anonymer Spieler"
|
||||
level_difficulty: "Schwierigkeit: "
|
||||
# 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: "Spiele die Klassenraum-Version" # Choose a level in campaign version that you also can play in one of your courses
|
||||
campaign_beginner: "Anfängerkampagne"
|
||||
awaiting_levels_adventurer_prefix: "Wir veröffentlichen fünf Levels pro Woche." # {change}
|
||||
awaiting_levels_adventurer: "Registriere dich als ein Abenteurer"
|
||||
|
@ -114,9 +114,9 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
log_in: "mit Passwort einloggen"
|
||||
required: "Du musst dich vorher einloggen diesen Dienst zu nutzen"
|
||||
login_switch: "Hast du schon einen Account?"
|
||||
# school_name: "School Name and City"
|
||||
# optional: "optional"
|
||||
# school_name_placeholder: "Example High School, Springfield, IL"
|
||||
school_name: "Schulname und Stadt"
|
||||
optional: "optional"
|
||||
school_name_placeholder: "Beispiel Gymnasium, Musterdorf, DE"
|
||||
|
||||
recover:
|
||||
recover_account_title: "Account-Wiederherstellung"
|
||||
|
@ -166,7 +166,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
withdrawn: "zurückgezogen"
|
||||
accept: "Akzeptieren"
|
||||
reject: "Verwerfen"
|
||||
# withdraw: "Withdraw"
|
||||
withdraw: "Zurückziehen"
|
||||
submitter: "Übermittler"
|
||||
submitted: "Übermittelt"
|
||||
commit_msg: "Übertrage Nachricht"
|
||||
|
@ -221,10 +221,10 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
years: "Jahre"
|
||||
|
||||
play_level:
|
||||
# completed_level: "Completed Level:"
|
||||
# course: "Course:"
|
||||
completed_level: "Abgeschlossene Level:"
|
||||
course: "Kurse:"
|
||||
done: "Fertig"
|
||||
# next_level: "Next Level:"
|
||||
next_level: "Nächster Level:"
|
||||
next_game: "Nächstes Spiel"
|
||||
show_menu: "Menü anzeigen"
|
||||
home: "Startseite" # Not used any more, will be removed soon.
|
||||
|
@ -287,9 +287,9 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
time_goto: "Gehe zu:"
|
||||
non_user_code_problem_title: "Level konnte nicht geladen werden"
|
||||
infinite_loop_title: "Unendliche Schleife entdeckt"
|
||||
# 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)"
|
||||
infinite_loop_description: "Der eingegebene Code für die Erschaffung dieser Welt findet kein Ende.Er ist entwerder sehr langsam oder hat eine unendliche Schleife. Oder es gibt einen Bug. Du kannst entweder versuchen den Code nochmal zu start oder den Code zum Ursprungscode zurücksetzen. Falls das nicht hilft, dann lass es uns bitte wissen."
|
||||
check_dev_console: "Du kannst auch die Entwicklerkonsole öffnen um zu sehen was schief lief."
|
||||
check_dev_console_link: "(Instruktionen)"
|
||||
infinite_loop_try_again: "Erneut versuchen"
|
||||
infinite_loop_reset_level: "Level zurücksetzen"
|
||||
infinite_loop_comment_out: "Meinen Code auskommentieren"
|
||||
|
@ -297,7 +297,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
tip_scrub_shortcut: "Spule vor und zurück mit Strg+[ und Strg+]" # {change}
|
||||
tip_guide_exists: "Klicke auf die Anleitung am oberen Ende der Seite für nützliche Informationen."
|
||||
tip_open_source: "CodeCombat ist 100% quelloffen!"
|
||||
# tip_tell_friends: "Enjoying CodeCombat? Tell your friends about us!"
|
||||
tip_tell_friends: "Gefällt dir CodeCombat? Dann erzähl es deinen Freunden!"
|
||||
tip_beta_launch: "CodeCombat startete seine Beta im Oktober 2013."
|
||||
tip_think_solution: "Denke über die Lösung nach, nicht über das Problem."
|
||||
tip_theory_practice: "In der Theorie gibt es keinen Unterschied zwischen Theorie und Praxis. In der Praxis schon. - Yogi Berra"
|
||||
|
@ -339,10 +339,10 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
# tip_hate_computers: "That's the thing about people who think they hate computers. What they really hate is lousy programmers. - Larry Niven"
|
||||
tip_open_source_contribute: "Du kannst dabei helfen, CodeCombat zu verbessern."
|
||||
# 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_free_your_mind: "Mach dich von allem frei, Neo. Angst, Zweifel, Misstrauen. Du musst deinen Geist befreien! - Morpheus"
|
||||
tip_strong_opponents: "Auch die stärksten Gegner haben immer ihre Schwächen. - 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_solve_then_write: "Als Erstes, löse dass Problem. Dann, schreibe den Code. - John Johnson"
|
||||
|
||||
game_menu:
|
||||
inventory_tab: "Inventar"
|
||||
|
@ -407,10 +407,10 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
feature4: "<strong>{{gems}} Bonusedelsteine</strong> jeden Monat!"
|
||||
feature5: "Videoanleitungen"
|
||||
feature6: "Premium Emailsupport"
|
||||
# feature7: "Private <strong>Clans</strong>"
|
||||
feature7: "Private <strong>Klans</strong>"
|
||||
free: "Kostenlos"
|
||||
month: "Monat"
|
||||
# must_be_logged: "You must be logged in first. Please create an account or log in from the menu above."
|
||||
must_be_logged: "Du musst eingeloggt sein. Bitte kreiere einen Account oder logge dich oben im Menü ein."
|
||||
subscribe_title: "Abonnieren"
|
||||
unsubscribe: "Abmelden"
|
||||
confirm_unsubscribe: "Abmeldung bestätigen"
|
||||
|
@ -429,7 +429,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
parent_email_sent: "Email gesendet!"
|
||||
parent_email_title: "Wie lautet die Emailadresse deiner Eltern?"
|
||||
parents: "Für Eltern"
|
||||
parents_title: "Liebe Eltern: Ihr kind erlernt das Programmieren. Wollen Sie es nicht dabei unterstützen?"
|
||||
parents_title: "Liebe Eltern: Ihr Kind erlernt das Programmieren. Wollen Sie es nicht dabei unterstützen?"
|
||||
parents_blurb1: "Ihr Kind hat __nLevels__ Level gemeistert und dabei Grundkenntnisse des Programmierens erlangt. Fördern Sie ihr Kind weiterhin, indem sie mit einem Abonnement weitere Herausforderungen freischalten."
|
||||
parents_blurb1a: "Das Programmieren entwickelt sich zunehmend zu einem Grundwerkzeug, dass in immer mehr Berufen benötigt wird und ohne Zweifel sich im Leben als eine sehr nützliche Fähigkeit erweisen wird."
|
||||
parents_blurb2: "Für {{price}} im Monat, bekommt Ihr Kind jede Woche neue Herausforderungen sowie persönlichen Email Support von erfahrenen Programmierern."
|
||||
|
@ -499,8 +499,8 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
skill_docs:
|
||||
writable: "beschreibbar" # Hover over "attack" in Your Skills while playing a level to see most of this
|
||||
read_only: "schreibgeschützt"
|
||||
# action: "Action"
|
||||
# spell: "Spell"
|
||||
action: "Aktion"
|
||||
spell: "Zaubersprüche"
|
||||
action_name: "Name"
|
||||
action_cooldown: "Benötigt"
|
||||
action_specific_cooldown: "Cooldown"
|
||||
|
@ -582,9 +582,9 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
who_for_1: "Wir empfehlen CodeCombat Schülern im Alter von 9 Jahren und älter. Es werden keine Vorkenntnisse vorausgesetzt." # {change}
|
||||
who_for_2: "Wir haben CodeCombat so gestalltet, dass es sowohl Jungen als auch Mädchen ansprechend finden." # {change}
|
||||
more_info_title: "Wo kann ich mehr Information finden?"
|
||||
# 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."
|
||||
more_info_1: "Unser"
|
||||
more_info_2: "Lehrerforum"
|
||||
more_info_3: "ist eine gute Anlaufstelle, um mit anderen Lehrer in Kontakt zu treten, die CodeCombat benutzen."
|
||||
|
||||
teachers_survey:
|
||||
title: "Lehrerumfrage"
|
||||
|
@ -606,16 +606,16 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
# 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."
|
||||
email: "Email Addresse"
|
||||
school: "Name der Schule"
|
||||
location: "Name der Stadt"
|
||||
age_students: "Wie alt sind ihre Schüler?"
|
||||
under: "Unter"
|
||||
other: "Andere:"
|
||||
amount_students: "Wieviele Schüler unterrichten Sie?"
|
||||
hear_about: "Wie sind Sie auf CodeCombat aufmerksam geworden?"
|
||||
fill_fields: "Bitte füllen Sie alle Felder aus."
|
||||
thanks: "Danke! Wir werden ihnen bald Setup-Instruktionen zuschicken."
|
||||
|
||||
versions:
|
||||
save_version_title: "Neue Version speichern"
|
||||
|
@ -660,7 +660,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
password_tab: "Passwort"
|
||||
emails_tab: "Emails"
|
||||
admin: "Admin"
|
||||
# manage_subscription: "Click here to manage your subscription."
|
||||
manage_subscription: "Klicken Sie hier um ihr Abo zu verwalten."
|
||||
new_password: "Neues Passwort"
|
||||
new_password_verify: "Passwort verifizieren"
|
||||
type_in_email: "Email eingeben um das Löschen des Accounts zu bestätigen"
|
||||
|
@ -691,7 +691,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
keyboard_shortcuts: "Tastaturkürzel"
|
||||
space: "Leertaste"
|
||||
enter: "Eingabetaste"
|
||||
# press_enter: "press enter"
|
||||
press_enter: "Drück die Eingabetaste"
|
||||
escape: "Escape"
|
||||
shift: "Umschalttaste"
|
||||
run_code: "Starte aktuellen Code."
|
||||
|
@ -718,7 +718,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
article_editor_prefix: "Hast du einen Fehler in unseren Dokus gefunden? Willst du Anleitungen für deine Kreationen erstellen? Schau dir den"
|
||||
article_editor_suffix: "und hilf CodeCombat Spielern, das meiste aus ihrer Spielzeit herauszuholen."
|
||||
find_us: "Finde uns auf diesen Seiten"
|
||||
# social_github: "Check out all our code on GitHub"
|
||||
social_github: "Schau dir all unseren Code auf GitHub an"
|
||||
social_blog: "Lese den CodeCombat Blog auf Sett"
|
||||
social_discource: "Schließe dich den Diskussionen in unserem Discourse Forum an"
|
||||
social_facebook: "Like CodeCombat auf Facebook"
|
||||
|
@ -727,51 +727,51 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
social_hipchat: "Chatte mit uns in unserem öffentlichen CodeCombat Slack Raum"
|
||||
contribute_to_the_project: "Trage zu diesem Projekt bei"
|
||||
|
||||
# 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"
|
||||
clans:
|
||||
clan: "Clan"
|
||||
clans: "Clans"
|
||||
new_name: "Neuer Clanname"
|
||||
new_description: "Neue Clanbeschreibung"
|
||||
make_private: "Mach deinen Clan private"
|
||||
subs_only: "Nur für Abonnenten"
|
||||
create_clan: "Erstelle einen neuen Clan"
|
||||
private_preview: "Vorschau"
|
||||
private_clans: "Private Clans"
|
||||
public_clans: "Öffentliche Clans"
|
||||
my_clans: "Meine Clans"
|
||||
clan_name: "Clanname"
|
||||
name: "Name"
|
||||
chieftain: "Häuptling"
|
||||
# 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"
|
||||
edit_clan_name: "Clannamen bearbeiten"
|
||||
edit_clan_description: "Clanbeschreibung bearbeiten"
|
||||
edit_name: "Namen bearbeiten"
|
||||
edit_description: "Beschreibung bearbeiten"
|
||||
private: "(privat)"
|
||||
summary: "Zusammenfassung"
|
||||
average_level: "Leveldurchschnitt"
|
||||
average_achievements: "Errungenschaftsdurchschnitt"
|
||||
delete_clan: "Clan löschen"
|
||||
leave_clan: "Clan verlassen"
|
||||
join_clan: "Clan beitreten"
|
||||
invite_1: "Einladen:"
|
||||
invite_2: "*Lade Spieler zu diesem Clan ein, indem du ihnen diesen Links sendest."
|
||||
members: "Mitglieder"
|
||||
progress: "Fortschritt"
|
||||
not_started_1: "nicht gestartet"
|
||||
started_1: "gestartet"
|
||||
complete_1: "abgeschlossen"
|
||||
# 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."
|
||||
rem_hero: "Held entfernen"
|
||||
status: "Status"
|
||||
complete_2: "Abgeschlossen"
|
||||
started_2: "Gestartet"
|
||||
not_started_2: "Nicht gestartet"
|
||||
view_solution: "Klicke um die Lösung zu sehen."
|
||||
# view_attempt: "Click to view attempt."
|
||||
# latest_achievement: "Latest Achievement"
|
||||
# playtime: "Playtime"
|
||||
# last_played: "Last played"
|
||||
latest_achievement: "Letzte Errungenschaft"
|
||||
playtime: "Spielzeit"
|
||||
last_played: "Zuletzt gespielt"
|
||||
# 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"
|
||||
|
@ -1071,7 +1071,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
level_tab_thangs_all: "Alle"
|
||||
level_tab_thangs_conditions: "Startbedingungen"
|
||||
level_tab_thangs_add: "Thangs hinzufügen"
|
||||
# level_tab_thangs_search: "Search thangs"
|
||||
level_tab_thangs_search: "Thangs suchen"
|
||||
add_components: "Kommentar hinzufügen"
|
||||
component_configs: "Komponenten Konfiguration"
|
||||
config_thang: "Doppelklicke, um Thang zu konfigurieren"
|
||||
|
@ -1274,7 +1274,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
no_achievements: "Noch keine Erfolge verdient."
|
||||
favorite_prefix: "Lieblingssprache ist "
|
||||
favorite_postfix: "."
|
||||
# not_member_of_clans: "Not a member of any clans yet."
|
||||
not_member_of_clans: "Noch kein Mitglied eines Clans."
|
||||
|
||||
achievements:
|
||||
last_earned: "Zuletzt erhalten"
|
||||
|
@ -1354,7 +1354,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
bad_input: "Falsche Eingabe."
|
||||
server_error: "Server Fehler."
|
||||
unknown: "Unbekannter Fehler."
|
||||
# error: "ERROR"
|
||||
error: "FEHLER"
|
||||
|
||||
resources:
|
||||
sessions: "Sessions"
|
||||
|
@ -1396,7 +1396,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
user_remarks: "Benutzerkommentare"
|
||||
versions: "Versionen"
|
||||
items: "Gegenstände"
|
||||
# hero: "Hero"
|
||||
hero: "Held"
|
||||
heroes: "Helden"
|
||||
achievement: "Achievement"
|
||||
clas: "CLAs"
|
||||
|
@ -1406,46 +1406,46 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
|
|||
campaigns: "Kampagne"
|
||||
poll: "Umfrage"
|
||||
user_polls_record: "Umfrageergebnisse"
|
||||
# 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: "Kurs"
|
||||
courses: "Kurse"
|
||||
course_instance: "Kursinstanz"
|
||||
course_instances: "Kursinstanzen"
|
||||
classroom: "Klassenraum"
|
||||
classrooms: "Klassenräume"
|
||||
clan: "Clan"
|
||||
clans: "Clans"
|
||||
members: "Mitglieder"
|
||||
users: "Benutzer"
|
||||
|
||||
# concepts:
|
||||
# advanced_strings: "Advanced Strings"
|
||||
# algorithms: "Algorithms"
|
||||
# arguments: "Arguments"
|
||||
# arithmetic: "Arithmetic"
|
||||
# arrays: "Arrays"
|
||||
# basic_syntax: "Basic Syntax"
|
||||
# boolean_logic: "Boolean Logic"
|
||||
# break_statements: "Break Statements"
|
||||
# classes: "Classes"
|
||||
# continue_statements: "Continue Statements"
|
||||
# for_loops: "For Loops"
|
||||
# functions: "Functions"
|
||||
# graphics: "Graphics"
|
||||
# if_statements: "If Statements"
|
||||
# input_handling: "Input Handling"
|
||||
# math_operations: "Math Operations"
|
||||
concepts:
|
||||
advanced_strings: "Erweiterte Strings"
|
||||
algorithms: "Algorithmen"
|
||||
arguments: "Argumente"
|
||||
arithmetic: "Arithmetic"
|
||||
arrays: "Arrays"
|
||||
basic_syntax: "Grundlegende Syntax"
|
||||
boolean_logic: "Boole'sche Logik"
|
||||
break_statements: "Break Anweisungen"
|
||||
classes: "Klassen"
|
||||
continue_statements: "Continue Anweisungen"
|
||||
for_loops: "For Schleifen"
|
||||
functions: "Funktionen"
|
||||
graphics: "Graphiken"
|
||||
if_statements: "If Anweisungen"
|
||||
input_handling: "Eingabebehandlung"
|
||||
math_operations: "Mathematische Operationen"
|
||||
# object_literals: "Object Literals"
|
||||
# parameters: "Parameters"
|
||||
# strings: "Strings"
|
||||
# variables: "Variables"
|
||||
# vectors: "Vectors"
|
||||
# while_loops: "Loops"
|
||||
# recursion: "Recursion"
|
||||
parameters: "Parameter"
|
||||
strings: "Strings"
|
||||
variables: "Variablen"
|
||||
vectors: "Vektoren"
|
||||
while_loops: "while-Schleifen"
|
||||
recursion: "Rekursionen"
|
||||
|
||||
delta:
|
||||
added: "hinzugefügt"
|
||||
modified: "modifiziert"
|
||||
# not_modified: "Not Modified"
|
||||
not_modified: "nicht modifiziert"
|
||||
deleted: "gelöscht"
|
||||
moved_index: "Verschobener Index"
|
||||
text_diff: "Text Diff"
|
||||
|
|
|
@ -14,6 +14,66 @@
|
|||
for_developers: "For Developers" # Not currently shown on home page.
|
||||
or_ipad: "Or download for iPad"
|
||||
|
||||
new_home:
|
||||
slogan: "The most engaging game for learning programming."
|
||||
classroom_edition: "Classroom Edition:"
|
||||
learn_to_code: "Learn to code:"
|
||||
teacher: "Teacher"
|
||||
student: "Student"
|
||||
play_now: "Play Now"
|
||||
im_a_teacher: "I'm a Teacher"
|
||||
im_a_student: "I'm a Student"
|
||||
learn_more: "Learn more"
|
||||
classroom_in_a_box: "A classroom in-a-box for teaching computer science."
|
||||
codecombat_is: "CodeCombat is a platform for students to learn computer science while playing through a real game."
|
||||
our_courses: "Our courses have been specifically playtested to excel in a classroom setting, even by teachers with little to no prior programming experience."
|
||||
designed_with: "Designed with teachers in mind"
|
||||
real_code: "Real, typed code"
|
||||
from_the_first_level: "from the first level"
|
||||
getting_students: "Getting students to typed code as quickly as possible is critical to learning programming syntax and proper structure."
|
||||
educator_resources: "Educator resources"
|
||||
course_guides: "and course guides"
|
||||
teaching_computer_science: "Teaching computer science does not require a costly degree, because we provide tools to support educators of all backgrounds."
|
||||
accessible_to: "Accessible to"
|
||||
everyone: "everyone"
|
||||
democratizing: "Democratizing the process of learning coding is at the core of our philosophy. Everyone should be able to learn to code."
|
||||
forgot_learning: "I think they actually forgot that they were actually learning something."
|
||||
wanted_to_do: " Coding is something I've always wanted to do, and I never thought I would be able to learn it in school."
|
||||
why_games: "Why is learning through games important?"
|
||||
games_reward: "Games reward the productive struggle."
|
||||
encourage: "Gaming is a medium that encourages interaction, discovery, and trial-and-error. A good game challenges the player to master skills over time, which is the same critical process students go through as they learn."
|
||||
excel: "Games excel at rewarding"
|
||||
struggle: "productive struggle"
|
||||
kind_of_struggle: "the kind of struggle that results in learning that’s engaging and"
|
||||
motivating: "motivating"
|
||||
not_tedious: "not tedious."
|
||||
gaming_is_good: "Studies suggest gaming is good for children’s brains. (it’s true!)"
|
||||
game_based: "When game-based learning systems are"
|
||||
compared: "compared"
|
||||
conventional: "against conventional assessment methods, the difference is clear: games are better at helping students retain knowledge, concentrate and"
|
||||
perform_at_higher_level: "perform at a higher level of achievement"
|
||||
feedback: "Games also provide real-time feedback that allows students to adjust their solution path and understand concepts more holistically, instead of being limited to just “correct” or “incorrect” answers."
|
||||
real_game: "A real game, played with real coding."
|
||||
great_game: "A great game is more than just badges and achievements - it’s about a player’s journey, well-designed puzzles, and the ability to tackle challenges with agency and confidence."
|
||||
agency: "CodeCombat is a game that gives players that agency and confidence with our robust typed code engine, which helps beginner and advanced students alike write proper, valid code."
|
||||
curious: "Curious? Request a demo and we'll show you the ropes"
|
||||
create_class: "Or create a class and see it for yourself!"
|
||||
request_demo: "Request a Demo"
|
||||
create_a_class: "Create a Class"
|
||||
have_an_account: "Already have an account?"
|
||||
logged_in_as: "You are currently logged in as"
|
||||
view_my_classes: "View my classes"
|
||||
computer_science: "Computer science courses for all ages"
|
||||
show_me_lesson_time: "Show me lesson time estimates for:"
|
||||
curriculum: "Total curriculum hours:"
|
||||
ffa: "Free for all students"
|
||||
lesson_time: "Lesson time:"
|
||||
coming_soon: "Coming soon!"
|
||||
courses_available_in: "Courses are available in JavaScript, Python, and Java (coming soon!)"
|
||||
boast: "Boasts riddles that are complex enough to fascinate gamers and coders alike."
|
||||
winning: "A winning combination of RPG gameplay and programming homework that pulls off making kid-friendly education legitimately enjoyable."
|
||||
run_class:"Everything you need to run a computer science class in your school today, no CS background required."
|
||||
|
||||
nav:
|
||||
play: "Levels" # The top nav bar entry where players choose which levels to play
|
||||
community: "Community"
|
||||
|
@ -348,7 +408,10 @@
|
|||
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_compiler_ignores_comments: "Sometimes I think that the compiler ignores my comments."
|
||||
tip_understand_recursion: "The only way to understand recursion is to understand recursion."
|
||||
tip_life_and_polymorphism: "Open Source is like a totally polymorphic heterogeneous structure: All types are welcome."
|
||||
|
||||
game_menu:
|
||||
inventory_tab: "Inventory"
|
||||
save_load_tab: "Save/Load"
|
||||
|
@ -554,8 +617,8 @@
|
|||
careers_link: "Careers"
|
||||
press_link: "Press"
|
||||
mission_title: "Our mission: make programming accessible to every student on Earth."
|
||||
mission_description_1: "Programming is magic. It's the ability to create things from pure imagination. We started CodeCombat to give learners the feeling of wizardly power at their fingertips by using typed code."
|
||||
mission_description_2: "As it turns out, that enables them to learn faster too. WAY faster. It's like having a conversation instead of reading a manual. We want to bring that conversation to every school and to every student, because everyone should have the chance to learn the magic of programming."
|
||||
mission_description_1: "<strong>Programming is magic</strong>. It's the ability to create things from pure imagination. We started CodeCombat to give learners the feeling of wizardly power at their fingertips by using <strong>typed code</strong>." # {change}
|
||||
mission_description_2: "As it turns out, that enables them to learn faster too. WAY faster. It's like having a conversation instead of reading a manual. We want to bring that conversation to every school and to <strong>every student</strong>, because everyone should have the chance to learn the magic of programming." # {change}
|
||||
team_title: "Meet the CodeCombat team"
|
||||
team_values: "We value open and respectful dialog, where the best idea wins. Our decisions are grounded in customer research and our process is focused on delivering tangible results for them. Everyone is hands-on, from our CEO to our Github contributors, because we value growth and learning in our team."
|
||||
nick_title: "Cofounder, CEO"
|
||||
|
|
|
@ -4,7 +4,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
no_ie: "A CodeCombat nem támogatja az Internet Explorer 8, vagy korábbi verzióit. Bocsi!" # Warning that only shows up in IE8 and older
|
||||
no_mobile: "A CodeCombat nem mobil eszközökre lett tervezve. Valószínűleg nem működik helyesen." # Warning that shows up on mobile devices
|
||||
play: "Játssz!" # 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: "Játssz a kampányban!" # Shows up under big play button if you only play /courses
|
||||
old_browser: "Hohó, a böngésződ már túl régi ahhoz, hogy a CodeCombat futhasson rajta. Bocsi!" # Warning that shows up on really old Firefox/Chrome/Safari
|
||||
old_browser_suffix: "Megpróbálhatod éppen, da valószínűleg nem fog működni.."
|
||||
ipad_browser: "Rossz hír. CodeCombat nem fut iPadon böngészőben. Jó hír: a hivatalos iPad applikációnk csak az Apple jóváhagyására vár."
|
||||
|
@ -17,7 +17,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
nav:
|
||||
play: "Játék" # The top nav bar entry where players choose which levels to play
|
||||
community: "Közösség"
|
||||
# courses: "Courses"
|
||||
courses: "Kurzusok"
|
||||
editor: "Szerkesztő"
|
||||
blog: "Blog"
|
||||
forum: "Fórum"
|
||||
|
@ -33,11 +33,11 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
contact: "Kapcsolat"
|
||||
twitter_follow: "Követés"
|
||||
teachers: "Tanárok"
|
||||
# careers: "Careers"
|
||||
careers: "Karier"
|
||||
|
||||
modal:
|
||||
close: "Mégse"
|
||||
okay: "OK"
|
||||
okay: "Oké"
|
||||
|
||||
not_found:
|
||||
page_not_found: "Az oldal nem található"
|
||||
|
@ -52,7 +52,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
|
||||
play:
|
||||
play_as: "Játssz mint" # Ladder page
|
||||
# compete: "Compete!" # Course details page
|
||||
compete: "Mérkőzz!" # Course details page
|
||||
spectate: "Néző" # Ladder page
|
||||
players: "Játékosok" # Hover over a level on /play
|
||||
hours_played: "Játékidő" # Hover over a level on /play
|
||||
|
@ -68,14 +68,14 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
achievements: "Eredmények" # Tooltip on achievement list button from /play
|
||||
account: "Fiók" # Tooltip on account button from /play
|
||||
settings: "Beállítások" # Tooltip on settings button from /play
|
||||
# poll: "Poll" # Tooltip on poll button from /play
|
||||
poll: "Kérdőív" # Tooltip on poll button from /play
|
||||
next: "Következő" # Go from choose hero to choose inventory before playing a level
|
||||
change_hero: "Hős váltás" # Go back from choose inventory to choose hero
|
||||
buy_gems: "Vásárolj Drágköveket"
|
||||
subscription_required: "Előfizetést igényel"
|
||||
anonymous: "Anonímusz Játékos"
|
||||
level_difficulty: "Nehézség: "
|
||||
# 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: "Osztálytermi változat" # Choose a level in campaign version that you also can play in one of your courses
|
||||
campaign_beginner: "Kezdő Kampány"
|
||||
awaiting_levels_adventurer_prefix: "Minden héten öt új pályát teszünk elérhetővé." # {change}
|
||||
awaiting_levels_adventurer: "Jelentkezz fel mint Kalandor"
|
||||
|
@ -114,9 +114,9 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
log_in: "Belépés meglévő fiókkal"
|
||||
required: "Csak akkor mehetsz arra, ha már bejelentkeztél."
|
||||
login_switch: "Már van fiókod?"
|
||||
# school_name: "School Name and City"
|
||||
# optional: "optional"
|
||||
# school_name_placeholder: "Example High School, Springfield, IL"
|
||||
school_name: "Iskolád neve és városa"
|
||||
optional: "nem kötelező"
|
||||
school_name_placeholder: "Példa Suli, Abaszentfűzikeresztkút"
|
||||
|
||||
recover:
|
||||
recover_account_title: "Meglévő fiók visszaállítása"
|
||||
|
@ -152,7 +152,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
unwatch: "Követés vége"
|
||||
submit_patch: "Kiegészítés bemutatása"
|
||||
submit_changes: "Változások véglegesítése"
|
||||
# save_changes: "Save Changes"
|
||||
save_changes: "Változások mentése"
|
||||
|
||||
general:
|
||||
and: "és"
|
||||
|
@ -164,9 +164,9 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
accepted: "Elfogadva"
|
||||
rejected: "Elutasítva"
|
||||
withdrawn: "Visszavon"
|
||||
# accept: "Accept"
|
||||
# reject: "Reject"
|
||||
# withdraw: "Withdraw"
|
||||
accept: "Eldogad"
|
||||
reject: "Visszautasít"
|
||||
withdraw: "Vissazvon"
|
||||
submitter: "Beküldő"
|
||||
submitted: "Beküldött"
|
||||
commit_msg: "Üzenet feladása"
|
||||
|
@ -221,12 +221,12 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
years: "évek"
|
||||
|
||||
play_level:
|
||||
# completed_level: "Completed Level:"
|
||||
completed_level: "Teljesített pálya:"
|
||||
# course: "Course:"
|
||||
done: "Kész"
|
||||
# next_level: "Next Level:"
|
||||
# next_game: "Next game"
|
||||
# show_menu: "Show game menu"
|
||||
next_level: "Következő pálya:"
|
||||
next_game: "Következő játék"
|
||||
show_menu: "Játék Menü"
|
||||
home: "Kezdőlap" # Not used any more, will be removed soon.
|
||||
level: "Pálya" # Like "Level: Dungeons of Kithgard"
|
||||
skip: "Ugrás"
|
||||
|
@ -256,14 +256,14 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
victory_saving_progress: "Folyamat mentése"
|
||||
victory_go_home: "Vissza a kezdőoldalra"
|
||||
victory_review: "Mondd el a véleményedet!"
|
||||
# victory_review_placeholder: "How was the level?"
|
||||
victory_review_placeholder: "Milyen volt a pálya?"
|
||||
victory_hour_of_code_done: "Készen vagy?"
|
||||
victory_hour_of_code_done_yes: "Igen, ez volt életem kódja!"
|
||||
victory_experience_gained: "Szerzett tapasztalat"
|
||||
victory_gems_gained: "Szerzett Drágakövek"
|
||||
# victory_new_item: "New Item"
|
||||
victory_new_item: "Új tárgy"
|
||||
# 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_become_a_viking: "Become a Viking"
|
||||
victory_become_a_viking: "Legyél Viking"
|
||||
guide_title: "Útmutató"
|
||||
tome_cast_button_run: "Futtatás"
|
||||
tome_cast_button_running: "Futás..."
|
||||
|
@ -285,11 +285,11 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
time_current: "Most:"
|
||||
time_total: "Maximum:"
|
||||
time_goto: "Menj"
|
||||
# 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)"
|
||||
non_user_code_problem_title: "Nem sikerült betölteni a pályát"
|
||||
infinite_loop_title: "Végtelen ciklust észleltünk"
|
||||
infinite_loop_description: "A kezdeti kód, ami a világot építi fel, nem fejeződött be. Valószínűleg vagy nagyon lassú, vagy végtelen ciklust tartalmaz. Esetleg hibát tartalmaz. Megpróbálkozhatsz a kód újrafuttatásával, vagy állítsd vissza a kódot a kezdő állapotba. Ha ez sem segít, kérlek tudasd velünk!"
|
||||
check_dev_console: "Továbbá megnyithatod a böngésző konzolját is (developer console), hogy lásd mi a hiba."
|
||||
check_dev_console_link: "(útmatató)"
|
||||
infinite_loop_try_again: "Próbáld meg újra!"
|
||||
infinite_loop_reset_level: "Pálya újrakezdés"
|
||||
infinite_loop_comment_out: "Tegye a kódom kommentárba"
|
||||
|
@ -297,7 +297,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
tip_scrub_shortcut: "Ctrl+[ és Ctrl+] visszatekerés és gyors-előre." # {change}
|
||||
tip_guide_exists: "Hasznos információkért kattints az oldal tetején az útmutatóra.."
|
||||
tip_open_source: "A CodeCombat 100%-osan nyitott forráskódú."
|
||||
# tip_tell_friends: "Enjoying CodeCombat? Tell your friends about us!"
|
||||
tip_tell_friends: "Élvezed a CodeCombat-ot? Mesélj rólunk a barátaidnak!"
|
||||
tip_beta_launch: "CodeCombat Béta teszt 2013 Októberétől elérhető."
|
||||
tip_think_solution: "A megoldásra gondolj, ne a problémára!"
|
||||
tip_theory_practice: "Elméletben nincs különbség elmélet és gyakorlat között. A gyakorlatban viszont van. - Yogi Berra"
|
||||
|
@ -326,7 +326,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
tip_extrapolation: "Csak két fajta ember létezik. Az egyik, aki extrapolál hiányos adatokból..."
|
||||
tip_superpower: "A programozás képessége van legközelebb a szuperképességekhez."
|
||||
tip_control_destiny: "A valódi nyílt forráskódban, jogodban áll irányítani a sorsod. - Linus Torvalds"
|
||||
# tip_no_code: "No code is faster than no code."
|
||||
tip_no_code: "Semmilyen kód nem gyorsabb a semmi-kódnál."
|
||||
tip_code_never_lies: "A kód sosem hazudik, a kommentek néha. — Ron Jeffries"
|
||||
tip_reusable_software: "Mielőtt a szoftware újrafelhasználható lesz, előbb használhatónak kell lennie."
|
||||
tip_optimization_operator: "Minden nyelvben van egy optimalizáló operátor. A legtöbb nyelvben ez a ‘//’"
|
||||
|
@ -337,12 +337,12 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
# tip_google: "Have a problem you can't solve? Google it!"
|
||||
# tip_adding_evil: "Adding a pinch of evil."
|
||||
# tip_hate_computers: "That's the thing about people who think they hate computers. What they really hate is lousy programmers. - Larry Niven"
|
||||
# tip_open_source_contribute: "You can help CodeCombat improve!"
|
||||
tip_open_source_contribute: "Segíthetsz a CodeCombat fejlesztésében!"
|
||||
# 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_strong_opponents: "A legerősebb ellenfélnek is van gyengéje. - Itachi Uchiha"
|
||||
tip_paper_and_pen: "Mielőtt nekiállsz kódolni, mindig segítségül hívhatsz a tervezéshez papírt és ceruzát."
|
||||
tip_solve_then_write: "Először, old meg a problémát, aztán állj neki kódolni! - John Johnson"
|
||||
|
||||
game_menu:
|
||||
inventory_tab: "Raktár"
|
||||
|
@ -407,10 +407,10 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
feature4: "<strong>{{gems}} bónusz drágakő</strong> minden hónapban!"
|
||||
feature5: "Videó oktatóanyagok"
|
||||
feature6: "Prémium email támogatás"
|
||||
# feature7: "Private <strong>Clans</strong>"
|
||||
feature7: "Privát <strong>Klánok</strong>"
|
||||
free: "Ingyenes"
|
||||
month: "hónap"
|
||||
# must_be_logged: "You must be logged in first. Please create an account or log in from the menu above."
|
||||
must_be_logged: "Ehhez be kell jelentkezned. Kérlek regisztrálj, vagy lépj be a fenti menüben!"
|
||||
subscribe_title: "Feliratkozás"
|
||||
unsubscribe: "Leiratkozás"
|
||||
confirm_unsubscribe: "Leiratkozás megerősítése"
|
||||
|
@ -499,8 +499,8 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
skill_docs:
|
||||
writable: "írható" # Hover over "attack" in Your Skills while playing a level to see most of this
|
||||
read_only: "csak olvasható"
|
||||
# action: "Action"
|
||||
# spell: "Spell"
|
||||
action: "Akció"
|
||||
spell: "Varázsige"
|
||||
action_name: "név"
|
||||
action_cooldown: "Újratöltés"
|
||||
action_specific_cooldown: "Speciális újratöltés"
|
||||
|
@ -528,7 +528,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
editor_config_title: "Szerkesztő Beállítások"
|
||||
editor_config_keybindings_label: "Gyors-billentyűk"
|
||||
# editor_config_keybindings_default: "Default (Ace)"
|
||||
# editor_config_keybindings_description: "Adds additional shortcuts known from the common editors."
|
||||
editor_config_keybindings_description: "Ismert szerkesztők billyentyű kombinációit használhatod."
|
||||
editor_config_livecompletion_label: "Automatikus kód-kitöltés"
|
||||
editor_config_livecompletion_description: "Gépelés közben automatikus kód-kitöltés javaslatok megmutatása."
|
||||
editor_config_invisibles_label: "Láthatatlan karakterek"
|
||||
|
@ -625,7 +625,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
cla_url: "CLA"
|
||||
cla_suffix: "tartalmát."
|
||||
cla_agree: "ELFOGADOM"
|
||||
# owner_approve: "An owner will need to approve it before your changes will become visible."
|
||||
owner_approve: "Minden tulajdonosnak jóvá kell hagynia, mielőtt a változtatásaid láthatóvá válnak."
|
||||
|
||||
contact:
|
||||
contact_us: "Lépj kapcsolatba velünk"
|
||||
|
@ -633,7 +633,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
forum_prefix: "Ha publikus dologról van szó, megpróbálhatod a "
|
||||
forum_page: "fórumban"
|
||||
forum_suffix: " is."
|
||||
# faq_prefix: "There's also a"
|
||||
faq_prefix: "Továbbá van egy"
|
||||
faq: "GYIK"
|
||||
subscribe_prefix: "Ha segítségre van szükséged egy pályán, "
|
||||
subscribe: "vásárolj CodeCombat előfizetést"
|
||||
|
@ -651,21 +651,21 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
picture_tab: "Kép"
|
||||
delete_account_tab: "Fiók törlése"
|
||||
wrong_email: "Rossz email-cím"
|
||||
# wrong_password: "Wrong Password"
|
||||
wrong_password: "Hibás jelszó"
|
||||
upload_picture: "Tölts föl egy képet"
|
||||
delete_this_account: "Fiók végleges törlése"
|
||||
# reset_progress_tab: "Reset All Progress"
|
||||
# reset_your_progress: "Clear all your progress and start over"
|
||||
reset_progress_tab: "Eredmények törlése"
|
||||
reset_your_progress: "Törli az össze eredményed. Tiszta lappal kezdhetsz újra."
|
||||
# god_mode: "God Mode"
|
||||
password_tab: "Jelszó"
|
||||
emails_tab: "Levelek"
|
||||
admin: "Adminisztrátor"
|
||||
# manage_subscription: "Click here to manage your subscription."
|
||||
manage_subscription: "Kattints ide az előfizetések kezeléséhez."
|
||||
new_password: "Új jelszó"
|
||||
new_password_verify: "Új jelszó megismétlése"
|
||||
type_in_email: "Írd be az email-címed a törlés megerősítéséhez"
|
||||
# type_in_email_progress: "Type in your email to confirm deleting your progress."
|
||||
# type_in_password: "Also, type in your password."
|
||||
type_in_email_progress: "Add meg az email címedet az eredmények törléséhez!"
|
||||
type_in_password: "Továbbá add meg a jelszavad is!"
|
||||
email_subscriptions: "Hírlevél feliratkozások"
|
||||
email_subscriptions_none: "Nem kérek email értesítéseket."
|
||||
email_announcements: "Bejelentések"
|
||||
|
@ -691,7 +691,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
keyboard_shortcuts: "Billentyűparancsok"
|
||||
space: "Szünet"
|
||||
enter: "Enter"
|
||||
# press_enter: "press enter"
|
||||
press_enter: "Nyomj Entert"
|
||||
escape: "Kilépés"
|
||||
# shift: "Shift"
|
||||
run_code: "Aktuális kód futtatása."
|
||||
|
@ -705,7 +705,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
# toggle_debug: "Toggle debug display."
|
||||
# toggle_grid: "Toggle grid overlay."
|
||||
# toggle_pathfinding: "Toggle pathfinding overlay."
|
||||
# beautify: "Beautify your code by standardizing its formatting."
|
||||
beautify: "A kód kicsinosítása és szabványos formátumra hozása."
|
||||
maximize_editor: "Maximális/Minimális kód szerkesztő."
|
||||
|
||||
community:
|
||||
|
@ -1047,8 +1047,8 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
# indoor: "Indoor"
|
||||
desert: "Sivatag"
|
||||
grassy: "Füves"
|
||||
# mountain: "Mountain"
|
||||
# glacier: "Glacier"
|
||||
mountain: "Hegyes"
|
||||
glacier: "Gleccser"
|
||||
small: "Kicsi"
|
||||
large: "Nagy"
|
||||
fork_title: "Új Verzió villára vétele"
|
||||
|
@ -1228,7 +1228,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
choose_opponent: "Válassz ellenfelet!"
|
||||
select_your_language: "Válassz nyelvet!"
|
||||
tutorial_play: "Gyakorlójáték"
|
||||
# tutorial_recommended: "Recommended if you've never played before"
|
||||
tutorial_recommended: "Javasolt, ha még sohasem játszottál."
|
||||
tutorial_skip: "Gyakorlójáték átugrása"
|
||||
tutorial_not_sure: "Nem érted mi folyik?"
|
||||
tutorial_play_first: "Játssz egy gyakorlójátékot először!"
|
||||
|
@ -1269,12 +1269,12 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
status: "Státusz"
|
||||
status_completed: "Befejezett"
|
||||
status_unfinished: "Folyamatban lévő"
|
||||
# no_singleplayer: "No Singleplayer games played yet."
|
||||
# no_multiplayer: "No Multiplayer games played yet."
|
||||
no_singleplayer: "Még nem játszott egyjátékos játékot."
|
||||
no_multiplayer: "Még nem játszott többjátékos játékot."
|
||||
# no_achievements: "No Achievements earned yet."
|
||||
favorite_prefix: "A kedvenc nyelv "
|
||||
favorite_postfix: "."
|
||||
# not_member_of_clans: "Not a member of any clans yet."
|
||||
not_member_of_clans: "Még egy Klánnak sem tagja."
|
||||
|
||||
achievements:
|
||||
last_earned: "Utolsónak megszerzett"
|
||||
|
@ -1342,18 +1342,18 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
# you_can2: "purchase a prepaid code"
|
||||
# you_can3: "that can be applied to your own account or given to others."
|
||||
|
||||
# loading_error:
|
||||
loading_error:
|
||||
# could_not_load: "Error loading from server"
|
||||
# connection_failure: "Connection failed."
|
||||
connection_failure: "Kapcsolat megszakadt."
|
||||
# unauthorized: "You need to be signed in. Do you have cookies disabled?"
|
||||
# forbidden: "You do not have the permissions."
|
||||
# not_found: "Not found."
|
||||
not_found: "Nem található."
|
||||
# not_allowed: "Method not allowed."
|
||||
# timeout: "Server timeout."
|
||||
# conflict: "Resource conflict."
|
||||
# bad_input: "Bad input."
|
||||
# server_error: "Server error."
|
||||
# unknown: "Unknown error."
|
||||
bad_input: "Hibás bemenet."
|
||||
server_error: "Szerver hiba."
|
||||
unknown: "Ismeretlen hiba."
|
||||
# error: "ERROR"
|
||||
|
||||
# resources:
|
||||
|
@ -1417,45 +1417,45 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
|
|||
# members: "Members"
|
||||
# users: "Users"
|
||||
|
||||
# concepts:
|
||||
concepts:
|
||||
# advanced_strings: "Advanced Strings"
|
||||
# algorithms: "Algorithms"
|
||||
# arguments: "Arguments"
|
||||
algorithms: "Algoritmusok"
|
||||
arguments: "Argumentumok"
|
||||
# arithmetic: "Arithmetic"
|
||||
# arrays: "Arrays"
|
||||
# basic_syntax: "Basic Syntax"
|
||||
arrays: "Tömbök"
|
||||
basic_syntax: "Alap Szintaxis"
|
||||
# boolean_logic: "Boolean Logic"
|
||||
# break_statements: "Break Statements"
|
||||
# classes: "Classes"
|
||||
# continue_statements: "Continue Statements"
|
||||
# for_loops: "For Loops"
|
||||
# functions: "Functions"
|
||||
# graphics: "Graphics"
|
||||
# if_statements: "If Statements"
|
||||
functions: "Függvények"
|
||||
graphics: "Grafika"
|
||||
if_statements: "Feltételes elágazás"
|
||||
# input_handling: "Input Handling"
|
||||
# math_operations: "Math Operations"
|
||||
math_operations: "Matematikai műveletek"
|
||||
# object_literals: "Object Literals"
|
||||
# parameters: "Parameters"
|
||||
# strings: "Strings"
|
||||
# variables: "Variables"
|
||||
parameters: "Paraméterek"
|
||||
strings: "Szövegek"
|
||||
variables: "Változók"
|
||||
# vectors: "Vectors"
|
||||
# while_loops: "Loops"
|
||||
# recursion: "Recursion"
|
||||
recursion: "Rekurzió"
|
||||
|
||||
# delta:
|
||||
# added: "Added"
|
||||
# modified: "Modified"
|
||||
# not_modified: "Not Modified"
|
||||
# deleted: "Deleted"
|
||||
delta:
|
||||
added: "Hozzáadott"
|
||||
modified: "Módosított"
|
||||
not_modified: "Nem Módosított"
|
||||
deleted: "Törölt"
|
||||
# moved_index: "Moved Index"
|
||||
# text_diff: "Text Diff"
|
||||
text_diff: "Szöveg Különbség"
|
||||
# merge_conflict_with: "MERGE CONFLICT WITH"
|
||||
# no_changes: "No Changes"
|
||||
no_changes: "Nincs Változás"
|
||||
|
||||
multiplayer:
|
||||
multiplayer_title: "Többjátékos beállítások" # We'll be changing this around significantly soon. Until then, it's not important to translate.
|
||||
# multiplayer_toggle: "Enable multiplayer"
|
||||
# multiplayer_toggle_description: "Allow others to join your game."
|
||||
multiplayer_toggle: "Többjátékos mód engedélyezése"
|
||||
multiplayer_toggle_description: "Megengeded másoknak, hogy a játékodhoz csatlakozzanak."
|
||||
multiplayer_link_description: "Add oda ezt a linket bárkinek, és csatlakozhatnak hozzád."
|
||||
multiplayer_hint_label: "Tipp:"
|
||||
multiplayer_hint: " Kattints a linkre, és Ctrl+C-vel (vagy ⌘+C-vel) másold a vágólapra!"
|
||||
|
|
|
@ -4,7 +4,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
|
|||
no_ie: "CodeCombat non supporta Internet Explorer 8 o browser precedenti. Ci dispiace!" # Warning that only shows up in IE8 and older
|
||||
no_mobile: "CodeCombat non è stato progettato per dispositivi mobili e potrebbe non funzionare!" # Warning that shows up on mobile devices
|
||||
play: "Gioca" # 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: "Gioca la versione Campagna" # Shows up under big play button if you only play /courses
|
||||
old_browser: "Accidenti, il tuo browser è troppo vecchio per giocare a CodeCombat. Ci spiace!" # Warning that shows up on really old Firefox/Chrome/Safari
|
||||
old_browser_suffix: "Puoi provare lo stesso, ma probabilmente non funzionerà."
|
||||
ipad_browser: "Cattiva notizia: CodeCombat non funziona nel browser di iPad. Buona notizia: la nostra app nativa per iPad è in attesa di approvazione da Apple."
|
||||
|
@ -114,7 +114,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
|
|||
log_in: "Accedi con la password"
|
||||
required: "Effettua l'accesso per proseguire."
|
||||
login_switch: "Hai già un account?"
|
||||
# school_name: "School Name and City"
|
||||
school_name: "Nome scuola e città"
|
||||
# optional: "optional"
|
||||
# school_name_placeholder: "Example High School, Springfield, IL"
|
||||
|
||||
|
@ -736,7 +736,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
|
|||
subs_only: "solo per abbonati"
|
||||
create_clan: "Crea nuovo clan"
|
||||
private_preview: "Anteprima"
|
||||
# private_clans: "Private Clans"
|
||||
private_clans: "Clan privati"
|
||||
public_clans: "Clan pubblici"
|
||||
my_clans: "I miei clan"
|
||||
clan_name: "Nome clan"
|
||||
|
@ -790,7 +790,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
|
|||
courses:
|
||||
course: "Corso"
|
||||
courses: "corsi"
|
||||
# create_new_class: "Create New Class"
|
||||
create_new_class: "Crea una nuova classe"
|
||||
not_enrolled: "Non fai parte di questo corso."
|
||||
visit_pref: "Per favore, visita la pagina"
|
||||
visit_suf: "per iscriverti."
|
||||
|
@ -879,8 +879,8 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
|
|||
# keep_using: "Keep Using"
|
||||
# switch_to: "Switch To"
|
||||
# greetings: "Greetings!"
|
||||
# learn_p: "Learn Python"
|
||||
# learn_j: "Learn JavaScript"
|
||||
learn_p: "Apprendi Python"
|
||||
learn_j: "Apprendi 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"
|
||||
|
@ -890,29 +890,27 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
|
|||
# remove_student: "remove student"
|
||||
# assign: "Assign"
|
||||
# to_assign: "to assign paid courses."
|
||||
# teacher: "Teacher"
|
||||
# complete: "Complete"
|
||||
# none: "None"
|
||||
# save: "Save"
|
||||
# play_campaign_title: "Play the Campaign"
|
||||
# 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"
|
||||
teacher: "Maestro"
|
||||
complete: "Completo"
|
||||
play_campaign_title: "Gioca la Campagna"
|
||||
play_campaign_description: "Sei pronto per il passo successivo! Esplora centinaia di livelli impegnativi, impara abilità di programmazione avanzate, e competi nelle arene multigiocatore!"
|
||||
create_account_title: "Crea un account"
|
||||
# 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_soon_title: "L'arena è in arrivo"
|
||||
# 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"
|
||||
next_course: "Prossimo corso"
|
||||
coming_soon1: "Prossimamente"
|
||||
# coming_soon2: "We are hard at work making more courses for you!"
|
||||
# available_levels: "Available Levels"
|
||||
available_levels: "Livelli disponibili"
|
||||
# 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"
|
||||
ready_to_play: "Pronto a giocare?"
|
||||
start_new_game: "Avvia un nuovo gioco"
|
||||
play_now_learn_header: "Gioca ora per imparare"
|
||||
# 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"
|
||||
|
@ -925,7 +923,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
|
|||
# ready_for_more_3: "Learn even more programming!"
|
||||
# saved_games: "Saved Games"
|
||||
# hoc: "Hour of Code"
|
||||
# my_classes: "My Classes"
|
||||
my_classes: "Le mie Classi"
|
||||
# class_added: "Class successfully added!"
|
||||
# view_class: "view class"
|
||||
# view_levels: "view levels"
|
||||
|
@ -934,15 +932,15 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
|
|||
# enter_c_code: "<Enter Class Code>"
|
||||
# join: "Join"
|
||||
# joining: "Joining class"
|
||||
# course_complete: "Course Complete"
|
||||
course_complete: "Corso completato"
|
||||
# play_arena: "Play Arena"
|
||||
# start: "Start"
|
||||
# last_level: "Last Level"
|
||||
start: "Avvia"
|
||||
last_level: "Ultimo Livello"
|
||||
# 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"
|
||||
welcome_back: "Salve avventuriero, bentornato!"
|
||||
continue_playing: "Continua a giocare"
|
||||
# more_options: "More options:"
|
||||
# option1_header: "Option 1: Invite students via 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."
|
||||
|
|
|
@ -4,7 +4,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
|
|||
no_ie: "大変申し訳ありませんが、ご利用のブラウザ(IE8以下)はサポートされていません。(ChromeやFirefoxをご利用ください)" # Warning that only shows up in IE8 and older
|
||||
no_mobile: "CodeCombat は携帯端末向けに制作されていないため、動作しない可能性があります。" # Warning that shows up on mobile devices
|
||||
play: "ゲーム<br>スタート" # 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 の承認待ちとなっています。"
|
||||
|
@ -33,7 +33,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
|
|||
contact: "お問い合わせ"
|
||||
twitter_follow: "フォロー"
|
||||
teachers: "教育関係者"
|
||||
# careers: "Careers"
|
||||
careers: "経歴"
|
||||
|
||||
modal:
|
||||
close: "閉じる"
|
||||
|
@ -1091,17 +1091,17 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
|
|||
level_component_config_schema: "スキーマの設定"
|
||||
level_component_settings: "設定"
|
||||
level_system_edit_title: "システムの編集"
|
||||
# create_system_title: "Create New System"
|
||||
# new_component_title: "Create New Component"
|
||||
# new_component_field_system: "System"
|
||||
# new_article_title: "Create a New Article"
|
||||
# new_thang_title: "Create a New Thang Type"
|
||||
# new_level_title: "Create a New Level"
|
||||
# new_article_title_login: "Log In to Create a New Article"
|
||||
# new_thang_title_login: "Log In to Create a New Thang Type"
|
||||
# new_level_title_login: "Log In to Create a New Level"
|
||||
# new_achievement_title: "Create a New Achievement"
|
||||
# new_achievement_title_login: "Log In to Create a New Achievement"
|
||||
create_system_title: "新しいシステムの作成"
|
||||
new_component_title: "新しい部品の作成"
|
||||
new_component_field_system: "システム"
|
||||
new_article_title: "新しい記事の作成"
|
||||
new_thang_title: "新しいサングの型の作成"
|
||||
new_level_title: "新しいレベルの作成"
|
||||
new_article_title_login: "ログインして新しい記事の作成"
|
||||
new_thang_title_login: "ログインして新しいサングの型の作成"
|
||||
new_level_title_login: "ログインして新しいレベルの作成"
|
||||
new_achievement_title: "新しい実績の作成"
|
||||
new_achievement_title_login: "ログインして新しい実績の作成"
|
||||
# new_poll_title: "Create a New Poll"
|
||||
# new_poll_title_login: "Log In to Create a New Poll"
|
||||
# article_search_title: "Search Articles Here"
|
||||
|
@ -1454,8 +1454,8 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
|
|||
|
||||
multiplayer:
|
||||
multiplayer_title: "マルチプレイ設定" # We'll be changing this around significantly soon. Until then, it's not important to translate.
|
||||
# multiplayer_toggle: "Enable multiplayer"
|
||||
# multiplayer_toggle_description: "Allow others to join your game."
|
||||
multiplayer_toggle: "マルチプレーヤーを有効化"
|
||||
multiplayer_toggle_description: "他のユーザーがゲームに参加することを許可"
|
||||
multiplayer_link_description: "このURLを一緒にプレイしたい人に教えてください。"
|
||||
multiplayer_hint_label: "ヒント:"
|
||||
multiplayer_hint: " リンクを選択後、 ⌘-C(MacOS) or Ctrl-C(Windows) でリンクをコピーできます。"
|
||||
|
|
|
@ -135,11 +135,12 @@ module.exports = class User extends CocoModel
|
|||
@announcesActionAudioGroup
|
||||
|
||||
getHomepageGroup: ->
|
||||
return 'home-with-note' unless _.string.startsWith(me.get('preferredLanguage', true) or 'en-US', 'en')
|
||||
# Only testing on en-US so localization issues are not a factor
|
||||
return 'new-home-student' unless _.string.startsWith(me.get('preferredLanguage', true) or 'en-US', 'en')
|
||||
return @homepageGroup if @homepageGroup
|
||||
group = me.get('testGroupNumber') % 4
|
||||
@homepageGroup = switch group
|
||||
when 0, 1 then 'home-with-note'
|
||||
when 0, 1 then 'new-home-characters'
|
||||
when 2, 3 then 'new-home-student'
|
||||
application.tracker.identify newHomepageGroup: @homepageGroup unless me.isAdmin()
|
||||
return @homepageGroup
|
||||
|
|
|
@ -43,8 +43,8 @@ block content
|
|||
#mission-graphic-filler
|
||||
.col-sm-5.col-sm-offset-1
|
||||
#mission-text.responsive-side-margins
|
||||
p(data-i18n="about.mission_description_1")
|
||||
p(data-i18n="about.mission_description_2")
|
||||
p(data-i18n="[html]about.mission_description_1")
|
||||
p(data-i18n="[html]about.mission_description_2")
|
||||
|
||||
#team.anchor
|
||||
.text-center
|
||||
|
@ -68,7 +68,7 @@ block content
|
|||
h6.label.team-name
|
||||
a(href="http://www.mattlott.com/" rel="external") Matt Lott
|
||||
small(data-i18n="about.matt_title")
|
||||
small(data-i18n="about.matt_blurb")
|
||||
br
|
||||
|
||||
li
|
||||
a(href="http://cat.zdh.com/" rel="external")
|
||||
|
@ -220,7 +220,7 @@ block content
|
|||
#story-languages
|
||||
.text-center
|
||||
.text-h5(data-i18n="about.story_statistic_3c")
|
||||
#language-icons.text-center
|
||||
#language-icons.text-center(title="Clojure, CoffeeScript, JavaScript, Python, Java, Lua")
|
||||
img.hidden-xs(src="/images/pages/about/languages.png")
|
||||
img.hidden-sm.hidden-md.hidden-lg(src="/images/pages/about/languages_group1.png")
|
||||
img.hidden-sm.hidden-md.hidden-lg(src="/images/pages/about/languages_group2.png")
|
||||
|
@ -246,20 +246,10 @@ block content
|
|||
ul
|
||||
li.small(data-i18n="about.jobs_benefit_1")
|
||||
li.small(data-i18n="about.jobs_benefit_2")
|
||||
li.small(data-i18n="about.jobs_benefit_3")
|
||||
li.small(data-i18n="about.jobs_benefit_4")
|
||||
li.small(data-i18n="about.jobs_benefit_5")
|
||||
li.small(data-i18n="about.jobs_benefit_6")
|
||||
.col-sm-6.col-md-5.col-lg-4
|
||||
.job-listing
|
||||
h5 Software Engineer, iOS
|
||||
.text-center
|
||||
small.label
|
||||
| San Francisco • Fulltime
|
||||
p.small Want to write the first iPad app for CodeCombat? We’re looking for a product-focused engineer to translate our core gameplay and educational tools into an experience that feels like it was born on the iPad.
|
||||
a.job-link.btn.btn-lg.btn-navy(href="https://jobs.lever.co/codecombat/eb190007-7195-49ee-a322-893b0d1cdcb4" rel="external")
|
||||
span(data-i18n="about.learn_more")
|
||||
.col-sm-6.col-md-5.col-md-offset-1.col-lg-4.col-lg-offset-0
|
||||
.job-listing
|
||||
h5 Head of Sales
|
||||
.text-center
|
||||
|
@ -268,7 +258,7 @@ block content
|
|||
p.small School districts are scrambling to offer computer science classes to all their students as a core subject. They have had no solution, because they can't afford to hire enough programming teachers – until now.
|
||||
a.job-link.btn.btn-lg.btn-navy(href="https://jobs.lever.co/codecombat/2d0194ed-7c69-4aab-b1f9-363ca4b9f04b" rel="external")
|
||||
span(data-i18n="about.learn_more")
|
||||
.col-sm-6.col-md-5.col-lg-4
|
||||
.col-sm-6.col-md-5.col-md-offset-1.col-lg-4.col-lg-offset-0
|
||||
.job-listing
|
||||
h5 Sales Representative
|
||||
.text-center
|
||||
|
@ -277,7 +267,7 @@ block content
|
|||
p.small School districts are scrambling to offer computer science classes to all their students as a core subject. They have had no solution, because they can't afford to hire enough programming teachers – until now.
|
||||
a.job-link.btn.btn-lg.btn-navy(href="https://jobs.lever.co/codecombat/3f6ff123-16ce-4ecb-aba3-dcf4e8927c47" rel="external")
|
||||
span(data-i18n="about.learn_more")
|
||||
.col-sm-6.col-md-5.col-md-offset-1.col-lg-4.col-lg-offset-0
|
||||
.col-sm-6.col-md-5.col-lg-4
|
||||
.job-listing
|
||||
h5(data-i18n="about.jobs_custom_title")
|
||||
p.small(data-i18n="about.jobs_custom_description")
|
||||
|
|
|
@ -67,7 +67,7 @@ block content
|
|||
h3 Active Classes 365 days
|
||||
.active-classes-chart-365.line-chart-container
|
||||
|
||||
h1#active-classes-table Active Classes
|
||||
h1 Active Classes
|
||||
table.table.table-striped.table-condensed
|
||||
tr
|
||||
th Day
|
||||
|
@ -93,7 +93,35 @@ block content
|
|||
h3 Monthly Recurring Revenue 365 days
|
||||
.recurring-monthly-revenue-chart-365.line-chart-container
|
||||
|
||||
h1#recurring-revenue-table Recurring Revenue
|
||||
.school-sales
|
||||
h3 School Sales
|
||||
if view.schoolSales
|
||||
table.table.table-striped.table-condensed
|
||||
tr
|
||||
th Amount
|
||||
th(style='min-width:85px;') Created
|
||||
th PaymentID
|
||||
th PrepaidID
|
||||
th Description
|
||||
th Email
|
||||
th School
|
||||
each val, i in view.schoolSales
|
||||
tr
|
||||
td $#{val.amount / 100}
|
||||
td= new Date(val.created).toISOString().substring(0, 10)
|
||||
td= val._id
|
||||
td= val.prepaidID
|
||||
td= val.description
|
||||
if val.user
|
||||
td= val.user.emailLower
|
||||
td= val.user.schoolName
|
||||
else
|
||||
td
|
||||
td
|
||||
else
|
||||
div Loading ...
|
||||
|
||||
h1 Recurring Revenue
|
||||
table.table.table-striped.table-condensed
|
||||
tr
|
||||
th(style='min-width:85px;') Day
|
||||
|
@ -106,22 +134,22 @@ block content
|
|||
td $#{(val / 100).toFixed(2)}
|
||||
|
||||
.tab-pane#tab_classroom
|
||||
h3#classroom-daus-graph Classroom Daily Active Users 90 days
|
||||
h3 Classroom Daily Active Users 90 days
|
||||
.small Paid student: user.coursePrepaidID set and prepaid.properties.trialRequestID NOT set
|
||||
.small Trial student: user.coursePrepaidID set and prepaid.properties.trialRequestID set
|
||||
.small Free student: not paid, not trial
|
||||
.classroom-daily-active-users-chart-90.line-chart-container
|
||||
|
||||
h3#classroom-maus-graph Classroom Monthly Active Users 90 days
|
||||
h3 Classroom Monthly Active Users 90 days
|
||||
.classroom-monthly-active-users-chart-90.line-chart-container
|
||||
|
||||
h3#classroom-daus-graph Classroom Daily Active Users 365 days
|
||||
h3 Classroom Daily Active Users 365 days
|
||||
.classroom-daily-active-users-chart-365.line-chart-container
|
||||
|
||||
h3#classroom-maus-graph Classroom Monthly Active Users 365 days
|
||||
h3 Classroom Monthly Active Users 365 days
|
||||
.classroom-monthly-active-users-chart-365.line-chart-container
|
||||
|
||||
h3#enrollments-graph Enrollments Issued and Redeemed 90 days
|
||||
h3 Enrollments Issued and Redeemed 90 days
|
||||
.paid-courses-chart.line-chart-container
|
||||
|
||||
#furthest-course
|
||||
|
@ -191,7 +219,7 @@ block content
|
|||
else
|
||||
div Loading ...
|
||||
|
||||
#school-sales
|
||||
.school-sales
|
||||
h3 School Sales
|
||||
if view.schoolSales
|
||||
table.table.table-striped.table-condensed
|
||||
|
@ -205,7 +233,7 @@ block content
|
|||
th School
|
||||
each val, i in view.schoolSales
|
||||
tr
|
||||
td $#{Math.round(val.amount / 100, 2)}
|
||||
td $#{val.amount / 100}
|
||||
td= new Date(val.created).toISOString().substring(0, 10)
|
||||
td= val._id
|
||||
td= val.prepaidID
|
||||
|
@ -236,7 +264,7 @@ block content
|
|||
else
|
||||
div Loading ...
|
||||
|
||||
h1#active-users-table Active Users
|
||||
h1 Active Users
|
||||
if activeUsers.length > 0
|
||||
- var eventNames = [];
|
||||
each count, event in activeUsers[0].events
|
||||
|
@ -296,7 +324,7 @@ block content
|
|||
h3 Campaign Monthly Active Users 365 days
|
||||
.campaign-monthly-active-users-chart-365.line-chart-container
|
||||
|
||||
h1#active-users-table Active Users
|
||||
h1 Active Users
|
||||
if activeUsers.length > 0
|
||||
- var eventNames = [];
|
||||
each count, event in activeUsers[0].events
|
||||
|
@ -321,13 +349,13 @@ block content
|
|||
|
||||
|
||||
.tab-pane#tab_campaign_vs_classroom
|
||||
h3#campaign-vs-classroom-paid-maus-recent-graph Campaign vs Classroom Paid Monthly Active Users 90 days
|
||||
h3 Campaign vs Classroom Paid Monthly Active Users 90 days
|
||||
.campaign-vs-classroom-monthly-active-users-recent-chart.line-chart-container
|
||||
|
||||
h3#campaign-vs-classroom-paid-maus-graph Campaign vs Classroom Paid Monthly Active Users 365 days
|
||||
h3 Campaign vs Classroom Paid Monthly Active Users 365 days
|
||||
.campaign-vs-classroom-monthly-active-users-chart.line-chart-container
|
||||
|
||||
h1#active-users-table Active Users
|
||||
h1 Active Users
|
||||
if activeUsers.length > 0
|
||||
- var eventNames = [];
|
||||
each count, event in activeUsers[0].events
|
||||
|
|
|
@ -5,174 +5,177 @@ block content
|
|||
.container
|
||||
.row
|
||||
.col-lg-7.col-md-8
|
||||
h1 The most engaging game for learning programming.
|
||||
|
||||
h1(data-i18n="new_home.slogan")
|
||||
|
||||
.col-lg-3.col-lg-offset-2.col-md-4
|
||||
.well.text-center.hidden-md.hidden-lg
|
||||
.row
|
||||
.col-xs-8
|
||||
h6 Classroom Edition:
|
||||
.col-xs-8
|
||||
h6(data-i18n="new_home.classroom_edition")
|
||||
.col-xs-4
|
||||
h6 Learn to code:
|
||||
h6(data-i18n="new_home.learn_to_code")
|
||||
.row
|
||||
.col-xs-4
|
||||
button#teacher-btn.btn.btn-primary.btn-lg.btn-block Teacher
|
||||
button#teacher-btn.btn.btn-primary.btn-lg.btn-block(data-i18n="new_home.teacher")
|
||||
.col-xs-4
|
||||
a.btn.btn-forest.btn-lg.btn-block(href="/courses") Student
|
||||
a.btn.btn-forest.btn-lg.btn-block(href="/courses", data-i18n="new_home.student")
|
||||
.col-xs-4
|
||||
a.btn.btn-gold.btn-lg.btn-block(href=view.playURL) Play Now
|
||||
|
||||
a.btn.btn-gold.btn-lg.btn-block(href=view.playURL, data-i18n="new_home.play_now")
|
||||
|
||||
.well.text-center.hidden-xs.hidden-sm
|
||||
h6#classroom-edition-header Classroom Edition:
|
||||
h6#classroom-edition-header(data-i18n="new_home.classroom_edition")
|
||||
div
|
||||
button#teacher-btn.btn.btn-primary.btn-lg.btn-block I'm a Teacher
|
||||
button#teacher-btn.btn.btn-primary.btn-lg.btn-block(data-i18n="new_home.im_a_teacher")
|
||||
div
|
||||
a.btn.btn-forest.btn-lg.btn-block(href="/courses") I'm a Student
|
||||
|
||||
h6#learn-to-code-header Learn to code:
|
||||
a.btn.btn-gold.btn-lg.btn-block(href=view.playURL) Play Now
|
||||
a.btn.btn-forest.btn-lg.btn-block(href="/courses", data-i18n="new_home.im_a_student")
|
||||
|
||||
h6#learn-to-code-header(data-i18n="new_home.learn_to_code")
|
||||
a.btn.btn-gold.btn-lg.btn-block(href=view.playURL, data-i18n="new_home.play_now")
|
||||
.row#learn-more-row
|
||||
.col-xs-12.text-center
|
||||
a#learn-more-link
|
||||
h6 Learn more
|
||||
h6(data-i18n="new_home.learn_more")
|
||||
h2
|
||||
span.glyphicon.glyphicon-chevron-down
|
||||
|
||||
|
||||
|
||||
|
||||
.container#classroom-in-box-container
|
||||
#classroom-in-box-row.row
|
||||
.col-sm-6
|
||||
h2.text-navy A classroom in-a-box for teaching computer science.
|
||||
h2.text-navy(data-i18n="new_home.classroom_in_a_box")
|
||||
.col-sm-6
|
||||
p CodeCombat is a platform for students to learn computer science while playing through a real game.
|
||||
p Our courses have been specifically playtested to excel in a classroom setting, even by teachers with little to no prior programming experience.
|
||||
|
||||
p(data-i18n="new_home.codecombat_is")
|
||||
p(data-i18n="new_home.our_courses")
|
||||
|
||||
#feature-spread-row.row.text-center
|
||||
h3 Designed with teachers in mind
|
||||
h3(data-i18n="new_home.designed_with")
|
||||
.col-sm-4
|
||||
img.img-circle(src="/images/pages/home/F1_typedcode.png")
|
||||
h4
|
||||
| Real, typed code
|
||||
span(data-i18n="new_home.real_code")
|
||||
br
|
||||
| from the first level
|
||||
p.small Getting students to typed code as quickly as possible is critical to learning programming syntax and proper structure.
|
||||
|
||||
span(data-i18n="new_home.from_the_first_level")
|
||||
p.small(data-i18n="new_home.getting_students")
|
||||
|
||||
.col-sm-4
|
||||
img.img-circle(src="/images/pages/home/F2_teacherguides.png")
|
||||
h4
|
||||
| Educator resources
|
||||
h4
|
||||
span(data-i18n="new_home.educator_resources")
|
||||
br
|
||||
| and course guides
|
||||
p.small Teaching computer science does not require a costly degree, because we provide tools to support educators of all backgrounds.
|
||||
|
||||
span(data-i18n="new_home.course_guides")
|
||||
p.small(data-i18n="new_home.teaching_computer_science")
|
||||
|
||||
.col-sm-4
|
||||
img.img-circle(src="/images/pages/home/F3_accessible.png")
|
||||
h4
|
||||
| Accessible to
|
||||
span(data-i18n="new_home.accessible_to")
|
||||
br
|
||||
| everyone
|
||||
p.small Democratizing the process of learning coding is at the core of our philosophy. Everyone should be able to learn to code.
|
||||
|
||||
span(data-i18n="new_home.everyone")
|
||||
p.small(data-i18n="new_home.democratizing")
|
||||
|
||||
.testimonials-rows
|
||||
.testimonials-filler-left
|
||||
.testimonials-filler-right
|
||||
.row
|
||||
.col-lg-offset-2.col-lg-7.col-sm-8
|
||||
blockquote
|
||||
h3 I think they actually forgot that they were actually learning something.
|
||||
|
||||
h3(data-i18n="new_home.forgot_learning")
|
||||
|
||||
.col-lg-2.col-sm-3.text-center
|
||||
img.img-circle(src="/images/pages/home/timmaki.png")
|
||||
h6 Tim Maki
|
||||
.small Director of Technology, Tilton School
|
||||
|
||||
|
||||
.row
|
||||
.col-lg-7.col-sm-8.col-sm-push-4.col-lg-push-3
|
||||
blockquote
|
||||
h3 Coding is something I've always wanted to do, and I never thought I would be able to learn it in school.
|
||||
|
||||
h3(data-i18n="new_home.wanted_to_do")
|
||||
|
||||
.col-lg-2.col-sm-3.col-lg-offset-1.text-center.col-sm-pull-8.col-lg-pull-7
|
||||
img.img-circle(src="/images/pages/home/dylan.png")
|
||||
h6 Dylan
|
||||
.small 3rd Grader
|
||||
|
||||
|
||||
h3.text-center Why is learning through games important?
|
||||
|
||||
|
||||
|
||||
h3.text-center(data-i18n="new_home.why_games")
|
||||
|
||||
#benefit-row-1.row
|
||||
#benefit-graphic-1.col-sm-6.col-sm-offset-1.col-sm-push-6
|
||||
h2 Games reward the productive struggle.
|
||||
h2(data-i18n="new_home.games_reward")
|
||||
img(src="/images/pages/home/G1_reward.png")
|
||||
#benefit-graphic-1-filler
|
||||
|
||||
.col-sm-5.col-sm-pull-6
|
||||
p
|
||||
| Gaming is a medium that encourages interaction, discovery, and trial-and-error.
|
||||
| A good game challenges the player to master skills over time,
|
||||
| which is the same critical process students go through as they learn.
|
||||
p
|
||||
| Games excel at rewarding “
|
||||
a(href="http://blog.mindresearch.org/blog/game-based-learning-infographic-strong-math-practices" target="_blank") productive struggle
|
||||
span.spr ” - the kind of struggle that results in learning that’s engaging and
|
||||
a(href="http://www.gamesandlearning.org/2014/06/09/teachers-on-using-games-in-class/" target="_blank") motivating
|
||||
| , not tedious.
|
||||
|
||||
|
||||
|
||||
.col-sm-5.col-sm-pull-6
|
||||
p(data-i18n="new_home.encourage")
|
||||
|
||||
p
|
||||
span.spr(data-i18n="new_home.excel")
|
||||
span “
|
||||
a(href="http://blog.mindresearch.org/blog/game-based-learning-infographic-strong-math-practices" target="_blank", data-i18n="new_home.struggle")
|
||||
span ” -
|
||||
span.spl.spr(data-i18n="new_home.kind_of_struggle")
|
||||
a(href="http://www.gamesandlearning.org/2014/06/09/teachers-on-using-games-in-class/" target="_blank", data-i18n="new_home.motivating")
|
||||
span ,
|
||||
span.spl(data-i18n="new_home.not_tedious")
|
||||
|
||||
|
||||
|
||||
#benefit-row-2.row
|
||||
#benefit-graphic-2.col-sm-6
|
||||
h2 Studies suggest gaming is good for children’s brains. (it’s true!)
|
||||
h2(data-i18n="new_home.gaming_is_good")
|
||||
img(src="/images/pages/home/G2_brains.png")
|
||||
#benefit-graphic-2-filler
|
||||
|
||||
|
||||
.col-sm-5.col-sm-offset-1
|
||||
p
|
||||
span.spr When game-based learning systems are
|
||||
a(href="http://schoolsweek.co.uk/gaming-is-good-for-childrens-brains-study-suggests/" target="_blank") compared
|
||||
span.spl.spr against conventional assessment methods, the difference is clear: games are better at helping students retain knowledge, concentrate and
|
||||
a(href="http://dev.k-12techdecisions.com/article/game_based_learning_is_where_vygotsky_meets_dweck/P3" target="_blank") perform at a higher level of achievement
|
||||
| .
|
||||
span.spr(data-i18n="new_home.game_based")
|
||||
a(href="http://schoolsweek.co.uk/gaming-is-good-for-childrens-brains-study-suggests/" target="_blank", data-i18n="new_home.compared")
|
||||
span.spl.spr(data-i18n="new_home.conventional")
|
||||
a(href="http://dev.k-12techdecisions.com/article/game_based_learning_is_where_vygotsky_meets_dweck/P3" target="_blank", data-i18n="new_home.perform_at_higher_level")
|
||||
span .
|
||||
p
|
||||
| Games also provide real-time feedback that allows students to adjust their solution path and understand concepts more holistically, instead of being limited to just “correct” or “incorrect” answers.
|
||||
|
||||
span(data-i18n="new_home.feedback")
|
||||
|
||||
#benefit-row-3.row
|
||||
#benefit-graphic-3.col-sm-6.col-sm-offset-1.col-sm-push-6
|
||||
h2 A real game, played with real coding.
|
||||
h2(data-i18n="new_home.real_game")
|
||||
img(src="/images/pages/home/G3_game.png")
|
||||
#benefit-graphic-3-filler
|
||||
|
||||
|
||||
.col-sm-5.col-sm-pull-6
|
||||
p
|
||||
| A great game is more than just badges and achievements - it’s about a player’s journey, well-designed puzzles, and the ability to tackle challenges with agency and confidence.
|
||||
span(data-i18n="new_home.great_game")
|
||||
p
|
||||
| CodeCombat is a game that gives players that agency and confidence with our robust typed code engine, which helps beginner and advanced students alike write proper, valid code.
|
||||
span(data-i18n="new_home.agency")
|
||||
|
||||
|
||||
|
||||
.request-demo-row.text-center
|
||||
h3 Curious? Request a demo and we'll show you the ropes
|
||||
h4 Or create a class and see it for yourself!
|
||||
h3(data-i18n="new_home.curious")
|
||||
h4(data-i18n="new_home.create_class")
|
||||
div
|
||||
a.btn.btn-primary.btn-lg(href="/teachers/freetrial") Request a Demo
|
||||
a.btn.btn-primary-alt.btn-lg(href="/courses/teachers") Create a Class
|
||||
a.btn.btn-primary.btn-lg(href="/teachers/freetrial", data-i18n="new_home.request_demo")
|
||||
a.btn.btn-primary-alt.btn-lg(href="/courses/teachers", data-i18n="new_home.create_a_class")
|
||||
div
|
||||
if me.isAnonymous()
|
||||
span.spr Already have an account?
|
||||
span.spr(data-i18n="new_home.have_an_account")
|
||||
a.login-button Login
|
||||
else
|
||||
span.spr You are currently logged in as #{me.broadName()}.
|
||||
a(href="/courses/teachers") View my classes
|
||||
span.spr.spl or
|
||||
span.spr(data-i18n="new_home.logged_in_as")
|
||||
span= me.broadName()
|
||||
span.spr .
|
||||
a(href="/courses/teachers", data-i18n="new_home.view_my_classes")
|
||||
span.spr.spl(data-i18n="general.or")
|
||||
a#logout-button logout
|
||||
|
||||
h3.text-center Computer science courses for all ages
|
||||
|
||||
h3.text-center(data-i18n="new_home.computer_science")
|
||||
h4.text-center
|
||||
span#school-level-label Show me lesson time estimates for:
|
||||
span#school-level-label(data-i18n="new_home.show_me_lesson_time")
|
||||
select#school-level-dropdown.form-control.text-navy
|
||||
option(value='elementary') Elementary School
|
||||
option(value='middle', selected=true) Middle School
|
||||
option(value='high') High School
|
||||
option(value='elementary', data-i18n="teachers_quote.elementary_school")
|
||||
option(value='middle', selected=true, data-i18n="teachers_quote.middle_school")
|
||||
option(value='high', data-i18n="teachers_quote.high_school")
|
||||
h5.text-center#total-hours-header
|
||||
span.spr Total curriculum hours:
|
||||
span.spr(data-i18n="new_home.curriculum")
|
||||
span#semester-duration
|
||||
#courses-row.row
|
||||
- var conceptsSeen = {};
|
||||
|
@ -182,7 +185,7 @@ block content
|
|||
.media.course-details(data-course-slug=course.get('slug'))
|
||||
if courseIndex === 0
|
||||
.free-course
|
||||
h6 Free for all students
|
||||
h6(data-i18n="new_home.ffa")
|
||||
.media-body(title=course.get('description'))
|
||||
h6.course-name= course.get('name') + ':'
|
||||
p.small
|
||||
|
@ -203,7 +206,7 @@ block content
|
|||
img.media-object(src="/images/pages/home/course"+(courseIndex+1)+".png")
|
||||
- lastScreenshot = course.get('screenshot');
|
||||
h6.course-duration
|
||||
span.spr Lesson time:
|
||||
span.spr(data-i18n="new_home.lesson_time")
|
||||
span.course-hours= course.get('duration') || 0
|
||||
span.spl.unit(data-i18n="units.hours")
|
||||
for upcomingCourse in ['Computer Science 6', 'Computer Science 7', 'Computer Science 8']
|
||||
|
@ -211,22 +214,22 @@ block content
|
|||
.media.disabled
|
||||
.media-body
|
||||
h6.course-name= upcomingCourse + ':'
|
||||
p.small Coming soon!
|
||||
p.small(data-i18n="new_home.coming_soon")
|
||||
img.media-object(src="/images/pages/home/inprogress.png")
|
||||
|
||||
.clearfix
|
||||
.text-center
|
||||
h4
|
||||
img(src="/images/pages/home/course_languages.png")
|
||||
div Courses are available in JavaScript, Python, and Java (coming soon!)
|
||||
|
||||
div(data-i18n="new_home.courses_available_in")
|
||||
|
||||
.testimonials-rows
|
||||
.testimonials-filler-left
|
||||
.testimonials-filler-right
|
||||
.row
|
||||
.col-lg-offset-2.col-lg-7.col-sm-8
|
||||
blockquote
|
||||
h3 Boasts riddles that are complex enough to fascinate gamers and coders alike.
|
||||
h3(data-i18n="new_home.boast")
|
||||
|
||||
.col-lg-2.col-sm-3.text-center
|
||||
img.img-circle(src="/images/pages/home/opensource.png")
|
||||
|
@ -236,18 +239,16 @@ block content
|
|||
.row
|
||||
.col-lg-7.col-sm-8.col-sm-push-4.col-lg-push-3
|
||||
blockquote
|
||||
h3 A winning combination of RPG gameplay and programming homework that pulls off making kid-friendly education legitimately enjoyable.
|
||||
|
||||
h3(data-i18n="new_home.winning")
|
||||
|
||||
.col-lg-2.col-sm-3.col-lg-offset-1.text-center.col-sm-pull-8.col-lg-pull-7
|
||||
img.img-circle(src="/images/pages/home/pcmag.png")
|
||||
h6 PC Mag
|
||||
.small pcmag.com
|
||||
|
||||
|
||||
|
||||
|
||||
.request-demo-row.text-center
|
||||
h3 Everything you need to run a computer science class in your school today, no CS background required.
|
||||
h3(data-i18n="new_home.run_class")
|
||||
p
|
||||
a.btn.btn-primary.btn-lg(href="/teachers/freetrial") Request a Demo
|
||||
a.btn.btn-primary-alt.btn-lg(href="/courses/teachers") Create a Class
|
||||
|
||||
|
||||
a.btn.btn-primary.btn-lg(href="/teachers/freetrial", data-i18n="new_home.request_demo")
|
||||
a.btn.btn-primary-alt.btn-lg(href="/courses/teachers", data-i18n="new_home.create_a_class")
|
||||
|
|
|
@ -88,3 +88,6 @@
|
|||
strong.tip.rare(data-i18n='play_level.tip_free_your_mind') You have to let it all go, Neo. Fear, doubt, and disbelief. Free your mind. - Morpheus
|
||||
strong.tip.rare(data-i18n='play_level.tip_strong_opponents') Even the strongest of opponents always has a weakness. - Itachi Uchiha
|
||||
strong.tip.rare(data-i18n='play_level.tip_paper_and_pen') Before you start coding, you can always plan with a sheet of paper and a pen.
|
||||
strong.tip.rare(data-i18n='play_level.tip_compiler_ignores_comments') Sometimes I think that the compiler ignores my comments.
|
||||
strong.tip.rare(data-i18n='play_level.tip_understand_recursion') The only way to understand recursion is to understand recursion.
|
||||
strong.tip.rare(data-i18n='play_level.tip_open_source_and_polymorphism') Open Source projects are like totally polymorphic heterogeneous structures: All types are welcome.
|
|
@ -18,7 +18,7 @@ module.exports = class NewHomeView extends RootView
|
|||
'click #learn-more-link': 'onClickLearnMoreLink'
|
||||
|
||||
initialize: (options) ->
|
||||
@jumbotron = options.jumbotron or utils.getQueryVariable('jumbotron') or 'student' # or 'characters'
|
||||
@jumbotron = options.jumbotron or utils.getQueryVariable('jumbotron') or 'student'
|
||||
@courses = new CocoCollection [], {url: "/db/course", model: Course}
|
||||
@supermodel.loadCollection(@courses, 'courses')
|
||||
|
||||
|
|
|
@ -158,7 +158,7 @@ module.exports = class AnalyticsView extends RootView
|
|||
return -1 if a.created > b.created
|
||||
return 0 if a.created is b.created
|
||||
1
|
||||
@renderSelectors?('#school-sales')
|
||||
@renderSelectors?('.school-sales')
|
||||
}, 0).load()
|
||||
|
||||
@supermodel.addRequestResource({
|
||||
|
@ -449,26 +449,11 @@ module.exports = class AnalyticsView extends RootView
|
|||
eventDayDataMap['MAU classroom'][day] += count
|
||||
|
||||
campaignData = []
|
||||
classroomData = []
|
||||
for event, entry of eventDayDataMap
|
||||
if event is 'MAU campaign'
|
||||
for day, count of entry
|
||||
campaignData.push day: day, value: count / 1000
|
||||
else
|
||||
for day, count of entry
|
||||
classroomData.push day: day, value: count / 1000
|
||||
continue unless event is 'MAU campaign'
|
||||
for day, count of entry
|
||||
campaignData.push day: day, value: count / 1000
|
||||
campaignData.reverse()
|
||||
classroomData.reverse()
|
||||
|
||||
points = @createLineChartPoints(days, classroomData)
|
||||
chartLines.push
|
||||
points: points
|
||||
description: 'Classroom Monthly Active Users (in thousands)'
|
||||
lineColor: 'red'
|
||||
strokeWidth: 1
|
||||
min: 0
|
||||
max: _.max(points, 'y').y
|
||||
showYScale: true
|
||||
|
||||
points = @createLineChartPoints(days, campaignData)
|
||||
chartLines.push
|
||||
|
|
|
@ -23,8 +23,8 @@ try {
|
|||
var endDay = new Date();
|
||||
endDay = endDay.toISOString().substr(0, 10);
|
||||
|
||||
// startDay = '2015-03-01';
|
||||
// endDay = '2015-06-01';
|
||||
// startDay = '2015-06-01';
|
||||
// endDay = '2015-08-01';
|
||||
|
||||
var activeUserEvents = ['Finished Signup', 'Started Level'];
|
||||
|
||||
|
@ -59,36 +59,57 @@ function getActiveUserCounts(startDay, endDay, activeUserEvents) {
|
|||
// Counts active users per day
|
||||
if (!startDay) return {};
|
||||
|
||||
// Faster to request analytics db data in batches of days
|
||||
var dayIncrement = 3;
|
||||
var startDate = new Date(startDay + "T00:00:00.000Z");
|
||||
var interimEndDate = new Date(startDay + "T00:00:00.000Z");
|
||||
interimEndDate.setUTCDate(interimEndDate.getUTCDate() + dayIncrement);
|
||||
var interimEndDay = interimEndDate.toISOString().substr(0, 10);
|
||||
|
||||
var cursor, doc;
|
||||
|
||||
log("Finding active user log events..");
|
||||
var startObj = objectIdWithTimestamp(ISODate(startDay + "T00:00:00.000Z"));
|
||||
var endObj = objectIdWithTimestamp(ISODate(endDay + "T00:00:00.000Z"));
|
||||
var queryParams = {$and: [
|
||||
{_id: {$gte: startObj}},
|
||||
{_id: {$lt: endObj}},
|
||||
{'event': {$in: activeUserEvents}}
|
||||
]};
|
||||
cursor = logDB['log'].find(queryParams);
|
||||
|
||||
var campaignUserMap = {};
|
||||
var dayUserMap = {};
|
||||
var days = {};
|
||||
var dayUserActiveMap = {};
|
||||
var userIDs = [];
|
||||
while (cursor.hasNext()) {
|
||||
doc = cursor.next();
|
||||
var created = doc._id.getTimestamp().toISOString();
|
||||
var day = created.substring(0, 10);
|
||||
var user = doc.user.valueOf();
|
||||
campaignUserMap[user] = true;
|
||||
if (!dayUserMap[day]) dayUserMap[day] = {};
|
||||
dayUserMap[day][user] = true;
|
||||
userIDs.push(ObjectId(user));
|
||||
// if (userIDs.length % 100000 === 0) {
|
||||
// log('Users so far: ' + userIDs.length);
|
||||
// }
|
||||
while (startDay < endDay) {
|
||||
var startObj = objectIdWithTimestamp(ISODate(startDay + "T00:00:00.000Z"));
|
||||
var endObj = objectIdWithTimestamp(ISODate(interimEndDay + "T00:00:00.000Z"));
|
||||
var queryParams = {$and: [
|
||||
{_id: {$gte: startObj}},
|
||||
{_id: {$lt: endObj}},
|
||||
{'event': {$in: activeUserEvents}}
|
||||
]};
|
||||
cursor = logDB['log'].find(queryParams);
|
||||
|
||||
while (cursor.hasNext()) {
|
||||
doc = cursor.next();
|
||||
var created = doc._id.getTimestamp().toISOString();
|
||||
var day = created.substring(0, 10);
|
||||
var user = doc.user.valueOf();
|
||||
days[day] = true;
|
||||
campaignUserMap[user] = true;
|
||||
if (!dayUserActiveMap[day]) dayUserActiveMap[day] = {};
|
||||
dayUserActiveMap[day][user] = true;
|
||||
userIDs.push(ObjectId(user));
|
||||
// if (userIDs.length % 100000 === 0) {
|
||||
// log('Users so far: ' + userIDs.length);
|
||||
// }
|
||||
}
|
||||
startDate.setUTCDate(startDate.getUTCDate() + dayIncrement);
|
||||
startDay = startDate.toISOString().substr(0, 10);
|
||||
interimEndDate.setUTCDate(interimEndDate.getUTCDate() + dayIncrement);
|
||||
interimEndDay = interimEndDate.toISOString().substr(0, 10);
|
||||
if (interimEndDay.localeCompare(endDay) > 0) {
|
||||
interimEndDay = endDay;
|
||||
}
|
||||
}
|
||||
log('User count: ' + userIDs.length);
|
||||
|
||||
days = Object.keys(days);
|
||||
days.sort(function (a, b) {return a.localeCompare(b);});
|
||||
|
||||
log("Finding classroom members..");
|
||||
var classroomUserObjectIds = [];
|
||||
var batchSize = 100000;
|
||||
|
@ -112,20 +133,20 @@ function getActiveUserCounts(startDay, endDay, activeUserEvents) {
|
|||
// Trial user: prepaid.properties.trialRequestID means access was via trial
|
||||
// Free: not paid, not trial
|
||||
log("Finding classroom users free/trial/paid status..");
|
||||
var userEventMap = {};
|
||||
var classroomUserEventMap = {};
|
||||
var prepaidUsersMap = {};
|
||||
var prepaidIDs = [];
|
||||
cursor = db.users.find({_id: {$in: classroomUserObjectIds}}, {coursePrepaidID: 1});
|
||||
while (cursor.hasNext()) {
|
||||
doc = cursor.next();
|
||||
if (doc.coursePrepaidID) {
|
||||
userEventMap[doc._id.valueOf()] = 'DAU classroom paid';
|
||||
classroomUserEventMap[doc._id.valueOf()] = 'DAU classroom paid';
|
||||
if (!prepaidUsersMap[doc.coursePrepaidID.valueOf()]) prepaidUsersMap[doc.coursePrepaidID.valueOf()] = [];
|
||||
prepaidUsersMap[doc.coursePrepaidID.valueOf()].push(doc._id.valueOf());
|
||||
prepaidIDs.push(doc.coursePrepaidID);
|
||||
}
|
||||
else {
|
||||
userEventMap[doc._id.valueOf()] = 'DAU classroom free';
|
||||
classroomUserEventMap[doc._id.valueOf()] = 'DAU classroom free';
|
||||
}
|
||||
}
|
||||
cursor = db.prepaids.find({_id: {$in: prepaidIDs}}, {properties: 1});
|
||||
|
@ -133,7 +154,7 @@ function getActiveUserCounts(startDay, endDay, activeUserEvents) {
|
|||
doc = cursor.next();
|
||||
if (doc.properties && doc.properties.trialRequestID) {
|
||||
for (var i = 0; i < prepaidUsersMap[doc._id.valueOf()].length; i++) {
|
||||
userEventMap[prepaidUsersMap[doc._id.valueOf()][i]] = 'DAU classroom trial';
|
||||
classroomUserEventMap[prepaidUsersMap[doc._id.valueOf()][i]] = 'DAU classroom trial';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -141,19 +162,20 @@ function getActiveUserCounts(startDay, endDay, activeUserEvents) {
|
|||
// Campaign free/paid
|
||||
// Monthly sub: recipient for payment.stripe.subscriptionID == 'basic'
|
||||
// Yearly sub: recipient for paymen.stripe.gems == 42000
|
||||
// NOTE: payment.stripe.subscriptionID === basic from 2014-12-03 to 2015-03-13
|
||||
// TODO: missing a number of corner cases here (e.g. cancelled sub, purchased via admin)
|
||||
var campaignUserIDs = [];
|
||||
for (var userID in campaignUserMap) {
|
||||
if (campaignUserMap[userID]) campaignUserIDs.push(ObjectId(userID));
|
||||
}
|
||||
log("Finding campaign paid users..");
|
||||
var dayUserPaidMap = {};
|
||||
var dayCampaignUserPaidMap = {};
|
||||
batchSize = 100000;
|
||||
for (var j = 0; j < campaignUserIDs.length / batchSize + 1; j++) {
|
||||
cursor = db.payments.find({$and: [
|
||||
{recipient: {$in: campaignUserIDs.slice(j * batchSize, j * batchSize + batchSize)}},
|
||||
{$or: [
|
||||
{'stripe.subscriptionID': 'basic'},
|
||||
{$and: [{amount: {$gt: 0}}, {gems: 3500}, {'stripe.subscriptionID': {$exists: true}}]},
|
||||
{gems: 42000}
|
||||
]}
|
||||
]}, {created: 1, gems: 1, recipient: 1});
|
||||
|
@ -164,8 +186,8 @@ function getActiveUserCounts(startDay, endDay, activeUserEvents) {
|
|||
var numDays = doc.gems === 42000 ? 365 : 30;
|
||||
for (var i = 0; i < numDays; i++) {
|
||||
day = currentDate.toISOString().substring(0, 10);
|
||||
if (!dayUserPaidMap[day]) dayUserPaidMap[day] = {};
|
||||
dayUserPaidMap[day][userID] = true;
|
||||
if (!dayCampaignUserPaidMap[day]) dayCampaignUserPaidMap[day] = {};
|
||||
dayCampaignUserPaidMap[day][userID] = true;
|
||||
currentDate.setUTCDate(currentDate.getUTCDate() + 1);
|
||||
}
|
||||
}
|
||||
|
@ -174,13 +196,16 @@ function getActiveUserCounts(startDay, endDay, activeUserEvents) {
|
|||
log("Calculating DAUs..");
|
||||
var activeUsersCounts = {};
|
||||
var dailyEventNames = {};
|
||||
for (day in dayUserMap) {
|
||||
for (var user in dayUserMap[day]) {
|
||||
var event = userEventMap[user] || (dayUserPaidMap[day] && dayUserPaidMap[day][user] ? 'DAU campaign paid' : 'DAU campaign free');
|
||||
var userDayEventMap = {}
|
||||
for (day in dayUserActiveMap) {
|
||||
for (var user in dayUserActiveMap[day]) {
|
||||
var event = classroomUserEventMap[user] || (dayCampaignUserPaidMap[day] && dayCampaignUserPaidMap[day][user] ? 'DAU campaign paid' : 'DAU campaign free');
|
||||
dailyEventNames[event] = true;
|
||||
if (!activeUsersCounts[day]) activeUsersCounts[day] = {};
|
||||
if (!activeUsersCounts[day][event]) activeUsersCounts[day][event] = 0;
|
||||
activeUsersCounts[day][event]++;
|
||||
if (!userDayEventMap[user]) userDayEventMap[user] = {};
|
||||
userDayEventMap[user][day] = event;
|
||||
}
|
||||
}
|
||||
// printjson(dailyEventNames)
|
||||
|
@ -209,30 +234,27 @@ function getActiveUserCounts(startDay, endDay, activeUserEvents) {
|
|||
}
|
||||
}
|
||||
|
||||
// Calculate monthly actives for each day, starting when we have enough data
|
||||
log("Calculating MAUs..");
|
||||
var days = [];
|
||||
for (var day in activeUsersCounts) {
|
||||
days.push(day);
|
||||
}
|
||||
days.sort(function (a, b) {return a.localeCompare(b);});
|
||||
// print('Num days', days.length);
|
||||
|
||||
// For each day, starting when we have daysInMonth days of prior data
|
||||
for (var i = daysInMonth - 1; i < days.length; i++) {
|
||||
// For the last daysInMonth days up to the current day
|
||||
var targetMonthlyDay = days[i];
|
||||
for (var j = i - daysInMonth + 1; j <= i; j++) {
|
||||
var targetDailyDay = days[j];
|
||||
// For each daily event
|
||||
for (var event in dailyEventNames) {
|
||||
// print(day, event, activeUsersCounts[day][event]);
|
||||
var mauEvent = event.replace('DAU', 'MAU');
|
||||
if (!activeUsersCounts[targetMonthlyDay][mauEvent]) activeUsersCounts[targetMonthlyDay][mauEvent] = 0
|
||||
if (activeUsersCounts[targetDailyDay][event]) {
|
||||
activeUsersCounts[targetMonthlyDay][mauEvent] += activeUsersCounts[targetDailyDay][event];
|
||||
// Calculate monthly actives for each day, starting when we have enough data
|
||||
// TODO: missing log data correction for MAUs
|
||||
for (var user in campaignUserMap) {
|
||||
// For each day, starting when we have daysInMonth days of prior data
|
||||
for (var i = daysInMonth - 1; i < days.length; i++) {
|
||||
var targetMonthlyDay = days[i];
|
||||
var eventActiveMap = {}
|
||||
// Find active events for the last daysInMonth days up to the current day
|
||||
for (var j = i - daysInMonth + 1; j <= i; j++) {
|
||||
var targetDailyDay = days[j];
|
||||
if (dayUserActiveMap[targetDailyDay][user]) {
|
||||
event = userDayEventMap[user][targetDailyDay];
|
||||
eventActiveMap[event] = true;
|
||||
}
|
||||
}
|
||||
for (var event in eventActiveMap) {
|
||||
var mauEvent = event.replace('DAU', 'MAU');
|
||||
if (!activeUsersCounts[targetMonthlyDay][mauEvent]) activeUsersCounts[targetMonthlyDay][mauEvent] = 0;
|
||||
activeUsersCounts[targetMonthlyDay][mauEvent]++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -7,39 +7,33 @@
|
|||
|
||||
// TODO: Investigate school sales amount == zero. Manual input error?
|
||||
|
||||
try {
|
||||
var scriptStartTime = new Date();
|
||||
var analyticsStringCache = {};
|
||||
var scriptStartTime = new Date();
|
||||
var analyticsStringCache = {};
|
||||
|
||||
var numDays = 40;
|
||||
var daysInMonth = 30;
|
||||
var numDays = 40;
|
||||
var daysInMonth = 30;
|
||||
|
||||
var startDay = new Date();
|
||||
today = startDay.toISOString().substr(0, 10);
|
||||
startDay.setUTCDate(startDay.getUTCDate() - numDays);
|
||||
startDay = startDay.toISOString().substr(0, 10);
|
||||
var startDay = new Date();
|
||||
today = startDay.toISOString().substr(0, 10);
|
||||
startDay.setUTCDate(startDay.getUTCDate() - numDays);
|
||||
startDay = startDay.toISOString().substr(0, 10);
|
||||
|
||||
log("Today is " + today);
|
||||
log("Start day is " + startDay);
|
||||
log("Today is " + today);
|
||||
log("Start day is " + startDay);
|
||||
|
||||
log("Getting recurring revenue counts...");
|
||||
var recurringRevenueCounts = getRecurringRevenueCounts(startDay);
|
||||
// printjson(recurringRevenueCounts);
|
||||
log("Inserting recurring revenue counts...");
|
||||
for (var event in recurringRevenueCounts) {
|
||||
for (var day in recurringRevenueCounts[event]) {
|
||||
if (today === day) continue; // Never save data for today because it's incomplete
|
||||
// print(event, day, recurringRevenueCounts[event][day]);
|
||||
insertEventCount(event, day, recurringRevenueCounts[event][day]);
|
||||
}
|
||||
log("Getting recurring revenue counts...");
|
||||
var recurringRevenueCounts = getRecurringRevenueCounts(startDay);
|
||||
// printjson(recurringRevenueCounts);
|
||||
log("Inserting recurring revenue counts...");
|
||||
for (var event in recurringRevenueCounts) {
|
||||
for (var day in recurringRevenueCounts[event]) {
|
||||
if (today === day) continue; // Never save data for today because it's incomplete
|
||||
// print(event, day, recurringRevenueCounts[event][day]);
|
||||
insertEventCount(event, day, recurringRevenueCounts[event][day]);
|
||||
}
|
||||
}
|
||||
|
||||
log("Script runtime: " + (new Date() - scriptStartTime));
|
||||
}
|
||||
catch(err) {
|
||||
log("ERROR: " + err);
|
||||
printjson(err);
|
||||
}
|
||||
log("Script runtime: " + (new Date() - scriptStartTime));
|
||||
|
||||
function getRecurringRevenueCounts(startDay) {
|
||||
if (!startDay) return {};
|
||||
|
@ -53,7 +47,7 @@ function getRecurringRevenueCounts(startDay) {
|
|||
while (cursor.hasNext()) {
|
||||
var doc = cursor.next();
|
||||
if (doc.created) {
|
||||
day = doc.created.substring(0, 10);
|
||||
day = new Date(doc.created).toISOString().substring(0, 10);
|
||||
}
|
||||
else {
|
||||
day = doc._id.getTimestamp().toISOString().substring(0, 10);
|
||||
|
|
Loading…
Reference in a new issue