mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-11-28 01:55:38 -05:00
Merge remote-tracking branch 'codecombat/master'
This commit is contained in:
commit
eec7f6d697
213 changed files with 3506 additions and 2953 deletions
11
.travis.yml
11
.travis.yml
|
@ -30,3 +30,14 @@ before_script:
|
||||||
script:
|
script:
|
||||||
- "./node_modules/karma/bin/karma start --browsers Firefox --single-run --reporters progress"
|
- "./node_modules/karma/bin/karma start --browsers Firefox --single-run --reporters progress"
|
||||||
- "npm run jasmine"
|
- "npm run jasmine"
|
||||||
|
|
||||||
|
notifications:
|
||||||
|
slack:
|
||||||
|
rooms:
|
||||||
|
- secure: dv1zozcLo/gGb1i1OeKKLQgjLagW3jqhkEIiZrVbubfRMrrHouZwtlg1HDVc2GOzP1yCaUOYOLBqT3lTE9CKt4pE8k3p0gJ77j1rHxTyeYny2ETq4w5sXak8ju8M3EDnj+Au2NWWrGiD0YkIUnF5vxzKUc1pkS+vDSWR2ORkOrU=
|
||||||
|
template:
|
||||||
|
- Tests failed <%{build_url}|#%{build_number}> (<%{compare_url}|%{commit}>) of %{repository}@%{branch} by %{author} %{result} <!here>
|
||||||
|
on_success: never
|
||||||
|
on_failure: always
|
||||||
|
on_start: never
|
||||||
|
on_pull_requests: false
|
||||||
|
|
BIN
app/assets/images/pages/about/lisa_small.png
Normal file
BIN
app/assets/images/pages/about/lisa_small.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 20 KiB |
Binary file not shown.
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 59 KiB |
|
@ -4,3 +4,8 @@ ThangType = require 'models/ThangType'
|
||||||
module.exports = class ThangTypeCollection extends CocoCollection
|
module.exports = class ThangTypeCollection extends CocoCollection
|
||||||
url: '/db/thang.type'
|
url: '/db/thang.type'
|
||||||
model: ThangType
|
model: ThangType
|
||||||
|
|
||||||
|
fetchHeroes: ->
|
||||||
|
@fetch {
|
||||||
|
url: '/db/thang.type?view=heroes'
|
||||||
|
}
|
||||||
|
|
|
@ -82,8 +82,8 @@ module.exports = ModuleLoader = class ModuleLoader extends CocoClass
|
||||||
# a module and its dependencies have loaded!
|
# a module and its dependencies have loaded!
|
||||||
if @queue.progress is 1
|
if @queue.progress is 1
|
||||||
@recentPaths.sort()
|
@recentPaths.sort()
|
||||||
console.debug @recentPaths.join('\n')
|
# console.debug @recentPaths.join('\n')
|
||||||
console.debug 'loaded', @recentPaths.length, 'files,', parseInt(@recentLoadedBytes/1024), 'KB'
|
# console.debug 'loaded', @recentPaths.length, 'files,', parseInt(@recentLoadedBytes/1024), 'KB'
|
||||||
@trigger 'load-complete'
|
@trigger 'load-complete'
|
||||||
|
|
||||||
@trigger 'loaded', e.item
|
@trigger 'loaded', e.item
|
||||||
|
|
|
@ -239,6 +239,12 @@ particleKinds['level-dungeon-replayable'] = particleKinds['level-dungeon-replaya
|
||||||
colorMiddle: hsl 0.17, 0.75, 0.5
|
colorMiddle: hsl 0.17, 0.75, 0.5
|
||||||
colorEnd: hsl 0.17, 0.75, 0.3
|
colorEnd: hsl 0.17, 0.75, 0.3
|
||||||
|
|
||||||
|
particleKinds['level-dungeon-game-dev'] = particleKinds['level-dungeon-game-dev-premium'] = ext particleKinds['level-dungeon-hero-ladder'],
|
||||||
|
emitter:
|
||||||
|
colorStart: hsl 0.7, 0.75, 0.7
|
||||||
|
colorMiddle: hsl 0.7, 0.75, 0.5
|
||||||
|
colorEnd: hsl 0.7, 0.75, 0.3
|
||||||
|
|
||||||
particleKinds['level-dungeon-premium-item'] = ext particleKinds['level-dungeon-gate'],
|
particleKinds['level-dungeon-premium-item'] = ext particleKinds['level-dungeon-gate'],
|
||||||
emitter:
|
emitter:
|
||||||
particleCount: 2000
|
particleCount: 2000
|
||||||
|
@ -288,6 +294,12 @@ particleKinds['level-forest-replayable'] = particleKinds['level-forest-replayabl
|
||||||
colorMiddle: hsl 0.17, 0.75, 0.5
|
colorMiddle: hsl 0.17, 0.75, 0.5
|
||||||
colorEnd: hsl 0.17, 0.75, 0.3
|
colorEnd: hsl 0.17, 0.75, 0.3
|
||||||
|
|
||||||
|
particleKinds['level-forest-game-dev'] = particleKinds['level-forest-game-dev-premium'] = ext particleKinds['level-forest-hero-ladder'],
|
||||||
|
emitter:
|
||||||
|
colorStart: hsl 0.7, 0.75, 0.7
|
||||||
|
colorMiddle: hsl 0.7, 0.75, 0.5
|
||||||
|
colorEnd: hsl 0.7, 0.75, 0.3
|
||||||
|
|
||||||
particleKinds['level-forest-premium-item'] = ext particleKinds['level-forest-gate'],
|
particleKinds['level-forest-premium-item'] = ext particleKinds['level-forest-gate'],
|
||||||
emitter:
|
emitter:
|
||||||
particleCount: 2000
|
particleCount: 2000
|
||||||
|
@ -337,6 +349,12 @@ particleKinds['level-desert-replayable'] = particleKinds['level-desert-replayabl
|
||||||
colorMiddle: hsl 0.17, 0.75, 0.5
|
colorMiddle: hsl 0.17, 0.75, 0.5
|
||||||
colorEnd: hsl 0.17, 0.75, 0.3
|
colorEnd: hsl 0.17, 0.75, 0.3
|
||||||
|
|
||||||
|
particleKinds['level-desert-game-dev'] = particleKinds['level-desert-game-dev-premium'] = ext particleKinds['level-desert-hero-ladder'],
|
||||||
|
emitter:
|
||||||
|
colorStart: hsl 0.7, 0.75, 0.7
|
||||||
|
colorMiddle: hsl 0.7, 0.75, 0.5
|
||||||
|
colorEnd: hsl 0.7, 0.75, 0.3
|
||||||
|
|
||||||
particleKinds['level-mountain-premium-hero'] = ext particleKinds['level-mountain-premium'],
|
particleKinds['level-mountain-premium-hero'] = ext particleKinds['level-mountain-premium'],
|
||||||
emitter:
|
emitter:
|
||||||
particleCount: 200
|
particleCount: 200
|
||||||
|
@ -371,6 +389,12 @@ particleKinds['level-mountain-replayable'] = particleKinds['level-mountain-repla
|
||||||
colorMiddle: hsl 0.17, 0.75, 0.5
|
colorMiddle: hsl 0.17, 0.75, 0.5
|
||||||
colorEnd: hsl 0.17, 0.75, 0.3
|
colorEnd: hsl 0.17, 0.75, 0.3
|
||||||
|
|
||||||
|
particleKinds['level-mountain-game-dev'] = particleKinds['level-mountain-game-dev-premium'] = ext particleKinds['level-mountain-hero-ladder'],
|
||||||
|
emitter:
|
||||||
|
colorStart: hsl 0.7, 0.75, 0.7
|
||||||
|
colorMiddle: hsl 0.7, 0.75, 0.5
|
||||||
|
colorEnd: hsl 0.7, 0.75, 0.3
|
||||||
|
|
||||||
particleKinds['level-glacier-premium-hero'] = ext particleKinds['level-glacier-premium'],
|
particleKinds['level-glacier-premium-hero'] = ext particleKinds['level-glacier-premium'],
|
||||||
emitter:
|
emitter:
|
||||||
particleCount: 200
|
particleCount: 200
|
||||||
|
@ -405,6 +429,12 @@ particleKinds['level-glacier-replayable'] = particleKinds['level-glacier-replaya
|
||||||
colorMiddle: hsl 0.17, 0.75, 0.5
|
colorMiddle: hsl 0.17, 0.75, 0.5
|
||||||
colorEnd: hsl 0.17, 0.75, 0.3
|
colorEnd: hsl 0.17, 0.75, 0.3
|
||||||
|
|
||||||
|
particleKinds['level-glacier-game-dev'] = particleKinds['level-glacier-game-dev-premium'] = ext particleKinds['level-glacier-hero-ladder'],
|
||||||
|
emitter:
|
||||||
|
colorStart: hsl 0.7, 0.75, 0.7
|
||||||
|
colorMiddle: hsl 0.7, 0.75, 0.5
|
||||||
|
colorEnd: hsl 0.7, 0.75, 0.3
|
||||||
|
|
||||||
particleKinds['level-volcano-premium-hero'] = ext particleKinds['level-volcano-premium'],
|
particleKinds['level-volcano-premium-hero'] = ext particleKinds['level-volcano-premium'],
|
||||||
emitter:
|
emitter:
|
||||||
particleCount: 200
|
particleCount: 200
|
||||||
|
@ -438,3 +468,9 @@ particleKinds['level-volcano-replayable'] = particleKinds['level-volcano-replaya
|
||||||
colorStart: hsl 0.17, 0.75, 0.7
|
colorStart: hsl 0.17, 0.75, 0.7
|
||||||
colorMiddle: hsl 0.17, 0.75, 0.5
|
colorMiddle: hsl 0.17, 0.75, 0.5
|
||||||
colorEnd: hsl 0.17, 0.75, 0.3
|
colorEnd: hsl 0.17, 0.75, 0.3
|
||||||
|
|
||||||
|
particleKinds['level-volcano-game-dev'] = particleKinds['level-volcano-game-dev-premium'] = ext particleKinds['level-volcano-hero-ladder'],
|
||||||
|
emitter:
|
||||||
|
colorStart: hsl 0.7, 0.75, 0.7
|
||||||
|
colorMiddle: hsl 0.7, 0.75, 0.5
|
||||||
|
colorEnd: hsl 0.7, 0.75, 0.3
|
||||||
|
|
|
@ -69,15 +69,15 @@ module.exports = class CocoRouter extends Backbone.Router
|
||||||
'contribute/diplomat': go('contribute/DiplomatView')
|
'contribute/diplomat': go('contribute/DiplomatView')
|
||||||
'contribute/scribe': go('contribute/ScribeView')
|
'contribute/scribe': go('contribute/ScribeView')
|
||||||
|
|
||||||
'courses': go('courses/CoursesView') # , { studentsOnly: true }) # TODO: Enforce after session-less play for teachers
|
'courses': go('courses/CoursesView')
|
||||||
'Courses': go('courses/CoursesView') # , { studentsOnly: true })
|
'Courses': go('courses/CoursesView')
|
||||||
'courses/students': redirect('/courses')
|
'courses/students': redirect('/courses')
|
||||||
'courses/teachers': redirect('/teachers/classes')
|
'courses/teachers': redirect('/teachers/classes')
|
||||||
'courses/purchase': redirect('/teachers/licenses')
|
'courses/purchase': redirect('/teachers/licenses')
|
||||||
'courses/enroll(/:courseID)': redirect('/teachers/licenses')
|
'courses/enroll(/:courseID)': redirect('/teachers/licenses')
|
||||||
'courses/update-account': go('courses/CoursesUpdateAccountView')
|
'courses/update-account': go('courses/CoursesUpdateAccountView')
|
||||||
'courses/:classroomID': go('courses/ClassroomView') #, { studentsOnly: true })
|
'courses/:classroomID': go('courses/ClassroomView', { studentsOnly: true })
|
||||||
'courses/:courseID/:courseInstanceID': go('courses/CourseDetailsView')
|
'courses/:courseID/:courseInstanceID': go('courses/CourseDetailsView', { studentsOnly: true })
|
||||||
|
|
||||||
'db/*path': 'routeToServer'
|
'db/*path': 'routeToServer'
|
||||||
'demo(/*subpath)': go('DemoView')
|
'demo(/*subpath)': go('DemoView')
|
||||||
|
@ -142,14 +142,14 @@ module.exports = class CocoRouter extends Backbone.Router
|
||||||
'SEEN': go('NewHomeView')
|
'SEEN': go('NewHomeView')
|
||||||
|
|
||||||
'teachers': redirect('/teachers/classes')
|
'teachers': redirect('/teachers/classes')
|
||||||
'teachers/classes': go('courses/TeacherClassesView') #, { teachersOnly: true })
|
'teachers/classes': go('courses/TeacherClassesView', { teachersOnly: true })
|
||||||
'teachers/classes/:classroomID': go('courses/TeacherClassView') #, { teachersOnly: true })
|
'teachers/classes/:classroomID': go('courses/TeacherClassView', { teachersOnly: true })
|
||||||
'teachers/courses': go('courses/TeacherCoursesView')
|
'teachers/courses': go('courses/TeacherCoursesView')
|
||||||
'teachers/demo': go('teachers/RequestQuoteView')
|
'teachers/demo': go('teachers/RequestQuoteView')
|
||||||
'teachers/enrollments': redirect('/teachers/licenses')
|
'teachers/enrollments': redirect('/teachers/licenses')
|
||||||
'teachers/licenses': go('courses/EnrollmentsView') #, { teachersOnly: true })
|
'teachers/licenses': go('courses/EnrollmentsView', { teachersOnly: true })
|
||||||
'teachers/freetrial': go('teachers/RequestQuoteView')
|
'teachers/freetrial': go('teachers/RequestQuoteView')
|
||||||
'teachers/quote': go('teachers/RequestQuoteView')
|
'teachers/quote': redirect('/teachers/demo')
|
||||||
'teachers/signup': ->
|
'teachers/signup': ->
|
||||||
return @routeDirectly('teachers/CreateTeacherAccountView', []) if me.isAnonymous()
|
return @routeDirectly('teachers/CreateTeacherAccountView', []) if me.isAnonymous()
|
||||||
@navigate('/teachers/update-account', {trigger: true, replace: true})
|
@navigate('/teachers/update-account', {trigger: true, replace: true})
|
||||||
|
@ -172,9 +172,9 @@ module.exports = class CocoRouter extends Backbone.Router
|
||||||
@navigate e, {trigger: true}
|
@navigate e, {trigger: true}
|
||||||
|
|
||||||
routeDirectly: (path, args=[], options={}) ->
|
routeDirectly: (path, args=[], options={}) ->
|
||||||
if options.teachersOnly and not me.isTeacher()
|
if options.teachersOnly and not (me.isTeacher() or me.isAdmin())
|
||||||
return @routeDirectly('teachers/RestrictedToTeachersView')
|
return @routeDirectly('teachers/RestrictedToTeachersView')
|
||||||
if options.studentsOnly and me.isTeacher()
|
if options.studentsOnly and not (me.isStudent() or me.isAdmin())
|
||||||
return @routeDirectly('courses/RestrictedToStudentsView')
|
return @routeDirectly('courses/RestrictedToStudentsView')
|
||||||
leavingMessage = _.result(window.currentView, 'onLeaveMessage')
|
leavingMessage = _.result(window.currentView, 'onLeaveMessage')
|
||||||
if leavingMessage
|
if leavingMessage
|
||||||
|
|
|
@ -95,9 +95,13 @@ module.exports = class Tracker extends CocoClass
|
||||||
analytics.identify me.id, traits
|
analytics.identify me.id, traits
|
||||||
|
|
||||||
trackPageView: (includeIntegrations=[]) ->
|
trackPageView: (includeIntegrations=[]) ->
|
||||||
|
includeMixpanel = (name) ->
|
||||||
|
mixpanelIncludes = ['', 'schools', 'play', 'play/level/dungeons-of-kithgard']
|
||||||
|
name in mixpanelIncludes or /courses|students|teachers/ig.test(name)
|
||||||
|
|
||||||
name = Backbone.history.getFragment()
|
name = Backbone.history.getFragment()
|
||||||
url = "/#{name}"
|
url = "/#{name}"
|
||||||
console.log "Would track analytics pageview: #{url}" if debugAnalytics
|
console.log "Would track analytics pageview: #{url} Mixpanel=#{includeMixpanel(name)}" if debugAnalytics
|
||||||
@trackEventInternal 'Pageview', url: name unless me?.isAdmin() and @isProduction
|
@trackEventInternal 'Pageview', url: name unless me?.isAdmin() and @isProduction
|
||||||
return unless @isProduction and not me.isAdmin()
|
return unless @isProduction and not me.isAdmin()
|
||||||
|
|
||||||
|
@ -106,8 +110,7 @@ module.exports = class Tracker extends CocoClass
|
||||||
ga? 'send', 'pageview', url
|
ga? 'send', 'pageview', url
|
||||||
|
|
||||||
# Mixpanel
|
# Mixpanel
|
||||||
mixpanelIncludes = ['', 'courses', 'courses/purchase', 'courses/teachers', 'courses/students', 'schools', 'teachers', 'teachers/freetrial', 'teachers/quote', 'play', 'play/level/dungeons-of-kithgard']
|
mixpanel.track('page viewed', 'page name' : name, url : url) if includeMixpanel(name)
|
||||||
mixpanel.track('page viewed', 'page name' : name, url : url) if name in mixpanelIncludes
|
|
||||||
|
|
||||||
if me.isTeacher() and @segmentLoaded
|
if me.isTeacher() and @segmentLoaded
|
||||||
options = {}
|
options = {}
|
||||||
|
@ -162,16 +165,7 @@ module.exports = class Tracker extends CocoClass
|
||||||
|
|
||||||
properties[key] = value for key, value of @explicitTraits if @explicitTraits?
|
properties[key] = value for key, value of @explicitTraits if @explicitTraits?
|
||||||
console.log 'Tracking internal analytics event:', event, properties if debugAnalytics
|
console.log 'Tracking internal analytics event:', event, properties if debugAnalytics
|
||||||
if @isProduction
|
|
||||||
eventObject = {}
|
|
||||||
eventObject["event"] = event
|
|
||||||
eventObject["properties"] = properties unless _.isEmpty properties
|
|
||||||
eventObject["user"] = me.id
|
|
||||||
dataToSend = JSON.stringify eventObject
|
|
||||||
# console.log dataToSend if debugAnalytics
|
|
||||||
$.post("#{window.location.protocol or 'http:'}//analytics.codecombat.com/analytics", dataToSend).fail ->
|
|
||||||
console.error "Analytics post failed!"
|
|
||||||
else
|
|
||||||
request = @supermodel.addRequestResource {
|
request = @supermodel.addRequestResource {
|
||||||
url: '/db/analytics.log.event/-/log_event'
|
url: '/db/analytics.log.event/-/log_event'
|
||||||
data: {event: event, properties: properties}
|
data: {event: event, properties: properties}
|
||||||
|
|
|
@ -14,40 +14,6 @@ init = ->
|
||||||
|
|
||||||
Backbone.listenTo me, 'sync', -> Backbone.Mediator.publish('auth:me-synced', me: me)
|
Backbone.listenTo me, 'sync', -> Backbone.Mediator.publish('auth:me-synced', me: me)
|
||||||
|
|
||||||
module.exports.createUser = (userObject, failure=backboneFailure, nextURL=null) ->
|
|
||||||
user = new User(userObject)
|
|
||||||
user.notyErrors = false
|
|
||||||
user.save({}, {
|
|
||||||
error: (model, jqxhr, options) ->
|
|
||||||
error = parseServerError(jqxhr.responseText)
|
|
||||||
property = error.property if error.property
|
|
||||||
if jqxhr.status is 409 and property is 'name'
|
|
||||||
anonUserObject = _.omit(userObject, 'name')
|
|
||||||
module.exports.createUser anonUserObject, failure, nextURL
|
|
||||||
else
|
|
||||||
genericFailure(jqxhr)
|
|
||||||
success: -> if nextURL then window.location.href = nextURL else window.location.reload()
|
|
||||||
})
|
|
||||||
|
|
||||||
module.exports.createUserWithoutReload = (userObject, failure=backboneFailure) ->
|
|
||||||
user = new User(userObject)
|
|
||||||
user.save({}, {
|
|
||||||
error: failure
|
|
||||||
success: ->
|
|
||||||
Backbone.Mediator.publish('created-user-without-reload')
|
|
||||||
})
|
|
||||||
|
|
||||||
module.exports.loginUser = (userObject, failure=genericFailure, nextURL=null) ->
|
|
||||||
console.log 'logging in as', userObject.email
|
|
||||||
jqxhr = $.post('/auth/login',
|
|
||||||
{
|
|
||||||
username: userObject.email,
|
|
||||||
password: userObject.password
|
|
||||||
},
|
|
||||||
(model) -> if nextURL then window.location.href = nextURL else window.location.reload()
|
|
||||||
)
|
|
||||||
jqxhr.fail(failure)
|
|
||||||
|
|
||||||
module.exports.logoutUser = ->
|
module.exports.logoutUser = ->
|
||||||
# TODO: Refactor to use User.logout
|
# TODO: Refactor to use User.logout
|
||||||
FB?.logout?()
|
FB?.logout?()
|
||||||
|
|
|
@ -259,8 +259,11 @@ module.exports.filterMarkdownCodeLanguages = (text, language) ->
|
||||||
return '' unless text
|
return '' unless text
|
||||||
currentLanguage = language or me.get('aceConfig')?.language or 'python'
|
currentLanguage = language or me.get('aceConfig')?.language or 'python'
|
||||||
excludedLanguages = _.without ['javascript', 'python', 'coffeescript', 'clojure', 'lua', 'java', 'io'], currentLanguage
|
excludedLanguages = _.without ['javascript', 'python', 'coffeescript', 'clojure', 'lua', 'java', 'io'], currentLanguage
|
||||||
exclusionRegex = new RegExp "```(#{excludedLanguages.join('|')})\n[^`]+```\n?", 'gm'
|
# Exclude language-specific code blocks like ```python (... code ...)``` for each non-target language.
|
||||||
text.replace exclusionRegex, ''
|
codeBlockExclusionRegex = new RegExp "```(#{excludedLanguages.join('|')})\n[^`]+```\n?", 'gm'
|
||||||
|
# Exclude language-specific images like ![python - image description](image url) for each non-target language.
|
||||||
|
imageExclusionRegex = new RegExp "!\\[(#{excludedLanguages.join('|')}) - .+?\\]\\(.+?\\)\n?", 'gm'
|
||||||
|
return text.replace(codeBlockExclusionRegex, '').replace(imageExclusionRegex, '')
|
||||||
|
|
||||||
module.exports.aceEditModes = aceEditModes =
|
module.exports.aceEditModes = aceEditModes =
|
||||||
'javascript': 'ace/mode/javascript'
|
'javascript': 'ace/mode/javascript'
|
||||||
|
|
|
@ -40,6 +40,7 @@ module.exports = class LevelLoader extends CocoClass
|
||||||
|
|
||||||
@worldNecessities = []
|
@worldNecessities = []
|
||||||
@listenTo @supermodel, 'resource-loaded', @onWorldNecessityLoaded
|
@listenTo @supermodel, 'resource-loaded', @onWorldNecessityLoaded
|
||||||
|
@listenTo @supermodel, 'failed', @onWorldNecessityLoadFailed
|
||||||
@loadLevel()
|
@loadLevel()
|
||||||
@loadAudio()
|
@loadAudio()
|
||||||
@playJingle()
|
@playJingle()
|
||||||
|
@ -110,7 +111,7 @@ module.exports = class LevelLoader extends CocoClass
|
||||||
@loadDependenciesForSession @session
|
@loadDependenciesForSession @session
|
||||||
|
|
||||||
loadSession: ->
|
loadSession: ->
|
||||||
if @level.get('type', true) in ['hero', 'hero-ladder', 'hero-coop']
|
if @level.get('type', true) in ['hero', 'hero-ladder', 'hero-coop', 'course']
|
||||||
@sessionDependenciesRegistered = {}
|
@sessionDependenciesRegistered = {}
|
||||||
|
|
||||||
if @sessionID
|
if @sessionID
|
||||||
|
@ -122,7 +123,7 @@ module.exports = class LevelLoader extends CocoClass
|
||||||
url += "?course=#{@courseID}" if @courseID
|
url += "?course=#{@courseID}" if @courseID
|
||||||
|
|
||||||
session = new LevelSession().setURL url
|
session = new LevelSession().setURL url
|
||||||
session.project = ['creator', 'team', 'heroConfig', 'codeLanguage', 'submittedCodeLanguage', 'state'] if @headless
|
session.project = ['creator', 'team', 'heroConfig', 'codeLanguage', 'submittedCodeLanguage', 'state', 'submittedCode'] if @headless
|
||||||
@sessionResource = @supermodel.loadModel(session, 'level_session', {cache: false})
|
@sessionResource = @supermodel.loadModel(session, 'level_session', {cache: false})
|
||||||
@session = @sessionResource.model
|
@session = @sessionResource.model
|
||||||
if @opponentSessionID
|
if @opponentSessionID
|
||||||
|
@ -146,6 +147,7 @@ module.exports = class LevelLoader extends CocoClass
|
||||||
@listenToOnce @opponentSession, 'sync', @loadDependenciesForSession
|
@listenToOnce @opponentSession, 'sync', @loadDependenciesForSession
|
||||||
|
|
||||||
loadDependenciesForSession: (session) ->
|
loadDependenciesForSession: (session) ->
|
||||||
|
console.log "Loading dependencies for session: ", session
|
||||||
if me.id isnt session.get 'creator'
|
if me.id isnt session.get 'creator'
|
||||||
session.patch = session.save = -> console.error "Not saving session, since we didn't create it."
|
session.patch = session.save = -> console.error "Not saving session, since we didn't create it."
|
||||||
else if codeLanguage = utils.getQueryVariable 'codeLanguage'
|
else if codeLanguage = utils.getQueryVariable 'codeLanguage'
|
||||||
|
@ -168,6 +170,16 @@ module.exports = class LevelLoader extends CocoClass
|
||||||
@consolidateFlagHistory() if @opponentSession?.loaded
|
@consolidateFlagHistory() if @opponentSession?.loaded
|
||||||
else if session is @opponentSession
|
else if session is @opponentSession
|
||||||
@consolidateFlagHistory() if @session.loaded
|
@consolidateFlagHistory() if @session.loaded
|
||||||
|
if @level.get('type', true) in ['course'] # course-ladder is hard to handle because there's 2 sessions
|
||||||
|
heroConfig = me.get('heroConfig')
|
||||||
|
console.log "Course mode, loading custom hero: ", heroConfig
|
||||||
|
return if not heroConfig
|
||||||
|
url = "/db/thang.type/#{heroConfig.thangType}/version"
|
||||||
|
if heroResource = @maybeLoadURL(url, ThangType, 'thang')
|
||||||
|
console.log "Pushing resource: ", heroResource
|
||||||
|
@worldNecessities.push heroResource
|
||||||
|
@sessionDependenciesRegistered[session.id] = true
|
||||||
|
return
|
||||||
return unless @level.get('type', true) in ['hero', 'hero-ladder', 'hero-coop']
|
return unless @level.get('type', true) in ['hero', 'hero-ladder', 'hero-coop']
|
||||||
heroConfig = session.get('heroConfig')
|
heroConfig = session.get('heroConfig')
|
||||||
heroConfig ?= me.get('heroConfig') if session is @session and not @headless
|
heroConfig ?= me.get('heroConfig') if session is @session and not @headless
|
||||||
|
@ -322,6 +334,9 @@ module.exports = class LevelLoader extends CocoClass
|
||||||
@worldNecessities = (r for r in @worldNecessities when r?)
|
@worldNecessities = (r for r in @worldNecessities when r?)
|
||||||
@onWorldNecessitiesLoaded() if @checkAllWorldNecessitiesRegisteredAndLoaded()
|
@onWorldNecessitiesLoaded() if @checkAllWorldNecessitiesRegisteredAndLoaded()
|
||||||
|
|
||||||
|
onWorldNecessityLoadFailed: (resource) ->
|
||||||
|
@trigger('world-necessity-load-failed', resource: resource)
|
||||||
|
|
||||||
checkAllWorldNecessitiesRegisteredAndLoaded: ->
|
checkAllWorldNecessitiesRegisteredAndLoaded: ->
|
||||||
return false unless _.filter(@worldNecessities).length is 0
|
return false unless _.filter(@worldNecessities).length is 0
|
||||||
return false unless @thangNamesLoaded
|
return false unless @thangNamesLoaded
|
||||||
|
@ -330,6 +345,7 @@ module.exports = class LevelLoader extends CocoClass
|
||||||
true
|
true
|
||||||
|
|
||||||
onWorldNecessitiesLoaded: ->
|
onWorldNecessitiesLoaded: ->
|
||||||
|
console.log "World necessities loaded."
|
||||||
@initWorld()
|
@initWorld()
|
||||||
@supermodel.clearMaxProgress()
|
@supermodel.clearMaxProgress()
|
||||||
@trigger 'world-necessities-loaded'
|
@trigger 'world-necessities-loaded'
|
||||||
|
|
|
@ -157,6 +157,8 @@ module.exports =
|
||||||
session = _.find classroom.sessions.models, (session) ->
|
session = _.find classroom.sessions.models, (session) ->
|
||||||
session.get('creator') is userID and session.get('level').original is levelID
|
session.get('creator') is userID and session.get('level').original is levelID
|
||||||
|
|
||||||
|
courseProgress[levelID][userID].session = session
|
||||||
|
|
||||||
if not session # haven't gotten to this level yet, but might have completed others before
|
if not session # haven't gotten to this level yet, but might have completed others before
|
||||||
courseProgress.started ||= false #no-op
|
courseProgress.started ||= false #no-op
|
||||||
courseProgress.completed = false
|
courseProgress.completed = false
|
||||||
|
|
|
@ -57,11 +57,11 @@ module.exports = class CountdownScreen extends CocoClass
|
||||||
else
|
else
|
||||||
@endCountdown()
|
@endCountdown()
|
||||||
|
|
||||||
hide: ->
|
hide: (duration=500) ->
|
||||||
return unless @showing
|
return unless @showing
|
||||||
@showing = false
|
@showing = false
|
||||||
createjs.Tween.removeTweens @dimLayer
|
createjs.Tween.removeTweens @dimLayer
|
||||||
createjs.Tween.get(@dimLayer).to({alpha: 0}, 500).call => @layer.removeChild @dimLayer unless @destroyed
|
createjs.Tween.get(@dimLayer).to({alpha: 0}, duration).call => @layer.removeChild @dimLayer unless @destroyed
|
||||||
|
|
||||||
decrementCountdown: =>
|
decrementCountdown: =>
|
||||||
return if @destroyed
|
return if @destroyed
|
||||||
|
@ -85,4 +85,4 @@ module.exports = class CountdownScreen extends CocoClass
|
||||||
onRealTimePlaybackEnded: (e) ->
|
onRealTimePlaybackEnded: (e) ->
|
||||||
clearInterval @countdownInterval if @countdownInterval
|
clearInterval @countdownInterval if @countdownInterval
|
||||||
@countdownInterval = null
|
@countdownInterval = null
|
||||||
@hide()
|
@hide Math.max(500, 1000 * (@secondsRemaining or 0))
|
||||||
|
|
|
@ -74,16 +74,16 @@ module.exports = class Label extends CocoClass
|
||||||
o.marginY = {D: 6, S: 4, N: 3}[st]
|
o.marginY = {D: 6, S: 4, N: 3}[st]
|
||||||
o.fontWeight = {D: 'bold', S: 'bold', N: 'bold'}[st]
|
o.fontWeight = {D: 'bold', S: 'bold', N: 'bold'}[st]
|
||||||
o.shadow = {D: false, S: true, N: true}[st]
|
o.shadow = {D: false, S: true, N: true}[st]
|
||||||
o.shadowColor = {D: '#FFF', S: '#000', N: '#FFF'}[st]
|
o.shadowColor = {D: '#FFF', S: '#000', N: '#000'}[st]
|
||||||
o.fontSize = {D: 25, S: 12, N: 24}[st]
|
o.fontSize = {D: 25, S: 12, N: 24}[st]
|
||||||
fontFamily = {D: 'Arial', S: 'Arial', N: 'Arial'}[st]
|
fontFamily = {D: 'Arial', S: 'Arial', N: 'Arial'}[st]
|
||||||
o.fontDescriptor = "#{o.fontWeight} #{o.fontSize}px #{fontFamily}"
|
o.fontDescriptor = "#{o.fontWeight} #{o.fontSize}px #{fontFamily}"
|
||||||
o.fontColor = {D: '#000', S: '#FFF', N: '#0a0'}[st]
|
o.fontColor = {D: '#000', S: '#FFF', N: '#6c6'}[st]
|
||||||
if @style is 'name' and @sprite?.thang?.team is 'humans'
|
if @style is 'name' and @sprite?.thang?.team is 'humans'
|
||||||
o.fontColor = '#a00'
|
o.fontColor = '#c66'
|
||||||
else if @style is 'name' and @sprite?.thang?.team is 'ogres'
|
else if @style is 'name' and @sprite?.thang?.team is 'ogres'
|
||||||
o.fontColor = '#00a'
|
o.fontColor = '#66c'
|
||||||
o.backgroundFillColor = {D: 'white', S: 'rgba(0,0,0,0.4)', N: 'rgba(255,255,255,0.5)'}[st]
|
o.backgroundFillColor = {D: 'white', S: 'rgba(0,0,0,0.4)', N: 'rgba(0,0,0,0.7)'}[st]
|
||||||
o.backgroundStrokeColor = {D: 'black', S: 'rgba(0,0,0,0.6)', N: 'rgba(0,0,0,0)'}[st]
|
o.backgroundStrokeColor = {D: 'black', S: 'rgba(0,0,0,0.6)', N: 'rgba(0,0,0,0)'}[st]
|
||||||
o.backgroundStrokeStyle = {D: 2, S: 1, N: 1}[st]
|
o.backgroundStrokeStyle = {D: 2, S: 1, N: 1}[st]
|
||||||
o.backgroundBorderRadius = {D: 10, S: 3, N: 3}[st]
|
o.backgroundBorderRadius = {D: 10, S: 3, N: 3}[st]
|
||||||
|
|
|
@ -3,6 +3,7 @@ module.exports.thangNames = thangNames =
|
||||||
# Female
|
# Female
|
||||||
'Alali'
|
'Alali'
|
||||||
'Anabel'
|
'Anabel'
|
||||||
|
'Delma'
|
||||||
'Dosha'
|
'Dosha'
|
||||||
'Gurzunn'
|
'Gurzunn'
|
||||||
'Hoot'
|
'Hoot'
|
||||||
|
@ -22,6 +23,7 @@ module.exports.thangNames = thangNames =
|
||||||
# Male
|
# Male
|
||||||
'Blob'
|
'Blob'
|
||||||
'Brack'
|
'Brack'
|
||||||
|
'Cragg'
|
||||||
'Dobo'
|
'Dobo'
|
||||||
'Draff'
|
'Draff'
|
||||||
'Eugen'
|
'Eugen'
|
||||||
|
@ -72,6 +74,7 @@ module.exports.thangNames = thangNames =
|
||||||
'Pinakin'
|
'Pinakin'
|
||||||
'Rakash'
|
'Rakash'
|
||||||
'Rasha'
|
'Rasha'
|
||||||
|
'Savatha'
|
||||||
'Vujii'
|
'Vujii'
|
||||||
'Wuda'
|
'Wuda'
|
||||||
'Yetu'
|
'Yetu'
|
||||||
|
@ -108,6 +111,7 @@ module.exports.thangNames = thangNames =
|
||||||
]
|
]
|
||||||
'Ogre Warlock': [
|
'Ogre Warlock': [
|
||||||
# Male
|
# Male
|
||||||
|
'Gronak'
|
||||||
'Sorgoth'
|
'Sorgoth'
|
||||||
'Vax'
|
'Vax'
|
||||||
'Vyrryx'
|
'Vyrryx'
|
||||||
|
@ -145,31 +149,14 @@ module.exports.thangNames = thangNames =
|
||||||
'Ofgar'
|
'Ofgar'
|
||||||
'Randall'
|
'Randall'
|
||||||
]
|
]
|
||||||
'Raven Pet': [
|
# Pets only have one name
|
||||||
# Animal
|
'Raven Pet': ['Nevermore']
|
||||||
'Nevermore'
|
'Cougar Pet': ['Kitty']
|
||||||
]
|
'Frog Pet': ['Hypnotoad']
|
||||||
'Cougar Pet': [
|
'Griffin Pet': ['']
|
||||||
# Animal
|
'Pugicorn Pet': ['']
|
||||||
'Kitty'
|
'Polar Bear Pet': ['']
|
||||||
]
|
'Wolf Pet': ['']
|
||||||
'Frog Pet': [
|
|
||||||
# Animal
|
|
||||||
'Bighead'
|
|
||||||
'Bufo'
|
|
||||||
'Bunda'
|
|
||||||
'Dan\'l Webster'
|
|
||||||
'Freddy'
|
|
||||||
'Frogger'
|
|
||||||
'Froggy'
|
|
||||||
'Hypnotoad'
|
|
||||||
'Mr. Toad'
|
|
||||||
'Slippy'
|
|
||||||
'Toada'
|
|
||||||
'Trevor'
|
|
||||||
'Wart'
|
|
||||||
'Wei Qi'
|
|
||||||
]
|
|
||||||
'Horse': [
|
'Horse': [
|
||||||
# Animal
|
# Animal
|
||||||
'Abby'
|
'Abby'
|
||||||
|
@ -606,6 +593,7 @@ module.exports.thangNames = thangNames =
|
||||||
'Hugo'
|
'Hugo'
|
||||||
'Ieyasu'
|
'Ieyasu'
|
||||||
'Jack'
|
'Jack'
|
||||||
|
'Jackson'
|
||||||
'James'
|
'James'
|
||||||
'Jason'
|
'Jason'
|
||||||
'Jax'
|
'Jax'
|
||||||
|
|
|
@ -108,7 +108,7 @@ module.exports = class ThangState
|
||||||
storage = @trackedPropertyValues[propIndex]
|
storage = @trackedPropertyValues[propIndex]
|
||||||
value = @getStoredProp propIndex, type, storage
|
value = @getStoredProp propIndex, type, storage
|
||||||
if prop is 'pos'
|
if prop is 'pos'
|
||||||
if @thang.teleport and @thang.pos.distanceSquared(value) > 900
|
if (@thang.teleport and @thang.pos.distanceSquared(value) > 900) or (@thang.pos.x is 0 and @thang.pos.y is 0)
|
||||||
# Don't interpolate; it was probably a teleport. https://github.com/codecombat/codecombat/issues/738
|
# Don't interpolate; it was probably a teleport. https://github.com/codecombat/codecombat/issues/738
|
||||||
@thang.pos = value
|
@thang.pos = value
|
||||||
else
|
else
|
||||||
|
|
|
@ -5,14 +5,14 @@ class Vector
|
||||||
for name in ['add', 'subtract', 'multiply', 'divide', 'limit', 'normalize', 'rotate']
|
for name in ['add', 'subtract', 'multiply', 'divide', 'limit', 'normalize', 'rotate']
|
||||||
do (name) ->
|
do (name) ->
|
||||||
Vector[name] = (a, b, useZ) ->
|
Vector[name] = (a, b, useZ) ->
|
||||||
a.copy()["#{name}Self"](b, useZ)
|
a.copy()[name](b, useZ)
|
||||||
for name in ['magnitude', 'heading', 'distance', 'dot', 'equals', 'copy', 'distanceSquared']
|
for name in ['magnitude', 'heading', 'distance', 'dot', 'equals', 'copy', 'distanceSquared']
|
||||||
do (name) ->
|
do (name) ->
|
||||||
Vector[name] = (a, b, useZ) ->
|
Vector[name] = (a, b, useZ) ->
|
||||||
a[name](b, useZ)
|
a[name](b, useZ)
|
||||||
|
|
||||||
isVector: true
|
isVector: true
|
||||||
apiProperties: ['x', 'y', 'z', 'magnitude', 'heading', 'distance', 'dot', 'equals', 'copy', 'distanceSquared', 'rotate', 'add', 'subtract', 'multiply', 'divide', 'limit', 'normalize', 'rotate']
|
apiProperties: ['x', 'y', 'z', 'magnitude', 'heading', 'distance', 'dot', 'equals', 'copy', 'distanceSquared', 'add', 'subtract', 'multiply', 'divide', 'limit', 'normalize', 'rotate']
|
||||||
|
|
||||||
constructor: (x=0, y=0, z=0) ->
|
constructor: (x=0, y=0, z=0) ->
|
||||||
return new Vector x, y, z unless @ instanceof Vector
|
return new Vector x, y, z unless @ instanceof Vector
|
||||||
|
@ -24,68 +24,67 @@ class Vector
|
||||||
|
|
||||||
# Mutating methods:
|
# Mutating methods:
|
||||||
|
|
||||||
normalizeSelf: (useZ) ->
|
normalize: (useZ) ->
|
||||||
m = @magnitude useZ
|
m = @magnitude useZ
|
||||||
@divideSelf m, useZ if m > 0
|
@divide m, useZ if m > 0
|
||||||
@
|
@
|
||||||
|
|
||||||
normalize: (useZ) ->
|
esper_normalize: (useZ) ->
|
||||||
# Hack to detect when we are in player code so we can avoid mutation
|
@copy().normalize(useZ)
|
||||||
(if @__aetherAPIValue? then @copy() else @).normalizeSelf(useZ)
|
|
||||||
|
|
||||||
limitSelf: (max) ->
|
limit: (max) ->
|
||||||
if @magnitude() > max
|
if @magnitude() > max
|
||||||
@normalizeSelf()
|
@normalize()
|
||||||
@multiplySelf(max)
|
@multiply(max)
|
||||||
else
|
else
|
||||||
@
|
@
|
||||||
|
|
||||||
limit: (useZ) ->
|
esper_limit: (max) ->
|
||||||
(if @__aetherAPIValue? then @copy() else @).limitSelf(useZ)
|
@copy().limit(max)
|
||||||
|
|
||||||
subtractSelf: (other, useZ) ->
|
subtract: (other, useZ) ->
|
||||||
@x -= other.x
|
@x -= other.x
|
||||||
@y -= other.y
|
@y -= other.y
|
||||||
@z -= other.z if useZ
|
@z -= other.z if useZ
|
||||||
@
|
@
|
||||||
|
|
||||||
subtract: (other, useZ) ->
|
esper_subtract: (other, useZ) ->
|
||||||
(if @__aetherAPIValue? then @copy() else @).subtractSelf(other, useZ)
|
@copy().subtract(other, useZ)
|
||||||
|
|
||||||
addSelf: (other, useZ) ->
|
add: (other, useZ) ->
|
||||||
@x += other.x
|
@x += other.x
|
||||||
@y += other.y
|
@y += other.y
|
||||||
@z += other.z if useZ
|
@z += other.z if useZ
|
||||||
@
|
@
|
||||||
|
|
||||||
add: (other, useZ) ->
|
esper_add: (other, useZ) ->
|
||||||
(if @__aetherAPIValue? then @copy() else @).addSelf(other, useZ)
|
@copy().add(other, useZ)
|
||||||
|
|
||||||
divideSelf: (n, useZ) ->
|
divide: (n, useZ) ->
|
||||||
[@x, @y] = [@x / n, @y / n]
|
[@x, @y] = [@x / n, @y / n]
|
||||||
@z = @z / n if useZ
|
@z = @z / n if useZ
|
||||||
@
|
@
|
||||||
|
|
||||||
divide: (n, useZ) ->
|
esper_divide: (n, useZ) ->
|
||||||
(if @__aetherAPIValue? then @copy() else @).divideSelf(n, useZ)
|
@copy().divide(n, useZ)
|
||||||
|
|
||||||
multiplySelf: (n, useZ) ->
|
multiply: (n, useZ) ->
|
||||||
[@x, @y] = [@x * n, @y * n]
|
[@x, @y] = [@x * n, @y * n]
|
||||||
@z = @z * n if useZ
|
@z = @z * n if useZ
|
||||||
@
|
@
|
||||||
|
|
||||||
multiply: (n, useZ) ->
|
esper_multiply: (n, useZ) ->
|
||||||
(if @__aetherAPIValue? then @copy() else @).multiplySelf(n, useZ)
|
@copy().multiply(n, useZ)
|
||||||
|
|
||||||
# Rotate it around the origin
|
# Rotate it around the origin
|
||||||
# If we ever want to make this also use z: https://en.wikipedia.org/wiki/Axes_conventions
|
# If we ever want to make this also use z: https://en.wikipedia.org/wiki/Axes_conventions
|
||||||
rotateSelf: (theta) ->
|
rotate: (theta) ->
|
||||||
return @ unless theta
|
return @ unless theta
|
||||||
[@x, @y] = [Math.cos(theta) * @x - Math.sin(theta) * @y, Math.sin(theta) * @x + Math.cos(theta) * @y]
|
[@x, @y] = [Math.cos(theta) * @x - Math.sin(theta) * @y, Math.sin(theta) * @x + Math.cos(theta) * @y]
|
||||||
@
|
@
|
||||||
|
|
||||||
rotate: (theta) ->
|
esper_rotate: (theta) ->
|
||||||
(if @__aetherAPIValue? then @copy() else @).rotateSelf(theta)
|
@copy().rotate(theta)
|
||||||
|
|
||||||
# Non-mutating methods:
|
# Non-mutating methods:
|
||||||
|
|
||||||
|
@ -127,7 +126,7 @@ class Vector
|
||||||
|
|
||||||
# Not the strict projection, the other isn't converted to a unit vector first.
|
# Not the strict projection, the other isn't converted to a unit vector first.
|
||||||
projectOnto: (other, useZ) ->
|
projectOnto: (other, useZ) ->
|
||||||
other.copy().multiplySelf(@dot(other, useZ), useZ)
|
other.copy().multiply(@dot(other, useZ), useZ)
|
||||||
|
|
||||||
isZero: (useZ) ->
|
isZero: (useZ) ->
|
||||||
result = @x is 0 and @y is 0
|
result = @x is 0 and @y is 0
|
||||||
|
|
|
@ -364,8 +364,8 @@ module.exports = class World
|
||||||
endFrame = @frames.length
|
endFrame = @frames.length
|
||||||
#console.log "... world serializing frames from", startFrame, "to", endFrame, "of", @totalFrames
|
#console.log "... world serializing frames from", startFrame, "to", endFrame, "of", @totalFrames
|
||||||
[transferableObjects, nontransferableObjects] = [0, 0]
|
[transferableObjects, nontransferableObjects] = [0, 0]
|
||||||
delete flag.processed for flag in @flagHistory
|
serializedFlagHistory = (_.omit(_.clone(flag), 'processed') for flag in @flagHistory)
|
||||||
o = {totalFrames: @totalFrames, maxTotalFrames: @maxTotalFrames, frameRate: @frameRate, dt: @dt, victory: @victory, userCodeMap: {}, trackedProperties: {}, flagHistory: @flagHistory, difficulty: @difficulty, scores: @getScores(), randomSeed: @randomSeed, picoCTFFlag: @picoCTFFlag}
|
o = {totalFrames: @totalFrames, maxTotalFrames: @maxTotalFrames, frameRate: @frameRate, dt: @dt, victory: @victory, userCodeMap: {}, trackedProperties: {}, flagHistory: serializedFlagHistory, difficulty: @difficulty, scores: @getScores(), randomSeed: @randomSeed, picoCTFFlag: @picoCTFFlag}
|
||||||
o.trackedProperties[prop] = @[prop] for prop in @trackedProperties or []
|
o.trackedProperties[prop] = @[prop] for prop in @trackedProperties or []
|
||||||
|
|
||||||
for thangID, methods of @userCodeMap
|
for thangID, methods of @userCodeMap
|
||||||
|
|
|
@ -4,7 +4,7 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
|
||||||
no_ie: "CodeCombat läuft nicht im IE8 oder älteren Browsern. Tut uns Leid!" # Warning that only shows up in IE8 and older
|
no_ie: "CodeCombat läuft nicht im IE8 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
|
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: "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 Kampagnen Version" # Shows up under big play button if you only play /courses
|
||||||
old_browser: "Oh! Dein Browser ist zu alt für CodeCombat. Sorry!" # Warning that shows up on really old Firefox/Chrome/Safari
|
old_browser: "Oh! Dein Browser ist zu alt für CodeCombat. Sorry!" # Warning that shows up on really old Firefox/Chrome/Safari
|
||||||
old_browser_suffix: "Du kannst es trotzdem versuchen, aber es wird wahrscheinlich nicht funktionieren."
|
old_browser_suffix: "Du kannst es trotzdem versuchen, aber es wird wahrscheinlich nicht funktionieren."
|
||||||
ipad_browser: "Schlechte Nachricht: CodeCombat funktioniert im iPad-Browser nicht. Gute Nachricht: Unsere iPad App wartet auf das OK von Apple."
|
ipad_browser: "Schlechte Nachricht: CodeCombat funktioniert im iPad-Browser nicht. Gute Nachricht: Unsere iPad App wartet auf das OK von Apple."
|
||||||
|
@ -97,12 +97,12 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
|
||||||
nav:
|
nav:
|
||||||
play: "Spielen" # The top nav bar entry where players choose which levels to play
|
play: "Spielen" # The top nav bar entry where players choose which levels to play
|
||||||
community: "Community"
|
community: "Community"
|
||||||
# courses: "Courses"
|
courses: "Kurse"
|
||||||
editor: "Editor"
|
editor: "Editor"
|
||||||
blog: "Blog"
|
blog: "Blog"
|
||||||
forum: "Forum"
|
forum: "Forum"
|
||||||
account: "Account"
|
account: "Account"
|
||||||
# my_account: "My Account"
|
my_account: "Mein Account"
|
||||||
profile: "Profil"
|
profile: "Profil"
|
||||||
stats: "Statistiken"
|
stats: "Statistiken"
|
||||||
code: "Code"
|
code: "Code"
|
||||||
|
@ -112,24 +112,24 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
|
||||||
about: "Über"
|
about: "Über"
|
||||||
contact: "Kontakt"
|
contact: "Kontakt"
|
||||||
twitter_follow: "Twitter"
|
twitter_follow: "Twitter"
|
||||||
# students: "Students"
|
students: "Studenten"
|
||||||
teachers: "Lehrer"
|
teachers: "Lehrer"
|
||||||
# careers: "Careers"
|
careers: "Berufe"
|
||||||
# facebook: "Facebook"
|
facebook: "Facebook"
|
||||||
# twitter: "Twitter"
|
twitter: "Twitter"
|
||||||
# create_a_class: "Create a Class"
|
create_a_class: "Erstelle eine Klasse"
|
||||||
# other: "Other"
|
other: "Andere"
|
||||||
# learn_to_code: "Learn to Code!"
|
learn_to_code: "Lerne zu programmieren!"
|
||||||
# toggle_nav: "Toggle navigation"
|
toggle_nav: "Navigation umschalten"
|
||||||
# jobs: "Jobs"
|
jobs: "Jobs"
|
||||||
# schools: "Schools"
|
schools: "Schule"
|
||||||
# educator_wiki: "Educator Wiki"
|
educator_wiki: "Educator Wiki"
|
||||||
# get_involved: "Get Involved"
|
get_involved: "Werde eingebunden"
|
||||||
# open_source: "Open source (GitHub)"
|
open_source: "Open source (GitHub)"
|
||||||
# support: "Support"
|
support: "Support"
|
||||||
# faqs: "FAQs"
|
faqs: "FAQs"
|
||||||
# help_pref: "Need help? Email"
|
help_pref: "Brauchst du Hilfe? Email"
|
||||||
# help_suff: "and we'll get in touch!"
|
help_suff: "und wir treten in Kontakt!"
|
||||||
|
|
||||||
modal:
|
modal:
|
||||||
close: "Schließen"
|
close: "Schließen"
|
||||||
|
@ -148,18 +148,18 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
|
||||||
|
|
||||||
play:
|
play:
|
||||||
play_as: "Spiele als " # Ladder page
|
play_as: "Spiele als " # Ladder page
|
||||||
# compete: "Compete!" # Course details page
|
compete: "Abgeschlossen!" # Course details page
|
||||||
spectate: "Zuschauen" # Ladder page
|
spectate: "Zuschauen" # Ladder page
|
||||||
players: "Spieler" # Hover over a level on /play
|
players: "Spieler" # Hover over a level on /play
|
||||||
hours_played: "Stunden gespielt" # Hover over a level on /play
|
hours_played: "Stunden gespielt" # Hover over a level on /play
|
||||||
items: "Gegenstände" # Tooltip on item shop button from /play
|
items: "Gegenstände" # Tooltip on item shop button from /play
|
||||||
# unlock: "Unlock" # For purchasing items and heroes
|
unlock: "Kaufen" # For purchasing items and heroes
|
||||||
confirm: "Bestätigen"
|
confirm: "Bestätigen"
|
||||||
# owned: "Owned" # For items you own
|
owned: "bereits im Besitz" # For items you own
|
||||||
locked: "Gesperrt"
|
locked: "Gesperrt"
|
||||||
# purchasable: "Purchasable" # For a hero you unlocked but haven't purchased
|
purchasable: "Erhältlich" # For a hero you unlocked but haven't purchased
|
||||||
available: "Verfügbar"
|
available: "Verfügbar"
|
||||||
# skills_granted: "Skills Granted" # Property documentation details
|
skills_granted: "Freischaltbare Fähigkeiten" # Property documentation details
|
||||||
heroes: "Helden" # Tooltip on hero shop button from /play
|
heroes: "Helden" # Tooltip on hero shop button from /play
|
||||||
achievements: "Erfolge" # Tooltip on achievement list button from /play
|
achievements: "Erfolge" # Tooltip on achievement list button from /play
|
||||||
account: "Account" # Tooltip on account button from /play
|
account: "Account" # Tooltip on account button from /play
|
||||||
|
@ -168,69 +168,69 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
|
||||||
next: "Weiter" # Go from choose hero to choose inventory before playing a level
|
next: "Weiter" # Go from choose hero to choose inventory before playing a level
|
||||||
change_hero: "Held wechseln" # Go back from choose inventory to choose hero
|
change_hero: "Held wechseln" # Go back from choose inventory to choose hero
|
||||||
buy_gems: "Juwelen kaufen"
|
buy_gems: "Juwelen kaufen"
|
||||||
# subscription_required: "Subscription Required"
|
subscription_required: "Abonnement benötigt"
|
||||||
anonymous: "Anonymer Spieler"
|
anonymous: "Anonymer Spieler"
|
||||||
level_difficulty: "Schwierigkeit: "
|
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 Kurs Version" # Choose a level in campaign version that you also can play in one of your courses
|
||||||
campaign_beginner: "Anfängerkampagne"
|
campaign_beginner: "Anfängerkampagne"
|
||||||
# awaiting_levels_adventurer_prefix: "We release new levels every week."
|
awaiting_levels_adventurer_prefix: "Wir veröffentlichen wöchentlichen neu Levels."
|
||||||
# awaiting_levels_adventurer: "Sign up as an Adventurer"
|
awaiting_levels_adventurer: "Melde dich als Abenteuerer an"
|
||||||
# awaiting_levels_adventurer_suffix: "to be the first to play new levels."
|
awaiting_levels_adventurer_suffix: "um der erste zu sein der neue Levels spielt."
|
||||||
# adjust_volume: "Adjust volume"
|
adjust_volume: "Lautstärke anpassen"
|
||||||
campaign_multiplayer: "Multiplayerarena"
|
campaign_multiplayer: "Multiplayerarena"
|
||||||
campaign_multiplayer_description: "... in der Du Kopf-an-Kopf gegen andere Spieler programmierst."
|
campaign_multiplayer_description: "... in der Du Kopf-an-Kopf gegen andere Spieler programmierst."
|
||||||
# campaign_old_multiplayer: "(Deprecated) Old Multiplayer Arenas"
|
campaign_old_multiplayer: "(Veraltet) Alte Multiplayer Arenen"
|
||||||
# campaign_old_multiplayer_description: "Relics of a more civilized age. No simulations are run for these older, hero-less multiplayer arenas."
|
campaign_old_multiplayer_description: "Relikte eines zivilisierteren Zeitalters. Es werden keine Simulationen für diese älteren, heldenlosen Mehrspieler Arenen durchgeführt."
|
||||||
|
|
||||||
# code:
|
code:
|
||||||
# if: "if" # Keywords--these translations show up on hover, so please translate them all, even if it's kind of long. (In the code editor, they will still be in English.)
|
if: "wenn" # Keywords--these translations show up on hover, so please translate them all, even if it's kind of long. (In the code editor, they will still be in English.)
|
||||||
# else: "else"
|
else: "sonst"
|
||||||
# elif: "else if"
|
elif: "sonst wenn"
|
||||||
# while: "while"
|
while: "so lange"
|
||||||
# loop: "loop"
|
loop: "schleife"
|
||||||
# for: "for"
|
for: "für"
|
||||||
# break: "break"
|
break: "pause"
|
||||||
# continue: "continue"
|
continue: "fortsetzen"
|
||||||
# pass: "pass"
|
pass: "bestehen"
|
||||||
# return: "return"
|
return: "zurückgeben"
|
||||||
# then: "then"
|
then: "dann"
|
||||||
# do: "do"
|
do: "mache"
|
||||||
# end: "end"
|
end: "ende"
|
||||||
# function: "function"
|
function: "funktion"
|
||||||
# def: "define"
|
def: "definiere"
|
||||||
# var: "variable"
|
var: "variable"
|
||||||
# self: "self"
|
self: "selbst"
|
||||||
# hero: "hero"
|
hero: "held"
|
||||||
# this: "this"
|
this: "dies"
|
||||||
# or: "or"
|
or: "oder"
|
||||||
# "||": "or"
|
"||": "oder"
|
||||||
# and: "and"
|
and: "und"
|
||||||
# "&&": "and"
|
"&&": "und"
|
||||||
# not: "not"
|
not: "nicht"
|
||||||
# "!": "not"
|
"!": "nicht"
|
||||||
# "=": "assign"
|
"=": "zuweisen"
|
||||||
# "==": "equals"
|
"==": "entspricht"
|
||||||
# "===": "strictly equals"
|
"===": "entspricht strikt"
|
||||||
# "!=": "does not equal"
|
"!=": "entspricht nicht"
|
||||||
# "!==": "does not strictly equal"
|
"!==": "entspricht strikt nicht"
|
||||||
# ">": "is greater than"
|
">": "ist größer als"
|
||||||
# ">=": "is greater than or equal"
|
">=": "ist größer als oder gleich"
|
||||||
# "<": "is less than"
|
"<": "ist kleiner als"
|
||||||
# "<=": "is less than or equal"
|
"<=": "ist kleiner als oder gleich"
|
||||||
# "*": "multiplied by"
|
"*": "multipliziert um"
|
||||||
# "/": "divided by"
|
"/": "dividiert durch"
|
||||||
# "+": "plus"
|
"+": "plus"
|
||||||
# "-": "minus"
|
"-": "minus"
|
||||||
# "+=": "add and assign"
|
"+=": "addieren und zuweisen"
|
||||||
# "-=": "subtract and assign"
|
"-=": "subtrahieren und zuweisen"
|
||||||
# True: "True"
|
True: "Wahr"
|
||||||
# true: "true"
|
true: "wahr"
|
||||||
# False: "False"
|
False: "Falsch"
|
||||||
# false: "false"
|
false: "falsch"
|
||||||
# undefined: "undefined"
|
undefined: "undefiniert"
|
||||||
# null: "null"
|
null: "nichts"
|
||||||
# nil: "nil"
|
nil: "nichts"
|
||||||
# None: "None"
|
None: "Kein"
|
||||||
|
|
||||||
# share_progress_modal:
|
# share_progress_modal:
|
||||||
# blurb: "You’re making great progress! Tell your parent how much you've learned with CodeCombat."
|
# blurb: "You’re making great progress! Tell your parent how much you've learned with CodeCombat."
|
||||||
|
@ -260,18 +260,18 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
|
||||||
log_in: "mit Passwort einloggen"
|
log_in: "mit Passwort einloggen"
|
||||||
required: "Du musst dich vorher einloggen um dort hin zu gehen."
|
required: "Du musst dich vorher einloggen um dort hin zu gehen."
|
||||||
login_switch: "Du hast bereits einen Account?"
|
login_switch: "Du hast bereits einen Account?"
|
||||||
# school_name: "School Name and City"
|
school_name: "Schulname und Stadt"
|
||||||
# optional: "optional"
|
optional: "Optional"
|
||||||
# school_name_placeholder: "Example High School, Springfield, IL"
|
school_name_placeholder: "Beispiel Schule, Springfield, IL"
|
||||||
# or_sign_up_with: "or sign up with"
|
or_sign_up_with: "oder melde dich an mit"
|
||||||
# connected_gplus_header: "You've successfully connected with Google+!"
|
connected_gplus_header: "Du hast dich erfolgreich über Google+ verbunden!"
|
||||||
# connected_gplus_p: "Finish signing up so you can log in with your Google+ account."
|
connected_gplus_p: "Vervollständige die Anmeldung um dich mit deinem Google+ Account anzumelden."
|
||||||
# gplus_exists: "You already have an account associated with Google+!"
|
gplus_exists: "Du hast bereits einen verknüpften Google+ Account!"
|
||||||
# connected_facebook_header: "You've successfully connected with Facebook!"
|
connected_facebook_header: "Du hast dich erfolgreich über Facebook verbunden!"
|
||||||
# connected_facebook_p: "Finish signing up so you can log in with your Facebook account."
|
connected_facebook_p: "Vervollständige die Anmeldung um dich mit deinem Facebook Account anzumelden."
|
||||||
# facebook_exists: "You already have an account associated with Facebook!"
|
facebook_exists: "Du hast bereits einen verknüpften Facebook Account!"
|
||||||
# hey_students: "Students, enter the class code from your teacher."
|
hey_students: "Schüler, gebt den Klassencode eures Lehrers ein."
|
||||||
# birthday: "Birthday"
|
birthday: "Geburstag"
|
||||||
|
|
||||||
recover:
|
recover:
|
||||||
recover_account_title: "Account Wiederherstellung"
|
recover_account_title: "Account Wiederherstellung"
|
||||||
|
@ -316,23 +316,23 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
|
||||||
date: "Datum"
|
date: "Datum"
|
||||||
body: "Inhalt"
|
body: "Inhalt"
|
||||||
version: "Version"
|
version: "Version"
|
||||||
# pending: "Pending"
|
pending: "Ausstehend"
|
||||||
# accepted: "Accepted"
|
accepted: "Akzeptiert"
|
||||||
# rejected: "Rejected"
|
rejected: "Abgelehnt"
|
||||||
# withdrawn: "Withdrawn"
|
withdrawn: "Zurückgezogen"
|
||||||
# accept: "Accept"
|
accept: "Akzeptieren"
|
||||||
# reject: "Reject"
|
reject: "Abgelehnen"
|
||||||
# withdraw: "Withdraw"
|
withdraw: "Zurückziehen"
|
||||||
submitter: "Veröffentlicher"
|
submitter: "Veröffentlicher"
|
||||||
submitted: "Veröffentlicht"
|
submitted: "Veröffentlicht"
|
||||||
commit_msg: "Nachricht absenden"
|
commit_msg: "Nachricht absenden"
|
||||||
version_history: "Versionshistorie"
|
version_history: "Versionshistorie"
|
||||||
version_history_for: "Versionsgeschichte für: "
|
version_history_for: "Versionsgeschichte für: "
|
||||||
# select_changes: "Select two changes below to see the difference."
|
select_changes: "Wählen zwei Änderungen unterhalb um den Unterschied zu sehen."
|
||||||
# undo_prefix: "Undo"
|
undo_prefix: "Rückgängig"
|
||||||
# undo_shortcut: "(Ctrl+Z)"
|
undo_shortcut: "(Strg+Z)"
|
||||||
# redo_prefix: "Redo"
|
redo_prefix: "Wiederherstellen"
|
||||||
# redo_shortcut: "(Ctrl+Shift+Z)"
|
redo_shortcut: "(Strg+Umschalt+Z)"
|
||||||
play_preview: "Vorschau vom aktuellen Level spielen"
|
play_preview: "Vorschau vom aktuellen Level spielen"
|
||||||
result: "Ergebnis"
|
result: "Ergebnis"
|
||||||
results: "Ergebnisse"
|
results: "Ergebnisse"
|
||||||
|
@ -341,7 +341,7 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
|
||||||
subject: "Betreff"
|
subject: "Betreff"
|
||||||
email: "Email"
|
email: "Email"
|
||||||
password: "Passwort"
|
password: "Passwort"
|
||||||
# confirm_password: "Confirm Password"
|
confirm_password: "Passwort bestätigen"
|
||||||
message: "Nachricht"
|
message: "Nachricht"
|
||||||
code: "Code"
|
code: "Code"
|
||||||
ladder: "Rangliste"
|
ladder: "Rangliste"
|
||||||
|
@ -357,12 +357,12 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
|
||||||
hard: "Schwer"
|
hard: "Schwer"
|
||||||
player: "Spieler"
|
player: "Spieler"
|
||||||
player_level: "Spielerlevel" # Like player level 5, not like level: Dungeons of Kithgard
|
player_level: "Spielerlevel" # Like player level 5, not like level: Dungeons of Kithgard
|
||||||
# warrior: "Warrior"
|
warrior: "Krieger"
|
||||||
# ranger: "Ranger"
|
ranger: "Jäger"
|
||||||
# wizard: "Wizard"
|
wizard: "Hexer"
|
||||||
# first_name: "First Name"
|
first_name: "Vorname"
|
||||||
# last_name: "Last Name"
|
last_name: "Nachname"
|
||||||
# username: "Username"
|
username: "Benutzername"
|
||||||
|
|
||||||
units:
|
units:
|
||||||
second: "Sekunde"
|
second: "Sekunde"
|
||||||
|
@ -1869,19 +1869,19 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
|
||||||
license: "Lizenz"
|
license: "Lizenz"
|
||||||
oreilly: "Ebook deiner Wahl"
|
oreilly: "Ebook deiner Wahl"
|
||||||
|
|
||||||
# calendar:
|
calendar:
|
||||||
# year: "Year"
|
year: "Jahr"
|
||||||
# day: "Day"
|
day: "Tag"
|
||||||
# month: "Month"
|
month: "Monat"
|
||||||
# january: "January"
|
january: "Januar"
|
||||||
# february: "February"
|
february: "Februar"
|
||||||
# march: "March"
|
march: "März"
|
||||||
# april: "April"
|
april: "April"
|
||||||
# may: "May"
|
may: "Mai"
|
||||||
# june: "June"
|
june: "Juni"
|
||||||
# july: "July"
|
july: "Juli"
|
||||||
# august: "August"
|
august: "August"
|
||||||
# september: "September"
|
september: "September"
|
||||||
# october: "October"
|
october: "Oktober"
|
||||||
# november: "November"
|
november: "November"
|
||||||
# december: "December"
|
december: "Dezember"
|
||||||
|
|
|
@ -243,6 +243,7 @@
|
||||||
|
|
||||||
login:
|
login:
|
||||||
sign_up: "Create Account"
|
sign_up: "Create Account"
|
||||||
|
email_or_username: "Email or username"
|
||||||
log_in: "Log In"
|
log_in: "Log In"
|
||||||
logging_in: "Logging In"
|
logging_in: "Logging In"
|
||||||
log_out: "Log Out"
|
log_out: "Log Out"
|
||||||
|
@ -439,6 +440,8 @@
|
||||||
tome_available_spells: "Available Spells"
|
tome_available_spells: "Available Spells"
|
||||||
tome_your_skills: "Your Skills"
|
tome_your_skills: "Your Skills"
|
||||||
tome_current_method: "Current Method"
|
tome_current_method: "Current Method"
|
||||||
|
hints: "Hints"
|
||||||
|
hints_title: "Hint {{number}}"
|
||||||
code_saved: "Code Saved"
|
code_saved: "Code Saved"
|
||||||
skip_tutorial: "Skip (esc)"
|
skip_tutorial: "Skip (esc)"
|
||||||
keyboard_shortcuts: "Key Shortcuts"
|
keyboard_shortcuts: "Key Shortcuts"
|
||||||
|
@ -711,9 +714,6 @@
|
||||||
music_label: "Music"
|
music_label: "Music"
|
||||||
music_description: "Turn background music on/off."
|
music_description: "Turn background music on/off."
|
||||||
editor_config_title: "Editor Configuration"
|
editor_config_title: "Editor Configuration"
|
||||||
editor_config_keybindings_label: "Key Bindings"
|
|
||||||
editor_config_keybindings_default: "Default (Ace)"
|
|
||||||
editor_config_keybindings_description: "Adds additional shortcuts known from the common editors."
|
|
||||||
editor_config_livecompletion_label: "Live Autocompletion"
|
editor_config_livecompletion_label: "Live Autocompletion"
|
||||||
editor_config_livecompletion_description: "Displays autocomplete suggestions while typing."
|
editor_config_livecompletion_description: "Displays autocomplete suggestions while typing."
|
||||||
editor_config_invisibles_label: "Show Invisibles"
|
editor_config_invisibles_label: "Show Invisibles"
|
||||||
|
@ -1279,7 +1279,8 @@
|
||||||
student_age_range_to: "to"
|
student_age_range_to: "to"
|
||||||
create_class: "Create Class"
|
create_class: "Create Class"
|
||||||
class_name: "Class Name"
|
class_name: "Class Name"
|
||||||
teacher_account_restricted: "Your account is a teacher account, and so cannot access student content."
|
teacher_account_restricted: "Your account is a teacher account and cannot access student content." # {change}
|
||||||
|
account_restricted: "A student account is required to access this page."
|
||||||
update_account_login_title: "Log in to update your account"
|
update_account_login_title: "Log in to update your account"
|
||||||
update_account_title: "Your account needs attention!"
|
update_account_title: "Your account needs attention!"
|
||||||
update_account_blurb: "Before you can access your classes, choose how you want to use this account."
|
update_account_blurb: "Before you can access your classes, choose how you want to use this account."
|
||||||
|
@ -1316,6 +1317,9 @@
|
||||||
sent_verification: "We've sent a verification email to:"
|
sent_verification: "We've sent a verification email to:"
|
||||||
you_can_edit: "You can edit your email address in "
|
you_can_edit: "You can edit your email address in "
|
||||||
account_settings: "Account Settings"
|
account_settings: "Account Settings"
|
||||||
|
select_your_hero: "Select Your Hero"
|
||||||
|
select_your_hero_description: "You can always change your hero by going to your Courses page and clicking \"Select Hero\""
|
||||||
|
select_this_hero: "Select this Hero"
|
||||||
|
|
||||||
teacher:
|
teacher:
|
||||||
teacher_dashboard: "Teacher Dashboard" # Navbar
|
teacher_dashboard: "Teacher Dashboard" # Navbar
|
||||||
|
@ -1341,6 +1345,7 @@
|
||||||
unarchive_class: "unarchive class"
|
unarchive_class: "unarchive class"
|
||||||
unarchive_this_class: "Unarchive this class"
|
unarchive_this_class: "Unarchive this class"
|
||||||
no_students_yet: "This class has no students yet."
|
no_students_yet: "This class has no students yet."
|
||||||
|
try_refreshing: "(You may need to refresh the page)"
|
||||||
add_students: "Add Students"
|
add_students: "Add Students"
|
||||||
create_new_class: "Create a New Class"
|
create_new_class: "Create a New Class"
|
||||||
class_overview: "Class Overview" # View Class page
|
class_overview: "Class Overview" # View Class page
|
||||||
|
@ -1423,6 +1428,7 @@
|
||||||
status_expired: "Expired on {{date}}"
|
status_expired: "Expired on {{date}}"
|
||||||
status_not_enrolled: "Not Enrolled"
|
status_not_enrolled: "Not Enrolled"
|
||||||
status_enrolled: "Expires on {{date}}"
|
status_enrolled: "Expires on {{date}}"
|
||||||
|
select_all: "Select All"
|
||||||
|
|
||||||
classes:
|
classes:
|
||||||
archmage_title: "Archmage"
|
archmage_title: "Archmage"
|
||||||
|
|
|
@ -27,7 +27,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
classroom_in_a_box: "Un aula prediseñada para enseñar informática."
|
classroom_in_a_box: "Un aula prediseñada para enseñar informática."
|
||||||
codecombat_is: "CodeCombat es una plataforma para que los estudiantes aprendan informática mientras están jugando un juego de verdad." # {change}
|
codecombat_is: "CodeCombat es una plataforma para que los estudiantes aprendan informática mientras están jugando un juego de verdad." # {change}
|
||||||
our_courses: "Nuestros cursos fueron probados especificamente para destacarse en el aula, incluso con maestros con poca o ninguna experiencia previa en programación." # {change}
|
our_courses: "Nuestros cursos fueron probados especificamente para destacarse en el aula, incluso con maestros con poca o ninguna experiencia previa en programación." # {change}
|
||||||
# top_screenshots_hint: "Students write code and see their changes update in real-time"
|
top_screenshots_hint: "Los estudiantes escriben código y ven sus cambios actualizarse en tiempo real"
|
||||||
designed_with: "Diseñado teniendo en cuenta a los maestros"
|
designed_with: "Diseñado teniendo en cuenta a los maestros"
|
||||||
real_code: "Escritura real de código"
|
real_code: "Escritura real de código"
|
||||||
from_the_first_level: "desde el primer nivel"
|
from_the_first_level: "desde el primer nivel"
|
||||||
|
@ -57,12 +57,12 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
real_game: "Un juego de verdad, jugado con código auténtico."
|
real_game: "Un juego de verdad, jugado con código auténtico."
|
||||||
great_game: "Un gran juego es más que solo medallas y logros - se trata sobre una travesía del jugador, acertijos bien diseñados, y la habilidad de abordar desafios con voluntad y confianza."
|
great_game: "Un gran juego es más que solo medallas y logros - se trata sobre una travesía del jugador, acertijos bien diseñados, y la habilidad de abordar desafios con voluntad y confianza."
|
||||||
agency: "CodeCombat es un juego que ofrece a los jugadores esa voluntad y confianza mediante nuestro motor de código robusto, que ayuda tanto a principiantes como a estudiantes avanzados por igual a escribir código correcto y válido."
|
agency: "CodeCombat es un juego que ofrece a los jugadores esa voluntad y confianza mediante nuestro motor de código robusto, que ayuda tanto a principiantes como a estudiantes avanzados por igual a escribir código correcto y válido."
|
||||||
# request_demo_title: "Get your students started today!"
|
# request_demo_title: "Get your students started hoy!"
|
||||||
# request_demo_subtitle: "Request a demo and get your students started in less than an hour."
|
# request_demo_subtitle: "Request a demo and get your students started in less than an hour."
|
||||||
# get_started_title: "Set up your class today"
|
get_started_title: "Configure su clase hoy"
|
||||||
# get_started_subtitle: "Set up a class, add your students, and monitor their progress as they learn computer science."
|
# get_started_subtitle: "Configure a class, add your students, and monitor their progress as they learn computer science."
|
||||||
request_demo: "Solicitar un Demo"
|
request_demo: "Solicitar un Demo"
|
||||||
# setup_a_class: "Set Up a Class"
|
setup_a_class: "Configurar una Clase"
|
||||||
have_an_account: "¿Ya tenes una cuenta?" # {change}
|
have_an_account: "¿Ya tenes una cuenta?" # {change}
|
||||||
logged_in_as: "Estás actualmente conectado como"
|
logged_in_as: "Estás actualmente conectado como"
|
||||||
view_my_classes: "Ver mis clases"
|
view_my_classes: "Ver mis clases"
|
||||||
|
@ -79,10 +79,10 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
teachers: "Maestros!"
|
teachers: "Maestros!"
|
||||||
teachers_and_educators: "Maestros y Educadores"
|
teachers_and_educators: "Maestros y Educadores"
|
||||||
# class_in_box: "Learn how our classroom-in-a-box platform fits into your curriculum."
|
# class_in_box: "Learn how our classroom-in-a-box platform fits into your curriculum."
|
||||||
# get_started: "Get Started"
|
get_started: "Iniciarse"
|
||||||
students: "Estudiantes:"
|
students: "Estudiantes:"
|
||||||
join_class: "Unirse a una clase"
|
join_class: "Unirse a una clase"
|
||||||
# role: "Your role:"
|
role: "Su rol:"
|
||||||
student_count: "Número de estudiantes:"
|
student_count: "Número de estudiantes:"
|
||||||
start_playing_for_free: "Empieza a jugar gratis!"
|
start_playing_for_free: "Empieza a jugar gratis!"
|
||||||
students_and_players: "Estudiantes y Jugadores"
|
students_and_players: "Estudiantes y Jugadores"
|
||||||
|
@ -90,7 +90,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
view_profile: "Ver mi perfíl"
|
view_profile: "Ver mi perfíl"
|
||||||
view_progress: "Ver mi progreso"
|
view_progress: "Ver mi progreso"
|
||||||
check_out_wiki: "Check out our new educator Wiki"
|
check_out_wiki: "Check out our new educator Wiki"
|
||||||
# want_coco: "Want CodeCombat at your school?"
|
want_coco: "¿Quisiera CodeCombat en su escuela?"
|
||||||
# form_select_role: "Select primary role"
|
# form_select_role: "Select primary role"
|
||||||
form_select_range: "Seleccione el tamaño de la clase"
|
form_select_range: "Seleccione el tamaño de la clase"
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
blog: "Blog"
|
blog: "Blog"
|
||||||
forum: "Foro"
|
forum: "Foro"
|
||||||
account: "Cuenta"
|
account: "Cuenta"
|
||||||
# my_account: "My Account"
|
my_account: "Mi Cuenta"
|
||||||
profile: "Perfil"
|
profile: "Perfil"
|
||||||
stats: "Estadísticas"
|
stats: "Estadísticas"
|
||||||
code: "Código"
|
code: "Código"
|
||||||
|
@ -112,7 +112,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
about: "Acerca"
|
about: "Acerca"
|
||||||
contact: "Contacto"
|
contact: "Contacto"
|
||||||
twitter_follow: "Seguir"
|
twitter_follow: "Seguir"
|
||||||
# students: "Students"
|
students: "Estudiantes"
|
||||||
teachers: "Maestros"
|
teachers: "Maestros"
|
||||||
careers: "Carreras"
|
careers: "Carreras"
|
||||||
facebook: "Facebook"
|
facebook: "Facebook"
|
||||||
|
@ -125,9 +125,9 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
schools: "Escuelas"
|
schools: "Escuelas"
|
||||||
# educator_wiki: "Educator Wiki"
|
# educator_wiki: "Educator Wiki"
|
||||||
get_involved: "Participa"
|
get_involved: "Participa"
|
||||||
# open_source: "Open source (GitHub)"
|
open_source: "Código Libre (GitHub)"
|
||||||
# support: "Support"
|
support: "Soporte"
|
||||||
# faqs: "FAQs"
|
faqs: "FAQs"
|
||||||
help_pref: "¿Necesitas ayuda? Envianos un correó electronico!"
|
help_pref: "¿Necesitas ayuda? Envianos un correó electronico!"
|
||||||
help_suff: "y te contactaremos pronto"
|
help_suff: "y te contactaremos pronto"
|
||||||
|
|
||||||
|
@ -182,7 +182,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
campaign_old_multiplayer: "(Obsoleto) Antiguas Arenas Multijugador"
|
campaign_old_multiplayer: "(Obsoleto) Antiguas Arenas Multijugador"
|
||||||
campaign_old_multiplayer_description: "Reliquias de una era más civilizada. Ninguna simulación es ejecutada para estas arenas multijugador antiguas y sin héroes."
|
campaign_old_multiplayer_description: "Reliquias de una era más civilizada. Ninguna simulación es ejecutada para estas arenas multijugador antiguas y sin héroes."
|
||||||
|
|
||||||
# code:
|
code:
|
||||||
# if: "if" # Keywords--these translations show up on hover, so please translate them all, even if it's kind of long. (In the code editor, they will still be in English.)
|
# if: "if" # Keywords--these translations show up on hover, so please translate them all, even if it's kind of long. (In the code editor, they will still be in English.)
|
||||||
# else: "else"
|
# else: "else"
|
||||||
# elif: "else if"
|
# elif: "else if"
|
||||||
|
@ -204,14 +204,14 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
# this: "this"
|
# this: "this"
|
||||||
# or: "or"
|
# or: "or"
|
||||||
# "||": "or"
|
# "||": "or"
|
||||||
# and: "and"
|
and: "y"
|
||||||
# "&&": "and"
|
"&&": "y"
|
||||||
# not: "not"
|
not: "no"
|
||||||
# "!": "not"
|
"!": "no"
|
||||||
# "=": "assign"
|
# "=": "assign"
|
||||||
# "==": "equals"
|
"==": "iguala"
|
||||||
# "===": "strictly equals"
|
"===": "iguala estrictamente"
|
||||||
# "!=": "does not equal"
|
"!=": "no iguala"
|
||||||
# "!==": "does not strictly equal"
|
# "!==": "does not strictly equal"
|
||||||
# ">": "is greater than"
|
# ">": "is greater than"
|
||||||
# ">=": "is greater than or equal"
|
# ">=": "is greater than or equal"
|
||||||
|
@ -219,15 +219,15 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
# "<=": "is less than or equal"
|
# "<=": "is less than or equal"
|
||||||
# "*": "multiplied by"
|
# "*": "multiplied by"
|
||||||
# "/": "divided by"
|
# "/": "divided by"
|
||||||
# "+": "plus"
|
"+": "mas"
|
||||||
# "-": "minus"
|
"-": "menos"
|
||||||
# "+=": "add and assign"
|
# "+=": "add and assign"
|
||||||
# "-=": "subtract and assign"
|
# "-=": "subtract and assign"
|
||||||
# True: "True"
|
True: "Verdadero"
|
||||||
# true: "true"
|
true: "verdadero"
|
||||||
# False: "False"
|
False: "Falso"
|
||||||
# false: "false"
|
false: "falso"
|
||||||
# undefined: "undefined"
|
undefined: "undefinido"
|
||||||
# null: "null"
|
# null: "null"
|
||||||
# nil: "nil"
|
# nil: "nil"
|
||||||
# None: "None"
|
# None: "None"
|
||||||
|
@ -265,13 +265,13 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
school_name_placeholder: "Ejemplo: High School, Springfield, IL"
|
school_name_placeholder: "Ejemplo: High School, Springfield, IL"
|
||||||
or_sign_up_with: "o conectate a travez de:"
|
or_sign_up_with: "o conectate a travez de:"
|
||||||
connected_gplus_header: "Te haz conectado exitosamente a travez de Google+!"
|
connected_gplus_header: "Te haz conectado exitosamente a travez de Google+!"
|
||||||
# connected_gplus_p: "Finish signing up so you can log in with your Google+ account."
|
connected_gplus_p: "Termina el registro para que inicies sesión con tu cuenta de Google+."
|
||||||
# gplus_exists: "You already have an account associated with Google+!"
|
gplus_exists: "Ya tienes asociada una cuenta con Google+!"
|
||||||
connected_facebook_header: "Te haz conectado exitosamente a travez de Facebook!"
|
connected_facebook_header: "Te haz conectado exitosamente a travez de Facebook!"
|
||||||
# connected_facebook_p: "Finish signing up so you can log in with your Facebook account."
|
connected_facebook_p: "Termina el registro para que inicies sesión con tu cuenta de Facebook."
|
||||||
# facebook_exists: "You already have an account associated with Facebook!"
|
facebook_exists: "Ya tienes asociada una cuenta Facebook!"
|
||||||
# hey_students: "Students, enter the class code from your teacher."
|
hey_students: "Estudiante, ingresa el coódigo de clase de tu maestro."
|
||||||
# birthday: "Birthday"
|
birthday: "Cumpleaños"
|
||||||
|
|
||||||
recover:
|
recover:
|
||||||
recover_account_title: "recuperar cuenta"
|
recover_account_title: "recuperar cuenta"
|
||||||
|
@ -341,7 +341,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
subject: "Asunto"
|
subject: "Asunto"
|
||||||
email: "Email"
|
email: "Email"
|
||||||
password: "Contraseña"
|
password: "Contraseña"
|
||||||
# confirm_password: "Confirm Password"
|
confirm_password: "Confirme Contraseña"
|
||||||
message: "Mensaje"
|
message: "Mensaje"
|
||||||
code: "Código"
|
code: "Código"
|
||||||
ladder: "Escalera"
|
ladder: "Escalera"
|
||||||
|
@ -425,7 +425,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
victory_new_item: "Objeto Nuevo"
|
victory_new_item: "Objeto Nuevo"
|
||||||
victory_viking_code_school: "¡Changos macacos!, el nivel que acabas de pasar era dificil! Si todavía no eres un desarrollador de software, deberías serlo. Acabas de conseguir una aceptación por vía rápida con la Escuela Vikinga de Có, donde tú puedes llevar tus habilidades al siguiente nivel y convertirteen un desarrollador web profesional en 14 semanas."
|
victory_viking_code_school: "¡Changos macacos!, el nivel que acabas de pasar era dificil! Si todavía no eres un desarrollador de software, deberías serlo. Acabas de conseguir una aceptación por vía rápida con la Escuela Vikinga de Có, donde tú puedes llevar tus habilidades al siguiente nivel y convertirteen un desarrollador web profesional en 14 semanas."
|
||||||
victory_become_a_viking: "Conviértete en un Vikingo"
|
victory_become_a_viking: "Conviértete en un Vikingo"
|
||||||
# victory_no_progress_for_teachers: "Progress is not saved for teachers. But, you can add a student account to your classroom for yourself."
|
# victory_no_progress_for_teachers: "El progreso no es guardado para maestros. But, you can add a student account to your classroom for yourself."
|
||||||
guide_title: "Guía"
|
guide_title: "Guía"
|
||||||
tome_cast_button_run: "Ejecutar"
|
tome_cast_button_run: "Ejecutar"
|
||||||
tome_cast_button_running: "Ejecutando"
|
tome_cast_button_running: "Ejecutando"
|
||||||
|
@ -509,17 +509,17 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
tip_understand_recursion: "La única manera de entender la recursividad es entender la recursividad."
|
tip_understand_recursion: "La única manera de entender la recursividad es entender la recursividad."
|
||||||
tip_life_and_polymorphism: "El Open Source es como una estructura heterogénea totalmente polimórfica: Todos los tipos son bienvenidos."
|
tip_life_and_polymorphism: "El Open Source es como una estructura heterogénea totalmente polimórfica: Todos los tipos son bienvenidos."
|
||||||
tip_mistakes_proof_of_trying: "Errores en tu código son solo evidencia de que estas intentando."
|
tip_mistakes_proof_of_trying: "Errores en tu código son solo evidencia de que estas intentando."
|
||||||
# tip_adding_orgres: "Rounding up ogres."
|
# tip_adding_orgres: "Rounding up ogros."
|
||||||
# tip_sharpening_swords: "Sharpening the swords."
|
tip_sharpening_swords: "Afilando las espadas."
|
||||||
# tip_ratatouille: "You must not let anyone define your limits because of where you come from. Your only limit is your soul. - Gusteau, Ratatouille"
|
# tip_ratatouille: "You must not let anyone define your limits because of where you come from. Your only limit is your soul. - Gusteau, Ratatouille"
|
||||||
# tip_nemo: "When life gets you down, want to know what you've gotta do? Just keep swimming, just keep swimming. - Dory, Finding Nemo"
|
# tip_nemo: "Cuando la vida gets you down, want to know what you've gotta do? Just keep swimming, just keep swimming. - Dory, Finding Nemo"
|
||||||
# tip_internet_weather: "Just move to the internet, it's great here. We get to live inside where the weather is always awesome. - John Green"
|
# tip_internet_weather: "Just move to the internet, it's great here. We get to live inside where the weather is always awesome. - John Green"
|
||||||
# tip_nerds: "Nerds are allowed to love stuff, like jump-up-and-down-in-the-chair-can't-control-yourself love it. - John Green"
|
# tip_nerds: "Nerds are allowed to love stuff, like jump-up-and-down-in-the-chair-can't-control-yourself love it. - John Green"
|
||||||
# tip_self_taught: "I taught myself 90% of what I've learned. And that's normal! - Hank Green"
|
# tip_self_taught: "I taught myself 90% of what I've learned. And that's normal! - Hank Green"
|
||||||
# tip_luna_lovegood: "Don't worry, you're just as sane as I am. - Luna Lovegood"
|
# tip_luna_lovegood: "No te preocupes, you're just as sane as I am. - Luna Lovegood"
|
||||||
# tip_good_idea: "The best way to have a good idea is to have a lot of ideas. - Linus Pauling"
|
# tip_good_idea: "The best way to have a good idea is to have a lot of ideas. - Linus Pauling"
|
||||||
# tip_programming_not_about_computers: "Computer Science is no more about computers than astronomy is about telescopes. - Edsger Dijkstra"
|
# tip_programming_not_about_computers: "La ciencia cpomputacional is no more about computers than astronomy is about telescopes. - Edsger Dijkstra"
|
||||||
# tip_mulan: "Believe you can, then you will. - Mulan"
|
tip_mulan: "Cree que puedes, y entonces lo harás. - Mulan"
|
||||||
|
|
||||||
game_menu:
|
game_menu:
|
||||||
inventory_tab: "Inventario"
|
inventory_tab: "Inventario"
|
||||||
|
@ -585,7 +585,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
feature5: "Video tutoriales"
|
feature5: "Video tutoriales"
|
||||||
feature6: "Soporte Premium vía email"
|
feature6: "Soporte Premium vía email"
|
||||||
feature7: "<strong>Clan</strong> Privado"
|
feature7: "<strong>Clan</strong> Privado"
|
||||||
# feature8: "<strong>No ads!</strong>"
|
feature8: "<strong>¡Sin publicidad!</strong>"
|
||||||
free: "Gratis"
|
free: "Gratis"
|
||||||
month: "mes"
|
month: "mes"
|
||||||
must_be_logged: "Debes iniciar sesión primero. Por favor crea una cuenta o inicia sesión desde el menú superior."
|
must_be_logged: "Debes iniciar sesión primero. Por favor crea una cuenta o inicia sesión desde el menú superior."
|
||||||
|
@ -676,13 +676,13 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
restricted_to_certain_heroes: "Sólo ciertos héroes pueden jugar este nivel."
|
restricted_to_certain_heroes: "Sólo ciertos héroes pueden jugar este nivel."
|
||||||
|
|
||||||
skill_docs:
|
skill_docs:
|
||||||
# function: "function" # skill types
|
function: "función" # skill types
|
||||||
# method: "method"
|
method: "método"
|
||||||
# snippet: "snippet"
|
# snippet: "snippet"
|
||||||
# number: "number"
|
number: "número"
|
||||||
# array: "array"
|
array: "arreglo"
|
||||||
# object: "object"
|
object: "objeto"
|
||||||
# string: "string"
|
string: "cadena"
|
||||||
writable: "escribible" # Hover over "attack" in Your Skills while playing a level to see most of this
|
writable: "escribible" # Hover over "attack" in Your Skills while playing a level to see most of this
|
||||||
read_only: "Sólo Lectura"
|
read_only: "Sólo Lectura"
|
||||||
action: "Acción"
|
action: "Acción"
|
||||||
|
@ -753,9 +753,9 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
robin_blurb: "Scaffolding"
|
robin_blurb: "Scaffolding"
|
||||||
josh_title: "Diseñador de Juegos"
|
josh_title: "Diseñador de Juegos"
|
||||||
josh_blurb: "El piso es Lava"
|
josh_blurb: "El piso es Lava"
|
||||||
# phoenix_title: "Software Engineer"
|
phoenix_title: "Ingeniero de Software"
|
||||||
# nolan_title: "Territory Manager"
|
nolan_title: "Administrador de territorio"
|
||||||
# elliot_title: "Partnership Manager"
|
# elliot_title: "Administrador de Partnership"
|
||||||
retrostyle_title: "Ilustración"
|
retrostyle_title: "Ilustración"
|
||||||
retrostyle_blurb: "Juegos con estilo Retro"
|
retrostyle_blurb: "Juegos con estilo Retro"
|
||||||
jose_title: "Música"
|
jose_title: "Música"
|
||||||
|
@ -785,10 +785,10 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
jobs_benefit_4: "Días personales/enfermo ilimitados" # {change}
|
jobs_benefit_4: "Días personales/enfermo ilimitados" # {change}
|
||||||
jobs_benefit_5: "Desarrollo profesional y soporte de formación continua" # {change}
|
jobs_benefit_5: "Desarrollo profesional y soporte de formación continua" # {change}
|
||||||
jobs_benefit_6: "Seguro médico/dental/vista" # {change}
|
jobs_benefit_6: "Seguro médico/dental/vista" # {change}
|
||||||
# jobs_benefit_7: "Sit-stand desks for all"
|
# jobs_benefit_7: "Sit-stand escritorios para todos"
|
||||||
# jobs_benefit_9: "10-year option exercise window"
|
# jobs_benefit_9: "10-year option exercise window"
|
||||||
# jobs_benefit_10: "Maternity leave: 10 weeks paid, next 6 @ 55% salary"
|
# jobs_benefit_10: "Maternity leave: 10 semanas pagadas, next 6 @ 55% salary"
|
||||||
# jobs_benefit_11: "Paternity leave: 10 weeks paid"
|
# jobs_benefit_11: "Paternity leave: 10 semanas pagadas"
|
||||||
learn_more: "Aprender Más"
|
learn_more: "Aprender Más"
|
||||||
jobs_custom_title: "Crear Tu Propio"
|
jobs_custom_title: "Crear Tu Propio"
|
||||||
jobs_custom_description: "¿Te apasiona CodeCombat pero nos ves un puesto de trabajo que coincida con tus cualificaciones? Escríbenos y muestrenos como cree que puede contribuir a nuestro equipo. ¡Nos encantaría saber de vos!"
|
jobs_custom_description: "¿Te apasiona CodeCombat pero nos ves un puesto de trabajo que coincida con tus cualificaciones? Escríbenos y muestrenos como cree que puede contribuir a nuestro equipo. ¡Nos encantaría saber de vos!"
|
||||||
|
@ -824,10 +824,10 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
email_exists: "Existe un usuario con este email."
|
email_exists: "Existe un usuario con este email."
|
||||||
phone_number: "Teléfono"
|
phone_number: "Teléfono"
|
||||||
phone_number_help: "¿Dónde podemos contactarte durante el horario de trabajo ?"
|
phone_number_help: "¿Dónde podemos contactarte durante el horario de trabajo ?"
|
||||||
# primary_role_label: "Your Primary Role"
|
primary_role_label: "Tu Rol Primario"
|
||||||
# role_default: "Select Role"
|
role_default: "Seleccione Rol"
|
||||||
# primary_role_default: "Select Primary Role"
|
primary_role_default: "Seleccione Rol Primario"
|
||||||
# purchaser_role_default: "Select Purchaser Role"
|
# purchaser_role_default: "Seleccione Purchaser Role"
|
||||||
tech_coordinator: "Coordinador de tecnología"
|
tech_coordinator: "Coordinador de tecnología"
|
||||||
advisor: "Tutor"
|
advisor: "Tutor"
|
||||||
principal: "Director"
|
principal: "Director"
|
||||||
|
@ -835,15 +835,15 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
parent: "Padre"
|
parent: "Padre"
|
||||||
# purchaser_role_label: "Your Purchaser Role"
|
# purchaser_role_label: "Your Purchaser Role"
|
||||||
# influence_advocate: "Influence/Advocate"
|
# influence_advocate: "Influence/Advocate"
|
||||||
# evaluate_recommend: "Evaluate/Recommend"
|
evaluate_recommend: "Evaluar/Recomendar"
|
||||||
# approve_funds: "Approve Funds"
|
approve_funds: "Aprobar Fondos"
|
||||||
# no_purchaser_role: "No role in purchase decisions"
|
# no_purchaser_role: "No role in purchase decisions"
|
||||||
organization_label: "Escuela / Distrito"
|
organization_label: "Escuela / Distrito"
|
||||||
city: "Ciudad"
|
city: "Ciudad"
|
||||||
state: "Estado"
|
state: "Estado"
|
||||||
country: "País"
|
country: "País"
|
||||||
num_students_help: "¿Cuántos prevees inscribir en CodeCombat?"
|
num_students_help: "¿Cuántos prevees inscribir en CodeCombat?"
|
||||||
# num_students_default: "Select Range"
|
num_students_default: "Seleccionar Rango"
|
||||||
education_level_label: "Nivel Educativo de los Estudiantes"
|
education_level_label: "Nivel Educativo de los Estudiantes"
|
||||||
education_level_help: "Elegí todas las que correspondan."
|
education_level_help: "Elegí todas las que correspondan."
|
||||||
elementary_school: "Escuela Primaria"
|
elementary_school: "Escuela Primaria"
|
||||||
|
@ -853,19 +853,19 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
college_plus: "Universidad o superior"
|
college_plus: "Universidad o superior"
|
||||||
anything_else: "¿Algo más que deberíamos saber?"
|
anything_else: "¿Algo más que deberíamos saber?"
|
||||||
thanks_header: "¡Gracias por solicitar un presupuesto!" # {change}
|
thanks_header: "¡Gracias por solicitar un presupuesto!" # {change}
|
||||||
# thanks_sub_header: "Thanks for expressing interest in CodeCombat for your school."
|
thanks_sub_header: "Gracias por el interés de su institución en CodeCombat" #"Gracias por expressing interest in CodeCombat for your school."
|
||||||
thanks_p: "Estaremos en contacto pronto. ¿Preguntas? Escríbenos:" # {change}
|
thanks_p: "Estaremos en contacto pronto. ¿Preguntas? Escríbenos:" # {change}
|
||||||
# back_to_classes: "Back to Classes"
|
back_to_classes: "Volver a las clases"#"Back to Clases"
|
||||||
# finish_signup: "Finish creating your teacher account:"
|
finish_signup: "Termine la creación de su cuenta de maestro:"
|
||||||
# finish_signup_p: "Create an account to set up a class, add your students, and monitor their progress as they learn computer science."
|
finish_signup_p: "Crear una cuenta para configurar la clase, agregar estudiante y monitorear su progreso a medida que aprenden programacioón"#"Create an account to set up a class, add your students, and monitor their progress as they learn computer science."
|
||||||
# signup_with: "Sign up with:"
|
signup_with: "Registrarse con:"
|
||||||
# connect_with: "Connect with:"
|
connect_with: "Conectar con:"
|
||||||
# conversion_warning: "WARNING: Your current account is a <em>Student Account</em>. Once you submit this form, your account will be updated to a Teacher Account."
|
# conversion_warning: "WARNING: Your current account is a <em>Student Account</em>. Once you submit this form, your account will be updated to a Teacher Account."
|
||||||
# learn_more_modal: "Teacher accounts on CodeCombat have the ability to monitor student progress, assign enrollments and manage classrooms. Teacher accounts cannot be a part of a classroom - if you are currently enrolled in a class using this account, you will no longer be able to access it once you update to a Teacher Account."
|
# learn_more_modal: "Teacher accounts on CodeCombat have the ability to monitor student progress, assign enrollments and manage classrooms. Teacher accounts cannot be a part of a classroom - if you are currently enrolled in a class using this account, you will no longer be able to access it once you update to a Teacher Account."
|
||||||
# create_account: "Create a Teacher Account"
|
create_account: "Crear una Cuenta de maestro"
|
||||||
# create_account_subtitle: "Get access to teacher-only tools for using CodeCombat in the classroom. <strong>Set up a class</strong>, add your students, and <strong>monitor their progress</strong>!"
|
# create_account_subtitle: "Get access to teacher-only tools for using CodeCombat in the classroom. <strong>Set up a class</strong>, add your students, and <strong>monitor their progress</strong>!"
|
||||||
# convert_account_title: "Update to Teacher Account"
|
# convert_account_title: "Update to Teacher Account"
|
||||||
# not: "Not"
|
not: "No"
|
||||||
# setup_a_class: "Set Up a Class"
|
# setup_a_class: "Set Up a Class"
|
||||||
|
|
||||||
versions:
|
versions:
|
||||||
|
@ -975,7 +975,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
social_facebook: "Me Gusta CodeCombat en Facebook"
|
social_facebook: "Me Gusta CodeCombat en Facebook"
|
||||||
social_twitter: "Sigue a CodeCombat en Twitter"
|
social_twitter: "Sigue a CodeCombat en Twitter"
|
||||||
social_gplus: "Únete a CodeCombat con Google+"
|
social_gplus: "Únete a CodeCombat con Google+"
|
||||||
# social_slack: "Chat with us in the public CodeCombat Slack channel"
|
# social_slack: "Chat con nosotros en el public CodeCombat Slack canal"
|
||||||
contribute_to_the_project: "Contribuir al proyecto"
|
contribute_to_the_project: "Contribuir al proyecto"
|
||||||
|
|
||||||
clans:
|
clans:
|
||||||
|
@ -1080,8 +1080,8 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
buy_course1: "Comprar este curso"
|
buy_course1: "Comprar este curso"
|
||||||
select_all_courses: "Seleccione 'Todos los cursos' para un 50% de descuento!"
|
select_all_courses: "Seleccione 'Todos los cursos' para un 50% de descuento!"
|
||||||
all_courses: "Todos los Cursos"
|
all_courses: "Todos los Cursos"
|
||||||
# number_programming_students: "Number of Programming Students"
|
# number_programming_students: "Número de Programming Students"
|
||||||
# number_total_students: "Total Students in School/District"
|
# number_total_students: "Total Students en School/District"
|
||||||
enter_number_students: "Introducir el número de estudiantes que necesita para este grupo."
|
enter_number_students: "Introducir el número de estudiantes que necesita para este grupo."
|
||||||
name_class: "Nombre de su grupo"
|
name_class: "Nombre de su grupo"
|
||||||
displayed_course_page: "Se mostrará en la página de curso para usted y sus estudiantes. Puede cambiarse después."
|
displayed_course_page: "Se mostrará en la página de curso para usted y sus estudiantes. Puede cambiarse después."
|
||||||
|
@ -1234,8 +1234,8 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
additional_resources: "Recursos Adicionales"
|
additional_resources: "Recursos Adicionales"
|
||||||
additional_resources_1_pref: "Descargar/imprimir nuestra"
|
additional_resources_1_pref: "Descargar/imprimir nuestra"
|
||||||
additional_resources_1_mid: "Guía para maestros: Curso 1"
|
additional_resources_1_mid: "Guía para maestros: Curso 1"
|
||||||
# additional_resources_1_mid2: "and"
|
additional_resources_1_mid2: "y"
|
||||||
# additional_resources_1_mid3: "Course 2"
|
additional_resources_1_mid3: "Curso 2"
|
||||||
additional_resources_1_suff: "explicaciones y soluciones para cada nivel." # {change}
|
additional_resources_1_suff: "explicaciones y soluciones para cada nivel." # {change}
|
||||||
additional_resources_2_pref: "Complete nuestro"
|
additional_resources_2_pref: "Complete nuestro"
|
||||||
additional_resources_2_suff: "para obtener dos matrículas gratuitas para el resto de nuestros cursos pagos."
|
additional_resources_2_suff: "para obtener dos matrículas gratuitas para el resto de nuestros cursos pagos."
|
||||||
|
@ -1264,9 +1264,9 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
title: "Título" # Flat style redesign
|
title: "Título" # Flat style redesign
|
||||||
# subtitle: "Review course guidelines, solutions, and levels"
|
# subtitle: "Review course guidelines, solutions, and levels"
|
||||||
# changelog: "View latest changes to course levels."
|
# changelog: "View latest changes to course levels."
|
||||||
# select_language: "Select language"
|
select_language: "Seleccione lenguaje"
|
||||||
# select_level: "Select level"
|
select_level: "Seleccione nivel"
|
||||||
# play_level: "Play Level"
|
# play_level: "Play Nivel"
|
||||||
concepts_covered: "Conceptos Cubiertos"
|
concepts_covered: "Conceptos Cubiertos"
|
||||||
# print_guide: "Print Guide (PDF)"
|
# print_guide: "Print Guide (PDF)"
|
||||||
# view_guide_online: "View Guide Online (PDF)"
|
# view_guide_online: "View Guide Online (PDF)"
|
||||||
|
@ -1294,15 +1294,15 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
# class_name: "Class Name"
|
# class_name: "Class Name"
|
||||||
# teacher_account_restricted: "Your account is a teacher account, and so cannot access student content."
|
# teacher_account_restricted: "Your account is a teacher account, and so cannot access student content."
|
||||||
|
|
||||||
# teacher:
|
teacher:
|
||||||
# teacher_dashboard: "Teacher Dashboard" # Navbar
|
# teacher_dashboard: "Teacher Dashboard" # Navbar
|
||||||
# my_classes: "My Classes"
|
# my_classes: "My Classes"
|
||||||
# courses: "Courses"
|
# courses: "Courses"
|
||||||
# enrollments: "Enrollments"
|
# enrollments: "Enrollments"
|
||||||
# resources: "Resources"
|
# resources: "Resources"
|
||||||
# help: "Help"
|
help: "Ayuda"
|
||||||
# students: "Students" # Shared
|
# students: "Students" # Shared
|
||||||
# language: "Language"
|
language: "Lenguaje"
|
||||||
# edit_class_settings: "edit class settings"
|
# edit_class_settings: "edit class settings"
|
||||||
# complete: "Complete"
|
# complete: "Complete"
|
||||||
# access_restricted: "Account Update Required"
|
# access_restricted: "Account Update Required"
|
||||||
|
@ -1368,8 +1368,8 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
# total_enrolled_students: "Total Enrolled Students"
|
# total_enrolled_students: "Total Enrolled Students"
|
||||||
# unenrolled_students: "Unenrolled Students"
|
# unenrolled_students: "Unenrolled Students"
|
||||||
# add_enrollment_credits: "Add Enrollment Credits"
|
# add_enrollment_credits: "Add Enrollment Credits"
|
||||||
# purchasing: "Purchasing..."
|
purchasing: "Adquiriendo..."
|
||||||
# purchased: "Purchased!"
|
purchased: "Adquirido!"
|
||||||
# purchase_now: "Purchase Now"
|
# purchase_now: "Purchase Now"
|
||||||
# how_to_enroll: "How to Enroll Students"
|
# how_to_enroll: "How to Enroll Students"
|
||||||
# how_to_enroll_blurb_1: "If a student is not enrolled yet, there will be an \"Enroll\" button next to their course progress in your class."
|
# how_to_enroll_blurb_1: "If a student is not enrolled yet, there will be an \"Enroll\" button next to their course progress in your class."
|
||||||
|
@ -1398,7 +1398,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
ambassador_title: "Embajador"
|
ambassador_title: "Embajador"
|
||||||
ambassador_title_description: "(Soporte)"
|
ambassador_title_description: "(Soporte)"
|
||||||
ambassador_summary: "Ayuda a responder las preguntas de los usuarios del foro. Nuestros Embajadores representan CodeCombat en todo el mundo."
|
ambassador_summary: "Ayuda a responder las preguntas de los usuarios del foro. Nuestros Embajadores representan CodeCombat en todo el mundo."
|
||||||
# teacher_title: "Teacher"
|
teacher_title: "Maestro"
|
||||||
|
|
||||||
editor:
|
editor:
|
||||||
main_title: "Editor de CodeCombat"
|
main_title: "Editor de CodeCombat"
|
||||||
|
@ -1511,7 +1511,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
join_desc_3: ", o encuéntranos en "
|
join_desc_3: ", o encuéntranos en "
|
||||||
join_desc_4: "y ahí empezaremos!"
|
join_desc_4: "y ahí empezaremos!"
|
||||||
join_url_email: "Escríbenos"
|
join_url_email: "Escríbenos"
|
||||||
# join_url_slack: "public Slack channel"
|
# join_url_slack: "public Slack canal"
|
||||||
archmage_subscribe_desc: "Obten correos de nuevas oportunidades y anuncios."
|
archmage_subscribe_desc: "Obten correos de nuevas oportunidades y anuncios."
|
||||||
artisan_introduction_pref: "¡Debemos construir niveles adicionales! La gente ruega por más contenido, y podemos hacer tanto por nosotros mismos. De momento tu estación de trabajo es nivel 1 ; Nuestro editor de niveles es apenas útil incluso para sus creadores, así que sea cauteloso. Si tuviera visiones de campañas apareciendo para ciclos for"
|
artisan_introduction_pref: "¡Debemos construir niveles adicionales! La gente ruega por más contenido, y podemos hacer tanto por nosotros mismos. De momento tu estación de trabajo es nivel 1 ; Nuestro editor de niveles es apenas útil incluso para sus creadores, así que sea cauteloso. Si tuviera visiones de campañas apareciendo para ciclos for"
|
||||||
artisan_introduction_suf: ", entonces esta lase es ideal para ti."
|
artisan_introduction_suf: ", entonces esta lase es ideal para ti."
|
||||||
|
@ -1555,7 +1555,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
ambassador_join_note_strong: "Nota"
|
ambassador_join_note_strong: "Nota"
|
||||||
ambassador_join_note_desc: "Una de nuestras principales prioridades es construir un modo multijugador donde los jugadores con mayores dificultades a la hora de resolver un nivel, puedan invocar a los magos más avanzados para que les ayuden. Será una buena manera de que los Embajadores puedan hacer su trabajo. ¡Te mantendremos informado!"
|
ambassador_join_note_desc: "Una de nuestras principales prioridades es construir un modo multijugador donde los jugadores con mayores dificultades a la hora de resolver un nivel, puedan invocar a los magos más avanzados para que les ayuden. Será una buena manera de que los Embajadores puedan hacer su trabajo. ¡Te mantendremos informado!"
|
||||||
ambassador_subscribe_desc: "Recibe correos sobre actualizaciones de soporte y desarrollo del multijugador."
|
ambassador_subscribe_desc: "Recibe correos sobre actualizaciones de soporte y desarrollo del multijugador."
|
||||||
# teacher_subscribe_desc: "Get emails on updates and announcements for teachers."
|
# teacher_subscribe_desc: "Get emails on updates and announcements para maestros."
|
||||||
changes_auto_save: "Los cambios son guardados automáticamente cuando marcas las casillas de verificación."
|
changes_auto_save: "Los cambios son guardados automáticamente cuando marcas las casillas de verificación."
|
||||||
diligent_scribes: "Nuestros diligentes Escribas:"
|
diligent_scribes: "Nuestros diligentes Escribas:"
|
||||||
powerful_archmages: "Nuestros poderosos Archimagos:"
|
powerful_archmages: "Nuestros poderosos Archimagos:"
|
||||||
|
@ -1711,16 +1711,16 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
you_can2: "comprar un código prepagado"
|
you_can2: "comprar un código prepagado"
|
||||||
you_can3: "que puede ser aplicado a tu propia cuenta o regalado a otros."
|
you_can3: "que puede ser aplicado a tu propia cuenta o regalado a otros."
|
||||||
|
|
||||||
# coppa_deny:
|
coppa_deny:
|
||||||
# text1: "Can’t wait to learn programming?"
|
text1: "¿No puedes esperar para aprender a programar?"
|
||||||
# text2: "Ask your parents to create an account for you!"
|
# text2: "Ask your parents que creen una cuenta for you!"
|
||||||
# close: "Close Window"
|
close: "Cerrar ventana"
|
||||||
|
|
||||||
loading_error:
|
loading_error:
|
||||||
could_not_load: "Error cargando del servidor"
|
could_not_load: "Error cargando del servidor"
|
||||||
connection_failure: "Fallo de conexión."
|
connection_failure: "Fallo de conexión."
|
||||||
# connection_failure_desc: "It doesn’t look like you’re connected to the internet! Check your network connection and then reload this page."
|
# connection_failure_desc: "It doesn’t look like you’re connected to the internet! Check your network connection and then reload this page."
|
||||||
# login_required: "Login Required"
|
login_required: "Login Requerido"
|
||||||
# login_required_desc: "You need to be logged in to access this page."
|
# login_required_desc: "You need to be logged in to access this page."
|
||||||
unauthorized: "Necesitas acceder. ¿Tienes desabilitadas las cookies?"
|
unauthorized: "Necesitas acceder. ¿Tienes desabilitadas las cookies?"
|
||||||
forbidden: "No tienes los permisos."
|
forbidden: "No tienes los permisos."
|
||||||
|
@ -1869,19 +1869,19 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
||||||
license: "licencia"
|
license: "licencia"
|
||||||
oreilly: "ebook de su elección"
|
oreilly: "ebook de su elección"
|
||||||
|
|
||||||
# calendar:
|
calendar:
|
||||||
# year: "Year"
|
year: "Año"
|
||||||
# day: "Day"
|
day: "Día"
|
||||||
# month: "Month"
|
month: "Mes"
|
||||||
# january: "January"
|
# january: "January"
|
||||||
# february: "February"
|
# february: "February"
|
||||||
# march: "March"
|
# march: "March"
|
||||||
# april: "April"
|
# april: "April"
|
||||||
# may: "May"
|
# may: "May"
|
||||||
# june: "June"
|
june: "Junio"
|
||||||
# july: "July"
|
july: "Julio"
|
||||||
# august: "August"
|
# august: "August"
|
||||||
# september: "September"
|
# september: "September"
|
||||||
# october: "October"
|
# october: "October"
|
||||||
# november: "November"
|
# november: "November"
|
||||||
# december: "December"
|
december: "Diciembre"
|
||||||
|
|
|
@ -15,8 +15,8 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
||||||
or_ipad: "O descargalo para iPad"
|
or_ipad: "O descargalo para iPad"
|
||||||
|
|
||||||
new_home:
|
new_home:
|
||||||
# slogan: "The most engaging game for learning programming."
|
slogan: "El juego más atractivo para aprender a programar."
|
||||||
# classroom_edition: "Classroom Edition:"
|
classroom_edition: "Edición para aulas:"
|
||||||
learn_to_code: "Aprende a programar:"
|
learn_to_code: "Aprende a programar:"
|
||||||
teacher: "Profesor"
|
teacher: "Profesor"
|
||||||
student: "Alumno"
|
student: "Alumno"
|
||||||
|
@ -31,24 +31,24 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
||||||
designed_with: "Diseñado pensando en los profesores"
|
designed_with: "Diseñado pensando en los profesores"
|
||||||
real_code: "Real, escribe código"
|
real_code: "Real, escribe código"
|
||||||
from_the_first_level: "desde el primer nivel"
|
from_the_first_level: "desde el primer nivel"
|
||||||
# getting_students: "Getting students to typed code as quickly as possible is critical to learning programming syntax and proper structure."
|
getting_students: "Involucrar a los alumnos en la programación por sentencias tan rápido como sea posible es fundamental para aprender la sintaxis de la programación con una estructura apropiada."
|
||||||
# educator_resources: "Educator resources"
|
educator_resources: "Recursos para educadores"
|
||||||
# course_guides: "and course guides"
|
course_guides: "y guías de cursos"
|
||||||
# teaching_computer_science: "Teaching computer science does not require a costly degree, because we provide tools to support educators of all backgrounds."
|
teaching_computer_science: "Enseñar ciencias computación no requiere de un costoso título, porque nosotros proveemos las herramientas para apoyar educadores con cualquier nivel de conocimientos."
|
||||||
accessible_to: "Accesible para"
|
accessible_to: "Accesible para"
|
||||||
everyone: "todo el mundo"
|
everyone: "todo el mundo"
|
||||||
# democratizing: "Democratizing the process of learning coding is at the core of our philosophy. Everyone should be able to learn to code."
|
democratizing: "La democratización del proceso de aprendizaje es el nucleo de nuestra filosofía. Todo mundo debe ser capaz de aprender a programar."
|
||||||
# forgot_learning: "I think they actually forgot that they were actually learning something."
|
forgot_learning: "En realidad creo que que ellos olvidaron que en realidad están aprendiendo algo."
|
||||||
# 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."
|
wanted_to_do: " Programar es algo que siempre he querido hacer, nunca pensé que sería capáz de aprenderlo en la escuela."
|
||||||
# why_games: "Why is learning through games important?"
|
why_games: "¿Por qué aprender usando juegos es importante?"
|
||||||
# games_reward: "Games reward the productive struggle."
|
games_reward: "Los juegos premian el esfuerzo productivo"
|
||||||
# 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."
|
encourage: "Jugar es un excelente medio que promueve la interacción, descubrimiento, y aprendizaje a través de prueba-error. Un buen juego reta al jugador a dominar habilidades al pasar el tiempo, éste el el mismo proceso critico por el que pasan los estudiantes al aprender."
|
||||||
# excel: "Games excel at rewarding"
|
excel: "Los juegos son excelentes premiando"
|
||||||
# struggle: "productive struggle"
|
struggle: "el esfuerzo productivo"
|
||||||
# kind_of_struggle: "the kind of struggle that results in learning that’s engaging and"
|
kind_of_struggle: "el tipo de esfuerzo que resulta en aprendizaje learning que es atractivo y"
|
||||||
# motivating: "motivating"
|
motivating: "motivante"
|
||||||
# not_tedious: "not tedious."
|
not_tedious: "no tedioso."
|
||||||
# gaming_is_good: "Studies suggest gaming is good for children’s brains. (it’s true!)"
|
gaming_is_good: "Estudios sugieren que el jugar es bueno para el cerebro de los niños. (¡Es verdad!)"
|
||||||
# game_based: "When game-based learning systems are"
|
# game_based: "When game-based learning systems are"
|
||||||
# compared: "compared"
|
# compared: "compared"
|
||||||
# conventional: "against conventional assessment methods, the difference is clear: games are better at helping students retain knowledge, concentrate and"
|
# conventional: "against conventional assessment methods, the difference is clear: games are better at helping students retain knowledge, concentrate and"
|
||||||
|
@ -61,11 +61,11 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
||||||
# request_demo_subtitle: "Request a demo and get your students started in less than an hour."
|
# request_demo_subtitle: "Request a demo and get your students started in less than an hour."
|
||||||
# get_started_title: "Set up your class today"
|
# get_started_title: "Set up your class today"
|
||||||
# get_started_subtitle: "Set up a class, add your students, and monitor their progress as they learn computer science."
|
# get_started_subtitle: "Set up a class, add your students, and monitor their progress as they learn computer science."
|
||||||
# request_demo: "Request a Demo"
|
request_demo: "Pide una demostración"
|
||||||
# setup_a_class: "Set Up a Class"
|
# setup_a_class: "Set Up a Class"
|
||||||
# have_an_account: "Have an account?"
|
have_an_account: "¿Tienes una cuenta?"
|
||||||
# logged_in_as: "You are currently logged in as"
|
# logged_in_as: "You are currently logged in as"
|
||||||
# view_my_classes: "View my classes"
|
view_my_classes: "Ver mis clases"
|
||||||
# computer_science: "Computer science courses for all ages"
|
# computer_science: "Computer science courses for all ages"
|
||||||
# show_me_lesson_time: "Show me lesson time estimates for:"
|
# show_me_lesson_time: "Show me lesson time estimates for:"
|
||||||
# curriculum: "Total curriculum hours:"
|
# curriculum: "Total curriculum hours:"
|
||||||
|
@ -905,17 +905,17 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
||||||
wrong_password: "Contraseña incorrecta"
|
wrong_password: "Contraseña incorrecta"
|
||||||
upload_picture: "Sube una imagen"
|
upload_picture: "Sube una imagen"
|
||||||
delete_this_account: "Eliminar esta cuenta de forma permanente"
|
delete_this_account: "Eliminar esta cuenta de forma permanente"
|
||||||
# reset_progress_tab: "Reset All Progress"
|
reset_progress_tab: "Reestablecer progreso"
|
||||||
# reset_your_progress: "Clear all your progress and start over"
|
reset_your_progress: "Elimina tu progreso y empieza de nuevo"
|
||||||
god_mode: "Modo Dios"
|
god_mode: "Modo Dios"
|
||||||
password_tab: "Contraseña"
|
password_tab: "Contraseña"
|
||||||
emails_tab: "Correos electrónicos"
|
emails_tab: "Correos electrónicos"
|
||||||
admin: "Admin"
|
admin: "Admin"
|
||||||
# manage_subscription: "Click here to manage your subscription."
|
manage_subscription: "Clic aquí para modificar tu suscripción."
|
||||||
new_password: "Nueva contraseña"
|
new_password: "Nueva contraseña"
|
||||||
new_password_verify: "Verificar"
|
new_password_verify: "Verificar"
|
||||||
type_in_email: "Introduce tu email para confirmar el borrado de esta cuenta"
|
type_in_email: "Introduce tu correo para confirmar el borrado de esta cuenta"
|
||||||
# type_in_email_progress: "Type in your email to confirm deleting your progress."
|
type_in_email_progress: "TypeIntroduce tu correo para confirmar el borrado de tu progreso."
|
||||||
type_in_password: "Además, introduce tu contraseña."
|
type_in_password: "Además, introduce tu contraseña."
|
||||||
email_subscriptions: "Suscripciones de correo electrónico"
|
email_subscriptions: "Suscripciones de correo electrónico"
|
||||||
email_subscriptions_none: "Sin suscripciones de correo electrónico."
|
email_subscriptions_none: "Sin suscripciones de correo electrónico."
|
||||||
|
@ -1398,7 +1398,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
||||||
ambassador_title: "Embajador"
|
ambassador_title: "Embajador"
|
||||||
ambassador_title_description: "(Soporte)"
|
ambassador_title_description: "(Soporte)"
|
||||||
ambassador_summary: "Amansa a los usuarios de nuestro foro y guía a aquellos que tengan preguntas. Nuestros Embajadores representan a CodeCombat frente al mundo."
|
ambassador_summary: "Amansa a los usuarios de nuestro foro y guía a aquellos que tengan preguntas. Nuestros Embajadores representan a CodeCombat frente al mundo."
|
||||||
# teacher_title: "Teacher"
|
teacher_title: "Profesor"
|
||||||
|
|
||||||
editor:
|
editor:
|
||||||
main_title: "Editores de CodeCombat"
|
main_title: "Editores de CodeCombat"
|
||||||
|
@ -1406,7 +1406,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
||||||
thang_title: "Editor de Objetos"
|
thang_title: "Editor de Objetos"
|
||||||
level_title: "Editor de Niveles"
|
level_title: "Editor de Niveles"
|
||||||
achievement_title: "Editor de Logros"
|
achievement_title: "Editor de Logros"
|
||||||
# poll_title: "Poll Editor"
|
poll_title: "Editor de Encuestas"
|
||||||
back: "Volver"
|
back: "Volver"
|
||||||
revert: "Revertir"
|
revert: "Revertir"
|
||||||
revert_models: "Revertir Modelos"
|
revert_models: "Revertir Modelos"
|
||||||
|
@ -1471,7 +1471,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
||||||
new_achievement_title: "Crea un nuevo Logro"
|
new_achievement_title: "Crea un nuevo Logro"
|
||||||
new_achievement_title_login: "Inicia sesión para Crear un Nuevo Logro"
|
new_achievement_title_login: "Inicia sesión para Crear un Nuevo Logro"
|
||||||
new_poll_title: "Crear una nueva Encuesta"
|
new_poll_title: "Crear una nueva Encuesta"
|
||||||
# new_poll_title_login: "Log In to Create a New Poll"
|
new_poll_title_login: "Inicia sesión para Crear una Nueva Encuesta"
|
||||||
article_search_title: "Buscar artículos aquí"
|
article_search_title: "Buscar artículos aquí"
|
||||||
thang_search_title: "Busca tipos de objetos aquí"
|
thang_search_title: "Busca tipos de objetos aquí"
|
||||||
level_search_title: "Buscar niveles aquí"
|
level_search_title: "Buscar niveles aquí"
|
||||||
|
@ -1511,7 +1511,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
||||||
join_desc_3: ", o encuéntranos en nuestro "
|
join_desc_3: ", o encuéntranos en nuestro "
|
||||||
join_desc_4: "¡y partiremos desde ese punto!"
|
join_desc_4: "¡y partiremos desde ese punto!"
|
||||||
join_url_email: "Escríbenos un correo electrónico"
|
join_url_email: "Escríbenos un correo electrónico"
|
||||||
# join_url_slack: "public Slack channel"
|
join_url_slack: "canal público de Slack"
|
||||||
archmage_subscribe_desc: "Recibe correos sobre nuevos anuncios y oportunidades de codificar."
|
archmage_subscribe_desc: "Recibe correos sobre nuevos anuncios y oportunidades de codificar."
|
||||||
artisan_introduction_pref: "¡Debemos construir niveles adicionales! La gente clama por más contenido y solo podemos crear unos cuantos. Ahora mismo tu estación de trabajo es el nivel uno; nuestro editor de niveles es apenas usable por sus creadores, así que ten cuidado. Si tienes visiones de campañas que alcanzan el infinito"
|
artisan_introduction_pref: "¡Debemos construir niveles adicionales! La gente clama por más contenido y solo podemos crear unos cuantos. Ahora mismo tu estación de trabajo es el nivel uno; nuestro editor de niveles es apenas usable por sus creadores, así que ten cuidado. Si tienes visiones de campañas que alcanzan el infinito"
|
||||||
artisan_introduction_suf: ", entonces esta Clase es ideal para ti."
|
artisan_introduction_suf: ", entonces esta Clase es ideal para ti."
|
||||||
|
@ -1554,8 +1554,8 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
||||||
ambassador_join_desc: "cuéntanos más sobre ti, que has hecho y qué estarías interesado en hacer. ¡Y continuaremos a partir de ahí!"
|
ambassador_join_desc: "cuéntanos más sobre ti, que has hecho y qué estarías interesado en hacer. ¡Y continuaremos a partir de ahí!"
|
||||||
ambassador_join_note_strong: "Nota"
|
ambassador_join_note_strong: "Nota"
|
||||||
ambassador_join_note_desc: "Una de nuestras principales prioridades es construir un modo multijugador donde los jugadores con mayores dificultades a la hora de resolver un nivel, puedan invocar a los magos más avanzados para que les ayuden. Será una buena manera de que los Embajadores puedan hacer su trabajo. ¡Te mantendremos informado!"
|
ambassador_join_note_desc: "Una de nuestras principales prioridades es construir un modo multijugador donde los jugadores con mayores dificultades a la hora de resolver un nivel, puedan invocar a los magos más avanzados para que les ayuden. Será una buena manera de que los Embajadores puedan hacer su trabajo. ¡Te mantendremos informado!"
|
||||||
ambassador_subscribe_desc: "Recibe correos sobre actualizaciones de soporte y desarrollo del multijugador."
|
ambassador_subscribe_desc: "Recibe correos acerca de actualizaciones de soporte y desarrollo del multijugador."
|
||||||
# teacher_subscribe_desc: "Get emails on updates and announcements for teachers."
|
teacher_subscribe_desc: "Recibe acerca de actualizaciones y anuncios para profesores."
|
||||||
changes_auto_save: "Los cambios son guardados automáticamente cuando marcas las casillas de verificación."
|
changes_auto_save: "Los cambios son guardados automáticamente cuando marcas las casillas de verificación."
|
||||||
diligent_scribes: "Nuestros diligentes Escribas:"
|
diligent_scribes: "Nuestros diligentes Escribas:"
|
||||||
powerful_archmages: "Nuestros poderosos Archimagos:"
|
powerful_archmages: "Nuestros poderosos Archimagos:"
|
||||||
|
@ -1610,7 +1610,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
||||||
fight: "¡Pelea!"
|
fight: "¡Pelea!"
|
||||||
watch_victory: "Ver tu victoria"
|
watch_victory: "Ver tu victoria"
|
||||||
defeat_the: "Vence a"
|
defeat_the: "Vence a"
|
||||||
# watch_battle: "Watch the battle"
|
watch_battle: "Observa la batalla"
|
||||||
tournament_started: ", iniciado"
|
tournament_started: ", iniciado"
|
||||||
tournament_ends: "El torneo termina"
|
tournament_ends: "El torneo termina"
|
||||||
tournament_ended: "El torneo ha terminado"
|
tournament_ended: "El torneo ha terminado"
|
||||||
|
@ -1659,7 +1659,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
||||||
|
|
||||||
account:
|
account:
|
||||||
payments: "Pagos"
|
payments: "Pagos"
|
||||||
# prepaid_codes: "Prepaid Codes"
|
prepaid_codes: "Código prepagados"
|
||||||
purchased: "Adquirido"
|
purchased: "Adquirido"
|
||||||
subscription: "Suscripción"
|
subscription: "Suscripción"
|
||||||
invoices: "Facturas"
|
invoices: "Facturas"
|
||||||
|
@ -1711,10 +1711,10 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
||||||
# you_can2: "purchase a prepaid code"
|
# you_can2: "purchase a prepaid code"
|
||||||
# you_can3: "that can be applied to your own account or given to others."
|
# you_can3: "that can be applied to your own account or given to others."
|
||||||
|
|
||||||
# coppa_deny:
|
coppa_deny:
|
||||||
# text1: "Can’t wait to learn programming?"
|
text1: "¿No puedes esperar para empezar a programar?"
|
||||||
# text2: "Ask your parents to create an account for you!"
|
text2: "¡Pide a tus padres que hagan una cuenta para ti!"
|
||||||
# close: "Close Window"
|
close: "Cerrar ventana"
|
||||||
|
|
||||||
loading_error:
|
loading_error:
|
||||||
could_not_load: "Error al cargar desde el servidor."
|
could_not_load: "Error al cargar desde el servidor."
|
||||||
|
@ -1860,7 +1860,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
||||||
prizes: "Premios"
|
prizes: "Premios"
|
||||||
total_value: "Valor Total"
|
total_value: "Valor Total"
|
||||||
in_cash: "en dinero"
|
in_cash: "en dinero"
|
||||||
custom_wizard: "Personaliza tu Mago de CodeCombat"
|
custom_wizard: "Personaliza tu Hechicero de CodeCombat"
|
||||||
custom_avatar: "Personaliza tu avatar de CoceCombat"
|
custom_avatar: "Personaliza tu avatar de CoceCombat"
|
||||||
heap: "Por seis meses de acceso \"Startup\""
|
heap: "Por seis meses de acceso \"Startup\""
|
||||||
credits: "creditos"
|
credits: "creditos"
|
||||||
|
@ -1869,19 +1869,19 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
||||||
license: "licencia"
|
license: "licencia"
|
||||||
oreilly: "ebook de tu eleccion"
|
oreilly: "ebook de tu eleccion"
|
||||||
|
|
||||||
# calendar:
|
calendar:
|
||||||
# year: "Year"
|
year: "Año"
|
||||||
# day: "Day"
|
day: "Día"
|
||||||
# month: "Month"
|
month: "Mes"
|
||||||
# january: "January"
|
january: "Enero"
|
||||||
# february: "February"
|
february: "Febrero"
|
||||||
# march: "March"
|
march: "Marzo"
|
||||||
# april: "April"
|
april: "Abril"
|
||||||
# may: "May"
|
may: "Mayo"
|
||||||
# june: "June"
|
june: "Junio"
|
||||||
# july: "July"
|
july: "Julio"
|
||||||
# august: "August"
|
august: "Agosto"
|
||||||
# september: "September"
|
september: "Septiembre"
|
||||||
# october: "October"
|
october: "Octubre"
|
||||||
# november: "November"
|
november: "Noviembre"
|
||||||
# december: "December"
|
december: "Diciembre"
|
||||||
|
|
|
@ -14,85 +14,85 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
||||||
for_developers: "Pour développeurs" # Not currently shown on home page.
|
for_developers: "Pour développeurs" # Not currently shown on home page.
|
||||||
or_ipad: "Ou télécharger pour iPad"
|
or_ipad: "Ou télécharger pour iPad"
|
||||||
|
|
||||||
# new_home:
|
new_home:
|
||||||
# slogan: "The most engaging game for learning programming."
|
slogan: "Le jeu le plus engageant pour apprendre la programmation."
|
||||||
# classroom_edition: "Classroom Edition:"
|
classroom_edition: "Édition Classe:"
|
||||||
# learn_to_code: "Learn to code:"
|
learn_to_code: "Apprend à programmer:"
|
||||||
# teacher: "Teacher"
|
teacher: "Enseignant"
|
||||||
# student: "Student"
|
student: "Étudiant"
|
||||||
# play_now: "Play Now"
|
play_now: "Jouez Maintenant"
|
||||||
# im_a_teacher: "I'm a Teacher"
|
im_a_teacher: "Je suis un enseignant"
|
||||||
# im_a_student: "I'm a Student"
|
im_a_student: "Je suis un étudiant"
|
||||||
# learn_more: "Learn more"
|
learn_more: "Pour en savoir plus"
|
||||||
# classroom_in_a_box: "A classroom in-a-box for teaching computer science."
|
classroom_in_a_box: "Une classe tout-inclus pour enseigner l'informatique."
|
||||||
# codecombat_is: "CodeCombat is a platform <strong>for students</strong> to learn computer science while playing through a real game."
|
codecombat_is: "CodeCombat est une plateforme <strong>pour les étudiants</strong> afin d'apprendre l'informatique tout en jouant."
|
||||||
# our_courses: "Our courses have been specifically playtested to <strong>excel in the classroom</strong>, even by teachers with little to no prior programming experience."
|
our_courses: "Nos cours ont été testés spécifiquement pour <strong>excellé en classe</strong>, même si les enseignants ont peu ou pas d'expérience en programmation."
|
||||||
# top_screenshots_hint: "Students write code and see their changes update in real-time"
|
top_screenshots_hint: "Les étudiants écrivent du code et voient leurs changements s'appliqués en temps-réel"
|
||||||
# designed_with: "Designed with teachers in mind"
|
designed_with: "Concu en pensant aux enseignants"
|
||||||
# real_code: "Real, typed code"
|
real_code: "Vrai code entré au clavier"
|
||||||
# from_the_first_level: "from the first level"
|
from_the_first_level: "à partir du premier niveau"
|
||||||
# getting_students: "Getting students to typed code as quickly as possible is critical to learning programming syntax and proper structure."
|
getting_students: "Encourager les étudiants à écrire du code aussi rapidement que possible est primordial afin qu'ils apprennent comment bien structurer et écrire un programme."
|
||||||
# educator_resources: "Educator resources"
|
educator_resources: "Resources pour les enseignants"
|
||||||
# course_guides: "and course guides"
|
course_guides: "et les guides de cours"
|
||||||
# teaching_computer_science: "Teaching computer science does not require a costly degree, because we provide tools to support educators of all backgrounds."
|
teaching_computer_science: "Enseigner l'informatique ne nécessite pas un diplôme dispendieux, parce que nous fournissons des outils afin d'aider les enseignants, peu importe leurs curriculums."
|
||||||
# accessible_to: "Accessible to"
|
accessible_to: "Accessible à"
|
||||||
# everyone: "everyone"
|
everyone: "tout le monde"
|
||||||
# democratizing: "Democratizing the process of learning coding is at the core of our philosophy. Everyone should be able to learn to code."
|
democratizing: "Démocratiser le processus d'apprendre à programmer est au coeur de notre philosophie. Tout le monde devrait être capable d'apprendre la programmation."
|
||||||
# forgot_learning: "I think they actually forgot that they were actually learning something."
|
forgot_learning: "Je crois qu'ils ont oublié qu'ils étaient en train d'apprendre quelquechose."
|
||||||
# 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."
|
wanted_to_do: " Programmer est quelquechose que j'ai toujours voulu faire, et je n'ai jamais pensé que je pourrais l'apprendre à l'école."
|
||||||
# why_games: "Why is learning through games important?"
|
why_games: "Pourquoi est-ce qu'apprendre en jouant est important?"
|
||||||
# games_reward: "Games reward the productive struggle."
|
games_reward: "Les jeux récompensent l'effort productif."
|
||||||
# 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."
|
encourage: "Le jeu est une plateforme qui encourage l'interaction, la découverte et l'essaie et erreur. Un bon jeu défit le joeur d'apprendre à maîtriser de nouvelles habiletés au fil du temps, ce qui correspond au même processus critique que l'on retrouve au niveau de l'éducation."
|
||||||
# excel: "Games excel at rewarding"
|
excel: "Les jeux sont excellents afin de récompenser"
|
||||||
# struggle: "productive struggle"
|
struggle: "l'effort productif"
|
||||||
# kind_of_struggle: "the kind of struggle that results in learning that’s engaging and"
|
kind_of_struggle: "le type d'effort qui permet d'apprendre, qui nous engage et"
|
||||||
# motivating: "motivating"
|
motivating: "qui nous motive"
|
||||||
# not_tedious: "not tedious."
|
not_tedious: "non pas fastidieux."
|
||||||
# gaming_is_good: "Studies suggest gaming is good for children’s brains. (it’s true!)"
|
gaming_is_good: "Des études suggèrent que jouer est bon pour le cerveau des enfants. (C'est vrai!)"
|
||||||
# game_based: "When game-based learning systems are"
|
game_based: "Quand les systèmes d'apprentissage basés sur le jeu sont"
|
||||||
# compared: "compared"
|
compared: "comparés"
|
||||||
# conventional: "against conventional assessment methods, the difference is clear: games are better at helping students retain knowledge, concentrate and"
|
conventional: "aux méthodes d'évaluation conventionnelles, la différence est claire: les jeux sont meilleurs afin d'aider les enfants à retenir ce qu'ils apprennent, à se concentrer et"
|
||||||
# perform_at_higher_level: "perform at a higher level of achievement"
|
perform_at_higher_level: "à performer à un niveau supérieur d'accomplissement"
|
||||||
# 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."
|
feedback: "Les jeux procurent aussi des résultats en temps réel qui permettent aux étudiants d'ajuster leur solution et de comprendre des concepts de façon plus holistique, au lieu d'être limité aux simples réponses “correct” ou “incorrect”."
|
||||||
# real_game: "A real game, played with real coding."
|
real_game: "Un vrai jeu, joué en programmant pour de vrai."
|
||||||
# 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."
|
great_game: "Un bon jeu c'est plus qu'une série d'insignes et d'accomplissements - c'est à propos de l'aventure d'un joueur, des énigmes bien conçues et la capacité d'entreprendre des défis avec confiance et détermination."
|
||||||
# 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."
|
agency: "CodeCombat est un jeu qui donne aux joueurs cette confiance et détermination à l'aide de notre interpretteur de lignes de code, qui aide les étudiants débutants ainsi qu'avancés à concevoir des programmes bien écrits et valides."
|
||||||
# request_demo_title: "Get your students started today!"
|
request_demo_title: "Débutez avec vos étudiants aujourd'hui!"
|
||||||
# request_demo_subtitle: "Request a demo and get your students started in less than an hour."
|
request_demo_subtitle: "Demandez une démonstration et permettez à vos étudiants de démarrer en moins d'une heure."
|
||||||
# get_started_title: "Set up your class today"
|
get_started_title: "Mettez en place votre classe aujourd'hui"
|
||||||
# get_started_subtitle: "Set up a class, add your students, and monitor their progress as they learn computer science."
|
get_started_subtitle: "Mettez en place une classe, ajoutez vos étudiants et surveillez leurs progrès au fur et à mesure qu'ils apprennent l'informatique."
|
||||||
# request_demo: "Request a Demo"
|
request_demo: "Demandez une Démonstration"
|
||||||
# setup_a_class: "Set Up a Class"
|
setup_a_class: "Mettre en place une classe"
|
||||||
# have_an_account: "Have an account?"
|
have_an_account: "Avez-vous un compte?"
|
||||||
# logged_in_as: "You are currently logged in as"
|
logged_in_as: "Vous êtes présentement enregistré en tant que"
|
||||||
# view_my_classes: "View my classes"
|
view_my_classes: "Voir Mes Classes"
|
||||||
# computer_science: "Computer science courses for all ages"
|
computer_science: "Des cours d'informatique pour tous âges"
|
||||||
# show_me_lesson_time: "Show me lesson time estimates for:"
|
show_me_lesson_time: "Montrez-moi des estimés de temps de cours pour:"
|
||||||
# curriculum: "Total curriculum hours:"
|
curriculum: "Total des heures du curriculum:"
|
||||||
# ffa: "Free for all students"
|
ffa: "Gratuis pour tous les étudiants"
|
||||||
# lesson_time: "Lesson time:"
|
lesson_time: "Temps de cours:"
|
||||||
# coming_soon: "Coming soon!"
|
coming_soon: "Bientôt disponible!"
|
||||||
# courses_available_in: "Courses are available in JavaScript, Python, and Java (coming soon!)"
|
courses_available_in: "Les cours sont disponibles en JavaScript, Python et Java (bientôt disponible!)"
|
||||||
# boast: "Boasts riddles that are complex enough to fascinate gamers and coders alike."
|
boast: "Comprend des énigmes assez complexes pour fasciner autant les joueurs que les programmeurs."
|
||||||
# winning: "A winning combination of RPG gameplay and programming homework that pulls off making kid-friendly education legitimately enjoyable."
|
winning: "Une combinaison gagnante d'élément de jeux de rôles et programmation qui permet aux enfants d'apprendre de façon légitimement plaisante."
|
||||||
# run_class: "Everything you need to run a computer science class in your school today, no CS background required."
|
run_class: "Tous ce dont vous avez besoin pour enseigner l'informaique dans votre classe aujourd'hui, sans expérience préalable en informatique."
|
||||||
# teachers: "Teachers!"
|
teachers: "Enseignants!"
|
||||||
# teachers_and_educators: "Teachers & Educators"
|
teachers_and_educators: "Enseignants et éducateurs"
|
||||||
# class_in_box: "Learn how our classroom-in-a-box platform fits into your curriculum."
|
class_in_box: "Apprenez comment notre plateforme classe-tout-inclus s'adapte à votre curriculum."
|
||||||
# get_started: "Get Started"
|
# get_started: "Get Started"
|
||||||
# students: "Students:"
|
students: "Étudiants:"
|
||||||
# join_class: "Join Class"
|
join_class: "Joindre une classe"
|
||||||
# role: "Your role:"
|
role: "Votre rôle:"
|
||||||
# student_count: "Number of students:"
|
student_count: "Nombre d'étudiants:"
|
||||||
# start_playing_for_free: "Start Playing for Free!"
|
start_playing_for_free: "Commencez à jouer gratuitement!"
|
||||||
# students_and_players: "Students & Players"
|
students_and_players: "Étudiants et joueurs"
|
||||||
# goto_classes: "Go to My Classes"
|
goto_classes: "Aller à Mes Classes"
|
||||||
# view_profile: "View My Profile"
|
view_profile: "Voir Mon Profil"
|
||||||
# view_progress: "View Progress"
|
view_progress: "Voir Progrès"
|
||||||
# check_out_wiki: "Check out our new Educator Wiki"
|
check_out_wiki: "Visionner notre nouveau Wiki pour Éducateurs"
|
||||||
# want_coco: "Want CodeCombat at your school?"
|
want_coco: "Voulez-vous CodeCombat à votre école?"
|
||||||
# form_select_role: "Select primary role"
|
form_select_role: "Sélectionnez votre rôle principale"
|
||||||
# form_select_range: "Select class size"
|
form_select_range: "Sélectionnez la taille de votre classe"
|
||||||
|
|
||||||
nav:
|
nav:
|
||||||
play: "Jouer" # The top nav bar entry where players choose which levels to play
|
play: "Jouer" # The top nav bar entry where players choose which levels to play
|
||||||
|
@ -102,7 +102,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
||||||
blog: "Blog"
|
blog: "Blog"
|
||||||
forum: "Forum"
|
forum: "Forum"
|
||||||
account: "Compte"
|
account: "Compte"
|
||||||
# my_account: "My Account"
|
my_account: "Mon compte"
|
||||||
profile: "Profil"
|
profile: "Profil"
|
||||||
stats: "Stats"
|
stats: "Stats"
|
||||||
code: "Code"
|
code: "Code"
|
||||||
|
@ -112,24 +112,24 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
||||||
about: "À propos"
|
about: "À propos"
|
||||||
contact: "Contact"
|
contact: "Contact"
|
||||||
twitter_follow: "Suivre"
|
twitter_follow: "Suivre"
|
||||||
# students: "Students"
|
students: "Étudiants"
|
||||||
teachers: "Enseignants"
|
teachers: "Enseignants"
|
||||||
careers: "Emplois"
|
careers: "Emplois"
|
||||||
# facebook: "Facebook"
|
facebook: "Facebook"
|
||||||
# twitter: "Twitter"
|
twitter: "Twitter"
|
||||||
# create_a_class: "Create a Class"
|
create_a_class: "Créer une classe"
|
||||||
# other: "Other"
|
other: "Autre"
|
||||||
# learn_to_code: "Learn to Code!"
|
learn_to_code: "Apprenez à programmer!"
|
||||||
# toggle_nav: "Toggle navigation"
|
toggle_nav: "Basculer la navigation"
|
||||||
# jobs: "Jobs"
|
jobs: "Emplois"
|
||||||
# schools: "Schools"
|
schools: "Écoles"
|
||||||
# educator_wiki: "Educator Wiki"
|
educator_wiki: "Wiki pour les éducateurs"
|
||||||
# get_involved: "Get Involved"
|
get_involved: "Devenez impliqué"
|
||||||
# open_source: "Open source (GitHub)"
|
open_source: "Code libre (GitHub)"
|
||||||
# support: "Support"
|
support: "Support"
|
||||||
# faqs: "FAQs"
|
faqs: "FAQs"
|
||||||
# help_pref: "Need help? Email"
|
help_pref: "Besoin d'aide? Email"
|
||||||
# help_suff: "and we'll get in touch!"
|
help_suff: "et nous entrerons en contact!"
|
||||||
|
|
||||||
modal:
|
modal:
|
||||||
close: "Fermer"
|
close: "Fermer"
|
||||||
|
@ -182,55 +182,55 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
||||||
campaign_old_multiplayer: "(Obsolète) Ancienne arènes multijoueurs"
|
campaign_old_multiplayer: "(Obsolète) Ancienne arènes multijoueurs"
|
||||||
campaign_old_multiplayer_description: "Reliques d'un âge plus civilisé. Il n'y a aucune simulation pour ces vielles arènes multijoueur vides de tout héros."
|
campaign_old_multiplayer_description: "Reliques d'un âge plus civilisé. Il n'y a aucune simulation pour ces vielles arènes multijoueur vides de tout héros."
|
||||||
|
|
||||||
# code:
|
code:
|
||||||
# if: "if" # Keywords--these translations show up on hover, so please translate them all, even if it's kind of long. (In the code editor, they will still be in English.)
|
# if: "if" # Keywords--these translations show up on hover, so please translate them all, even if it's kind of long. (In the code editor, they will still be in English.)
|
||||||
# else: "else"
|
else: "Sinon"
|
||||||
# elif: "else if"
|
elif: "et sinon"
|
||||||
# while: "while"
|
while: "tant que"
|
||||||
# loop: "loop"
|
loop: "boucle"
|
||||||
# for: "for"
|
for: "pour"
|
||||||
# break: "break"
|
break: "break"
|
||||||
# continue: "continue"
|
continue: "continue"
|
||||||
# pass: "pass"
|
pass: "passe"
|
||||||
# return: "return"
|
return: "retourne"
|
||||||
# then: "then"
|
then: "alors"
|
||||||
# do: "do"
|
do: "fait"
|
||||||
# end: "end"
|
end: "fin"
|
||||||
# function: "function"
|
function: "fonction"
|
||||||
# def: "define"
|
def: "definit"
|
||||||
# var: "variable"
|
var: "variable"
|
||||||
# self: "self"
|
self: "soi-même"
|
||||||
# hero: "hero"
|
hero: "héros"
|
||||||
# this: "this"
|
this: "ceci"
|
||||||
# or: "or"
|
or: "or"
|
||||||
# "||": "or"
|
"||": "ou"
|
||||||
# and: "and"
|
and: "et"
|
||||||
# "&&": "and"
|
"&&": "et"
|
||||||
# not: "not"
|
not: "n'est pas"
|
||||||
# "!": "not"
|
"!": "n'est pas"
|
||||||
# "=": "assign"
|
"=": "assigner"
|
||||||
# "==": "equals"
|
"==": "équivalent à"
|
||||||
# "===": "strictly equals"
|
"===": "strictement équivalent à"
|
||||||
# "!=": "does not equal"
|
"!=": "n'est pas équivalent à"
|
||||||
# "!==": "does not strictly equal"
|
"!==": "n'est pas strictement équivalent à"
|
||||||
# ">": "is greater than"
|
">": "est plus grand que"
|
||||||
# ">=": "is greater than or equal"
|
">=": "est plus grand que ou équivalent à"
|
||||||
# "<": "is less than"
|
"<": "is less than"
|
||||||
# "<=": "is less than or equal"
|
"<=": "est plus petit ou équivalent à"
|
||||||
# "*": "multiplied by"
|
"*": "multiplié par"
|
||||||
# "/": "divided by"
|
"/": "divisé par"
|
||||||
# "+": "plus"
|
"+": "plus"
|
||||||
# "-": "minus"
|
"-": "moins"
|
||||||
# "+=": "add and assign"
|
"+=": "ajoute et assigne"
|
||||||
# "-=": "subtract and assign"
|
"-=": "soustrait et assigne"
|
||||||
# True: "True"
|
True: "Vrai"
|
||||||
# true: "true"
|
true: "vrai"
|
||||||
# False: "False"
|
False: "Faux"
|
||||||
# false: "false"
|
false: "faux"
|
||||||
# undefined: "undefined"
|
undefined: "non défini"
|
||||||
# null: "null"
|
null: "nul"
|
||||||
# nil: "nil"
|
nil: "nil"
|
||||||
# None: "None"
|
None: "Aucune valeur"
|
||||||
|
|
||||||
share_progress_modal:
|
share_progress_modal:
|
||||||
blurb: "Vous faites beaucoup de progrès ! Partagez ce que vous avez appris grâce à CodeCombat avec vos amis !" # {change}
|
blurb: "Vous faites beaucoup de progrès ! Partagez ce que vous avez appris grâce à CodeCombat avec vos amis !" # {change}
|
||||||
|
@ -263,15 +263,15 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
||||||
school_name: "Nom et ville de votre école"
|
school_name: "Nom et ville de votre école"
|
||||||
optional: "facultatif"
|
optional: "facultatif"
|
||||||
school_name_placeholder: "Exemple : Lycée Champollion, Figeac"
|
school_name_placeholder: "Exemple : Lycée Champollion, Figeac"
|
||||||
# or_sign_up_with: "or sign up with"
|
or_sign_up_with: "ou abonnez-vous avec"
|
||||||
# connected_gplus_header: "You've successfully connected with Google+!"
|
connected_gplus_header: "Vous avez réussi à vous connecter avec votre compte Google+!"
|
||||||
# connected_gplus_p: "Finish signing up so you can log in with your Google+ account."
|
connected_gplus_p: "Finissez de vous abonnez pour pouvoir vous connecter avec votre compte Google+."
|
||||||
# gplus_exists: "You already have an account associated with Google+!"
|
gplus_exists: "Vous avez déjà un compte associé à Google+!"
|
||||||
# connected_facebook_header: "You've successfully connected with Facebook!"
|
connected_facebook_header: "Vous avez réussi à vous connecter avec votre compte Facebook!"
|
||||||
# connected_facebook_p: "Finish signing up so you can log in with your Facebook account."
|
connected_facebook_p: "Finissez de vous abonnez pour pouvoir vous connecter avec votre compte Facebook."
|
||||||
# facebook_exists: "You already have an account associated with Facebook!"
|
facebook_exists: "Vous avez réussi à vous connecter avec votre compte Facebook!"
|
||||||
# hey_students: "Students, enter the class code from your teacher."
|
hey_students: "Étudiants, entrez le code de cours de votre enseignant."
|
||||||
# birthday: "Birthday"
|
birthday: "Anniversaire"
|
||||||
|
|
||||||
recover:
|
recover:
|
||||||
recover_account_title: "Récupérer son compte"
|
recover_account_title: "Récupérer son compte"
|
||||||
|
@ -308,7 +308,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
||||||
submit_patch: "Soumettre un correctif"
|
submit_patch: "Soumettre un correctif"
|
||||||
submit_changes: "Soumettre des Changements"
|
submit_changes: "Soumettre des Changements"
|
||||||
save_changes: "Sauvegarder les modifications"
|
save_changes: "Sauvegarder les modifications"
|
||||||
# required_field: "Required field"
|
required_field: "Champ requis"
|
||||||
|
|
||||||
general:
|
general:
|
||||||
and: "et"
|
and: "et"
|
||||||
|
@ -341,7 +341,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
||||||
subject: "Sujet"
|
subject: "Sujet"
|
||||||
email: "E-mail"
|
email: "E-mail"
|
||||||
password: "Mot de passe"
|
password: "Mot de passe"
|
||||||
# confirm_password: "Confirm Password"
|
confirm_password: "Confirmez votre mot de passe"
|
||||||
message: "Message"
|
message: "Message"
|
||||||
code: "Code"
|
code: "Code"
|
||||||
ladder: "Companion"
|
ladder: "Companion"
|
||||||
|
@ -360,9 +360,9 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
||||||
warrior: "Guerrier"
|
warrior: "Guerrier"
|
||||||
ranger: "Ranger"
|
ranger: "Ranger"
|
||||||
wizard: "Magicien"
|
wizard: "Magicien"
|
||||||
# first_name: "First Name"
|
first_name: "Prénom"
|
||||||
# last_name: "Last Name"
|
last_name: "Nom de famille"
|
||||||
# username: "Username"
|
username: "Nom d'utilisateur"
|
||||||
|
|
||||||
units:
|
units:
|
||||||
second: "seconde"
|
second: "seconde"
|
||||||
|
@ -381,7 +381,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
||||||
years: "années"
|
years: "années"
|
||||||
|
|
||||||
play_level:
|
play_level:
|
||||||
# level_complete: "Level Complete"
|
level_complete: "Niveau complété"
|
||||||
completed_level: "Niveau terminé:"
|
completed_level: "Niveau terminé:"
|
||||||
course: "Cours:"
|
course: "Cours:"
|
||||||
done: "Fait"
|
done: "Fait"
|
||||||
|
@ -425,7 +425,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
||||||
victory_new_item: "Nouvel item"
|
victory_new_item: "Nouvel item"
|
||||||
victory_viking_code_school: "Par la barbe d'Odin, c'est un niveau difficile que tu viens de compléter! Si tu n'est pas un développeur de logiciel, tu devrais l'être ! Ceci vient de te propulser dans l'école de Code Vikings où tu pourras amener tes habilités au prochain niveau et devenir un développer web profesionnel en deux semaines."
|
victory_viking_code_school: "Par la barbe d'Odin, c'est un niveau difficile que tu viens de compléter! Si tu n'est pas un développeur de logiciel, tu devrais l'être ! Ceci vient de te propulser dans l'école de Code Vikings où tu pourras amener tes habilités au prochain niveau et devenir un développer web profesionnel en deux semaines."
|
||||||
victory_become_a_viking: "Devenez un viking"
|
victory_become_a_viking: "Devenez un viking"
|
||||||
# victory_no_progress_for_teachers: "Progress is not saved for teachers. But, you can add a student account to your classroom for yourself."
|
victory_no_progress_for_teachers: "La progression n'est pas sauvegardé pour les enseignants. Mais vous pouvez ajouter un compte étudiant à votre salle de cours pour vous."
|
||||||
guide_title: "Guide"
|
guide_title: "Guide"
|
||||||
tome_cast_button_run: "Exécuter"
|
tome_cast_button_run: "Exécuter"
|
||||||
tome_cast_button_running: "En cours d'exécution"
|
tome_cast_button_running: "En cours d'exécution"
|
||||||
|
@ -505,15 +505,15 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
||||||
tip_strong_opponents: "Même les ennemis les plus puissant ont une faiblesse. - Itachi Uchiha"
|
tip_strong_opponents: "Même les ennemis les plus puissant ont une faiblesse. - Itachi Uchiha"
|
||||||
tip_paper_and_pen: "Avant de commencer à coder, vous pouvez plannifier les choses sur papier."
|
tip_paper_and_pen: "Avant de commencer à coder, vous pouvez plannifier les choses sur papier."
|
||||||
tip_solve_then_write: "D'abord, résolvez le problème. Ensuite, écrivez le code. - John Johnson"
|
tip_solve_then_write: "D'abord, résolvez le problème. Ensuite, écrivez le code. - John Johnson"
|
||||||
# tip_compiler_ignores_comments: "Sometimes I think that the compiler ignores my comments."
|
tip_compiler_ignores_comments: "Des fois, je pense que le compilateur ignore mes commentaires."
|
||||||
# tip_understand_recursion: "The only way to understand recursion is to understand recursion."
|
tip_understand_recursion: "La seule manière de comprendre la récursion est de comprendre la récursion."
|
||||||
# tip_life_and_polymorphism: "Open Source is like a totally polymorphic heterogeneous structure: All types are welcome."
|
tip_life_and_polymorphism: "Le code libre est une structure hétérogène polymorphique. Tous les types sont les bienvenues."
|
||||||
# tip_mistakes_proof_of_trying: "Mistakes in your code are just proof that you are trying."
|
tip_mistakes_proof_of_trying: "Les erreurs dans votre code sont la preuve que vous essayez."
|
||||||
# tip_adding_orgres: "Rounding up ogres."
|
tip_adding_orgres: "Rassembler les ogres."
|
||||||
# tip_sharpening_swords: "Sharpening the swords."
|
tip_sharpening_swords: "Aiguiser les épées."
|
||||||
# tip_ratatouille: "You must not let anyone define your limits because of where you come from. Your only limit is your soul. - Gusteau, Ratatouille"
|
tip_ratatouille: "Tu ne dois laisser personne définir où se trouvent tes limites. La seule vraie limite est c'est ton âme. - Gusteau, Ratatouille"
|
||||||
# tip_nemo: "When life gets you down, want to know what you've gotta do? Just keep swimming, just keep swimming. - Dory, Finding Nemo"
|
tip_nemo: "Quand la vie vous rabaisse, vous savez ce que vous devenez faire ? Juste continuer de nager, juste continuer de nager. - Dory, Finding Nemo"
|
||||||
# tip_internet_weather: "Just move to the internet, it's great here. We get to live inside where the weather is always awesome. - John Green"
|
tip_internet_weather: "Just move to the internet, it's great here. We get to live inside where the weather is always awesome. - John Green"
|
||||||
# tip_nerds: "Nerds are allowed to love stuff, like jump-up-and-down-in-the-chair-can't-control-yourself love it. - John Green"
|
# tip_nerds: "Nerds are allowed to love stuff, like jump-up-and-down-in-the-chair-can't-control-yourself love it. - John Green"
|
||||||
# tip_self_taught: "I taught myself 90% of what I've learned. And that's normal! - Hank Green"
|
# tip_self_taught: "I taught myself 90% of what I've learned. And that's normal! - Hank Green"
|
||||||
# tip_luna_lovegood: "Don't worry, you're just as sane as I am. - Luna Lovegood"
|
# tip_luna_lovegood: "Don't worry, you're just as sane as I am. - Luna Lovegood"
|
||||||
|
@ -1689,27 +1689,27 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
||||||
retrying: "Erreur interne, réessayez"
|
retrying: "Erreur interne, réessayez"
|
||||||
success: "Paiement accepté, merci !"
|
success: "Paiement accepté, merci !"
|
||||||
|
|
||||||
# account_prepaid:
|
account_prepaid:
|
||||||
# purchase_code: "Purchase a Subscription Code"
|
purchase_code: "Acheter un code d'abonnement"
|
||||||
# purchase_code1: "Subscription Codes can be redeemed to add premium subscription time to one or more CodeCombat accounts."
|
purchase_code1: "Les codes d'abonnement peuvent seulement être racheter pour ajouter des comptes prenium à un ou plusieurs comptes de CodeCombat"
|
||||||
# purchase_code2: "Each CodeCombat account can only redeem a particular Subscription Code once."
|
# purchase_code2: "Each CodeCombat account can only redeem a particular Subscription Code once."
|
||||||
# purchase_code3: "Subscription Code months will be added to the end of any existing subscription on the account."
|
# purchase_code3: "Subscription Code months will be added to the end of any existing subscription on the account."
|
||||||
# users: "Users"
|
users: "Utilisateurs"
|
||||||
# months: "Months"
|
months: "Mois"
|
||||||
# purchase_total: "Total"
|
purchase_total: "Total"
|
||||||
# purchase_button: "Submit Purchase"
|
# purchase_button: "Submit Purchase"
|
||||||
# your_codes: "Your Codes"
|
your_codes: "Vos codes"
|
||||||
# redeem_codes: "Redeem a Subscription Code"
|
# redeem_codes: "Redeem a Subscription Code"
|
||||||
# prepaid_code: "Prepaid Code"
|
# prepaid_code: "Prepaid Code"
|
||||||
# lookup_code: "Lookup prepaid code"
|
# lookup_code: "Lookup prepaid code"
|
||||||
# apply_account: "Apply to your account"
|
# apply_account: "Apply to your account"
|
||||||
# copy_link: "You can copy the code's link and send it to someone."
|
# copy_link: "You can copy the code's link and send it to someone."
|
||||||
# quantity: "Quantity"
|
quantity: "Quantité"
|
||||||
# redeemed: "Redeemed"
|
# redeemed: "Redeemed"
|
||||||
# no_codes: "No codes yet!"
|
no_codes: "Pas de code soumis"
|
||||||
# you_can1: "You can"
|
you_can1: "Vous pouvez"
|
||||||
# you_can2: "purchase a prepaid code"
|
you_can2: "achetez un code pré-payé"
|
||||||
# you_can3: "that can be applied to your own account or given to others."
|
you_can3: "qui pourra être appliqué à votre compte ou donné à un autre."
|
||||||
|
|
||||||
# coppa_deny:
|
# coppa_deny:
|
||||||
# text1: "Can’t wait to learn programming?"
|
# text1: "Can’t wait to learn programming?"
|
||||||
|
@ -1869,19 +1869,19 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
||||||
license: "Licence"
|
license: "Licence"
|
||||||
oreilly: "ebook de votre choix"
|
oreilly: "ebook de votre choix"
|
||||||
|
|
||||||
# calendar:
|
calendar:
|
||||||
# year: "Year"
|
year: "Année"
|
||||||
# day: "Day"
|
day: "Jour"
|
||||||
# month: "Month"
|
month: "Mois"
|
||||||
# january: "January"
|
january: "Janvier"
|
||||||
# february: "February"
|
february: "Février"
|
||||||
# march: "March"
|
march: "Mars"
|
||||||
# april: "April"
|
april: "Avril"
|
||||||
# may: "May"
|
may: "Mai"
|
||||||
# june: "June"
|
june: "Juin"
|
||||||
# july: "July"
|
july: "Juillet"
|
||||||
# august: "August"
|
august: "Août"
|
||||||
# september: "September"
|
september: "Septembre"
|
||||||
# october: "October"
|
october: "Octobre"
|
||||||
# november: "November"
|
november: "Novembre"
|
||||||
# december: "December"
|
december: "Décembre"
|
||||||
|
|
|
@ -5,8 +5,8 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
||||||
no_mobile: "CodeCombat is niet gemaakt voor mobiele apparaten en werkt misschien niet!" # Warning that shows up on mobile devices
|
no_mobile: "CodeCombat is niet gemaakt voor mobiele apparaten en werkt misschien niet!" # Warning that shows up on mobile devices
|
||||||
play: "Speel" # The big play button that opens up the campaign view.
|
play: "Speel" # The big play button that opens up the campaign view.
|
||||||
play_campaign_version: "Speel de Verhaallijn" # Shows up under big play button if you only play /courses
|
play_campaign_version: "Speel de Verhaallijn" # Shows up under big play button if you only play /courses
|
||||||
old_browser: "Oh oh, jouw browser is te oud om CodeCombat te kunnen spelen, Sorry!" # Warning that shows up on really old Firefox/Chrome/Safari
|
old_browser: "uh-oh, jouw browser is te oud om CodeCombat te kunnen spelen, Sorry!" # Warning that shows up on really old Firefox/Chrome/Safari
|
||||||
old_browser_suffix: "Je kan toch proberen, maar het zal waarschijnlijk niet werken!"
|
old_browser_suffix: "Je kan alsnog proberen, maar het zal waarschijnlijk niet werken!"
|
||||||
ipad_browser: "Slecht nieuws: CodeCombat draait niet in je browser op de iPad. Goed nieuws: onze iPad-app wordt op het moment beoordeeld door Apple."
|
ipad_browser: "Slecht nieuws: CodeCombat draait niet in je browser op de iPad. Goed nieuws: onze iPad-app wordt op het moment beoordeeld door Apple."
|
||||||
campaign: "Verhaallijn"
|
campaign: "Verhaallijn"
|
||||||
for_beginners: "Voor Beginners"
|
for_beginners: "Voor Beginners"
|
||||||
|
@ -24,25 +24,25 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
||||||
im_a_teacher: "Ik ben een leraar"
|
im_a_teacher: "Ik ben een leraar"
|
||||||
im_a_student: "Ik ben een leerling"
|
im_a_student: "Ik ben een leerling"
|
||||||
learn_more: "Lees verder"
|
learn_more: "Lees verder"
|
||||||
classroom_in_a_box: "Een kant-en-klare digitale klas voor programmeerlessen."
|
classroom_in_a_box: "Kant-en-klare programmeerlessen."
|
||||||
codecombat_is: "CodeCombat is een platform waarmee leerlingen leren programmeren door het spelen van een spel." # {change}
|
codecombat_is: "CodeCombat is een platform waarmee leerlingen leren programmeren door het spelen van een spel." # {change}
|
||||||
our_courses: "Onze lessen zijn specifiek ontwikkeld voor een klasomgeving, zelfs voor leraren zonder programmeerervaring." # {change}
|
our_courses: "Onze lessen zijn specifiek ontwikkeld voor een klasomgeving, zelfs voor leraren zonder programmeerervaring." # {change}
|
||||||
top_screenshots_hint: "Leerlingen schrijven code en zien direct het resultaat van de verandering."
|
top_screenshots_hint: "Leerlingen schrijven code en zien direct resultaat."
|
||||||
designed_with: "Gemaakt voor leraren"
|
designed_with: "Gemaakt voor leraren"
|
||||||
real_code: "Echte, getypte code"
|
real_code: "Echte, getypte code"
|
||||||
from_the_first_level: "vanaf het eerste level"
|
from_the_first_level: "vanaf het eerste level"
|
||||||
getting_students: "Leerlingen zo snel mogelijk echte code laten schrijven is noodzakelijk voor het leren van programmeer syntax en correcte structuur."
|
getting_students: "Doordat leerlingen code schrijven in 'echte programmeertaal', leren ze niet alleen hoe computers denken, maar kunnen ze het ook echt toepassen."
|
||||||
educator_resources: "Lesbrieven voor docenten"
|
educator_resources: "Lesbrieven voor docenten"
|
||||||
course_guides: "en ondersteuningsmateriaal"
|
course_guides: "en ondersteuningsmateriaal"
|
||||||
teaching_computer_science: "Je hebt geen informatica diploma nodig om te kunnen programmeren, wij verschaffen de materialen waarmee elke docent programmeerles kan geven."
|
teaching_computer_science: "Je hebt geen informatica diploma nodig om te kunnen programmeren, wij verschaffen de materialen waarmee elke docent programmeerles kan geven."
|
||||||
accessible_to: "Bereikbaar voor"
|
accessible_to: "Toegankelijk voor"
|
||||||
everyone: "iedereen"
|
everyone: "iedereen"
|
||||||
democratizing: "Programmeerles toegankelijk maken is onze filosofie. Iedereen moet de kans krijgen om te leren programmeren."
|
democratizing: "Programmeerles toegankelijk maken is onze filosofie. Iedereen moet de kans krijgen om te leren programmeren."
|
||||||
forgot_learning: "Volgens mij hadden ze niet meer door dat ze eigenlijk bezig waren met leren."
|
forgot_learning: "Volgens mij hadden ze niet meer door dat ze eigenlijk bezig waren met leren."
|
||||||
wanted_to_do: " Ik wilde altijd al leren programmeren, maar op school was hier nooit aandacht voor."
|
wanted_to_do: " Ik wilde altijd al leren programmeren, maar op school was hier nooit aandacht voor."
|
||||||
why_games: "Waarom is spelenderwijs leren belangrijk?"
|
why_games: "Waarom is spelenderwijs leren belangrijk?"
|
||||||
games_reward: "Games vergroten de productiviteit."
|
games_reward: "Games vergroten de productiviteit."
|
||||||
encourage: "Gaming is een middel dat interactie, nieuwschierigheid, en trial-and-error aanmoedigt. Een goed spel daagt de speler uit zijn vaardigheden te perfectioneren, wat hetzelfde noodzakelijke proces is waar leerlingen doorheen gaan wanneer zij iets leren."
|
encourage: "Iedereen wordt geboren als klein onderzoekertje dat de wereld ontdekt door vallen en opstaan. Deze intrinsieke motivatie om te leren ziet men ook terug in een spelomgeving. Voor de speler wordt 'leren' een middel om het spel te winnen, in plaats van een doel op zich."
|
||||||
excel: "Games helpen bij de"
|
excel: "Games helpen bij de"
|
||||||
struggle: "productiviteit-strijd"
|
struggle: "productiviteit-strijd"
|
||||||
kind_of_struggle: "het soort worsteling dat uitmondt in een leerproces dat uitdagend is en "
|
kind_of_struggle: "het soort worsteling dat uitmondt in een leerproces dat uitdagend is en "
|
||||||
|
@ -58,7 +58,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
||||||
great_game: "Een goed spel is meer dan alleen medailles en prestaties - het gaat om een reis, nauwkeurig ontworpen puzzels, en de mogelijkheid om uitdagingen vol zelfvertrouwen aan te pakken."
|
great_game: "Een goed spel is meer dan alleen medailles en prestaties - het gaat om een reis, nauwkeurig ontworpen puzzels, en de mogelijkheid om uitdagingen vol zelfvertrouwen aan te pakken."
|
||||||
agency: "CodeCombat is een game die de mogelijkheid en het zelfvertrouwen geeft om met echte code te werken, wat zowel beginners als gevorderde helpt bij het schrijven van goede, valide code."
|
agency: "CodeCombat is een game die de mogelijkheid en het zelfvertrouwen geeft om met echte code te werken, wat zowel beginners als gevorderde helpt bij het schrijven van goede, valide code."
|
||||||
request_demo_title: "Laat je leerlingen vandaag nog starten!"
|
request_demo_title: "Laat je leerlingen vandaag nog starten!"
|
||||||
request_demo_subtitle: "Vraag een demo aan en start binnen een uur met programmeerlessen."
|
request_demo_subtitle: "Vraag een demo aan en start met programmeerlessen."
|
||||||
get_started_title: "Maak vandaag nog een klas aan!"
|
get_started_title: "Maak vandaag nog een klas aan!"
|
||||||
get_started_subtitle: "Maak een klas aan, voeg je leerlingen toe, en monitor hun vooruitgang."
|
get_started_subtitle: "Maak een klas aan, voeg je leerlingen toe, en monitor hun vooruitgang."
|
||||||
request_demo: "Vraag een demo aan"
|
request_demo: "Vraag een demo aan"
|
||||||
|
@ -74,7 +74,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
||||||
coming_soon: "Binnenkort beschikbaar!"
|
coming_soon: "Binnenkort beschikbaar!"
|
||||||
courses_available_in: "Lessen zijn beschikbaar in JavaScript, Python, en Java (Java is binnenkort beschikbaar!)"
|
courses_available_in: "Lessen zijn beschikbaar in JavaScript, Python, en Java (Java is binnenkort beschikbaar!)"
|
||||||
boast: "Uitdagende raadsels die zowel gamers als fanatieke programmeurs weten te prikkelen."
|
boast: "Uitdagende raadsels die zowel gamers als fanatieke programmeurs weten te prikkelen."
|
||||||
winning: "Een gouden combinatie van spel-elementen en programmeerhuiswerk, dat samen zorgt voor kind-vriendelijk en oprecht aangenaam onderwijs."
|
winning: "Een gouden combinatie van spel-elementen en programmeerhuiswerk, dat samen zorgt voor kindvriendelijk en oprecht aangenaam onderwijs."
|
||||||
run_class: "Alles wat je nodig hebt om vandaag nog programmeerlessen in jouw klas te geven, geen voorkennis vereist."
|
run_class: "Alles wat je nodig hebt om vandaag nog programmeerlessen in jouw klas te geven, geen voorkennis vereist."
|
||||||
teachers: "Docenten!"
|
teachers: "Docenten!"
|
||||||
teachers_and_educators: "Docenten & Mentoren"
|
teachers_and_educators: "Docenten & Mentoren"
|
||||||
|
@ -92,7 +92,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
||||||
check_out_wiki: "Bekijk onze nieuwe leraren Wiki"
|
check_out_wiki: "Bekijk onze nieuwe leraren Wiki"
|
||||||
want_coco: "Wil je CodeCombat op jouw school?"
|
want_coco: "Wil je CodeCombat op jouw school?"
|
||||||
form_select_role: "Selecteer je rol"
|
form_select_role: "Selecteer je rol"
|
||||||
form_select_range: "Selecteer klassengrootte"
|
form_select_range: "Selecteer klasomvang"
|
||||||
|
|
||||||
nav:
|
nav:
|
||||||
play: "Levels" # The top nav bar entry where players choose which levels to play
|
play: "Levels" # The top nav bar entry where players choose which levels to play
|
||||||
|
@ -221,19 +221,19 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
||||||
"/": "gedeeld door"
|
"/": "gedeeld door"
|
||||||
"+": "plus"
|
"+": "plus"
|
||||||
"-": "min"
|
"-": "min"
|
||||||
# "+=": "add and assign"
|
"+=": "tel op en wijs toe"
|
||||||
# "-=": "subtract and assign"
|
"-=": "trek af en wijs toe"
|
||||||
True: "Waar"
|
True: "Waar"
|
||||||
true: "waar"
|
true: "waar"
|
||||||
False: "onwaar"
|
False: "onwaar"
|
||||||
false: "onwaar"
|
false: "onwaar"
|
||||||
undefined: "ongedefinieerd"
|
undefined: "ongedefinieerd"
|
||||||
# null: "null"
|
null: "nul"
|
||||||
# nil: "nil"
|
nil: "nihil"
|
||||||
None: "Geen"
|
None: "Geen"
|
||||||
|
|
||||||
share_progress_modal:
|
share_progress_modal:
|
||||||
blurb: "Je gaat snel vooruit! Vertel aan je ouders hoeveel je geleerd hebt van CodeCombat."
|
blurb: "Je gaat snel vooruit! Vertel je ouders hoeveel je geleerd hebt van CodeCombat."
|
||||||
email_invalid: "E-mailadres klopt niet."
|
email_invalid: "E-mailadres klopt niet."
|
||||||
form_blurb: "Vul het e-mailadres van je ouders hieronder in en we zullen het ze laten zien!"
|
form_blurb: "Vul het e-mailadres van je ouders hieronder in en we zullen het ze laten zien!"
|
||||||
form_label: "E-mailadres"
|
form_label: "E-mailadres"
|
||||||
|
@ -472,19 +472,19 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
||||||
tip_reticulating: "Paden aan het verknopen."
|
tip_reticulating: "Paden aan het verknopen."
|
||||||
tip_harry: "Je bent een tovenaar, "
|
tip_harry: "Je bent een tovenaar, "
|
||||||
tip_great_responsibility: "Met een groots talent voor programmeren komt een grootse debug verantwoordelijkheid."
|
tip_great_responsibility: "Met een groots talent voor programmeren komt een grootse debug verantwoordelijkheid."
|
||||||
tip_munchkin: "Als je je groentjes niet opeet zal een munchkin je ontvoeren terwijl je slaapt."
|
tip_munchkin: "Als je je groenten niet opeet zal een munchkin je ontvoeren terwijl je slaapt."
|
||||||
tip_binary: "Er zijn 10 soorten mensen in de wereld: Mensen die binair kunnen tellen en mensen die dat niet kunnen."
|
tip_binary: "Er zijn 10 soorten mensen in de wereld: Mensen die binair kunnen tellen en mensen die dat niet kunnen."
|
||||||
tip_commitment_yoda: "Een programmeur moet de grootste inzet hebben, een meest serieuze geest. ~ Yoda"
|
tip_commitment_yoda: "Een programmeur moet de grootste inzet hebben, een meest serieuze geest. ~ Yoda"
|
||||||
tip_no_try: "Doe het. Of doe het niet. Je kunt niet proberen. - Yoda"
|
tip_no_try: "Doe het. Of doe het niet. Je kunt niet proberen. - Yoda"
|
||||||
tip_patience: "Geduld moet je hebben, jonge Padawan. - Yoda"
|
tip_patience: "Geduld moet je hebben, jonge Padawan. - Yoda"
|
||||||
tip_documented_bug: "Een gedocumenteerde fout is geen fout; het is deel van het programma."
|
tip_documented_bug: "Een gedocumenteerde fout is geen fout; het is deel van het programma."
|
||||||
tip_impossible: "Het lijkt altijd onmogelijk tot het gedaan wordt. - Nelson Mandela"
|
tip_impossible: "Het lijkt altijd onmogelijk totdat iemand het doet. - Nelson Mandela"
|
||||||
tip_talk_is_cheap: "Je kunt het goed uitleggen, maar toon me de code. - Linus Torvalds"
|
tip_talk_is_cheap: "Je kunt het goed uitleggen, maar toon me de code. - Linus Torvalds"
|
||||||
tip_first_language: "Het ergste dat je kan leren is je eerste programmeertaal. - Alan Kay"
|
tip_first_language: "Het ergste dat je kan leren is je eerste programmeertaal. - Alan Kay"
|
||||||
tip_hardware_problem: "Q: Hoeveel programmeurs heb je nodig om een lampje te vervangen? A: Nul, het is een a hardware probleem."
|
tip_hardware_problem: "Q: Hoeveel programmeurs heb je nodig om een lampje te vervangen? A: Nul, het is een a hardware probleem."
|
||||||
tip_hofstadters_law: "De Wet van Hofstadter: Het duurt altijd langer dan je verwacht, zelfs wanneer je rekening houdt met de Wet van Hofstadter."
|
tip_hofstadters_law: "De Wet van Hofstadter: Het duurt altijd langer dan je verwacht, zelfs wanneer je rekening houdt met de Wet van Hofstadter."
|
||||||
tip_premature_optimization: "vroegtijdig optimaliseren is de wortel van al het kwaad. - Donald Knuth"
|
tip_premature_optimization: "vroegtijdig optimaliseren is de wortel van al het kwaad. - Donald Knuth"
|
||||||
tip_brute_force: "Wanneer je twijfelt, gebruik brute force. - Ken Thompson"
|
tip_brute_force: "Wanneer je twijfelt, gebruik dan brute force. - Ken Thompson"
|
||||||
tip_extrapolation: "Er zijn twee soorten mensen: Zij die iets kunnen afleiden van onvolledige gegevens..."
|
tip_extrapolation: "Er zijn twee soorten mensen: Zij die iets kunnen afleiden van onvolledige gegevens..."
|
||||||
tip_superpower: "Van alle dingen komt programmeren het dichtst in de buurt van een superkracht."
|
tip_superpower: "Van alle dingen komt programmeren het dichtst in de buurt van een superkracht."
|
||||||
tip_control_destiny: "In echte open source, hebt je het recht om je eigen toekomst te bepalen. - Linus Torvalds"
|
tip_control_destiny: "In echte open source, hebt je het recht om je eigen toekomst te bepalen. - Linus Torvalds"
|
||||||
|
@ -818,51 +818,51 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
||||||
more_info_3: "Het is een goede plek om contact te leggen met andere leerkrachten, die CodeCombat gebruiken."
|
more_info_3: "Het is een goede plek om contact te leggen met andere leerkrachten, die CodeCombat gebruiken."
|
||||||
|
|
||||||
teachers_quote:
|
teachers_quote:
|
||||||
name: "Offerte Formulier" # {change}
|
name: "Demo Formulier"
|
||||||
title: "Offerte aanvragen" # {change}
|
title: "Demo aanvragen"
|
||||||
subtitle: "Haal CodeCombat jouw klaslokaal, club, school of wijk in!"
|
subtitle: "Gebruik CodeCombat voor jouw klas of programmeerclub!"
|
||||||
email_exists: "Er bestaat al een gebruiker met dit emailadres."
|
email_exists: "Er bestaat al een gebruiker met dit emailadres."
|
||||||
phone_number: "Telefoonnummer"
|
phone_number: "Telefoonnummer"
|
||||||
phone_number_help: "Waar kunnen we je bereiken tijdens de werkdag?"
|
phone_number_help: "Waarop kunnen we je bereiken tijdens kantooruren?"
|
||||||
primary_role_label: "Uw Primaire Rol"
|
primary_role_label: "Uw primaire rol"
|
||||||
role_default: "Selecteer Rol"
|
role_default: "Selecteer primaire rol"
|
||||||
primary_role_default: "Selecteer Primaire Rol"
|
primary_role_default: "Selecteer rol"
|
||||||
purchaser_role_default: "Selecteer Aanschaf Rol"
|
purchaser_role_default: "Selecteer rol in besluitvorming"
|
||||||
tech_coordinator: "IT coördinator"
|
tech_coordinator: "IT coördinator"
|
||||||
advisor: "Adviseur"
|
advisor: "Adviseur"
|
||||||
principal: "Schoolhoofd"
|
principal: "Schoolhoofd"
|
||||||
superintendent: "Leidinggevende"
|
superintendent: "Leidinggevende"
|
||||||
parent: "Ouder/verzorger"
|
parent: "Ouder/verzorger"
|
||||||
purchaser_role_label: "Uw aanschaf Rol"
|
purchaser_role_label: "Uw rol in besluitvorming"
|
||||||
influence_advocate: "Promoten"
|
influence_advocate: "Promoten"
|
||||||
evaluate_recommend: "Evalueren/Aanbevelen"
|
evaluate_recommend: "Evalueren/Aanbevelen"
|
||||||
approve_funds: "Budget toewijzen"
|
approve_funds: "Budget toewijzen"
|
||||||
no_purchaser_role: "Geen rol in aanschaf keuze"
|
no_purchaser_role: "Geen rol in besluitvorming"
|
||||||
organization_label: "Schoolnaam"
|
organization_label: "Schoolnaam"
|
||||||
city: "Stad"
|
city: "Stad"
|
||||||
state: "Provincie"
|
state: "Provincie"
|
||||||
country: "Land"
|
country: "Land"
|
||||||
num_students_help: "Hoeveel leerlingen verwacht u in te schrijven voor CodeCombat?"
|
num_students_help: "Voor hoeveel leerlingen zou je CodeCombat willen gebruiken?"
|
||||||
num_students_default: "Selecteer bereik"
|
num_students_default: "Selecteer bereik"
|
||||||
education_level_label: "Opleidingsniveau van de leerlingen"
|
education_level_label: "Opleidingsniveau van leerlingen"
|
||||||
education_level_help: "Kies hoeveel van toepassing is."
|
education_level_help: "Selecteer toepasbare niveau(s)."
|
||||||
elementary_school: "Basisschool"
|
elementary_school: "Basisschool"
|
||||||
high_school: "Middelbare school"
|
high_school: "Middelbare school (bovenbouw)"
|
||||||
please_explain: "(licht a.u.b. toe)"
|
please_explain: "(licht toe a.u.b.)"
|
||||||
middle_school: "Brugklas"
|
middle_school: "Middelbare school (onderbouw)"
|
||||||
college_plus: "Hoger Onderwijs"
|
college_plus: "Hoger Onderwijs"
|
||||||
anything_else: "Is er verder nog iets dat we moeten weten?"
|
anything_else: "Is er verder nog iets dat we moeten weten?"
|
||||||
thanks_header: "Bedankt voor het aanvragen van een citaat!" # {change}
|
thanks_header: "Bedankt voor je demo-aanvraag!"
|
||||||
thanks_sub_header: "Bedankt voor je interesse in CodeCombat voor jouw school."
|
thanks_sub_header: "Bedankt voor je interesse in CodeCombat."
|
||||||
thanks_p: "Wij zullen spoedig contact met u opnemen. Vragen? Mail ons:" # {change}
|
thanks_p: "Wij zullen spoedig contact met u opnemen. Vragen? Mail ons:" # {change}
|
||||||
# back_to_classes: "Back to Classes"
|
back_to_classes: "Terug naar Klassen"
|
||||||
finish_signup: "Voltooi aanmaken van jouw docenten-account:"
|
finish_signup: "Voltooi je docenten-account:"
|
||||||
finish_signup_p: "Maak een account om een klas op te zetten, voeg leerlingen toe en bekijk hun voortgang terwijl ze leren programmeren"
|
finish_signup_p: "Maak een account om een klas op te zetten, voeg leerlingen toe en bekijk hun voortgang terwijl ze leren programmeren"
|
||||||
signup_with: "Schrijf je in met:"
|
signup_with: "Schrijf je in met:"
|
||||||
connect_with: "Koppel met:"
|
connect_with: "Koppel met:"
|
||||||
conversion_warning: "WAARSCHUWING: Je huidige account is een <em>Leerling Account</em>. Wanneer je dit formulier indient zal dit account gewijzigt worden naar een Docenten Account."
|
conversion_warning: "WAARSCHUWING: Je huidige account is een <em>Leerling Account</em>. Wanneer je dit formulier indient zal dit account worden omgezet naar een Docenten Account."
|
||||||
learn_more_modal: "Docenten Accounts op CodeCombat hebben de mogelijkheid om de voortgang van studenten te bekijken, inschrijvingen regelen en klaslokalen beheren. Docenten Accounts kunnen niet in een klaslokaal ingeschreven staan - als je ingeschreven staat in een klas met dit account zul je niet langer toegang hebben tot die klas wanneer je jouw account veranderd in een Docenten Account."
|
learn_more_modal: "Docenten Accounts kunnen de voortgang van leerlingen te zien, inschrijvingen regelen en klaslokalen beheren. Docenten Accounts kunnen niet in een klaslokaal ingeschreven staan - als je ingeschreven staat in een klas met dit account zul je niet langer als leerling toegang hebben tot die klas."
|
||||||
create_account: "Maak een docenten-account"
|
create_account: "Maak een docenten-account aan"
|
||||||
create_account_subtitle: "Krijg toegang tot exclusieve hulpmiddelen voor docenten door CodeCombat in de klas te gebruiken. <strong>Maak een klas aan</strong>, voeg leerlingen toe, en <strong>bekijk hun vooruitgang</strong>!"
|
create_account_subtitle: "Krijg toegang tot exclusieve hulpmiddelen voor docenten door CodeCombat in de klas te gebruiken. <strong>Maak een klas aan</strong>, voeg leerlingen toe, en <strong>bekijk hun vooruitgang</strong>!"
|
||||||
convert_account_title: "Verander in een docenten-account"
|
convert_account_title: "Verander in een docenten-account"
|
||||||
not: "niet"
|
not: "niet"
|
||||||
|
@ -871,7 +871,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
||||||
versions:
|
versions:
|
||||||
save_version_title: "Nieuwe versie opslaan"
|
save_version_title: "Nieuwe versie opslaan"
|
||||||
new_major_version: "Nieuwe hoofdversie"
|
new_major_version: "Nieuwe hoofdversie"
|
||||||
submitting_patch: "Aanpassing wordt Ingediend..."
|
submitting_patch: "Aanpassing wordt ingediend..."
|
||||||
cla_prefix: "Om bewerkingen op te slaan, moet je eerst akkoord gaan met onze"
|
cla_prefix: "Om bewerkingen op te slaan, moet je eerst akkoord gaan met onze"
|
||||||
cla_url: "CLA"
|
cla_url: "CLA"
|
||||||
cla_suffix: "."
|
cla_suffix: "."
|
||||||
|
@ -1069,10 +1069,10 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
||||||
completed: "voltooid:"
|
completed: "voltooid:"
|
||||||
invite_students: "Nodig leerlingen uit voor deze klas."
|
invite_students: "Nodig leerlingen uit voor deze klas."
|
||||||
invite_link_header: "Link om aan cursus deel te nemen"
|
invite_link_header: "Link om aan cursus deel te nemen"
|
||||||
invite_link_p_1: "Geef deze link aan leerlingen waarvan u wilt dat zij de cursus volgen."
|
invite_link_p_1: "Geef deze link aan leerlingen waarvan je wil dat zij de cursus volgen."
|
||||||
invite_link_p_2: "Of laat ons hun direct een e-mail sturen:"
|
invite_link_p_2: "Of laat ons hun direct een e-mail sturen:"
|
||||||
capacity_used: "Cursus stoelen gebruikt:"
|
capacity_used: "Cursusplekken gebruikt:"
|
||||||
enter_emails: "Voer e-mailadressen van leerlingen in om uit te nodigen, één per regel"
|
enter_emails: "Voer e-mailadressen van leerlingen in om hen uit te nodigen, één per regel"
|
||||||
send_invites: "Verstuur uitnodigingen"
|
send_invites: "Verstuur uitnodigingen"
|
||||||
creating_class: "Aanmaken klas..."
|
creating_class: "Aanmaken klas..."
|
||||||
purchasing_course: "Aanschaffen cursus..."
|
purchasing_course: "Aanschaffen cursus..."
|
||||||
|
@ -1080,7 +1080,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
||||||
buy_course1: "Koop deze cursus"
|
buy_course1: "Koop deze cursus"
|
||||||
select_all_courses: "Selecteer 'Alle cursussen' voor 50% korting!"
|
select_all_courses: "Selecteer 'Alle cursussen' voor 50% korting!"
|
||||||
all_courses: "Alle cursussen"
|
all_courses: "Alle cursussen"
|
||||||
number_programming_students: "Aantal informatica leerlingen"
|
number_programming_students: "Aantal doelgroepleerlingen"
|
||||||
number_total_students: "Totaal aan leerlingen op school"
|
number_total_students: "Totaal aan leerlingen op school"
|
||||||
enter_number_students: "Voer het aantal leerlingen in dat je voor de klas nodig hebt."
|
enter_number_students: "Voer het aantal leerlingen in dat je voor de klas nodig hebt."
|
||||||
name_class: "Geef je klas een naam"
|
name_class: "Geef je klas een naam"
|
||||||
|
@ -1089,25 +1089,25 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
||||||
purchasing_for: "U koopt een licentie voor"
|
purchasing_for: "U koopt een licentie voor"
|
||||||
creating_for: "U maakt een klas voor"
|
creating_for: "U maakt een klas voor"
|
||||||
for: "voor" # Like in 'for 30 students'
|
for: "voor" # Like in 'for 30 students'
|
||||||
receive_code: "Naderhand ontvangt u een ontgrendelcode om uw leerlingen, waarmee zij zich kunnen inschrijven in uw klas."
|
receive_code: "Naderhand ontvangt u een ontgrendelcode vooor uw leerlingen, waarmee zij zich kunnen inschrijven in uw klas."
|
||||||
free_trial: "Gratis uitproberen voor leerkrachten!"
|
free_trial: "Gratis uitproberen voor leerkrachten!"
|
||||||
get_access: "Individueel toegang krijgen voor evaluatiedoeleinden."
|
get_access: "Individueel toegang krijgen voor evaluatiedoeleinden."
|
||||||
questions: "Vragen?"
|
questions: "Vragen?"
|
||||||
teachers_click: "Leerkrachten klik hier"
|
teachers_click: "Leerkrachten klik hier"
|
||||||
students_click: "Leerlingen klik hier"
|
students_click: "Leerlingen klik hier"
|
||||||
courses_on_coco: "Cursussen van CodeCombat"
|
courses_on_coco: "Cursussen van CodeCombat"
|
||||||
designed_to: "Cursussen zijn ontwikkeld ter introductie van ICT-concepten met CodeCombats leuke en leerzame omgevingen. CodeCombat-levels zijn gesturctureerd rond belangrijke concepten om vooruitstrevend leren te bemoedigen, gedurende 5 uur."
|
designed_to: "Cursussen zijn ontwikkeld ter introductie van ICT-concepten met CodeCombat's leuke en leerzame omgevingen. CodeCombat-levels zijn gesturctureerd rond belangrijke concepten om vooruitstrevend leren te stimuleren, gedurende 5 uur."
|
||||||
more_in_less: "Leer meer in minder tijd"
|
more_in_less: "Leer meer in minder tijd"
|
||||||
no_experience: "Geen programmeerervaring nodig"
|
no_experience: "Geen programmeerervaring nodig"
|
||||||
easy_monitor: "voortgang leerlingen gemakkelijk te bekijken"
|
easy_monitor: "voortgang leerlingen gemakkelijk te bekijken"
|
||||||
purchase_for_class: "Koop een cursus voor de hele klas. Het is makkelijk je leerlingen in te schrijven!"
|
purchase_for_class: "Koop een cursus voor de hele klas. Schrijf je leerlingen eenvoudig in!"
|
||||||
see_the: "Bekijk de"
|
see_the: "Bekijk de"
|
||||||
more_info: "voor meer informatie."
|
more_info: "voor meer informatie."
|
||||||
choose_course: "Kies uw cursus:"
|
choose_course: "Kies uw cursus:"
|
||||||
enter_code: "voer een ontgrendelcode in" # {change}
|
enter_code: "voer een ontgrendelcode in" # {change}
|
||||||
enter_code1: "Voer ontgrendelcode in"
|
enter_code1: "Voer ontgrendelcode in"
|
||||||
enroll: "Inschrijven"
|
enroll: "Inschrijven"
|
||||||
pick_from_classes: "Kies uit je huidige klas"
|
pick_from_classes: "Kies uit je huidige klassen"
|
||||||
enter: "Treed toe"
|
enter: "Treed toe"
|
||||||
or: "Of"
|
or: "Of"
|
||||||
topics: "Onderwerpen"
|
topics: "Onderwerpen"
|
||||||
|
@ -1233,10 +1233,10 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
||||||
getting_started_3: "Je ziet dan de voortgang van de leerlingen, wanneer ze zich inschrijven en aanmelden voor uw klas."
|
getting_started_3: "Je ziet dan de voortgang van de leerlingen, wanneer ze zich inschrijven en aanmelden voor uw klas."
|
||||||
additional_resources: "Extra bronnen"
|
additional_resources: "Extra bronnen"
|
||||||
additional_resources_1_pref: "Download/print onze"
|
additional_resources_1_pref: "Download/print onze"
|
||||||
additional_resources_1_mid: "Cursus 1 Leerkrachtengids" # {change}
|
additional_resources_1_mid: "Cursus 1 docentenhandleiding"
|
||||||
additional_resources_1_mid2: "en"
|
additional_resources_1_mid2: "en"
|
||||||
additional_resources_1_mid3: "Cursus 2"
|
additional_resources_1_mid3: "Cursus 2"
|
||||||
additional_resources_1_suff: "uitleg en oplossingen voor elke level." # {change}
|
additional_resources_1_suff: "uitleg en oplossingen voor elk level."
|
||||||
additional_resources_2_pref: "Maak onze af"
|
additional_resources_2_pref: "Maak onze af"
|
||||||
additional_resources_2_suff: "Om twee gratis inschrijvingen te krijgen voor onze overige betaalde cursussen."
|
additional_resources_2_suff: "Om twee gratis inschrijvingen te krijgen voor onze overige betaalde cursussen."
|
||||||
additional_resources_3_pref: "Bezoek onze"
|
additional_resources_3_pref: "Bezoek onze"
|
||||||
|
@ -1601,7 +1601,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
||||||
tutorial_skip: "Sla Tutorial over"
|
tutorial_skip: "Sla Tutorial over"
|
||||||
tutorial_not_sure: "Niet zeker wat er aan de hand is?"
|
tutorial_not_sure: "Niet zeker wat er aan de hand is?"
|
||||||
tutorial_play_first: "Speel eerst de Tutorial."
|
tutorial_play_first: "Speel eerst de Tutorial."
|
||||||
simple_ai: "Simpele AI" # {change}
|
simple_ai: "Simpele K.I."
|
||||||
warmup: "Opwarming"
|
warmup: "Opwarming"
|
||||||
friends_playing: "Spelende Vrienden"
|
friends_playing: "Spelende Vrienden"
|
||||||
log_in_for_friends: "Log in om met je vrienden te spelen!"
|
log_in_for_friends: "Log in om met je vrienden te spelen!"
|
||||||
|
@ -1623,8 +1623,8 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
||||||
rules: "Regels"
|
rules: "Regels"
|
||||||
winners: "Winnaars"
|
winners: "Winnaars"
|
||||||
league: "Competitie"
|
league: "Competitie"
|
||||||
red_ai: "KI rood" # "Red AI Wins", at end of multiplayer match playback
|
red_ai: "K.I. rood" # "Red AI Wins", at end of multiplayer match playback
|
||||||
blue_ai: "KI blauw" # {change}
|
blue_ai: "K.I. blauw"
|
||||||
wins: "Wint" # At end of multiplayer match playback
|
wins: "Wint" # At end of multiplayer match playback
|
||||||
humans: "Rood" # Ladder page display team name
|
humans: "Rood" # Ladder page display team name
|
||||||
ogres: "Blauw"
|
ogres: "Blauw"
|
||||||
|
@ -1698,7 +1698,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
||||||
months: "Maanden"
|
months: "Maanden"
|
||||||
purchase_total: "Totaal"
|
purchase_total: "Totaal"
|
||||||
purchase_button: "Verzend betaling"
|
purchase_button: "Verzend betaling"
|
||||||
your_codes: "Je codes:" # {change}
|
your_codes: "Jouw codes:"
|
||||||
redeem_codes: "Prepaidcode inwisselen"
|
redeem_codes: "Prepaidcode inwisselen"
|
||||||
prepaid_code: "Prepaidcode"
|
prepaid_code: "Prepaidcode"
|
||||||
lookup_code: "Prepaidcode opzoeken"
|
lookup_code: "Prepaidcode opzoeken"
|
||||||
|
|
|
@ -182,55 +182,55 @@ module.exports = nativeDescription: "Português do Brasil", englishDescription:
|
||||||
campaign_old_multiplayer: "(Depreciado) Velhas Arenas Multijogador"
|
campaign_old_multiplayer: "(Depreciado) Velhas Arenas Multijogador"
|
||||||
campaign_old_multiplayer_description: "Reliquias de uma era mais civilizada.Nenhuma simulação roda nessa antiguidade ,arenas multijogador sem heróis."
|
campaign_old_multiplayer_description: "Reliquias de uma era mais civilizada.Nenhuma simulação roda nessa antiguidade ,arenas multijogador sem heróis."
|
||||||
|
|
||||||
# code:
|
code:
|
||||||
# if: "if" # Keywords--these translations show up on hover, so please translate them all, even if it's kind of long. (In the code editor, they will still be in English.)
|
if: "se" # Keywords--these translations show up on hover, so please translate them all, even if it's kind of long. (In the code editor, they will still be in English.)
|
||||||
# else: "else"
|
else: "senão"
|
||||||
# elif: "else if"
|
elif: "senão se"
|
||||||
# while: "while"
|
while: "enquanto"
|
||||||
# loop: "loop"
|
loop: "repetir"
|
||||||
# for: "for"
|
for: "para"
|
||||||
# break: "break"
|
break: "parar"
|
||||||
# continue: "continue"
|
continue: "continuar"
|
||||||
# pass: "pass"
|
pass: "passar"
|
||||||
# return: "return"
|
return: "devolver"
|
||||||
# then: "then"
|
then: "então"
|
||||||
# do: "do"
|
do: "fazer"
|
||||||
# end: "end"
|
end: "fim"
|
||||||
# function: "function"
|
function: "função"
|
||||||
# def: "define"
|
def: "definir"
|
||||||
# var: "variable"
|
var: "variável"
|
||||||
# self: "self"
|
self: "próprio"
|
||||||
# hero: "hero"
|
hero: "herói"
|
||||||
# this: "this"
|
this: "isto"
|
||||||
# or: "or"
|
or: "ou"
|
||||||
# "||": "or"
|
"||": "ou"
|
||||||
# and: "and"
|
and: "e"
|
||||||
# "&&": "and"
|
"&&": "e"
|
||||||
# not: "not"
|
not: "não"
|
||||||
# "!": "not"
|
"!": "não"
|
||||||
# "=": "assign"
|
"=": "atribuir"
|
||||||
# "==": "equals"
|
"==": "é igual a"
|
||||||
# "===": "strictly equals"
|
"===": "é estritamente igual a"
|
||||||
# "!=": "does not equal"
|
"!=": "não é igual a"
|
||||||
# "!==": "does not strictly equal"
|
"!==": "não é estritamente igual a"
|
||||||
# ">": "is greater than"
|
">": "é maior do que"
|
||||||
# ">=": "is greater than or equal"
|
">=": "é maior do que ou igual a"
|
||||||
# "<": "is less than"
|
"<": "é menor do que"
|
||||||
# "<=": "is less than or equal"
|
"<=": "é menor do que ou igual a"
|
||||||
# "*": "multiplied by"
|
"*": "multiplicado por"
|
||||||
# "/": "divided by"
|
"/": "dividido por"
|
||||||
# "+": "plus"
|
"+": "mais"
|
||||||
# "-": "minus"
|
"-": "menos"
|
||||||
# "+=": "add and assign"
|
"+=": "adicionar e atribuir"
|
||||||
# "-=": "subtract and assign"
|
"-=": "subtrair e atribuir"
|
||||||
# True: "True"
|
True: "Verdadeiro"
|
||||||
# true: "true"
|
true: "verdadeiro"
|
||||||
# False: "False"
|
False: "Falso"
|
||||||
# false: "false"
|
false: "falso"
|
||||||
# undefined: "undefined"
|
undefined: "não definido"
|
||||||
# null: "null"
|
null: "nulo"
|
||||||
# nil: "nil"
|
nil: "nada"
|
||||||
# None: "None"
|
None: "Nenhum"
|
||||||
|
|
||||||
share_progress_modal:
|
share_progress_modal:
|
||||||
blurb: "Você está fazendo bastante progresso! Compartilhe com alguém o quanto você já aprendeu com o CodeCombat!" # {change}
|
blurb: "Você está fazendo bastante progresso! Compartilhe com alguém o quanto você já aprendeu com o CodeCombat!" # {change}
|
||||||
|
|
|
@ -187,7 +187,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
|
||||||
else: "senão"
|
else: "senão"
|
||||||
elif: "senão se"
|
elif: "senão se"
|
||||||
while: "enquanto"
|
while: "enquanto"
|
||||||
loop: "circular"
|
loop: "repetir"
|
||||||
for: "para"
|
for: "para"
|
||||||
break: "parar"
|
break: "parar"
|
||||||
continue: "continuar"
|
continue: "continuar"
|
||||||
|
|
|
@ -37,9 +37,9 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
||||||
teaching_computer_science: "Подучавање компјутерских наука не захтева скупу димплому, јер ми пружамо алатке да подржимо едукаторе из свих позадина."
|
teaching_computer_science: "Подучавање компјутерских наука не захтева скупу димплому, јер ми пружамо алатке да подржимо едукаторе из свих позадина."
|
||||||
accessible_to: "Доступно"
|
accessible_to: "Доступно"
|
||||||
everyone: "свима"
|
everyone: "свима"
|
||||||
democratizing: "Демократизација процеса учења кодирања је у средишту наше филозофије. Свако би требало да има прилику да научи кодирање"
|
democratizing: "Демократизација процеса учења кодирања је у средишту наше филозофије. Свако би требало да има прилику да научи кодирање."
|
||||||
forgot_learning: "Мислим да су већ заборавили да су заправо учили нешто."
|
forgot_learning: "Мислим да су већ заборавили да су заправо учили нешто."
|
||||||
wanted_to_do: " Кодирање је нешто што сам одувек желео да радим, и никад нисам мислио да ћу моћи да га научим у школи."
|
wanted_to_do: " Кодирање је нешто што сам одувек желео да радим и никад нисам мислио да ћу моћи то да научим у школи."
|
||||||
why_games: "Зашто је учење кроз игре важно?"
|
why_games: "Зашто је учење кроз игре важно?"
|
||||||
games_reward: "Игре награђују продуктивну борбу."
|
games_reward: "Игре награђују продуктивну борбу."
|
||||||
encourage: "Гејминг је медиј који подстиче интеракцију, откривање и учење путем покушаја и грешке. Добра игра изазива играча да савлада вештине током времена, што је исти есенцијални процес кроз који ученици пролазе док уче."
|
encourage: "Гејминг је медиј који подстиче интеракцију, откривање и учење путем покушаја и грешке. Добра игра изазива играча да савлада вештине током времена, што је исти есенцијални процес кроз који ученици пролазе док уче."
|
||||||
|
@ -297,7 +297,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
||||||
save: "Сачувај"
|
save: "Сачувај"
|
||||||
publish: "Објави"
|
publish: "Објави"
|
||||||
create: "Направи"
|
create: "Направи"
|
||||||
# fork: "Fork"
|
fork: "Форкуј"
|
||||||
play: "Играј" # When used as an action verb, like "Play next level"
|
play: "Играј" # When used as an action verb, like "Play next level"
|
||||||
retry: "Покушај поново"
|
retry: "Покушај поново"
|
||||||
actions: "Радње"
|
actions: "Радње"
|
||||||
|
@ -675,32 +675,32 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
||||||
level_to_unlock: "Ниво који треба откључати:" # Label for which level you have to beat to unlock a particular hero (click a locked hero in the store to see)
|
level_to_unlock: "Ниво који треба откључати:" # Label for which level you have to beat to unlock a particular hero (click a locked hero in the store to see)
|
||||||
restricted_to_certain_heroes: "Само одређени хероји могу да играју овај ниво."
|
restricted_to_certain_heroes: "Само одређени хероји могу да играју овај ниво."
|
||||||
|
|
||||||
# skill_docs:
|
skill_docs:
|
||||||
# function: "function" # skill types
|
function: "функција" # skill types
|
||||||
# method: "method"
|
method: "метод"
|
||||||
# snippet: "snippet"
|
snippet: "исечак"
|
||||||
# number: "number"
|
number: "број"
|
||||||
# array: "array"
|
array: "низ"
|
||||||
# object: "object"
|
object: "објекат"
|
||||||
# string: "string"
|
string: "стринг"
|
||||||
# writable: "writable" # Hover over "attack" in Your Skills while playing a level to see most of this
|
# writable: "writable" # Hover over "attack" in Your Skills while playing a level to see most of this
|
||||||
# read_only: "read-only"
|
# read_only: "read-only"
|
||||||
# action: "Action"
|
action: "Aкција"
|
||||||
# spell: "Spell"
|
spell: "Магија"
|
||||||
# action_name: "name"
|
action_name: "име"
|
||||||
# action_cooldown: "Takes"
|
action_cooldown: "Потребно"
|
||||||
# action_specific_cooldown: "Cooldown"
|
action_specific_cooldown: "Хлађење"
|
||||||
# action_damage: "Damage"
|
action_damage: "Штета"
|
||||||
# action_range: "Range"
|
action_range: "Домет"
|
||||||
# action_radius: "Radius"
|
action_radius: "Опсег"
|
||||||
# action_duration: "Duration"
|
action_duration: "Трајање"
|
||||||
# example: "Example"
|
example: "Пример"
|
||||||
# ex: "ex" # Abbreviation of "example"
|
ex: "нпр" # Abbreviation of "example"
|
||||||
# current_value: "Current Value"
|
current_value: "Тренутна вредност"
|
||||||
# default_value: "Default value"
|
default_value: "Подразумевана вредност"
|
||||||
# parameters: "Parameters"
|
parameters: "Параметри"
|
||||||
# returns: "Returns"
|
returns: "Враћа"
|
||||||
# granted_by: "Granted by"
|
granted_by: "Додељено од"
|
||||||
|
|
||||||
save_load:
|
save_load:
|
||||||
granularity_saved_games: "Сачувано"
|
granularity_saved_games: "Сачувано"
|
||||||
|
@ -768,7 +768,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
||||||
number_contributors: "Преко 450 сарадника је дало своју подршку и време овом пројекту."
|
number_contributors: "Преко 450 сарадника је дало своју подршку и време овом пројекту."
|
||||||
story_title: "Наша прича до сад"
|
story_title: "Наша прича до сад"
|
||||||
story_subtitle: "Од 2013, CodeCombat је израстао из обичних скупова скица у праву успешну игру."
|
story_subtitle: "Од 2013, CodeCombat је израстао из обичних скупова скица у праву успешну игру."
|
||||||
story_statistic_1a: "Више од 5 000 000"
|
story_statistic_1a: "Више од 5.000.000"
|
||||||
story_statistic_1b: "играча укупно"
|
story_statistic_1b: "играча укупно"
|
||||||
story_statistic_1c: "је започело њихово програмерско путовање кроз CodeCombat"
|
story_statistic_1c: "је започело њихово програмерско путовање кроз CodeCombat"
|
||||||
story_statistic_2a: "Преведени смо на преко 50 језика — наши играчи долазе из"
|
story_statistic_2a: "Преведени смо на преко 50 језика — наши играчи долазе из"
|
||||||
|
@ -784,7 +784,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
||||||
jobs_benefits: "Бенефиције за запослене"
|
jobs_benefits: "Бенефиције за запослене"
|
||||||
jobs_benefit_4: "Неограничен одмор"
|
jobs_benefit_4: "Неограничен одмор"
|
||||||
jobs_benefit_5: "Професионални развој и континуирана подршка образовања - бесплатне књиге и игре!"
|
jobs_benefit_5: "Професионални развој и континуирана подршка образовања - бесплатне књиге и игре!"
|
||||||
# jobs_benefit_6: "Медицинско (gold), зубно, очно"
|
jobs_benefit_6: "Медицинско (gold), дентално, очно осигурање"
|
||||||
jobs_benefit_7: "Sit-stand радни столови за свакога"
|
jobs_benefit_7: "Sit-stand радни столови за свакога"
|
||||||
# jobs_benefit_9: "10-year option exercise window"
|
# jobs_benefit_9: "10-year option exercise window"
|
||||||
jobs_benefit_10: "Породиљско одсуство: 10 плаћених недеља, наредних 6 недеља 55% плате"
|
jobs_benefit_10: "Породиљско одсуство: 10 плаћених недеља, наредних 6 недеља 55% плате"
|
||||||
|
@ -860,12 +860,12 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
||||||
finish_signup_p: "Направи налог да оснујеш разред, додаш своје ученике и пратиш њихов напредак док уче компјутерске науке."
|
finish_signup_p: "Направи налог да оснујеш разред, додаш своје ученике и пратиш њихов напредак док уче компјутерске науке."
|
||||||
signup_with: "Пријави се са:"
|
signup_with: "Пријави се са:"
|
||||||
connect_with: "Повежи се са:"
|
connect_with: "Повежи се са:"
|
||||||
# conversion_warning: "WARNING: Your current account is a <em>Student Account</em>. Once you submit this form, your account will be updated to a Teacher Account."
|
conversion_warning: "УПОЗОРЕЊЕ: Твој тренутни налог је <em>Студентски Налог</em>. Након што пошаљеш овај формулар, твој налог ће бити надограђен у Учитељски Налог."
|
||||||
# learn_more_modal: "Teacher accounts on CodeCombat have the ability to monitor student progress, assign enrollments and manage classrooms. Teacher accounts cannot be a part of a classroom - if you are currently enrolled in a class using this account, you will no longer be able to access it once you update to a Teacher Account."
|
learn_more_modal: "Учитељски налози на CodeCombat-у имају могућност посматрања напретка ученика, додељивања уписа и управљања учионицама. Учитељски налози не могу бити део учионице - ако си тренутно уписан у разред преко овог налога, нећеш више моћи да му приступиш кад ажурираш у Учитељски Налог."
|
||||||
create_account: "Направи учитељски налог"
|
create_account: "Направи учитељски налог"
|
||||||
# create_account_subtitle: "Get access to teacher-only tools for using CodeCombat in the classroom. <strong>Set up a class</strong>, add your students, and <strong>monitor their progress</strong>!"
|
create_account_subtitle: "Добиј приступ алатима само за учитеље за коришћење CodeCombat-а у учионици. <strong>Подеси разред</strong>, додај своје ученике, и <strong>посматрај њихов напредак</strong>!"
|
||||||
# convert_account_title: "Update to Teacher Account"
|
convert_account_title: "Ажурирај у Учитељски Налог"
|
||||||
# not: "Not"
|
not: "Није"
|
||||||
setup_a_class: "Подеси разред"
|
setup_a_class: "Подеси разред"
|
||||||
|
|
||||||
versions:
|
versions:
|
||||||
|
@ -880,18 +880,18 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
||||||
|
|
||||||
contact:
|
contact:
|
||||||
contact_us: "Контактирај CodeCombat"
|
contact_us: "Контактирај CodeCombat"
|
||||||
welcome: "Драго нам је што нас контактираш! Искористи ову форму да нам пошаљеш мејл. "
|
welcome: "Драго нам је што нас контактираш! Искористи овај формулар да нам пошаљеш мејл. "
|
||||||
forum_prefix: "За било шта јавно, посети "
|
forum_prefix: "За било шта јавно, посети "
|
||||||
forum_page: "наш форум."
|
forum_page: "наш форум"
|
||||||
# forum_suffix: " instead."
|
forum_suffix: " уместо тога."
|
||||||
# faq_prefix: "There's also a"
|
faq_prefix: "Такође, ту је"
|
||||||
# faq: "FAQ"
|
faq: "FAQ"
|
||||||
# subscribe_prefix: "If you need help figuring out a level, please"
|
subscribe_prefix: "Ако ти треба помоћ да разумеш ниво, молимо да"
|
||||||
# subscribe: "buy a CodeCombat subscription"
|
subscribe: "купиш CodeCombat претплату"
|
||||||
# subscribe_suffix: "and we'll be happy to help you with your code."
|
subscribe_suffix: "и радо ћемо ти помоћи у твом коду."
|
||||||
# subscriber_support: "Since you're a CodeCombat subscriber, your email will get our priority support."
|
subscriber_support: "Пошто си CodeCombat претплатник, твој мејл ће имати приоритет у нашој подршци."
|
||||||
# screenshot_included: "Screenshot included."
|
screenshot_included: "Снимак екрана укључен."
|
||||||
# where_reply: "Where should we reply?"
|
where_reply: "Где треба да одговоримо?"
|
||||||
send: "Пошаљи повратну информацију"
|
send: "Пошаљи повратну информацију"
|
||||||
|
|
||||||
account_settings:
|
account_settings:
|
||||||
|
@ -910,24 +910,24 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
||||||
# god_mode: "God Mode"
|
# god_mode: "God Mode"
|
||||||
password_tab: "Шифра"
|
password_tab: "Шифра"
|
||||||
emails_tab: "Мејлови"
|
emails_tab: "Мејлови"
|
||||||
# admin: "Admin"
|
admin: "Администратор"
|
||||||
manage_subscription: "Кликни овде да би управљао својом претплатом."
|
manage_subscription: "Кликни овде да би управљао својом претплатом."
|
||||||
new_password: "Нова Шифра"
|
new_password: "Нова Шифра"
|
||||||
new_password_verify: "Потврди"
|
new_password_verify: "Потврди"
|
||||||
# type_in_email: "Type in your email to confirm account deletion."
|
type_in_email: "Упиши свој мејл да потврдиш брисање налога."
|
||||||
# type_in_email_progress: "Type in your email to confirm deleting your progress."
|
type_in_email_progress: "Упиши свој мејл да потврдиш брисање свог напретка."
|
||||||
# type_in_password: "Also, type in your password."
|
type_in_password: "Такође, упиши своју шифру."
|
||||||
email_subscriptions: "Мејл претплате"
|
email_subscriptions: "Мејл претплате"
|
||||||
# email_subscriptions_none: "No Email Subscriptions."
|
email_subscriptions_none: "Без мејл претплата."
|
||||||
email_announcements: "Обавештења"
|
email_announcements: "Обавештења"
|
||||||
email_announcements_description: "Прими мејл за најновије вести и достигнућа на CodeCombat-у"
|
email_announcements_description: "Прими мејл за најновије вести и достигнућа на CodeCombat-у"
|
||||||
# email_notifications: "Notifications"
|
email_notifications: "Обавештења"
|
||||||
# email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity."
|
email_notifications_summary: "Контроле за персонализована, аутоматска мејл обавештења вазана за твоју CodeCombat активност."
|
||||||
# email_any_notes: "Any Notifications"
|
email_any_notes: "Сва обавештења"
|
||||||
# email_any_notes_description: "Disable to stop all activity notification emails."
|
email_any_notes_description: "Онемогући да би прекинуо сва мејл обавештења о активности."
|
||||||
email_news: "Вести"
|
email_news: "Вести"
|
||||||
email_recruit_notes: "Пословне могућности"
|
email_recruit_notes: "Пословне могућности"
|
||||||
# email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job."
|
email_recruit_notes_description: "Ако играш јако добро, можда ћемо те контактирати о томе да добијеш (бољи) посао."
|
||||||
contributor_emails: "Мејлови реда сарадника"
|
contributor_emails: "Мејлови реда сарадника"
|
||||||
contribute_prefix: "Тражимо људе који би нам се придружили! Погледај "
|
contribute_prefix: "Тражимо људе који би нам се придружили! Погледај "
|
||||||
contribute_page: "страницу за сарадњу"
|
contribute_page: "страницу за сарадњу"
|
||||||
|
@ -938,15 +938,15 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
||||||
password_mismatch: "Шифре се не слажу."
|
password_mismatch: "Шифре се не слажу."
|
||||||
password_repeat: "Понови своју шифру."
|
password_repeat: "Понови своју шифру."
|
||||||
|
|
||||||
# keyboard_shortcuts:
|
keyboard_shortcuts:
|
||||||
# keyboard_shortcuts: "Keyboard Shortcuts"
|
keyboard_shortcuts: "Пречице за тастатуру"
|
||||||
# space: "Space"
|
space: "Space"
|
||||||
# enter: "Enter"
|
enter: "Enter"
|
||||||
# press_enter: "press enter"
|
press_enter: "притисни enter"
|
||||||
# escape: "Escape"
|
escape: "Escape"
|
||||||
# shift: "Shift"
|
shift: "Shift"
|
||||||
# run_code: "Run current code."
|
run_code: "Покрени тренутни код."
|
||||||
# run_real_time: "Run in real time."
|
run_real_time: "Покрени у реалном времену."
|
||||||
# continue_script: "Continue past current script."
|
# continue_script: "Continue past current script."
|
||||||
# skip_scripts: "Skip past all skippable scripts."
|
# skip_scripts: "Skip past all skippable scripts."
|
||||||
# toggle_playback: "Toggle play/pause."
|
# toggle_playback: "Toggle play/pause."
|
||||||
|
@ -959,142 +959,142 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
||||||
# beautify: "Beautify your code by standardizing its formatting."
|
# beautify: "Beautify your code by standardizing its formatting."
|
||||||
# maximize_editor: "Maximize/minimize code editor."
|
# maximize_editor: "Maximize/minimize code editor."
|
||||||
|
|
||||||
# community:
|
community:
|
||||||
# main_title: "CodeCombat Community"
|
main_title: "CodeCombat Заједница"
|
||||||
# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!"
|
introduction: "Погледај испод како можеш да се укључиш и одлучи шта звучи најзанимљивије. Радујемо се прилици да радимо са тобом!"
|
||||||
# level_editor_prefix: "Use the CodeCombat"
|
level_editor_prefix: "Користи CodeCombat"
|
||||||
# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!"
|
level_editor_suffix: "да правиш и уређујеш нивое. Корисници су направили нивое за њихове разреде, пријатеље, хакатоне, ученике и браћу и сестре. Ако прављење новог нивоа звучи застрашујуће, можеш да почнеш форковањем једног од наших!"
|
||||||
# thang_editor_prefix: "We call units within the game 'thangs'. Use the"
|
thang_editor_prefix: "Ми зовемо јединице у игри 'thangs'. Користи"
|
||||||
# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites."
|
thang_editor_suffix: "да модификујеш CodeCombat изворне илустрације. Дозволи јединицама да бацају пројектиле, измени дирекцију анимације, промени хит поене јединице или отпреми сопствене векторске спрајтове."
|
||||||
# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the"
|
article_editor_prefix: "Видиш грешку у неком од наших докумената? Желиш да направиш инструкције за сопствене креације? Погледај"
|
||||||
# article_editor_suffix: "and help CodeCombat players get the most out of their playtime."
|
article_editor_suffix: "и помози CodeCombat играчима да добију највише од свог играња."
|
||||||
# find_us: "Find us on these sites"
|
find_us: "Нађи нас на овим сајтовима"
|
||||||
# social_github: "Check out all our code on GitHub"
|
social_github: "Погледај цео наш код на GitHub-у"
|
||||||
# social_blog: "Read the CodeCombat blog on Sett"
|
social_blog: "Читај CodeCombat блог на Sett-у"
|
||||||
# social_discource: "Join the discussion on our Discourse forum"
|
social_discource: "Придружи се дискусији на нашем Discourse форуму"
|
||||||
# social_facebook: "Like CodeCombat on Facebook"
|
social_facebook: "Лајкуј CodeCombat на Фејсбуку"
|
||||||
# social_twitter: "Follow CodeCombat on Twitter"
|
social_twitter: "Запрати CodeCombat на Твитеру"
|
||||||
# social_gplus: "Join CodeCombat on Google+"
|
social_gplus: "Придружи се CodeCombat-у на Гугл+"
|
||||||
# social_slack: "Chat with us in the public CodeCombat Slack channel"
|
social_slack: "Ћаскај са нама на јавном CodeCombat Slack каналу"
|
||||||
# contribute_to_the_project: "Contribute to the project"
|
contribute_to_the_project: "Допринеси пројекту"
|
||||||
|
|
||||||
# clans:
|
clans:
|
||||||
# clan: "Clan"
|
clan: "Клан"
|
||||||
# clans: "Clans"
|
clans: "Кланови"
|
||||||
# new_name: "New clan name"
|
new_name: "Име новог клана"
|
||||||
# new_description: "New clan description"
|
new_description: "Опис новог клана"
|
||||||
# make_private: "Make clan private"
|
make_private: "Направи клан приватним"
|
||||||
# subs_only: "subscribers only"
|
subs_only: "само за претплатнике"
|
||||||
# create_clan: "Create New Clan"
|
create_clan: "Направи нови клан"
|
||||||
# private_preview: "Preview"
|
private_preview: "Приказ"
|
||||||
# private_clans: "Private Clans"
|
private_clans: "Приватни кланови"
|
||||||
# public_clans: "Public Clans"
|
public_clans: "Јавни кланови"
|
||||||
# my_clans: "My Clans"
|
my_clans: "Моји кланови"
|
||||||
# clan_name: "Clan Name"
|
clan_name: "Име клана"
|
||||||
# name: "Name"
|
name: "Име"
|
||||||
# chieftain: "Chieftain"
|
chieftain: "Поглавица"
|
||||||
# type: "Type"
|
type: "Врста"
|
||||||
# edit_clan_name: "Edit Clan Name"
|
edit_clan_name: "Измени име клана"
|
||||||
# edit_clan_description: "Edit Clan Description"
|
edit_clan_description: "Измени опис клана"
|
||||||
# edit_name: "edit name"
|
edit_name: "измени име"
|
||||||
# edit_description: "edit description"
|
edit_description: "измени опис"
|
||||||
# private: "(private)"
|
private: "(приватан)"
|
||||||
# summary: "Summary"
|
summary: "Преглед"
|
||||||
# average_level: "Average Level"
|
average_level: "Просечни ниво"
|
||||||
# average_achievements: "Average Achievements"
|
average_achievements: "Просечна достигнућа"
|
||||||
# delete_clan: "Delete Clan"
|
delete_clan: "Избриши клан"
|
||||||
# leave_clan: "Leave Clan"
|
leave_clan: "Напусти клан"
|
||||||
# join_clan: "Join Clan"
|
join_clan: "Придружи се клану"
|
||||||
# invite_1: "Invite:"
|
invite_1: "Позови:"
|
||||||
# invite_2: "*Invite players to this Clan by sending them this link."
|
invite_2: "*Позови играче у овај Клан тако што ћеш им послати овај линк."
|
||||||
# members: "Members"
|
members: "Чланови"
|
||||||
# progress: "Progress"
|
progress: "Напредак"
|
||||||
# not_started_1: "not started"
|
not_started_1: "није започето"
|
||||||
# started_1: "started"
|
started_1: "започето"
|
||||||
# complete_1: "complete"
|
complete_1: "заврши"
|
||||||
# exp_levels: "Expand levels"
|
exp_levels: "Прошири нивое"
|
||||||
# rem_hero: "Remove Hero"
|
rem_hero: "Уклони Хероја"
|
||||||
# status: "Status"
|
status: "Статус"
|
||||||
# complete_2: "Complete"
|
complete_2: "Заврши"
|
||||||
# started_2: "Started"
|
started_2: "Започето"
|
||||||
# not_started_2: "Not Started"
|
not_started_2: "Није започето"
|
||||||
# view_solution: "Click to view solution."
|
view_solution: "Кликни да видиш решење."
|
||||||
# view_attempt: "Click to view attempt."
|
view_attempt: "Кликни да видиш покушај."
|
||||||
# latest_achievement: "Latest Achievement"
|
latest_achievement: "Последње достигнуће"
|
||||||
# playtime: "Playtime"
|
playtime: "Време игања"
|
||||||
# last_played: "Last played"
|
last_played: "Последњи пут играно"
|
||||||
# leagues_explanation: "Play in a league against other clan members in these multiplayer arena instances."
|
leagues_explanation: "Играј у лиги против других чланова клана у овим мултиплејер инстанцама арене."
|
||||||
# track_concepts1: "Track concepts"
|
track_concepts1: "Прати концепте"
|
||||||
# track_concepts2a: "learned by each student"
|
track_concepts2a: "научене од сваког ученика"
|
||||||
# track_concepts2b: "learned by each member"
|
track_concepts2b: "научене од сваког члана"
|
||||||
# track_concepts3a: "Track levels completed for each student"
|
track_concepts3a: "Прати завршене нивое за сваког ученика"
|
||||||
# track_concepts3b: "Track levels completed for each member"
|
track_concepts3b: "Прати завршене нивое за сваког члана"
|
||||||
# track_concepts4a: "See your students'"
|
track_concepts4a: "Види од својих ученика"
|
||||||
# track_concepts4b: "See your members'"
|
track_concepts4b: "Види од својих чланова"
|
||||||
# track_concepts5: "solutions"
|
track_concepts5: "решења"
|
||||||
# track_concepts6a: "Sort students by name or progress"
|
track_concepts6a: "Сортирај ученике према имену или напретку"
|
||||||
# track_concepts6b: "Sort members by name or progress"
|
track_concepts6b: "Сортирај чланове према имену или напретку"
|
||||||
# track_concepts7: "Requires invitation"
|
track_concepts7: "Захтева позив"
|
||||||
# track_concepts8: "to join"
|
track_concepts8: "за придруживање"
|
||||||
# private_require_sub: "Private clans require a subscription to create or join."
|
private_require_sub: "Приватни кланови захтевају претплату да би могао да их направиш или да им се придружиш."
|
||||||
|
|
||||||
# courses:
|
courses:
|
||||||
# course: "Course"
|
course: "Курс"
|
||||||
# courses: "courses"
|
courses: "курсеви"
|
||||||
# create_new_class: "Create New Class"
|
create_new_class: "Направи нови разред"
|
||||||
# not_enrolled: "You are not enrolled in this course."
|
not_enrolled: "Ниси уписан на овај курс."
|
||||||
# visit_pref: "Please visit the"
|
visit_pref: "Молимо да посетиш"
|
||||||
# visit_suf: "page to enroll."
|
visit_suf: "страницу да би се уписао."
|
||||||
# select_class: "Select one of your classes"
|
select_class: "Изабери један од својих разреда"
|
||||||
# unnamed: "*unnamed*"
|
unnamed: "*неименован*"
|
||||||
# select: "Select"
|
select: "Изабери"
|
||||||
# unnamed_class: "Unnamed Class"
|
unnamed_class: "Неименован разред"
|
||||||
# edit_settings: "edit class settings"
|
edit_settings: "измени подешавања разреда"
|
||||||
# edit_settings1: "Edit Class Settings"
|
edit_settings1: "Измени подешавања разреда"
|
||||||
# progress: "Class Progress"
|
progress: "Напредак разреда"
|
||||||
# add_students: "Add Students"
|
add_students: "Додај ученике"
|
||||||
# stats: "Statistics"
|
stats: "Статистика"
|
||||||
# total_students: "Total students:"
|
total_students: "Укупно ученика:"
|
||||||
# average_time: "Average level play time:"
|
average_time: "Просечно време играња нивоа:"
|
||||||
# total_time: "Total play time:"
|
total_time: "Укупно време играња:"
|
||||||
# average_levels: "Average levels completed:"
|
average_levels: "Просечан број завршених нивоа:"
|
||||||
# total_levels: "Total levels completed:"
|
total_levels: "Укупно завршених нивоа:"
|
||||||
# furthest_level: "Furthest level completed:"
|
furthest_level: "Најдаљи завршен ниво:"
|
||||||
# students: "Students"
|
students: "Ученици"
|
||||||
# students1: "students"
|
students1: "ученици"
|
||||||
# concepts: "Concepts"
|
concepts: "Концепти"
|
||||||
# levels: "levels"
|
levels: "нивои"
|
||||||
# played: "Played"
|
played: "Одиграно"
|
||||||
# play_time: "Play time:"
|
play_time: "Време играња:"
|
||||||
# completed: "Completed:"
|
completed: "Завршено:"
|
||||||
# invite_students: "Invite students to join this class."
|
invite_students: "Позови ученике да се придруже овом разреду."
|
||||||
# invite_link_header: "Link to join course"
|
invite_link_header: "Линк за придруживање курсу"
|
||||||
# invite_link_p_1: "Give this link to students you would like to have join the course."
|
invite_link_p_1: "Дај овај линк ученицима за које желиш да се придруже курсу."
|
||||||
# invite_link_p_2: "Or have us email them directly:"
|
invite_link_p_2: "Или дај нама да им директно пошаљемо мејл:"
|
||||||
# capacity_used: "Course slots used:"
|
# capacity_used: "Course slots used:"
|
||||||
# enter_emails: "Enter student emails to invite, one per line"
|
enter_emails: "Упиши мејлове ученика, један по линији"
|
||||||
# send_invites: "Send Invites"
|
send_invites: "Пошаљи позиве"
|
||||||
# creating_class: "Creating class..."
|
creating_class: "Креирање разреда..."
|
||||||
# purchasing_course: "Purchasing course..."
|
purchasing_course: "Куповина курса..."
|
||||||
# buy_course: "Buy Course"
|
buy_course: "Купи курс"
|
||||||
# buy_course1: "Buy this course"
|
buy_course1: "Купи овај курс"
|
||||||
# select_all_courses: "Select 'All Courses' for a 50% discount!"
|
select_all_courses: "Изабери 'Сви курсеви' за 50% попуста!"
|
||||||
# all_courses: "All Courses"
|
all_courses: "Сви курсеви"
|
||||||
# number_programming_students: "Number of Programming Students"
|
number_programming_students: "Број ученика који програмирају"
|
||||||
# number_total_students: "Total Students in School/District"
|
number_total_students: "Укупан број ученика у школи/округу"
|
||||||
# enter_number_students: "Enter the number of students you need for this class."
|
enter_number_students: "Унеси број ученика који ти треба за овај разред."
|
||||||
# name_class: "Name your class"
|
name_class: "Именуј свој разред"
|
||||||
# displayed_course_page: "This will be displayed on the course page for you and your students. It can be changed later."
|
# displayed_course_page: "This will be displayed on the course page for you and your students. It can be changed later."
|
||||||
# buy: "Buy"
|
buy: "Купи"
|
||||||
# purchasing_for: "You are purchasing a license for"
|
purchasing_for: "Купујеш лиценцу за"
|
||||||
# creating_for: "You are creating a class for"
|
creating_for: "Правиш разред за"
|
||||||
# for: "for" # Like in 'for 30 students'
|
for: "за" # Like in 'for 30 students'
|
||||||
# receive_code: "Afterwards you will receive an unlock code to distribute to your students, which they can use to enroll in your class."
|
# receive_code: "Afterwards you will receive an unlock code to distribute to your students, which they can use to enroll in your class."
|
||||||
# free_trial: "Free trial for teachers!"
|
free_trial: "Бесплатна пробна верзија за учитеље!"
|
||||||
# get_access: "to get individual access to all courses for evalutaion purposes."
|
# get_access: "to get individual access to all courses for evalutaion purposes."
|
||||||
# questions: "Questions?"
|
questions: "Питања?"
|
||||||
# teachers_click: "Teachers Click Here"
|
teachers_click: "Учитељи кликните овде"
|
||||||
# students_click: "Students Click Here"
|
students_click: "Ученици кликните овде"
|
||||||
# courses_on_coco: "Courses on CodeCombat"
|
# courses_on_coco: "Courses on CodeCombat"
|
||||||
# designed_to: "Courses are designed to introduce computer science concepts using CodeCombat's fun and engaging environment. CodeCombat levels are organized around key topics to encourage progressive learning, over the course of 5 hours."
|
# designed_to: "Courses are designed to introduce computer science concepts using CodeCombat's fun and engaging environment. CodeCombat levels are organized around key topics to encourage progressive learning, over the course of 5 hours."
|
||||||
# more_in_less: "Learn more in less time"
|
# more_in_less: "Learn more in less time"
|
||||||
|
@ -1488,12 +1488,12 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
||||||
# add_system_title: "Add Systems to Level"
|
# add_system_title: "Add Systems to Level"
|
||||||
# done_adding: "Done Adding"
|
# done_adding: "Done Adding"
|
||||||
|
|
||||||
# article:
|
article:
|
||||||
# edit_btn_preview: "Preview"
|
edit_btn_preview: "Приказ"
|
||||||
# edit_article_title: "Edit Article"
|
edit_article_title: "Измени Чланак"
|
||||||
|
|
||||||
# polls:
|
polls:
|
||||||
# priority: "Priority"
|
priority: "Приоритет"
|
||||||
|
|
||||||
# contribute:
|
# contribute:
|
||||||
# page_title: "Contributing"
|
# page_title: "Contributing"
|
||||||
|
@ -1629,33 +1629,33 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
||||||
# humans: "Red" # Ladder page display team name
|
# humans: "Red" # Ladder page display team name
|
||||||
# ogres: "Blue"
|
# ogres: "Blue"
|
||||||
|
|
||||||
# user:
|
user:
|
||||||
# stats: "Stats"
|
stats: "Статистика"
|
||||||
# singleplayer_title: "Singleplayer Levels"
|
singleplayer_title: "Нивои за једног играча"
|
||||||
# multiplayer_title: "Multiplayer Levels"
|
multiplayer_title: "Нивои за више играча"
|
||||||
# achievements_title: "Achievements"
|
achievements_title: "Достигнућа"
|
||||||
# last_played: "Last Played"
|
last_played: "Последњи игран"
|
||||||
# status: "Status"
|
status: "Статус"
|
||||||
# status_completed: "Completed"
|
status_completed: "Завршен"
|
||||||
# status_unfinished: "Unfinished"
|
status_unfinished: "Незавршен"
|
||||||
# no_singleplayer: "No Singleplayer games played yet."
|
# no_singleplayer: "No Singleplayer games played yet."
|
||||||
# no_multiplayer: "No Multiplayer games played yet."
|
# no_multiplayer: "No Multiplayer games played yet."
|
||||||
# no_achievements: "No Achievements earned yet."
|
no_achievements: "Још увек нема стечених достигнућа."
|
||||||
# favorite_prefix: "Favorite language is "
|
favorite_prefix: "Омиљени језик је "
|
||||||
# favorite_postfix: "."
|
favorite_postfix: "."
|
||||||
# not_member_of_clans: "Not a member of any clans yet."
|
not_member_of_clans: "Ниси члан ниједног клана још увек."
|
||||||
|
|
||||||
# achievements:
|
achievements:
|
||||||
# last_earned: "Last Earned"
|
last_earned: "Последње стечено"
|
||||||
# amount_achieved: "Amount"
|
amount_achieved: "Количина"
|
||||||
# achievement: "Achievement"
|
achievement: "Достигнуће"
|
||||||
# current_xp_prefix: ""
|
current_xp_prefix: ""
|
||||||
# current_xp_postfix: " in total"
|
current_xp_postfix: " укупно"
|
||||||
# new_xp_prefix: ""
|
new_xp_prefix: ""
|
||||||
# new_xp_postfix: " earned"
|
new_xp_postfix: " стечено"
|
||||||
# left_xp_prefix: ""
|
left_xp_prefix: ""
|
||||||
# left_xp_infix: " until level "
|
left_xp_infix: " до нивоа "
|
||||||
# left_xp_postfix: ""
|
left_xp_postfix: ""
|
||||||
|
|
||||||
account:
|
account:
|
||||||
payments: "Уплате"
|
payments: "Уплате"
|
||||||
|
@ -1711,10 +1711,10 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
||||||
# you_can2: "purchase a prepaid code"
|
# you_can2: "purchase a prepaid code"
|
||||||
# you_can3: "that can be applied to your own account or given to others."
|
# you_can3: "that can be applied to your own account or given to others."
|
||||||
|
|
||||||
# coppa_deny:
|
coppa_deny:
|
||||||
# text1: "Can’t wait to learn programming?"
|
text1: "Не можеш да дочекаш да научиш програмирање?"
|
||||||
# text2: "Ask your parents to create an account for you!"
|
text2: "Питај своје родитеље да направе налог за тебе!"
|
||||||
# close: "Close Window"
|
close: "Затвори прозор"
|
||||||
|
|
||||||
# loading_error:
|
# loading_error:
|
||||||
# could_not_load: "Error loading from server"
|
# could_not_load: "Error loading from server"
|
||||||
|
@ -1747,50 +1747,50 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
||||||
hero: "Херој"
|
hero: "Херој"
|
||||||
campaigns: "Кампање"
|
campaigns: "Кампање"
|
||||||
|
|
||||||
# concepts:
|
concepts:
|
||||||
# advanced_strings: "Advanced Strings"
|
advanced_strings: "Напредни стрингови"
|
||||||
# algorithms: "Algorithms"
|
algorithms: "Алгоритми"
|
||||||
# arguments: "Arguments"
|
arguments: "Аргументи"
|
||||||
# arithmetic: "Arithmetic"
|
arithmetic: "Аритметика"
|
||||||
# arrays: "Arrays"
|
arrays: "Низови"
|
||||||
# basic_syntax: "Basic Syntax"
|
basic_syntax: "Основна синтакса"
|
||||||
# boolean_logic: "Boolean Logic"
|
boolean_logic: "Булова логика"
|
||||||
# break_statements: "Break Statements"
|
break_statements: "Break искази"
|
||||||
# classes: "Classes"
|
classes: "Класе"
|
||||||
# continue_statements: "Continue Statements"
|
continue_statements: "Continue искази"
|
||||||
# for_loops: "For Loops"
|
for_loops: "For петље"
|
||||||
# functions: "Functions"
|
functions: "Функције"
|
||||||
# graphics: "Graphics"
|
graphics: "Графика"
|
||||||
# if_statements: "If Statements"
|
if_statements: "If искази"
|
||||||
# input_handling: "Input Handling"
|
input_handling: "Руковање инпутом"
|
||||||
# math_operations: "Math Operations"
|
math_operations: "Математичке операције"
|
||||||
# object_literals: "Object Literals"
|
object_literals: "Објекат литерали"
|
||||||
# parameters: "Parameters"
|
parameters: "Параметри"
|
||||||
# strings: "Strings"
|
strings: "Стрингови"
|
||||||
# variables: "Variables"
|
variables: "Променљиве"
|
||||||
# vectors: "Vectors"
|
vectors: "Вектори"
|
||||||
# while_loops: "While Loops"
|
while_loops: "While петље"
|
||||||
# recursion: "Recursion"
|
recursion: "Рекурзије"
|
||||||
|
|
||||||
# delta:
|
delta:
|
||||||
# added: "Added"
|
added: "Додато"
|
||||||
# modified: "Modified"
|
modified: "Измењено"
|
||||||
# not_modified: "Not Modified"
|
not_modified: "Није измењено"
|
||||||
# deleted: "Deleted"
|
deleted: "Избрисано"
|
||||||
# moved_index: "Moved Index"
|
moved_index: "Померен индекс"
|
||||||
# text_diff: "Text Diff"
|
# text_diff: "Text Diff"
|
||||||
# merge_conflict_with: "MERGE CONFLICT WITH"
|
# merge_conflict_with: "MERGE CONFLICT WITH"
|
||||||
# no_changes: "No Changes"
|
# no_changes: "No Changes"
|
||||||
|
|
||||||
multiplayer:
|
multiplayer:
|
||||||
multiplayer_title: "Подешавање мода за више играча" # We'll be changing this around significantly soon. Until then, it's not important to translate.
|
multiplayer_title: "Подешавање мода за више играча" # We'll be changing this around significantly soon. Until then, it's not important to translate.
|
||||||
# multiplayer_toggle: "Enable multiplayer"
|
multiplayer_toggle: "Омогући мултиплејер"
|
||||||
# multiplayer_toggle_description: "Allow others to join your game."
|
multiplayer_toggle_description: "Дозволи другима да се придруже твојој игри."
|
||||||
multiplayer_link_description: "Дај овај линк онима које желиш да ти се придруже."
|
multiplayer_link_description: "Дај овај линк онима које желиш да ти се придруже."
|
||||||
multiplayer_hint_label: "Мала помоћ"
|
multiplayer_hint_label: "Мала помоћ"
|
||||||
multiplayer_hint: " Кликни на линк да обележиш све, затим притисни Apple-C или Ctrl-C да копираш линк."
|
multiplayer_hint: " Кликни на линк да обележиш све, затим притисни Apple-C или Ctrl-C да копираш линк."
|
||||||
multiplayer_coming_soon: "Стиже још нових карактеристика!"
|
multiplayer_coming_soon: "Стиже још нових карактеристика!"
|
||||||
# multiplayer_sign_in_leaderboard: "Sign in or create an account and get your solution on the leaderboard."
|
multiplayer_sign_in_leaderboard: "Пријави се или направи налог и стави своје решење на ранг листу."
|
||||||
|
|
||||||
# legal:
|
# legal:
|
||||||
# page_title: "Legal"
|
# page_title: "Legal"
|
||||||
|
@ -1873,15 +1873,15 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
||||||
year: "Година"
|
year: "Година"
|
||||||
day: "Дан"
|
day: "Дан"
|
||||||
month: "Месец"
|
month: "Месец"
|
||||||
january: "Јануар"
|
january: "јануар"
|
||||||
february: "Фебруар"
|
february: "фебруар"
|
||||||
march: "Март"
|
march: "март"
|
||||||
april: "Април"
|
april: "април"
|
||||||
may: "Мај"
|
may: "мај"
|
||||||
june: "Јун"
|
june: "јун"
|
||||||
july: "Јул"
|
july: "јул"
|
||||||
august: "Август"
|
august: "август"
|
||||||
september: "Септембар"
|
september: "септембар"
|
||||||
october: "Октобар"
|
october: "октобар"
|
||||||
november: "Новембар"
|
november: "новембар"
|
||||||
december: "Децембар"
|
december: "децембар"
|
||||||
|
|
|
@ -38,10 +38,10 @@ module.exports = nativeDescription: "Українська", englishDescription:
|
||||||
accessible_to: "Доступно" # Accessible to
|
accessible_to: "Доступно" # Accessible to
|
||||||
everyone: "кожному" # everyone
|
everyone: "кожному" # everyone
|
||||||
democratizing: "Навчання, доступне кожному, — наша головна мета. Кожен повинен мати можливість навчитись програмувати." # Democratizing the process of learning coding is at the core of our philosophy. Everyone should be able to learn to code.
|
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."
|
forgot_learning: "Таке враження, що, граючи, вони забули, що це навчання."
|
||||||
# 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."
|
wanted_to_do: " Програмування — те, чим я завжди хотів займатись, ніколи не думав, що буду вчити це в школі."
|
||||||
# why_games: "Why is learning through games important?"
|
why_games: "Чому навчання через гру важливе?"
|
||||||
# games_reward: "Games reward the productive struggle."
|
games_reward: "Гра — винагорода за зусилля."
|
||||||
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.
|
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"
|
# excel: "Games excel at rewarding"
|
||||||
# struggle: "productive struggle"
|
# struggle: "productive struggle"
|
||||||
|
|
|
@ -15,7 +15,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
||||||
or_ipad: "Hoặc tải phiên bản dành cho iPad"
|
or_ipad: "Hoặc tải phiên bản dành cho iPad"
|
||||||
|
|
||||||
new_home:
|
new_home:
|
||||||
slogan: "Tựa game hấp dẫn nhất để học lập trình."
|
slogan: "Trò chơi hấp dẫn nhất để học lập trình."
|
||||||
classroom_edition: "Phiên bản Lớp học:"
|
classroom_edition: "Phiên bản Lớp học:"
|
||||||
learn_to_code: "Học lập trình:"
|
learn_to_code: "Học lập trình:"
|
||||||
teacher: "Giáo viên"
|
teacher: "Giáo viên"
|
||||||
|
@ -24,28 +24,28 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
||||||
im_a_teacher: "Tôi là Giáo viên"
|
im_a_teacher: "Tôi là Giáo viên"
|
||||||
im_a_student: "Tôi là Học viên"
|
im_a_student: "Tôi là Học viên"
|
||||||
learn_more: "Tìm hiểu thêm"
|
learn_more: "Tìm hiểu thêm"
|
||||||
classroom_in_a_box: "Một lớp học đặc biệt cho bộ môn công nghệ thông tin."
|
classroom_in_a_box: "Một lớp học đặc biệt dành cho bộ môn công nghệ thông tin."
|
||||||
codecombat_is: "CodeCombat là nền tảng <strong>cho học sinh</strong> tiếp cận với bộ môn công nghệ thông tin bằng cách chơi game."
|
codecombat_is: "CodeCombat là nền tảng <strong>giúp cho học sinh</strong> tiếp cận với bộ môn công nghệ thông tin bằng cách chơi game."
|
||||||
our_courses: "Các khóa học của chúng tôi đã được thử nghiệm để <strong>triển khai trong lớp học</strong>, thậm chí được yêu thích bởi các giáo viên có ít hoặc không có kinh nghiệm lập trình."
|
our_courses: "Các khóa học của chúng tôi đã được thử nghiệm để <strong>triển khai trong các lớp học</strong>, thậm chí được sử dụng bởi các giáo viên có ít hoặc không có kinh nghiệm lập trình."
|
||||||
top_screenshots_hint: "Học viên viết code và có thể cập nhật kết quả ngay lập tức"
|
top_screenshots_hint: "Học viên viết code và cập nhật kết quả ngay lập tức"
|
||||||
designed_with: "Được thiết kế để dạy học"
|
designed_with: "Được thiết kế để dạy học"
|
||||||
real_code: "Thực tế, tự viết code"
|
real_code: "Thực tế, tự viết code"
|
||||||
from_the_first_level: "ngay từ trình độ đầu tiên"
|
from_the_first_level: "ngay từ trình độ đầu tiên"
|
||||||
getting_students: "Cho phép học viên viết code ngay từ đầu là vô cùng quan trọng trong việc làm quen cú pháp và học cấu trúc lập trình."
|
getting_students: "Cho phép học viên viết code ngay từ đầu là vô cùng quan trọng trong việc làm quen cú pháp và học cấu trúc lập trình."
|
||||||
educator_resources: "Xây dựng bài giảng"
|
educator_resources: "Xây dựng bài giảng"
|
||||||
course_guides: "và các khóa học"
|
course_guides: "và các khóa học"
|
||||||
teaching_computer_science: "Việc dạy bộ môn công nghệ thông tin không nhất thiết yêu cầu một tấm bằng đắt tiền, bởi vì chúng tôi cung cấp sẵn công cụ dành cho người giảng dạy dù cho bạn là ai."
|
teaching_computer_science: "Việc giảng dạy bộ môn công nghệ thông tin không nhất thiết yêu cầu một tấm bằng đắt tiền, bởi vì chúng tôi cung cấp sẵn công cụ dành cho các giảng viên."
|
||||||
accessible_to: "Tiếp cận dễ dàng"
|
accessible_to: "Tiếp cận dễ dàng"
|
||||||
everyone: "cho mọi người"
|
everyone: "cho mọi người"
|
||||||
democratizing: "Xã hội hóa quá trình học lập trình là tôn chỉ của chúng tôi. Mọi người đều có thể học code."
|
democratizing: "Xã hội hóa quá trình học lập trình là tôn chỉ của chúng tôi. Mọi người đều có thể học code."
|
||||||
forgot_learning: "Tôi nghĩ học viên không để ý rằng họ thực sự đang học."
|
forgot_learning: "Tôi nghĩ học viên không để ý rằng họ thực sự đang học."
|
||||||
wanted_to_do: "Lập trình là điều mà em luôn muốn làm, và em không thể nghĩ rằng em có thể học nó ngay ở trường."
|
wanted_to_do: "Lập trình là điều mà em luôn muốn làm, em không thể nghĩ rằng em có thể học nó ngay tại trường."
|
||||||
why_games: "Tại sao học thông qua chơi game lại quan trọng?"
|
why_games: "Tại sao học thông qua chơi game lại quan trọng?"
|
||||||
games_reward: "Game cổ vũ một cách tích cực."
|
games_reward: "Game cổ vũ một cách tích cực."
|
||||||
encourage: "Game là môi trường khuyến khích sự tương tác, khám phá, và tinh thần không sợ thất bại. Một tựa game hay sẽ thử thách người chơi giúp họ dần dần hoàn thiện kĩ năng, điều này cũng giống như quá trình học tập của một học viên trong lớp học vậy."
|
encourage: "Game là môi trường khuyến khích sự tương tác, khám phá, và tinh thần không sợ thất bại. Một tựa game hay sẽ thử thách người chơi giúp họ dần dần hoàn thiện kĩ năng, điều này cũng giống như quá trình học tập của một học sinh trong lớp học vậy."
|
||||||
excel: "Game cổ vũ"
|
excel: "Game cổ vũ"
|
||||||
struggle: "những cố gắng tích cục"
|
struggle: "những cố gắng tích cục"
|
||||||
kind_of_struggle: "những sự cố gắng trong học tập mà thực sự dem lại sự cuốn hút"
|
kind_of_struggle: "những sự cố gắng trong học tập mà thực sự dem lại sự cuốn hút, "
|
||||||
motivating: "tạo động lực"
|
motivating: "tạo động lực"
|
||||||
not_tedious: "mà không hề buồn chán."
|
not_tedious: "mà không hề buồn chán."
|
||||||
gaming_is_good: "Nghiên cứu chứng minh chơi game tốt cho não bộ của trẻ. (đúng vậy đấy!)"
|
gaming_is_good: "Nghiên cứu chứng minh chơi game tốt cho não bộ của trẻ. (đúng vậy đấy!)"
|
||||||
|
@ -56,7 +56,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
||||||
feedback: "Việc chơi game cũng giúp học sinh tương tác để có thể phát triển tư duy một cách toàn diện hơn, thay vì chỉ biết đến đáp án “đúng” hoặc “sai”."
|
feedback: "Việc chơi game cũng giúp học sinh tương tác để có thể phát triển tư duy một cách toàn diện hơn, thay vì chỉ biết đến đáp án “đúng” hoặc “sai”."
|
||||||
real_game: "Game thật, code thật."
|
real_game: "Game thật, code thật."
|
||||||
great_game: "Một tựa game hay không chỉ cần những huy chương hay thành tích hào nhoáng - quan trọng hơn hết là trải nghiệm của người chơi, những thử thách tinh tế, đồng thời là khả năng đối đầu và vượt qua thử thách."
|
great_game: "Một tựa game hay không chỉ cần những huy chương hay thành tích hào nhoáng - quan trọng hơn hết là trải nghiệm của người chơi, những thử thách tinh tế, đồng thời là khả năng đối đầu và vượt qua thử thách."
|
||||||
agency: "CodeCombat là game đưa ra cho người chơi những thử thách buộc họ phải vượt qua bằng cách viết code, điều này giúp cho cả những người mới bắt đầu và những học viên trình độ nâng cao luyện tập khả năng lập trình thành thạo."
|
agency: "CodeCombat là trò chơi đưa ra cho người chơi những thử thách buộc họ phải vượt qua bằng cách viết code, điều này giúp cho cả những người mới bắt đầu và những học viên trình độ nâng cao luyện tập khả năng lập trình thành thạo."
|
||||||
request_demo_title: "Bắt đầu giảng dạy ngay hôm nay!"
|
request_demo_title: "Bắt đầu giảng dạy ngay hôm nay!"
|
||||||
request_demo_subtitle: "Yêu cầu demo và chuẩn bị sẵn sàng cho học viên của bạn chỉ trong vòng một tiếng đồng hồ."
|
request_demo_subtitle: "Yêu cầu demo và chuẩn bị sẵn sàng cho học viên của bạn chỉ trong vòng một tiếng đồng hồ."
|
||||||
get_started_title: "Xây dựng lớp học của bạn ngay hôm nay"
|
get_started_title: "Xây dựng lớp học của bạn ngay hôm nay"
|
||||||
|
@ -73,7 +73,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
||||||
lesson_time: "Thời gian học:"
|
lesson_time: "Thời gian học:"
|
||||||
coming_soon: "Sắp ra mắt!"
|
coming_soon: "Sắp ra mắt!"
|
||||||
courses_available_in: "Các khóa học giảng dạy JavaScript, Python, và Java (sắp ra mắt!)"
|
courses_available_in: "Các khóa học giảng dạy JavaScript, Python, và Java (sắp ra mắt!)"
|
||||||
boast: "Đưa ra những câu đố đủ khó để hấp dẫn cả game thủ và coder."
|
boast: "Đưa ra những câu đố đủ khó để hấp dẫn cả các game thủ và coder."
|
||||||
winning: "Một sự kết hợp hoàn hảo giữa game RPG và bài tập lập trình, giúp việc giáo dục trẻ thú vị hơn bao giờ hết."
|
winning: "Một sự kết hợp hoàn hảo giữa game RPG và bài tập lập trình, giúp việc giáo dục trẻ thú vị hơn bao giờ hết."
|
||||||
run_class: "Mọi thứ bạn cần để tổ chức một lớp học công nghệ thông tin ngay hôm nay, không yêu cầu kinh nghiệm lập trình."
|
run_class: "Mọi thứ bạn cần để tổ chức một lớp học công nghệ thông tin ngay hôm nay, không yêu cầu kinh nghiệm lập trình."
|
||||||
teachers: "Giáo viên!"
|
teachers: "Giáo viên!"
|
||||||
|
@ -84,7 +84,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
||||||
join_class: "Tham gia Lớp học"
|
join_class: "Tham gia Lớp học"
|
||||||
role: "Vai trò của bạn:"
|
role: "Vai trò của bạn:"
|
||||||
student_count: "Số học viên:"
|
student_count: "Số học viên:"
|
||||||
start_playing_for_free: "Bắt đầu Chơi Miễn phí!"
|
start_playing_for_free: "Bắt Đầu Chơi Miễn Phí!"
|
||||||
students_and_players: "Học viên và Người chơi"
|
students_and_players: "Học viên và Người chơi"
|
||||||
goto_classes: "Tới Lớp học của tôi" # {change}
|
goto_classes: "Tới Lớp học của tôi" # {change}
|
||||||
view_profile: "Xem hồ sơ của tôi"
|
view_profile: "Xem hồ sơ của tôi"
|
||||||
|
@ -259,7 +259,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
||||||
sign_up: "Đăng Ký"
|
sign_up: "Đăng Ký"
|
||||||
log_in: "đăng nhập với mật khẩu"
|
log_in: "đăng nhập với mật khẩu"
|
||||||
required: "Bạn cần phải đăng nhập trước khi muốn tiếp tục."
|
required: "Bạn cần phải đăng nhập trước khi muốn tiếp tục."
|
||||||
login_switch: "Bạn đã có tài khoản rồi?"
|
login_switch: "Bạn đã có tài khoản?"
|
||||||
school_name: "Tên Trường và Thành phố"
|
school_name: "Tên Trường và Thành phố"
|
||||||
optional: "không bắt buộc"
|
optional: "không bắt buộc"
|
||||||
school_name_placeholder: "Ví dụ tên Trường, Thành phố, (Tiểu bang nếu đang ở Mỹ)"
|
school_name_placeholder: "Ví dụ tên Trường, Thành phố, (Tiểu bang nếu đang ở Mỹ)"
|
||||||
|
@ -735,7 +735,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
||||||
mission_description_1: "<strong>Lập trình thật kì diệu</strong>. Bạn có thể tạo ra một thứ gì đó chỉ từ trí tưởng tượng. Chúng tôi bắt đầu CodeCombat để đem tới cho học viên những trải nghiệm nhiệm màu khi <strong>viết code</strong> thực tế."
|
mission_description_1: "<strong>Lập trình thật kì diệu</strong>. Bạn có thể tạo ra một thứ gì đó chỉ từ trí tưởng tượng. Chúng tôi bắt đầu CodeCombat để đem tới cho học viên những trải nghiệm nhiệm màu khi <strong>viết code</strong> thực tế."
|
||||||
mission_description_2: "Trên thực tế, việc này giúp cho bạn học nhanh hơn. Nhanh hơn RẤT NHIỀU. Bạn được thực hành thay vì chỉ đọc lý thuyết. Chúng tôi muốn đưa môi trường thực hành này đến với trường học và đến tay <strong>mọi học sinh</strong>, bởi vì mọi người đều cần có cơ hội biết đến sự nhiệm màu của lập trình."
|
mission_description_2: "Trên thực tế, việc này giúp cho bạn học nhanh hơn. Nhanh hơn RẤT NHIỀU. Bạn được thực hành thay vì chỉ đọc lý thuyết. Chúng tôi muốn đưa môi trường thực hành này đến với trường học và đến tay <strong>mọi học sinh</strong>, bởi vì mọi người đều cần có cơ hội biết đến sự nhiệm màu của lập trình."
|
||||||
team_title: "Đội ngũ của CodeCombat"
|
team_title: "Đội ngũ của CodeCombat"
|
||||||
# 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."
|
team_values: "Chúng tôi chân trọng những cuộc đối thoại mở và có sự tôn trọng lẫn nhau, nơi mà những ý tưởng tốt nhất giành chiến thắng. Những quyết định của chúng tôi được đưa ra hoàn toàn dựa trên những báo cáo nghiên cứu ý kiến khách hàng và quy trình của chúng tôi chú trọng vào mục tiêu đưa đến những giá trị hữu hình cho cho khách hàng. Mọi người đều có vai trò của mình, từ CEO của chúng tôi cho đến những người tham gia công đồng trên Github, bởi vì chúng tôi chân trọng sự phát triển và học hỏi của từng thành viên trong nhóm."
|
||||||
nick_title: "Đồng Sáng Lập, CEO" # {change}
|
nick_title: "Đồng Sáng Lập, CEO" # {change}
|
||||||
nick_blurb: "Người truyền cảm hứng"
|
nick_blurb: "Người truyền cảm hứng"
|
||||||
matt_title: "Đồng Sáng Lập, CTO" # {change}
|
matt_title: "Đồng Sáng Lập, CTO" # {change}
|
||||||
|
@ -853,10 +853,10 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
||||||
college_plus: "Cao đẳng/Đại học hoặc cao hơn"
|
college_plus: "Cao đẳng/Đại học hoặc cao hơn"
|
||||||
anything_else: "Còn điều gì chúng tôi nên biết thêm nữa không?"
|
anything_else: "Còn điều gì chúng tôi nên biết thêm nữa không?"
|
||||||
thanks_header: "Đã nhận yêu cầu!"
|
thanks_header: "Đã nhận yêu cầu!"
|
||||||
# thanks_sub_header: "Thanks for expressing interest in CodeCombat for your school."
|
thanks_sub_header: "Cảm ơn vì đã bày tỏ sự quan tâm của trường bạn với CodeCombat."
|
||||||
thanks_p: "Chúng tôi sẽ sớm trả lời lại! Nếu bạn cần liên hệ, hãy liên lạc với chúng tôi tại:"
|
thanks_p: "Chúng tôi sẽ sớm trả lời lại! Nếu bạn cần liên hệ, hãy liên lạc với chúng tôi tại:"
|
||||||
# back_to_classes: "Back to Classes"
|
back_to_classes: "Quay lại Lớp học"
|
||||||
# finish_signup: "Finish creating your teacher account:"
|
finish_signup: "Hoàn thiện tài khoản giáo viên:"
|
||||||
# finish_signup_p: "Create an account to set up a class, add your students, and monitor their progress as they learn computer science."
|
# finish_signup_p: "Create an account to set up a class, add your students, and monitor their progress as they learn computer science."
|
||||||
signup_with: "Đăng ký bằng:"
|
signup_with: "Đăng ký bằng:"
|
||||||
connect_with: "Kết nối với:"
|
connect_with: "Kết nối với:"
|
||||||
|
@ -866,7 +866,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
||||||
# create_account_subtitle: "Get access to teacher-only tools for using CodeCombat in the classroom. <strong>Set up a class</strong>, add your students, and <strong>monitor their progress</strong>!"
|
# create_account_subtitle: "Get access to teacher-only tools for using CodeCombat in the classroom. <strong>Set up a class</strong>, add your students, and <strong>monitor their progress</strong>!"
|
||||||
convert_account_title: "Năng cấp lên tài khoản Giáo Viên"
|
convert_account_title: "Năng cấp lên tài khoản Giáo Viên"
|
||||||
not: "Không phải"
|
not: "Không phải"
|
||||||
# setup_a_class: "Set Up a Class"
|
setup_a_class: "Thiết lập một Lớp học"
|
||||||
|
|
||||||
versions:
|
versions:
|
||||||
save_version_title: "Lưu phiên bản mới"
|
save_version_title: "Lưu phiên bản mới"
|
||||||
|
@ -922,10 +922,10 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
||||||
email_announcements: "Thông báo"
|
email_announcements: "Thông báo"
|
||||||
email_announcements_description: "Nhận email về tin tức mới nhất và sự phát triển của Codecombat."
|
email_announcements_description: "Nhận email về tin tức mới nhất và sự phát triển của Codecombat."
|
||||||
email_notifications: "Thông báo"
|
email_notifications: "Thông báo"
|
||||||
# email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity."
|
email_notifications_summary: "Kiểm soát các thông báo cá nhân tự động liên quan đến các hoạt động của CodeCombat."
|
||||||
# email_any_notes: "Any Notifications"
|
email_any_notes: "Bất kỳ thông báo nào"
|
||||||
# email_any_notes_description: "Disable to stop all activity notification emails."
|
email_any_notes_description: "Vô hiệu hóa để ngừng mọi thông báo qua email."
|
||||||
# email_news: "News"
|
email_news: "Tin tức"
|
||||||
email_recruit_notes: "Cơ hội việc làm"
|
email_recruit_notes: "Cơ hội việc làm"
|
||||||
email_recruit_notes_description: "Nếu bạn chơi trò này rất giỏi, chúng tôi có thể sẽ liên lạc với bạn về cơ hội nghề nghiệp."
|
email_recruit_notes_description: "Nếu bạn chơi trò này rất giỏi, chúng tôi có thể sẽ liên lạc với bạn về cơ hội nghề nghiệp."
|
||||||
contributor_emails: "Email tham gia đóng góp"
|
contributor_emails: "Email tham gia đóng góp"
|
||||||
|
@ -957,7 +957,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
||||||
# toggle_grid: "Toggle grid overlay."
|
# toggle_grid: "Toggle grid overlay."
|
||||||
# toggle_pathfinding: "Toggle pathfinding overlay."
|
# toggle_pathfinding: "Toggle pathfinding overlay."
|
||||||
# beautify: "Beautify your code by standardizing its formatting."
|
# beautify: "Beautify your code by standardizing its formatting."
|
||||||
# maximize_editor: "Maximize/minimize code editor."
|
maximize_editor: "Phong to/thu nhỏ trình soạn thảo code."
|
||||||
|
|
||||||
community:
|
community:
|
||||||
main_title: "Cộng đồng CodeCombat"
|
main_title: "Cộng đồng CodeCombat"
|
||||||
|
@ -1000,8 +1000,8 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
||||||
edit_description: "sửa mô tả"
|
edit_description: "sửa mô tả"
|
||||||
private: "(kín)"
|
private: "(kín)"
|
||||||
summary: "Tóm tắt"
|
summary: "Tóm tắt"
|
||||||
average_level: "Cấp độ trng bình"
|
average_level: "Cấp độ trung bình"
|
||||||
# average_achievements: "Average Achievements"
|
average_achievements: "Thành tựu trung bình"
|
||||||
delete_clan: "Xóa Clan"
|
delete_clan: "Xóa Clan"
|
||||||
leave_clan: "Rời Clan"
|
leave_clan: "Rời Clan"
|
||||||
join_clan: "Tham gia Clan"
|
join_clan: "Tham gia Clan"
|
||||||
|
@ -1013,29 +1013,29 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
||||||
started_1: "đã bắt đầu"
|
started_1: "đã bắt đầu"
|
||||||
complete_1: "hoàn thành"
|
complete_1: "hoàn thành"
|
||||||
# exp_levels: "Expand levels"
|
# exp_levels: "Expand levels"
|
||||||
# rem_hero: "Remove Hero"
|
rem_hero: "Xóa Tướng"
|
||||||
# status: "Status"
|
status: "Trạng thái"
|
||||||
complete_2: "Hoàn thành"
|
complete_2: "Hoàn thành"
|
||||||
started_2: "Đã bắt đầu"
|
started_2: "Đã bắt đầu"
|
||||||
not_started_2: "Chưa bắt đầu"
|
not_started_2: "Chưa bắt đầu"
|
||||||
view_solution: "Click để xem lời giải."
|
view_solution: "Click để xem lời giải."
|
||||||
# view_attempt: "Click to view attempt."
|
view_attempt: "Click để xem thử."
|
||||||
# latest_achievement: "Latest Achievement"
|
latest_achievement: "Thành tựu mới nhất"
|
||||||
playtime: "Thời gian chơi"
|
playtime: "Thời gian chơi"
|
||||||
last_played: "Lần chơi cuối"
|
last_played: "Lần chơi cuối"
|
||||||
# leagues_explanation: "Play in a league against other clan members in these multiplayer arena instances."
|
# leagues_explanation: "Play in a league against other clan members in these multiplayer arena instances."
|
||||||
# track_concepts1: "Track concepts"
|
# track_concepts1: "Track concepts"
|
||||||
# track_concepts2a: "learned by each student"
|
# track_concepts2a: "learned by each student"
|
||||||
# track_concepts2b: "learned by each member"
|
# track_concepts2b: "learned by each member"
|
||||||
# track_concepts3a: "Track levels completed for each student"
|
track_concepts3a: "Theo dõi các màn chơi được hoàn thành bởi mỗi học viên"
|
||||||
# track_concepts3b: "Track levels completed for each member"
|
track_concepts3b: "Theo dõi các màn chơi được hoàn thành bởi mỗi thành viên"
|
||||||
track_concepts4a: "Xem các học viên của bạn'"
|
track_concepts4a: "Xem các học viên của bạn'"
|
||||||
track_concepts4b: "Xem các thành viên của bạn'"
|
track_concepts4b: "Xem các thành viên của bạn'"
|
||||||
track_concepts5: "lời giải"
|
track_concepts5: "lời giải"
|
||||||
track_concepts6a: "Sắp xếp học viên theo tên hoặc tiến trình"
|
track_concepts6a: "Sắp xếp học viên theo tên hoặc tiến trình"
|
||||||
track_concepts6b: "Sắp xếp thành viên theo tên hoặc tiến trình"
|
track_concepts6b: "Sắp xếp thành viên theo tên hoặc tiến trình"
|
||||||
# track_concepts7: "Requires invitation"
|
track_concepts7: "Yêu cầu lời mời"
|
||||||
# track_concepts8: "to join"
|
track_concepts8: "để tham gia"
|
||||||
private_require_sub: "Các Clan kín cần mua subscription để tạo hoặc tham gia."
|
private_require_sub: "Các Clan kín cần mua subscription để tạo hoặc tham gia."
|
||||||
|
|
||||||
courses:
|
courses:
|
||||||
|
@ -1047,7 +1047,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
||||||
visit_suf: "để tham gia."
|
visit_suf: "để tham gia."
|
||||||
select_class: "Chọn một trong các lớp học của bạn"
|
select_class: "Chọn một trong các lớp học của bạn"
|
||||||
unnamed: "*unnamed*"
|
unnamed: "*unnamed*"
|
||||||
# select: "Select"
|
select: "Lựa chọn"
|
||||||
unnamed_class: "Lớp học chưa đặt tên"
|
unnamed_class: "Lớp học chưa đặt tên"
|
||||||
edit_settings: "thay đổi tùy chỉnh lớp học"
|
edit_settings: "thay đổi tùy chỉnh lớp học"
|
||||||
edit_settings1: "Thay đổi tùy chỉnh lớp học"
|
edit_settings1: "Thay đổi tùy chỉnh lớp học"
|
||||||
|
@ -1055,24 +1055,24 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
||||||
add_students: "Thêm học sinh"
|
add_students: "Thêm học sinh"
|
||||||
stats: "Thống kê"
|
stats: "Thống kê"
|
||||||
total_students: "Tổng số học sinh:"
|
total_students: "Tổng số học sinh:"
|
||||||
# average_time: "Average level play time:"
|
average_time: "Thời gian chơi trung bình:"
|
||||||
total_time: "Tổng thời gian chơi:"
|
total_time: "Tổng thời gian chơi:"
|
||||||
average_levels: "Lượng cấp độ trung bình đã hoàn thành:"
|
average_levels: "Lượng cấp độ trung bình đã hoàn thành:"
|
||||||
total_levels: "Tổng số cấp độ đã hoàn thành"
|
total_levels: "Tổng số cấp độ đã hoàn thành"
|
||||||
# furthest_level: "Furthest level completed:"
|
furthest_level: "Màn chơi xa nhất đã hoàn thành:"
|
||||||
# students: "Students"
|
students: "Học viên"
|
||||||
# students1: "students"
|
students1: "học viên"
|
||||||
# concepts: "Concepts"
|
concepts: "Các khái niệm"
|
||||||
# levels: "levels"
|
levels: "màn chơi"
|
||||||
# played: "Played"
|
played: "Đã chơi"
|
||||||
# play_time: "Play time:"
|
play_time: "Thời gian chơi:"
|
||||||
# completed: "Completed:"
|
completed: "Đã hoàn thành:"
|
||||||
# invite_students: "Invite students to join this class."
|
invite_students: "Mời các học viên tham gia lớp học này."
|
||||||
# invite_link_header: "Link to join course"
|
invite_link_header: "Đường link để tham gia khóa học"
|
||||||
# invite_link_p_1: "Give this link to students you would like to have join the course."
|
# invite_link_p_1: "Give this link to students you would like to have join the course."
|
||||||
# invite_link_p_2: "Or have us email them directly:"
|
# invite_link_p_2: "Or have us email them directly:"
|
||||||
# capacity_used: "Course slots used:"
|
capacity_used: "Số chỗ đã đăng ký:"
|
||||||
# enter_emails: "Enter student emails to invite, one per line"
|
enter_emails: "Nhập email học viên để gửi lời mời, mỗi email một dòng"
|
||||||
send_invites: "Gửi lời mời"
|
send_invites: "Gửi lời mời"
|
||||||
creating_class: "Đang tạo lớp..."
|
creating_class: "Đang tạo lớp..."
|
||||||
purchasing_course: "Đang mua khóa học..."
|
purchasing_course: "Đang mua khóa học..."
|
||||||
|
@ -1086,15 +1086,15 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
||||||
name_class: "Đặt tên lớp của bạn"
|
name_class: "Đặt tên lớp của bạn"
|
||||||
# displayed_course_page: "This will be displayed on the course page for you and your students. It can be changed later."
|
# displayed_course_page: "This will be displayed on the course page for you and your students. It can be changed later."
|
||||||
buy: "Mua"
|
buy: "Mua"
|
||||||
# purchasing_for: "You are purchasing a license for"
|
purchasing_for: "Bạn đang muc giấy phép cho"
|
||||||
# creating_for: "You are creating a class for"
|
creating_for: "Bạn đang tạo một lớp cho"
|
||||||
# for: "for" # Like in 'for 30 students'
|
for: "dành cho" # Like in 'for 30 students'
|
||||||
# receive_code: "Afterwards you will receive an unlock code to distribute to your students, which they can use to enroll in your class."
|
# receive_code: "Afterwards you will receive an unlock code to distribute to your students, which they can use to enroll in your class."
|
||||||
# free_trial: "Free trial for teachers!"
|
# free_trial: "Free trial for teachers!"
|
||||||
# get_access: "to get individual access to all courses for evalutaion purposes."
|
# get_access: "to get individual access to all courses for evalutaion purposes."
|
||||||
# questions: "Questions?"
|
questions: "Có câu hỏi?"
|
||||||
# teachers_click: "Teachers Click Here"
|
teachers_click: "Giáo viên click vào đây"
|
||||||
# students_click: "Students Click Here"
|
students_click: "Học viên click vào đây"
|
||||||
courses_on_coco: "Những khóa học trên CodeCombat"
|
courses_on_coco: "Những khóa học trên CodeCombat"
|
||||||
# designed_to: "Courses are designed to introduce computer science concepts using CodeCombat's fun and engaging environment. CodeCombat levels are organized around key topics to encourage progressive learning, over the course of 5 hours."
|
# designed_to: "Courses are designed to introduce computer science concepts using CodeCombat's fun and engaging environment. CodeCombat levels are organized around key topics to encourage progressive learning, over the course of 5 hours."
|
||||||
# more_in_less: "Learn more in less time"
|
# more_in_less: "Learn more in less time"
|
||||||
|
@ -1261,16 +1261,16 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
||||||
# students_enrolled: "students enrolled"
|
# students_enrolled: "students enrolled"
|
||||||
# students_assigned: "students assigned"
|
# students_assigned: "students assigned"
|
||||||
# length: "Length:"
|
# length: "Length:"
|
||||||
title: "Tiêu đề" # Flat style redesign
|
title: "Các khóa học" # Flat style redesign
|
||||||
# subtitle: "Review course guidelines, solutions, and levels"
|
subtitle: "Xem giáo án của các khóa học, lời giải và các màn chơi"
|
||||||
# changelog: "View latest changes to course levels."
|
changelog: "Xem những thay đổi mới nhất về các khóa học."
|
||||||
# select_language: "Select language"
|
select_language: "Chọn ngôn ngữ"
|
||||||
# select_level: "Select level"
|
select_level: "Chọn màn chơi"
|
||||||
# play_level: "Play Level"
|
play_level: "Chơi Màn Chơi"
|
||||||
# concepts_covered: "Concepts covered"
|
concepts_covered: "Bao gồm các khái niệm"
|
||||||
# print_guide: "Print Guide (PDF)"
|
print_guide: "In Hướng Dẫn (PDF)"
|
||||||
# view_guide_online: "View Guide Online (PDF)"
|
view_guide_online: "Xem Hướng Dẫn Online (PDF)"
|
||||||
# last_updated: "Last updated:"
|
last_updated: "Cập nhật lần cuối:"
|
||||||
# grants_lifetime_access: "Grants access to all Courses."
|
# grants_lifetime_access: "Grants access to all Courses."
|
||||||
# enrollment_credits_available: "Enrollment Credits Available:"
|
# enrollment_credits_available: "Enrollment Credits Available:"
|
||||||
description: "Mô tả" # ClassroomSettingsModal
|
description: "Mô tả" # ClassroomSettingsModal
|
||||||
|
@ -1292,7 +1292,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
||||||
student_age_range_to: "tới"
|
student_age_range_to: "tới"
|
||||||
create_class: "Tạo Lớp"
|
create_class: "Tạo Lớp"
|
||||||
class_name: "Tên lớp"
|
class_name: "Tên lớp"
|
||||||
# teacher_account_restricted: "Your account is a teacher account, and so cannot access student content."
|
teacher_account_restricted: "Tài khoản của bạn là tài khoản Giáo Viên, vì thế bạn không thể truy cập nội dung dành cho học viên."
|
||||||
|
|
||||||
teacher:
|
teacher:
|
||||||
teacher_dashboard: "Bảng Điều Khiển Giáo Viên" # Navbar
|
teacher_dashboard: "Bảng Điều Khiển Giáo Viên" # Navbar
|
||||||
|
@ -1406,7 +1406,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
||||||
# level_title: "Level Editor"
|
# level_title: "Level Editor"
|
||||||
# achievement_title: "Achievement Editor"
|
# achievement_title: "Achievement Editor"
|
||||||
# poll_title: "Poll Editor"
|
# poll_title: "Poll Editor"
|
||||||
# back: "Back"
|
back: "Quay lại"
|
||||||
# revert: "Revert"
|
# revert: "Revert"
|
||||||
# revert_models: "Revert Models"
|
# revert_models: "Revert Models"
|
||||||
pick_a_terrain: "Chọn Địa Hình"
|
pick_a_terrain: "Chọn Địa Hình"
|
||||||
|
@ -1418,8 +1418,8 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
||||||
glacier: "Núi băng"
|
glacier: "Núi băng"
|
||||||
small: "Bé"
|
small: "Bé"
|
||||||
large: "Lớn"
|
large: "Lớn"
|
||||||
# fork_title: "Fork New Version"
|
fork_title: "Fork phiên bản mới"
|
||||||
# fork_creating: "Creating Fork..."
|
fork_creating: "Đang tạo Fork..."
|
||||||
# generate_terrain: "Generate Terrain"
|
# generate_terrain: "Generate Terrain"
|
||||||
more: "Thêm"
|
more: "Thêm"
|
||||||
wiki: "Wiki"
|
wiki: "Wiki"
|
||||||
|
|
|
@ -279,8 +279,8 @@ module.exports = nativeDescription: "繁體中文", englishDescription: "Chinese
|
||||||
recovery_sent: "密碼重置的信件已寄出"
|
recovery_sent: "密碼重置的信件已寄出"
|
||||||
|
|
||||||
items:
|
items:
|
||||||
primary: "主要武器"
|
primary: "主手裝備"
|
||||||
secondary: "次要武器"
|
secondary: "副手裝備"
|
||||||
armor: "裝甲"
|
armor: "裝甲"
|
||||||
accessories: "飾品"
|
accessories: "飾品"
|
||||||
misc: "輔助"
|
misc: "輔助"
|
||||||
|
@ -344,10 +344,10 @@ module.exports = nativeDescription: "繁體中文", englishDescription: "Chinese
|
||||||
confirm_password: "確認密碼"
|
confirm_password: "確認密碼"
|
||||||
message: "訊息"
|
message: "訊息"
|
||||||
code: "程式碼"
|
code: "程式碼"
|
||||||
ladder: "升級比賽"
|
ladder: "天梯"
|
||||||
when: "當"
|
when: "何時"
|
||||||
opponent: "對手"
|
opponent: "對手"
|
||||||
rank: "階級"
|
rank: "排名"
|
||||||
score: "分數"
|
score: "分數"
|
||||||
win: "獲勝"
|
win: "獲勝"
|
||||||
loss: "失敗"
|
loss: "失敗"
|
||||||
|
@ -472,7 +472,7 @@ module.exports = nativeDescription: "繁體中文", englishDescription: "Chinese
|
||||||
tip_reticulating: "網格狀鋸齒(指卡頓現象)"
|
tip_reticulating: "網格狀鋸齒(指卡頓現象)"
|
||||||
tip_harry: "巫師,"
|
tip_harry: "巫師,"
|
||||||
tip_great_responsibility: "隨著擁有強大的編程技巧,除錯的責任將越大。"
|
tip_great_responsibility: "隨著擁有強大的編程技巧,除錯的責任將越大。"
|
||||||
tip_munchkin: "如果您不吃掉您的蔬菜,那小矮人將在您沉睡時找到您。"
|
tip_munchkin: "如果您不吃掉您的蔬菜,那些矮人將在您睡覺時找到您。"
|
||||||
tip_binary: "只有2種人在這世上:那些懂2進位的,和那些不懂的。"
|
tip_binary: "只有2種人在這世上:那些懂2進位的,和那些不懂的。"
|
||||||
tip_commitment_yoda: "一個程式員必須擁有強烈的責任感和一顆認真的心。 ~ Yoda《星際大戰》"
|
tip_commitment_yoda: "一個程式員必須擁有強烈的責任感和一顆認真的心。 ~ Yoda《星際大戰》"
|
||||||
tip_no_try: "做,或者不做。這邊不存在嘗試的選項。 - Yoda《星際大戰》"
|
tip_no_try: "做,或者不做。這邊不存在嘗試的選項。 - Yoda《星際大戰》"
|
||||||
|
@ -510,7 +510,7 @@ module.exports = nativeDescription: "繁體中文", englishDescription: "Chinese
|
||||||
tip_life_and_polymorphism: "開放源碼就像是一個完全多樣異質的結構:海納百川。"#"Open Source is like a totally polymorphic heterogeneous structure: All types are welcome."
|
tip_life_and_polymorphism: "開放源碼就像是一個完全多樣異質的結構:海納百川。"#"Open Source is like a totally polymorphic heterogeneous structure: All types are welcome."
|
||||||
tip_mistakes_proof_of_trying: "程式碼中的錯誤證明了你曾經嘗試過。"#"Mistakes in your code are just proof that you are trying."
|
tip_mistakes_proof_of_trying: "程式碼中的錯誤證明了你曾經嘗試過。"#"Mistakes in your code are just proof that you are trying."
|
||||||
tip_adding_orgres: "包圍敵人!"#"Rounding up ogres."
|
tip_adding_orgres: "包圍敵人!"#"Rounding up ogres."
|
||||||
tip_sharpening_swords: "磨煉造就寶劍。"#"Sharpening the swords."
|
tip_sharpening_swords: "磨利劍鋒。"#"Sharpening the swords."
|
||||||
tip_ratatouille: "你不需要讓任何人以你的出身決定你的極限,你唯一的限制就是你的心靈。廚神Gusteau《料理鼠王》 "#"You must not let anyone define your limits because of where you come from. Your only limit is your soul. - Gusteau, Ratatouille"
|
tip_ratatouille: "你不需要讓任何人以你的出身決定你的極限,你唯一的限制就是你的心靈。廚神Gusteau《料理鼠王》 "#"You must not let anyone define your limits because of where you come from. Your only limit is your soul. - Gusteau, Ratatouille"
|
||||||
tip_nemo: "想知道當生活使你消沉時,你必須做甚麼嗎?一直游,一直游就對了。多莉《海底總動員》"#"When life gets you down, want to know what you've gotta do? Just keep swimming, just keep swimming. - Dory, Finding Nemo"
|
tip_nemo: "想知道當生活使你消沉時,你必須做甚麼嗎?一直游,一直游就對了。多莉《海底總動員》"#"When life gets you down, want to know what you've gotta do? Just keep swimming, just keep swimming. - Dory, Finding Nemo"
|
||||||
tip_internet_weather: "搬來網路世界吧,這裡十分不錯。我們住的地方天氣總是很好。 - John Green"#"Just move to the internet, it's great here. We get to live inside where the weather is always awesome. - John Green"
|
tip_internet_weather: "搬來網路世界吧,這裡十分不錯。我們住的地方天氣總是很好。 - John Green"#"Just move to the internet, it's great here. We get to live inside where the weather is always awesome. - John Green"
|
||||||
|
@ -725,37 +725,37 @@ module.exports = nativeDescription: "繁體中文", englishDescription: "Chinese
|
||||||
editor_config_behaviors_description: "自動填入小括號、大括號以及引號。"
|
editor_config_behaviors_description: "自動填入小括號、大括號以及引號。"
|
||||||
|
|
||||||
about:
|
about:
|
||||||
# main_title: "If you want to learn to program, you need to write (a lot of) code."
|
main_title: "如果您想要學編程,你需要寫(一大堆)程式碼。"#"If you want to learn to program, you need to write (a lot of) code."
|
||||||
# main_description: "At CodeCombat, our job is to make sure you're doing that with a smile on your face."
|
main_description: "在CodeCombat中,我們的職責是確保您笑著玩遊戲。" #"At CodeCombat, our job is to make sure you're doing that with a smile on your face."
|
||||||
# mission_link: "Mission"
|
mission_link: "任務"#"Mission"
|
||||||
# team_link: "Team"
|
team_link: "隊伍"#"Team"
|
||||||
# story_link: "Story"
|
story_link: "故事"#"Story"
|
||||||
# press_link: "Press"
|
press_link: "按"#"Press"
|
||||||
# mission_title: "Our mission: make programming accessible to every student on Earth."
|
mission_title: "我們的任務為:讓世上每個學生都有機會能學會編程。" #"Our mission: make programming accessible to every student on Earth."
|
||||||
# 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>."
|
mission_description_1: "<strong>編程是一種魔法</strong>。它是一種從純粹的想像中創造東西的能力。我們營運CodeCombat來讓學習者可以透過<strong>鍵入程式碼</strong>在指尖感覺到巫師般的力量。" #"<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>."
|
||||||
# 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."
|
mission_description_2: "它的出現也讓使用者學得更快,就像是與它對話而不是閱讀手冊一般。我們想將這種對話帶給每一個學校以及<strong>每一位學生</strong>,因為每個人都應該要有機會體會編程的魔力。 " #"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."
|
||||||
# team_title: "Meet the CodeCombat team"
|
team_title: "認識CodeCombat團隊。"#"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."
|
team_values: "我們重視開放且互相尊重的對話,好的想法才會勝出。我們的抉擇建立於客戶調查上,且過程注重於將具體的結果交給客戶。從我們的CEO到我們的Github貢獻者,每一個人都會動手參與,因為我們傾向在團隊中學習成長。" #" 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: "程式員" # {change}
|
nick_title: "程式員" # {change}
|
||||||
nick_blurb: "亢奮的Guru"
|
nick_blurb: "亢奮的咕嚕"
|
||||||
matt_title: "共同創辦人" # {change}
|
matt_title: "共同創辦人" # {change}
|
||||||
cat_title: "首席開卡設計師" # {change}
|
cat_title: "首席開卡設計師" # {change}
|
||||||
cat_blurb: "氣宗"
|
cat_blurb: "氣宗"
|
||||||
scott_title: "共同創辦人" # {change}
|
scott_title: "共同創辦人" # {change}
|
||||||
scott_blurb: "理性至上"
|
scott_blurb: "理性至上"
|
||||||
# maka_title: "Customer Advocate"
|
maka_title: "客戶代言人" #"Customer Advocate"
|
||||||
maka_blurb: "說書人"
|
maka_blurb: "說書人"
|
||||||
rob_title: "編譯工程師" # {change}
|
rob_title: "編譯工程師" # {change}
|
||||||
rob_blurb: "編寫一些的程式碼"
|
rob_blurb: "編寫一些的程式碼"
|
||||||
josh_c_title: "遊戲設計師"
|
josh_c_title: "遊戲設計師"
|
||||||
josh_c_blurb: "設計遊戲"
|
josh_c_blurb: "設計遊戲"
|
||||||
# robin_title: "UX Design & Research"
|
robin_title: "使用者體驗研究與設計"#"UX Design & Research"
|
||||||
# robin_blurb: "Scaffolding"
|
robin_blurb: "鷹架"#"Scaffolding"
|
||||||
josh_title: "遊戲設計師"
|
josh_title: "遊戲設計師"
|
||||||
josh_blurb: "地面是熔岩"
|
josh_blurb: "地面是熔岩"
|
||||||
# phoenix_title: "Software Engineer"
|
phoenix_title: "軟體工程師"#"Software Engineer"
|
||||||
# nolan_title: "Territory Manager"
|
nolan_title: "區域經理"#"Territory Manager"
|
||||||
# elliot_title: "Partnership Manager"
|
elliot_title: "合作經裡"#"Partnership Manager"
|
||||||
retrostyle_title: "插畫師"
|
retrostyle_title: "插畫師"
|
||||||
retrostyle_blurb: "復古風格的遊戲"
|
retrostyle_blurb: "復古風格的遊戲"
|
||||||
jose_title: "音樂"
|
jose_title: "音樂"
|
||||||
|
@ -1566,41 +1566,41 @@ module.exports = nativeDescription: "繁體中文", englishDescription: "Chinese
|
||||||
|
|
||||||
ladder:
|
ladder:
|
||||||
please_login: "在參與對戰前請先登入。"
|
please_login: "在參與對戰前請先登入。"
|
||||||
my_matches: "我的對手"
|
my_matches: "我的對戰"
|
||||||
simulate: "模擬"
|
simulate: "模擬"
|
||||||
simulation_explanation: "通過模擬遊戲,您可以使您的遊戲更快得到評分!"
|
simulation_explanation: "通過模擬遊戲,您可以使您的遊戲更快得到評定排名!"
|
||||||
simulation_explanation_leagues: "你主要會為你的部落或者課程的同伴幫忙模擬遊戲。"
|
simulation_explanation_leagues: "你主要會為你的部落或者課程的同伴幫忙模擬遊戲。"
|
||||||
simulate_games: "模擬遊戲!"
|
simulate_games: "模擬遊戲!"
|
||||||
games_simulated_by: "您模擬過的次數:"
|
games_simulated_by: "您模擬過的次數:"
|
||||||
games_simulated_for: "替您模擬的次數:"
|
games_simulated_for: "替您模擬的次數:"
|
||||||
games_in_queue: "遊戲正在列隊中:"
|
games_in_queue: "遊戲正在列隊中:"
|
||||||
games_simulated: "遊戲已模擬"
|
games_simulated: "遊戲模擬次數"
|
||||||
games_played: "玩過的遊戲"
|
games_played: "玩過的遊戲"
|
||||||
ratio: "通過率"
|
ratio: "比率"
|
||||||
leaderboard: "排行榜"
|
leaderboard: "排行榜"
|
||||||
battle_as: "我要扮演 "
|
battle_as: "我要扮演 "
|
||||||
summary_your: "您的 "
|
summary_your: "您的 "
|
||||||
summary_matches: "對手 - "
|
summary_matches: "對手 - "
|
||||||
summary_wins: " 勝利,"
|
summary_wins: " 勝利,"
|
||||||
summary_losses: " 失敗"
|
summary_losses: " 失敗"
|
||||||
rank_no_code: "沒有新程式碼可評分"
|
rank_no_code: "沒有新程式碼可評定排名"
|
||||||
rank_my_game: "對我的遊戲評分!"
|
rank_my_game: "對我的遊戲評定排名!"
|
||||||
rank_submitting: "上傳中…"
|
rank_submitting: "上傳中…"
|
||||||
rank_submitted: "已上傳以求評分"
|
rank_submitted: "已上傳以求評定排名"
|
||||||
rank_failed: "評分失敗"
|
rank_failed: "評定失敗"
|
||||||
rank_being_ranked: "已評分"
|
rank_being_ranked: "已評定"
|
||||||
rank_last_submitted: "已上傳 "
|
rank_last_submitted: "已上傳 "
|
||||||
help_simulate: "幫我們模擬遊戲?"
|
help_simulate: "幫我們模擬遊戲?"
|
||||||
code_being_simulated: "您的新程式碼正在被其他人模擬評分中。分數將隨每次新的配對而更新。"
|
code_being_simulated: "您的新程式碼正在被其他人模擬評定中。分數將隨每次新的配對而更新。"
|
||||||
no_ranked_matches_pre: "對這個隊伍尚未有評分過的配對!"
|
no_ranked_matches_pre: "對這個隊伍尚未有評分過的配對!"
|
||||||
no_ranked_matches_post: " 在別人的戰場上扮演對手並且回到這使您的程式碼接受評分。"
|
no_ranked_matches_post: " 在別人的戰場上扮演對手並且回到這使您的程式碼接受評定排名。"
|
||||||
choose_opponent: "選擇對手"
|
choose_opponent: "選擇對手"
|
||||||
select_your_language: "選擇您的語言!"
|
select_your_language: "選擇您的語言!"
|
||||||
tutorial_play: "教學"
|
tutorial_play: "教學"
|
||||||
tutorial_recommended: "如果您尚未玩過,建議先嘗試教學"
|
tutorial_recommended: "如果您尚未玩過,建議先嘗試教學"
|
||||||
tutorial_skip: "略過教學"
|
tutorial_skip: "略過教學"
|
||||||
tutorial_not_sure: "不確定發生啥事?"
|
tutorial_not_sure: "不確定發生啥事?"
|
||||||
tutorial_play_first: "先嘗試教學"
|
tutorial_play_first: "先試試教學"
|
||||||
simple_ai: "簡單人工智慧" # {change}
|
simple_ai: "簡單人工智慧" # {change}
|
||||||
warmup: "熱身"
|
warmup: "熱身"
|
||||||
friends_playing: "與朋友連線"
|
friends_playing: "與朋友連線"
|
||||||
|
@ -1609,7 +1609,7 @@ module.exports = nativeDescription: "繁體中文", englishDescription: "Chinese
|
||||||
invite_friends_to_battle: "邀請您的朋友加入此戰鬥!"
|
invite_friends_to_battle: "邀請您的朋友加入此戰鬥!"
|
||||||
fight: "戰鬥!"
|
fight: "戰鬥!"
|
||||||
watch_victory: "觀看您的勝利"
|
watch_victory: "觀看您的勝利"
|
||||||
defeat_the: "擊敗"
|
defeat_the: "敗於"
|
||||||
watch_battle: "觀看戰役"
|
watch_battle: "觀看戰役"
|
||||||
tournament_started: ",錦標賽已開始"
|
tournament_started: ",錦標賽已開始"
|
||||||
tournament_ends: "錦標賽結束"
|
tournament_ends: "錦標賽結束"
|
||||||
|
|
|
@ -8,7 +8,6 @@ module.exports = class Campaign extends CocoModel
|
||||||
@className: 'Campaign'
|
@className: 'Campaign'
|
||||||
@schema: schema
|
@schema: schema
|
||||||
urlRoot: '/db/campaign'
|
urlRoot: '/db/campaign'
|
||||||
saveBackups: true
|
|
||||||
@denormalizedLevelProperties: _.keys(_.omit(schema.properties.levels.additionalProperties.properties, ['unlocks', 'position', 'rewards']))
|
@denormalizedLevelProperties: _.keys(_.omit(schema.properties.levels.additionalProperties.properties, ['unlocks', 'position', 'rewards']))
|
||||||
@denormalizedCampaignProperties: ['name', 'i18n', 'slug']
|
@denormalizedCampaignProperties: ['name', 'i18n', 'slug']
|
||||||
|
|
||||||
|
|
|
@ -121,3 +121,10 @@ module.exports = class Classroom extends CocoModel
|
||||||
url: _.result(courseInstance, 'url') + '/classroom'
|
url: _.result(courseInstance, 'url') + '/classroom'
|
||||||
})
|
})
|
||||||
@fetch(options)
|
@fetch(options)
|
||||||
|
|
||||||
|
inviteMembers: (emails, options={}) ->
|
||||||
|
options.data ?= {}
|
||||||
|
options.data.emails = emails
|
||||||
|
options.url = @url() + '/invite-members'
|
||||||
|
options.type = 'POST'
|
||||||
|
@fetch(options)
|
||||||
|
|
|
@ -368,6 +368,7 @@ class CocoModel extends Backbone.Model
|
||||||
return if _.isString @url then @url else @url()
|
return if _.isString @url then @url else @url()
|
||||||
|
|
||||||
@pollAchievements: ->
|
@pollAchievements: ->
|
||||||
|
return if application.testing
|
||||||
|
|
||||||
CocoCollection = require 'collections/CocoCollection'
|
CocoCollection = require 'collections/CocoCollection'
|
||||||
EarnedAchievement = require 'models/EarnedAchievement'
|
EarnedAchievement = require 'models/EarnedAchievement'
|
||||||
|
|
|
@ -58,12 +58,14 @@ module.exports = class Level extends CocoModel
|
||||||
|
|
||||||
denormalize: (supermodel, session, otherSession) ->
|
denormalize: (supermodel, session, otherSession) ->
|
||||||
o = $.extend true, {}, @attributes
|
o = $.extend true, {}, @attributes
|
||||||
if o.thangs and @get('type', true) in ['hero', 'hero-ladder', 'hero-coop', 'course', 'course-ladder']
|
if o.thangs and @get('type', true) in ['hero', 'hero-ladder', 'hero-coop', 'course', 'course-ladder', 'game-dev']
|
||||||
|
thangTypesWithComponents = (tt for tt in supermodel.getModels(ThangType) when tt.get('components')?)
|
||||||
|
thangTypesByOriginal = _.indexBy thangTypesWithComponents, (tt) -> tt.get('original') # Optimization
|
||||||
for levelThang in o.thangs
|
for levelThang in o.thangs
|
||||||
@denormalizeThang(levelThang, supermodel, session, otherSession)
|
@denormalizeThang(levelThang, supermodel, session, otherSession, thangTypesByOriginal)
|
||||||
o
|
o
|
||||||
|
|
||||||
denormalizeThang: (levelThang, supermodel, session, otherSession) ->
|
denormalizeThang: (levelThang, supermodel, session, otherSession, thangTypesByOriginal) ->
|
||||||
levelThang.components ?= []
|
levelThang.components ?= []
|
||||||
isHero = /Hero Placeholder/.test(levelThang.id) and @get('type', true) in ['hero', 'hero-ladder', 'hero-coop']
|
isHero = /Hero Placeholder/.test(levelThang.id) and @get('type', true) in ['hero', 'hero-ladder', 'hero-coop']
|
||||||
if isHero and otherSession
|
if isHero and otherSession
|
||||||
|
@ -79,7 +81,7 @@ module.exports = class Level extends CocoModel
|
||||||
if isHero
|
if isHero
|
||||||
placeholders = {}
|
placeholders = {}
|
||||||
placeholdersUsed = {}
|
placeholdersUsed = {}
|
||||||
placeholderThangType = supermodel.getModelByOriginal(ThangType, levelThang.thangType)
|
placeholderThangType = thangTypesByOriginal[levelThang.thangType]
|
||||||
unless placeholderThangType
|
unless placeholderThangType
|
||||||
console.error "Couldn't find placeholder ThangType for the hero!"
|
console.error "Couldn't find placeholder ThangType for the hero!"
|
||||||
isHero = false
|
isHero = false
|
||||||
|
@ -92,7 +94,7 @@ module.exports = class Level extends CocoModel
|
||||||
heroThangType = session?.get('heroConfig')?.thangType
|
heroThangType = session?.get('heroConfig')?.thangType
|
||||||
levelThang.thangType = heroThangType if heroThangType
|
levelThang.thangType = heroThangType if heroThangType
|
||||||
|
|
||||||
thangType = supermodel.getModelByOriginal(ThangType, levelThang.thangType, (m) -> m.get('components')?)
|
thangType = thangTypesByOriginal[levelThang.thangType]
|
||||||
|
|
||||||
configs = {}
|
configs = {}
|
||||||
for thangComponent in levelThang.components
|
for thangComponent in levelThang.components
|
||||||
|
@ -143,6 +145,11 @@ module.exports = class Level extends CocoModel
|
||||||
for original, placeholderComponent of placeholders when not placeholdersUsed[original]
|
for original, placeholderComponent of placeholders when not placeholdersUsed[original]
|
||||||
levelThang.components.push placeholderComponent
|
levelThang.components.push placeholderComponent
|
||||||
|
|
||||||
|
# Load the user's chosen hero AFTER getting stats from default char
|
||||||
|
if /Hero Placeholder/.test(levelThang.id) and @get('type', true) in ['course']
|
||||||
|
heroThangType = me.get('heroConfig')?.thangType
|
||||||
|
levelThang.thangType = heroThangType if heroThangType
|
||||||
|
|
||||||
sortSystems: (levelSystems, systemModels) ->
|
sortSystems: (levelSystems, systemModels) ->
|
||||||
[sorted, originalsSeen] = [[], {}]
|
[sorted, originalsSeen] = [[], {}]
|
||||||
visit = (system) ->
|
visit = (system) ->
|
||||||
|
@ -168,11 +175,16 @@ module.exports = class Level extends CocoModel
|
||||||
# Decision? Just special case the sort logic in here until we have more examples than these two and decide how best to handle most of the cases then, since we don't really know the whole of the problem yet.
|
# Decision? Just special case the sort logic in here until we have more examples than these two and decide how best to handle most of the cases then, since we don't really know the whole of the problem yet.
|
||||||
# TODO: anything that depends on Programmable will break right now.
|
# TODO: anything that depends on Programmable will break right now.
|
||||||
|
|
||||||
|
originalsToComponents = _.indexBy levelComponents, 'original' # Optimization for speed
|
||||||
|
alliedComponent = _.find levelComponents, name: 'Allied'
|
||||||
|
actsComponent = _.find levelComponents, name: 'Acts'
|
||||||
|
|
||||||
for thang in thangs ? []
|
for thang in thangs ? []
|
||||||
|
originalsToThangComponents = _.indexBy thang.components, 'original'
|
||||||
sorted = []
|
sorted = []
|
||||||
visit = (c, namesToIgnore) ->
|
visit = (c, namesToIgnore) ->
|
||||||
return if c in sorted
|
return if c in sorted
|
||||||
lc = _.find levelComponents, {original: c.original}
|
lc = originalsToComponents[c.original]
|
||||||
console.error thang.id or thang.name, 'couldn\'t find lc for', c, 'of', levelComponents unless lc
|
console.error thang.id or thang.name, 'couldn\'t find lc for', c, 'of', levelComponents unless lc
|
||||||
return unless lc
|
return unless lc
|
||||||
return if namesToIgnore and lc.name in namesToIgnore
|
return if namesToIgnore and lc.name in namesToIgnore
|
||||||
|
@ -184,20 +196,18 @@ module.exports = class Level extends CocoModel
|
||||||
visit c2, [lc.name] for c2 in thang.components
|
visit c2, [lc.name] for c2 in thang.components
|
||||||
else
|
else
|
||||||
for d in lc.dependencies or []
|
for d in lc.dependencies or []
|
||||||
c2 = _.find thang.components, {original: d.original}
|
c2 = originalsToThangComponents[d.original]
|
||||||
unless c2
|
unless c2
|
||||||
dependent = _.find levelComponents, {original: d.original}
|
dependent = originalsToComponents[d.original]
|
||||||
dependent = dependent?.name or d.original
|
dependent = dependent?.name or d.original
|
||||||
console.error parentType, thang.id or thang.name, 'does not have dependent Component', dependent, 'from', lc.name
|
console.error parentType, thang.id or thang.name, 'does not have dependent Component', dependent, 'from', lc.name
|
||||||
visit c2 if c2
|
visit c2 if c2
|
||||||
if lc.name is 'Collides'
|
if lc.name is 'Collides' and alliedComponent
|
||||||
if allied = _.find levelComponents, {name: 'Allied'}
|
if allied = originalsToThangComponents[alliedComponent.original]
|
||||||
allied = _.find(thang.components, {original: allied.original})
|
visit allied
|
||||||
visit allied if allied
|
if lc.name is 'Moves' and actsComponent
|
||||||
if lc.name is 'Moves'
|
if acts = originalsToThangComponents[actsComponent.original]
|
||||||
if acts = _.find levelComponents, {name: 'Acts'}
|
visit acts
|
||||||
acts = _.find(thang.components, {original: acts.original})
|
|
||||||
visit acts if acts
|
|
||||||
#console.log thang.id, 'sorted comps adding', lc.name
|
#console.log thang.id, 'sorted comps adding', lc.name
|
||||||
sorted.push c
|
sorted.push c
|
||||||
for comp in thang.components
|
for comp in thang.components
|
||||||
|
@ -258,3 +268,14 @@ module.exports = class Level extends CocoModel
|
||||||
else
|
else
|
||||||
options.url = "/db/course/#{courseID}/levels/#{levelOriginalID}/next"
|
options.url = "/db/course/#{courseID}/levels/#{levelOriginalID}/next"
|
||||||
@fetch(options)
|
@fetch(options)
|
||||||
|
|
||||||
|
getSolutions: ->
|
||||||
|
return [] unless hero = _.find (@get("thangs") ? []), id: 'Hero Placeholder'
|
||||||
|
return [] unless config = _.find(hero.components ? [], (x) -> x.config?.programmableMethods?.plan)?.config
|
||||||
|
solutions = _.cloneDeep config.programmableMethods.plan.solutions ? []
|
||||||
|
for solution in solutions
|
||||||
|
try
|
||||||
|
solution.source = _.template(solution.source)(config?.programmableMethods?.plan.context)
|
||||||
|
catch e
|
||||||
|
console.error "Problem with template and solution comments for", @get('slug'), e
|
||||||
|
solutions
|
||||||
|
|
|
@ -16,12 +16,12 @@ module.exports = class ThangType extends CocoModel
|
||||||
samurai: '53e12be0d042f23505c3023b'
|
samurai: '53e12be0d042f23505c3023b'
|
||||||
raider: '55527eb0b8abf4ba1fe9a107'
|
raider: '55527eb0b8abf4ba1fe9a107'
|
||||||
goliath: '55e1a6e876cb0948c96af9f8'
|
goliath: '55e1a6e876cb0948c96af9f8'
|
||||||
guardian: ''
|
guardian: '566a058620de41290036a745'
|
||||||
ninja: '52fc0ed77e01835453bd8f6c'
|
ninja: '52fc0ed77e01835453bd8f6c'
|
||||||
'forest-archer': '5466d4f2417c8b48a9811e87'
|
'forest-archer': '5466d4f2417c8b48a9811e87'
|
||||||
trapper: '5466d449417c8b48a9811e83'
|
trapper: '5466d449417c8b48a9811e83'
|
||||||
pixie: ''
|
pixie: ''
|
||||||
assassin: ''
|
assassin: '566a2202e132c81f00f38c81'
|
||||||
librarian: '52fbf74b7e01835453bd8d8e'
|
librarian: '52fbf74b7e01835453bd8d8e'
|
||||||
'potion-master': '52e9adf7427172ae56002172'
|
'potion-master': '52e9adf7427172ae56002172'
|
||||||
sorcerer: '52fd1524c7e6cf99160e7bc9'
|
sorcerer: '52fd1524c7e6cf99160e7bc9'
|
||||||
|
@ -239,6 +239,27 @@ module.exports = class ThangType extends CocoModel
|
||||||
portraitOnly = !!options.portraitOnly
|
portraitOnly = !!options.portraitOnly
|
||||||
"#{@get('name')} - #{options.resolutionFactor} - #{colorConfigs} - #{portraitOnly}"
|
"#{@get('name')} - #{options.resolutionFactor} - #{colorConfigs} - #{portraitOnly}"
|
||||||
|
|
||||||
|
getHeroShortName: ->
|
||||||
|
map = {
|
||||||
|
"Assassin": "Ritic"
|
||||||
|
"Captain": "Anya"
|
||||||
|
"Forest Archer": "Naria"
|
||||||
|
"Goliath": "Okar"
|
||||||
|
"Guardian": "Illia"
|
||||||
|
"Knight": "Tharin"
|
||||||
|
"Librarian": "Hushbaum"
|
||||||
|
"Necromancer": "Nalfar"
|
||||||
|
"Ninja": "Amara"
|
||||||
|
"Potion Master": "Omarn"
|
||||||
|
"Raider": "Arryn"
|
||||||
|
"Samurai": "Hattori"
|
||||||
|
"Sorcerer": "Pender"
|
||||||
|
"Trapper": "Senick"
|
||||||
|
"Champion": "Ida"
|
||||||
|
"Duelist": "Alejandro"
|
||||||
|
}
|
||||||
|
map[@get('name')]
|
||||||
|
|
||||||
getPortraitImage: (spriteOptionsOrKey, size=100) ->
|
getPortraitImage: (spriteOptionsOrKey, size=100) ->
|
||||||
src = @getPortraitSource(spriteOptionsOrKey, size)
|
src = @getPortraitSource(spriteOptionsOrKey, size)
|
||||||
return null unless src
|
return null unless src
|
||||||
|
|
|
@ -25,7 +25,7 @@ module.exports = class User extends CocoModel
|
||||||
return name if name
|
return name if name
|
||||||
[emailName, emailDomain] = @get('email')?.split('@') or []
|
[emailName, emailDomain] = @get('email')?.split('@') or []
|
||||||
return emailName if emailName
|
return emailName if emailName
|
||||||
return 'Anoner'
|
return 'Anonymous'
|
||||||
|
|
||||||
getPhotoURL: (size=80, useJobProfilePhoto=false, useEmployerPageAvatar=false) ->
|
getPhotoURL: (size=80, useJobProfilePhoto=false, useEmployerPageAvatar=false) ->
|
||||||
photoURL = if useJobProfilePhoto then @get('jobProfile')?.photoURL else null
|
photoURL = if useJobProfilePhoto then @get('jobProfile')?.photoURL else null
|
||||||
|
@ -165,21 +165,6 @@ module.exports = class User extends CocoModel
|
||||||
application.tracker.identify campaignAdsGroup: @campaignAdsGroup unless me.isAdmin()
|
application.tracker.identify campaignAdsGroup: @campaignAdsGroup unless me.isAdmin()
|
||||||
@campaignAdsGroup
|
@campaignAdsGroup
|
||||||
|
|
||||||
getHomepageGroup: ->
|
|
||||||
# Only testing on en-US so localization issues are not a factor
|
|
||||||
return 'home-legacy' unless _.string.startsWith(me.get('preferredLanguage', true) or 'en-US', 'en')
|
|
||||||
return @homepageGroup if @homepageGroup
|
|
||||||
group = parseInt(util.getQueryVariable('variation'))
|
|
||||||
group ?= me.get('testGroupNumber') % 5
|
|
||||||
@homepageGroup = switch group
|
|
||||||
when 0 then 'home-legacy'
|
|
||||||
when 1 then 'home-teachers'
|
|
||||||
when 2 then 'home-legacy-left'
|
|
||||||
when 3 then 'home-dropdowns'
|
|
||||||
when 4 then 'home-play-for-free'
|
|
||||||
application.tracker.identify homepageGroup: @homepageGroup unless me.isAdmin()
|
|
||||||
return @homepageGroup
|
|
||||||
|
|
||||||
# Signs and Portents was receiving updates after test started, and also had a big bug on March 4, so just look at test from March 5 on.
|
# Signs and Portents was receiving updates after test started, and also had a big bug on March 4, so just look at test from March 5 on.
|
||||||
# ... and stopped working well until another update on March 10, so maybe March 11+...
|
# ... and stopped working well until another update on March 10, so maybe March 11+...
|
||||||
# ... and another round, and then basically it just isn't completing well, so we pause the test until we can fix it.
|
# ... and another round, and then basically it just isn't completing well, so we pause the test until we can fix it.
|
||||||
|
@ -194,6 +179,18 @@ module.exports = class User extends CocoModel
|
||||||
application.tracker.identify fourthLevelGroup: @fourthLevelGroup unless me.isAdmin()
|
application.tracker.identify fourthLevelGroup: @fourthLevelGroup unless me.isAdmin()
|
||||||
@fourthLevelGroup
|
@fourthLevelGroup
|
||||||
|
|
||||||
|
getHintsGroup: ->
|
||||||
|
# A/B testing two styles of hints
|
||||||
|
return @hintsGroup if @hintsGroup
|
||||||
|
group = me.get('testGroupNumber') % 3
|
||||||
|
@hintsGroup = switch group
|
||||||
|
when 0 then 'no-hints'
|
||||||
|
when 1 then 'hints'
|
||||||
|
when 2 then 'hintsB'
|
||||||
|
@hintsGroup = 'hints' if me.isAdmin()
|
||||||
|
application.tracker.identify hintsGroup: @hintsGroup unless me.isAdmin()
|
||||||
|
@hintsGroup
|
||||||
|
|
||||||
getVideoTutorialStylesIndex: (numVideos=0)->
|
getVideoTutorialStylesIndex: (numVideos=0)->
|
||||||
# A/B Testing video tutorial styles
|
# A/B Testing video tutorial styles
|
||||||
# Not a constant number of videos available (e.g. could be 0, 1, 3, or 4 currently)
|
# Not a constant number of videos available (e.g. could be 0, 1, 3, or 4 currently)
|
||||||
|
@ -290,6 +287,13 @@ module.exports = class User extends CocoModel
|
||||||
options.data.facebookAccessToken = application.facebookHandler.token()
|
options.data.facebookAccessToken = application.facebookHandler.token()
|
||||||
@fetch(options)
|
@fetch(options)
|
||||||
|
|
||||||
|
loginPasswordUser: (usernameOrEmail, password, options={}) ->
|
||||||
|
options.url = '/auth/login'
|
||||||
|
options.type = 'POST'
|
||||||
|
options.data ?= {}
|
||||||
|
_.extend(options.data, { username: usernameOrEmail, password })
|
||||||
|
@fetch(options)
|
||||||
|
|
||||||
makeCoursePrepaid: ->
|
makeCoursePrepaid: ->
|
||||||
coursePrepaid = @get('coursePrepaid')
|
coursePrepaid = @get('coursePrepaid')
|
||||||
return null unless coursePrepaid
|
return null unless coursePrepaid
|
||||||
|
|
|
@ -61,7 +61,7 @@ _.extend CampaignSchema.properties, {
|
||||||
i18n: { type: 'object', format: 'hidden' }
|
i18n: { type: 'object', format: 'hidden' }
|
||||||
requiresSubscription: { type: 'boolean' }
|
requiresSubscription: { type: 'boolean' }
|
||||||
replayable: { type: 'boolean' }
|
replayable: { type: 'boolean' }
|
||||||
type: {'enum': ['ladder', 'ladder-tutorial', 'hero', 'hero-ladder', 'hero-coop', 'course', 'course-ladder']}
|
type: {'enum': ['ladder', 'ladder-tutorial', 'hero', 'hero-ladder', 'hero-coop', 'course', 'course-ladder', 'game-dev']}
|
||||||
slug: { type: 'string', format: 'hidden' }
|
slug: { type: 'string', format: 'hidden' }
|
||||||
original: { type: 'string', format: 'hidden' }
|
original: { type: 'string', format: 'hidden' }
|
||||||
adventurer: { type: 'boolean' }
|
adventurer: { type: 'boolean' }
|
||||||
|
|
|
@ -276,9 +276,23 @@ c.extendNamedProperties LevelSchema # let's have the name be the first property
|
||||||
_.extend LevelSchema.properties,
|
_.extend LevelSchema.properties,
|
||||||
description: {title: 'Description', description: 'A short explanation of what this level is about.', type: 'string', maxLength: 65536, format: 'markdown'}
|
description: {title: 'Description', description: 'A short explanation of what this level is about.', type: 'string', maxLength: 65536, format: 'markdown'}
|
||||||
loadingTip: { type: 'string', title: 'Loading Tip', description: 'What to show for this level while it\'s loading.' }
|
loadingTip: { type: 'string', title: 'Loading Tip', description: 'What to show for this level while it\'s loading.' }
|
||||||
documentation: c.object {title: 'Documentation', description: 'Documentation articles relating to this level.', required: ['specificArticles', 'generalArticles'], 'default': {specificArticles: [], generalArticles: []}},
|
documentation: c.object {title: 'Documentation', description: 'Documentation articles relating to this level.', 'default': {specificArticles: [], generalArticles: []}},
|
||||||
specificArticles: c.array {title: 'Specific Articles', description: 'Specific documentation articles that live only in this level.', uniqueItems: true }, SpecificArticleSchema
|
specificArticles: c.array {title: 'Specific Articles', description: 'Specific documentation articles that live only in this level.', uniqueItems: true }, SpecificArticleSchema
|
||||||
generalArticles: c.array {title: 'General Articles', description: 'General documentation articles that can be linked from multiple levels.', uniqueItems: true}, GeneralArticleSchema
|
generalArticles: c.array {title: 'General Articles', description: 'General documentation articles that can be linked from multiple levels.', uniqueItems: true}, GeneralArticleSchema
|
||||||
|
hints: c.array {title: 'Hints', description: 'Tips and tricks to help unstick a player for the level.', uniqueItems: true }, {
|
||||||
|
type: 'object'
|
||||||
|
properties: {
|
||||||
|
body: {type: 'string', title: 'Content', description: 'The body content of the article, in Markdown.', format: 'markdown'}
|
||||||
|
i18n: {type: 'object', format: 'i18n', props: ['body'], description: 'Help translate this hint'}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
hintsB: c.array {title: 'HintsB', description: '2nd style of hints for a/b testing significant variations', uniqueItems: true }, {
|
||||||
|
type: 'object'
|
||||||
|
properties: {
|
||||||
|
body: {type: 'string', title: 'Content', description: 'The body content of the article, in Markdown.', format: 'markdown'}
|
||||||
|
i18n: {type: 'object', format: 'i18n', props: ['body'], description: 'Help translate this hint'}
|
||||||
|
}
|
||||||
|
}
|
||||||
background: c.objectId({format: 'hidden'})
|
background: c.objectId({format: 'hidden'})
|
||||||
nextLevel: {
|
nextLevel: {
|
||||||
type: 'object',
|
type: 'object',
|
||||||
|
@ -299,7 +313,7 @@ _.extend LevelSchema.properties,
|
||||||
icon: {type: 'string', format: 'image-file', title: 'Icon'}
|
icon: {type: 'string', format: 'image-file', title: 'Icon'}
|
||||||
banner: {type: 'string', format: 'image-file', title: 'Banner'}
|
banner: {type: 'string', format: 'image-file', title: 'Banner'}
|
||||||
goals: c.array {title: 'Goals', description: 'An array of goals which are visible to the player and can trigger scripts.'}, GoalSchema
|
goals: c.array {title: 'Goals', description: 'An array of goals which are visible to the player and can trigger scripts.'}, GoalSchema
|
||||||
type: c.shortString(title: 'Type', description: 'What kind of level this is.', 'enum': ['campaign', 'ladder', 'ladder-tutorial', 'hero', 'hero-ladder', 'hero-coop', 'course', 'course-ladder'])
|
type: c.shortString(title: 'Type', description: 'What kind of level this is.', 'enum': ['campaign', 'ladder', 'ladder-tutorial', 'hero', 'hero-ladder', 'hero-coop', 'course', 'course-ladder', 'game-dev'])
|
||||||
terrain: c.terrainString
|
terrain: c.terrainString
|
||||||
showsGuide: c.shortString(title: 'Shows Guide', description: 'If the guide is shown at the beginning of the level.', 'enum': ['first-time', 'always'])
|
showsGuide: c.shortString(title: 'Shows Guide', description: 'If the guide is shown at the beginning of the level.', 'enum': ['first-time', 'always'])
|
||||||
requiresSubscription: {title: 'Requires Subscription', description: 'Whether this level is available to subscribers only.', type: 'boolean'}
|
requiresSubscription: {title: 'Requires Subscription', description: 'Whether this level is available to subscribers only.', type: 'boolean'}
|
||||||
|
|
|
@ -10,7 +10,7 @@ class AttacksSelf extends Component
|
||||||
systems = [
|
systems = [
|
||||||
'action', 'ai', 'alliance', 'collision', 'combat', 'display', 'event', 'existence', 'hearing',
|
'action', 'ai', 'alliance', 'collision', 'combat', 'display', 'event', 'existence', 'hearing',
|
||||||
'inventory', 'movement', 'programming', 'targeting', 'ui', 'vision', 'misc', 'physics', 'effect',
|
'inventory', 'movement', 'programming', 'targeting', 'ui', 'vision', 'misc', 'physics', 'effect',
|
||||||
'magic'
|
'magic', 'game'
|
||||||
]
|
]
|
||||||
|
|
||||||
PropertyDocumentationSchema = c.object {
|
PropertyDocumentationSchema = c.object {
|
||||||
|
|
|
@ -18,21 +18,6 @@ class Jitter extends System
|
||||||
return hash
|
return hash
|
||||||
"""
|
"""
|
||||||
|
|
||||||
PropertyDocumentationSchema = c.object {
|
|
||||||
title: 'Property Documentation'
|
|
||||||
description: 'Documentation entry for a property this System will add to its Thang which other Systems might want to also use.'
|
|
||||||
default:
|
|
||||||
name: 'foo'
|
|
||||||
type: 'object'
|
|
||||||
description: 'This System provides a "foo" property to satisfy all one\'s foobar needs. Use it wisely.'
|
|
||||||
required: ['name', 'type', 'description']
|
|
||||||
},
|
|
||||||
name: {type: 'string', pattern: c.identifierPattern, title: 'Name', description: 'Name of the property.'}
|
|
||||||
# not actual JS types, just whatever they describe...
|
|
||||||
type: c.shortString(title: 'Type', description: 'Intended type of the property.')
|
|
||||||
description: {type: 'string', description: 'Description of the property.', maxLength: 1000}
|
|
||||||
args: c.array {title: 'Arguments', description: 'If this property has type "function", then provide documentation for any function arguments.'}, c.FunctionArgumentSchema
|
|
||||||
|
|
||||||
DependencySchema = c.object {
|
DependencySchema = c.object {
|
||||||
title: 'System Dependency'
|
title: 'System Dependency'
|
||||||
description: 'A System upon which this System depends.'
|
description: 'A System upon which this System depends.'
|
||||||
|
@ -50,14 +35,14 @@ DependencySchema = c.object {
|
||||||
LevelSystemSchema = c.object {
|
LevelSystemSchema = c.object {
|
||||||
title: 'System'
|
title: 'System'
|
||||||
description: 'A System which can affect Level behavior.'
|
description: 'A System which can affect Level behavior.'
|
||||||
required: ['name', 'description', 'code', 'dependencies', 'propertyDocumentation', 'codeLanguage']
|
required: ['name', 'code']
|
||||||
default:
|
default:
|
||||||
name: 'JitterSystem'
|
name: 'JitterSystem'
|
||||||
description: 'This System makes all idle, movable Thangs jitter around.'
|
description: 'This System makes all idle, movable Thangs jitter around.'
|
||||||
code: jitterSystemCode
|
code: jitterSystemCode
|
||||||
codeLanguage: 'coffeescript'
|
codeLanguage: 'coffeescript'
|
||||||
dependencies: [] # TODO: should depend on something by default
|
dependencies: [] # TODO: should depend on something by default
|
||||||
propertyDocumentation: []
|
configSchema: {}
|
||||||
}
|
}
|
||||||
c.extendNamedProperties LevelSystemSchema # let's have the name be the first property
|
c.extendNamedProperties LevelSystemSchema # let's have the name be the first property
|
||||||
LevelSystemSchema.properties.name.pattern = c.classNamePattern
|
LevelSystemSchema.properties.name.pattern = c.classNamePattern
|
||||||
|
@ -83,7 +68,6 @@ _.extend LevelSystemSchema.properties,
|
||||||
type: 'string'
|
type: 'string'
|
||||||
format: 'hidden'
|
format: 'hidden'
|
||||||
dependencies: c.array {title: 'Dependencies', description: 'An array of Systems upon which this System depends.', uniqueItems: true}, DependencySchema
|
dependencies: c.array {title: 'Dependencies', description: 'An array of Systems upon which this System depends.', uniqueItems: true}, DependencySchema
|
||||||
propertyDocumentation: c.array {title: 'Property Documentation', description: 'An array of documentation entries for each notable property this System will add to its Level which other Systems might want to also use.'}, PropertyDocumentationSchema
|
|
||||||
configSchema: _.extend metaschema, {title: 'Configuration Schema', description: 'A schema for validating the arguments that can be passed to this System as configuration.', default: {type: 'object', additionalProperties: false}}
|
configSchema: _.extend metaschema, {title: 'Configuration Schema', description: 'A schema for validating the arguments that can be passed to this System as configuration.', default: {type: 'object', additionalProperties: false}}
|
||||||
official:
|
official:
|
||||||
type: 'boolean'
|
type: 'boolean'
|
||||||
|
|
|
@ -6,7 +6,7 @@ UserSchema = c.object
|
||||||
default:
|
default:
|
||||||
visa: 'Authorized to work in the US'
|
visa: 'Authorized to work in the US'
|
||||||
music: true
|
music: true
|
||||||
name: 'Anoner'
|
name: 'Anonymous'
|
||||||
autocastDelay: 5000
|
autocastDelay: 5000
|
||||||
emails: {}
|
emails: {}
|
||||||
permissions: []
|
permissions: []
|
||||||
|
@ -121,7 +121,7 @@ _.extend UserSchema.properties,
|
||||||
|
|
||||||
aceConfig: c.object { default: { language: 'python', keyBindings: 'default', invisibles: false, indentGuides: false, behaviors: false, liveCompletion: true }},
|
aceConfig: c.object { default: { language: 'python', keyBindings: 'default', invisibles: false, indentGuides: false, behaviors: false, liveCompletion: true }},
|
||||||
language: {type: 'string', 'enum': ['python', 'javascript', 'coffeescript', 'clojure', 'lua', 'java', 'io']}
|
language: {type: 'string', 'enum': ['python', 'javascript', 'coffeescript', 'clojure', 'lua', 'java', 'io']}
|
||||||
keyBindings: {type: 'string', 'enum': ['default', 'vim', 'emacs']}
|
keyBindings: {type: 'string', 'enum': ['default', 'vim', 'emacs']} # Deprecated 2016-05-30; now we just always give them 'default'.
|
||||||
invisibles: {type: 'boolean' }
|
invisibles: {type: 'boolean' }
|
||||||
indentGuides: {type: 'boolean' }
|
indentGuides: {type: 'boolean' }
|
||||||
behaviors: {type: 'boolean' }
|
behaviors: {type: 'boolean' }
|
||||||
|
|
|
@ -41,3 +41,22 @@
|
||||||
#join-class-form
|
#join-class-form
|
||||||
.alert, .progress
|
.alert, .progress
|
||||||
margin-top: 20px
|
margin-top: 20px
|
||||||
|
|
||||||
|
// Hero display
|
||||||
|
.current-hero-container
|
||||||
|
display: flex
|
||||||
|
justify-content: center
|
||||||
|
|
||||||
|
.current-hero-text
|
||||||
|
font-size: 16pt
|
||||||
|
|
||||||
|
.hero-avatar
|
||||||
|
background-color: #f8f8f8
|
||||||
|
box-shadow: 0 0 0 1px gray
|
||||||
|
margin-right: 25px
|
||||||
|
|
||||||
|
.current-hero-right-col
|
||||||
|
display: flex
|
||||||
|
flex-direction: column
|
||||||
|
justify-content: space-between
|
||||||
|
align-items: flex-start
|
||||||
|
|
40
app/styles/courses/hero-select-modal.sass
Normal file
40
app/styles/courses/hero-select-modal.sass
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
@import "app/styles/style-flat-variables"
|
||||||
|
|
||||||
|
#hero-select-modal
|
||||||
|
.modal-dialog
|
||||||
|
width: auto
|
||||||
|
max-width: 900px
|
||||||
|
|
||||||
|
.modal-header, .modal-body:not(.secret), .modal-footer
|
||||||
|
display: flex
|
||||||
|
flex-direction: column
|
||||||
|
align-items: center
|
||||||
|
|
||||||
|
.modal-footer
|
||||||
|
margin: 30px
|
||||||
|
|
||||||
|
h4
|
||||||
|
max-width: 500px
|
||||||
|
|
||||||
|
.hero-list
|
||||||
|
display: flex
|
||||||
|
flex-wrap: wrap
|
||||||
|
justify-content: center
|
||||||
|
margin-bottom: -50px
|
||||||
|
|
||||||
|
.hero-option
|
||||||
|
display: flex
|
||||||
|
flex-direction: column
|
||||||
|
align-items: center
|
||||||
|
margin: 0 50px 50px
|
||||||
|
|
||||||
|
.hero-avatar
|
||||||
|
margin: 6px
|
||||||
|
background-color: #f8f8f8
|
||||||
|
box-shadow: 0 0 0 1px gray
|
||||||
|
|
||||||
|
.current .hero-avatar
|
||||||
|
box-shadow: 0 0 0 6px gray
|
||||||
|
|
||||||
|
.selected .hero-avatar
|
||||||
|
box-shadow: 0 0 0 6px $gold
|
|
@ -1,19 +0,0 @@
|
||||||
#hour-of-code-view
|
|
||||||
|
|
||||||
hr
|
|
||||||
border-top: 1px solid grey
|
|
||||||
margin: 30px 20px
|
|
||||||
|
|
||||||
#site-content-area
|
|
||||||
padding: 20px 300px
|
|
||||||
|
|
||||||
h1
|
|
||||||
margin-bottom: 40px
|
|
||||||
p
|
|
||||||
margin: 20px
|
|
||||||
|
|
||||||
h3
|
|
||||||
margin-top: 50px
|
|
||||||
|
|
||||||
ul
|
|
||||||
margin-bottom: 50px
|
|
|
@ -1,7 +0,0 @@
|
||||||
#student-log-in-modal
|
|
||||||
#log-in-btn
|
|
||||||
min-width: 30%
|
|
||||||
margin-bottom: 10px
|
|
||||||
|
|
||||||
.form
|
|
||||||
margin: 0 25%
|
|
|
@ -1,10 +0,0 @@
|
||||||
#student-sign-up-modal
|
|
||||||
#sign-up-btn
|
|
||||||
min-width: 30%
|
|
||||||
margin-bottom: 10px
|
|
||||||
|
|
||||||
.form
|
|
||||||
margin: 0 25%
|
|
||||||
|
|
||||||
.modal-dialog
|
|
||||||
margin-top: 0
|
|
|
@ -105,6 +105,12 @@
|
||||||
td
|
td
|
||||||
height: 66px
|
height: 66px
|
||||||
|
|
||||||
|
.select-all
|
||||||
|
padding-top: 5px
|
||||||
|
|
||||||
|
.checkbox-flat
|
||||||
|
margin-top: 3px
|
||||||
|
|
||||||
.enroll-student-button
|
.enroll-student-button
|
||||||
margin-left: 33%
|
margin-left: 33%
|
||||||
margin-left: calc((100% - 120px - 36px) * 0.6)
|
margin-left: calc((100% - 120px - 36px) * 0.6)
|
||||||
|
|
21
app/styles/editor/verifier/verifier-view.sass
Normal file
21
app/styles/editor/verifier/verifier-view.sass
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
#verifier-view
|
||||||
|
.verifier-row
|
||||||
|
margin-top: 20px
|
||||||
|
|
||||||
|
.alert
|
||||||
|
padding: 5px
|
||||||
|
|
||||||
|
.campaign-mix, .code-language-mix
|
||||||
|
padding: 5px 20px 5px 5px
|
||||||
|
|
||||||
|
input
|
||||||
|
margin-right: 8px
|
||||||
|
|
||||||
|
.test-running
|
||||||
|
color: orange
|
||||||
|
|
||||||
|
.test-success
|
||||||
|
color: green
|
||||||
|
|
||||||
|
.test-failed
|
||||||
|
color: red
|
|
@ -143,7 +143,7 @@
|
||||||
|
|
||||||
//- Primary auth button
|
//- Primary auth button
|
||||||
|
|
||||||
#login-button
|
#login-btn
|
||||||
position: absolute
|
position: absolute
|
||||||
top: 186px
|
top: 186px
|
||||||
height: 70px
|
height: 70px
|
||||||
|
|
|
@ -204,6 +204,7 @@ $gameControlMargin: 30px
|
||||||
|
|
||||||
.tooltip
|
.tooltip
|
||||||
z-index: 2
|
z-index: 2
|
||||||
|
pointer-events: none
|
||||||
|
|
||||||
.tooltip-arrow
|
.tooltip-arrow
|
||||||
display: none
|
display: none
|
||||||
|
|
41
app/styles/play/level/hints-view.sass
Normal file
41
app/styles/play/level/hints-view.sass
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
@import "app/styles/mixins"
|
||||||
|
|
||||||
|
.hints-view
|
||||||
|
position: relative
|
||||||
|
|
||||||
|
width: 500px // TODO: should be in sync with surface min-width
|
||||||
|
padding: 10px 20px
|
||||||
|
border-style: solid
|
||||||
|
border-image: url(/images/level/popover_border_background.png) 16 12 fill round
|
||||||
|
border-width: 16px 12px
|
||||||
|
@include box-shadow(0 0 0 #000)
|
||||||
|
|
||||||
|
.close-hint-btn
|
||||||
|
position: absolute
|
||||||
|
right: 5px
|
||||||
|
top: 5px
|
||||||
|
|
||||||
|
.glyphicon-remove
|
||||||
|
position: relative
|
||||||
|
top: 4px
|
||||||
|
|
||||||
|
h1
|
||||||
|
margin-bottom: 30px
|
||||||
|
|
||||||
|
.btn-area
|
||||||
|
margin-top: 20px
|
||||||
|
|
||||||
|
.hint-title
|
||||||
|
font-size: 18px
|
||||||
|
text-transform: uppercase
|
||||||
|
|
||||||
|
.hint-body
|
||||||
|
height: 390px
|
||||||
|
overflow-y: auto
|
||||||
|
img
|
||||||
|
width: 100%
|
||||||
|
|
||||||
|
.hint-pagination
|
||||||
|
font-size: 18px
|
||||||
|
margin-top: 0px
|
||||||
|
text-transform: uppercase
|
|
@ -157,7 +157,7 @@ $UNVEIL_TIME: 1.2s
|
||||||
font-variant: small-caps
|
font-variant: small-caps
|
||||||
text-transform: none
|
text-transform: none
|
||||||
|
|
||||||
.subscription-required, .course-membership-required
|
.subscription-required, .course-membership-required, .could-not-load
|
||||||
display: none
|
display: none
|
||||||
margin-top: -160px
|
margin-top: -160px
|
||||||
color: black
|
color: black
|
||||||
|
|
|
@ -78,9 +78,6 @@
|
||||||
@include flex-column()
|
@include flex-column()
|
||||||
@include flex-align-content-start()
|
@include flex-align-content-start()
|
||||||
|
|
||||||
&.no-help
|
|
||||||
margin-top: 3%
|
|
||||||
|
|
||||||
.property-entry-item-group
|
.property-entry-item-group
|
||||||
display: inline-block
|
display: inline-block
|
||||||
min-height: 38px
|
min-height: 38px
|
|
@ -29,7 +29,7 @@
|
||||||
|
|
||||||
span.code-background
|
span.code-background
|
||||||
border-width: 124px 76px 64px 40px
|
border-width: 124px 76px 64px 40px
|
||||||
border-image: url(/images/level/code_editor_background_border.png) 124 76 64 40 fill round
|
border-image: url(/images/level/code_editor_background_border.png) 124 76 64 40 fill stretch
|
||||||
|
|
||||||
img.code-background
|
img.code-background
|
||||||
display: none
|
display: none
|
||||||
|
|
|
@ -85,27 +85,18 @@
|
||||||
.glyphicon-fullscreen
|
.glyphicon-fullscreen
|
||||||
display: none
|
display: none
|
||||||
|
|
||||||
|
.hints-button
|
||||||
|
float: right
|
||||||
|
border-style: solid
|
||||||
|
border-image: url(/images/common/button-background-primary-active.png) 14 20 20 20 fill round
|
||||||
|
border-width: 7px 10px 10px 10px
|
||||||
|
color: white
|
||||||
|
&:hover, &:active
|
||||||
|
border-image: url(/images/common/button-background-primary-pressed.png) 14 20 20 20 fill round
|
||||||
|
|
||||||
.thang-avatar-wrapper
|
.thang-avatar-wrapper
|
||||||
border-width: 0
|
border-width: 0
|
||||||
|
|
||||||
.method-name-area
|
|
||||||
margin-left: 10px
|
|
||||||
margin-top: 10px
|
|
||||||
text-transform: uppercase
|
|
||||||
display: inline-block
|
|
||||||
font-family: $headings-font-family
|
|
||||||
font-weight: bold
|
|
||||||
|
|
||||||
.method-label
|
|
||||||
font-size: 12px
|
|
||||||
color: rgb(243, 211, 59)
|
|
||||||
margin-bottom: -5px
|
|
||||||
|
|
||||||
.method-signature
|
|
||||||
color: white
|
|
||||||
font-size: 18px
|
|
||||||
padding: 0
|
|
||||||
|
|
||||||
.spell-list-entry-view:not(.spell-tab)
|
.spell-list-entry-view:not(.spell-tab)
|
||||||
cursor: pointer
|
cursor: pointer
|
||||||
@include opacity(0.90)
|
@include opacity(0.90)
|
||||||
|
|
|
@ -265,6 +265,13 @@ $level-resize-transition-time: 0.5s
|
||||||
height: 90px
|
height: 90px
|
||||||
text-align: center
|
text-align: center
|
||||||
|
|
||||||
|
.hints-view
|
||||||
|
position: absolute
|
||||||
|
top: 10px
|
||||||
|
bottom: 10px
|
||||||
|
right: 45%
|
||||||
|
z-index: 1000000
|
||||||
|
|
||||||
html.fullscreen-editor
|
html.fullscreen-editor
|
||||||
#level-view
|
#level-view
|
||||||
#fullscreen-editor-background-screen
|
#fullscreen-editor-background-screen
|
|
@ -444,7 +444,7 @@ body[lang='ru'], body[lang='uk'], body[lang='bg'], body[lang^='mk'], body[lang='
|
||||||
#footer
|
#footer
|
||||||
background-image: url("/images/pages/home/footer_background.png")
|
background-image: url("/images/pages/home/footer_background.png")
|
||||||
height: 229px
|
height: 229px
|
||||||
margin: -22px auto 0
|
margin: 65px auto 0
|
||||||
color: white
|
color: white
|
||||||
|
|
||||||
@media (max-width: $screen-sm-min)
|
@media (max-width: $screen-sm-min)
|
||||||
|
|
|
@ -7,3 +7,7 @@
|
||||||
font-family: Arial, Geneva, sans-serif
|
font-family: Arial, Geneva, sans-serif
|
||||||
padding: 20px
|
padding: 20px
|
||||||
font-weight: bold
|
font-weight: bold
|
||||||
|
|
||||||
|
.alert-report
|
||||||
|
font-size: 20px
|
||||||
|
|
|
@ -139,6 +139,13 @@ block content
|
||||||
small(data-i18n="about.elliot_title")
|
small(data-i18n="about.elliot_title")
|
||||||
br
|
br
|
||||||
|
|
||||||
|
li
|
||||||
|
img(src="/images/pages/about/lisa_small.png").img-thumbnail
|
||||||
|
.team-bio
|
||||||
|
h6.label.team-name Lisa Wu
|
||||||
|
small Marketing Development Rep
|
||||||
|
br
|
||||||
|
|
||||||
// Part time / contract
|
// Part time / contract
|
||||||
li
|
li
|
||||||
a(href="http://floor.is/lava/" rel="external")
|
a(href="http://floor.is/lava/" rel="external")
|
||||||
|
|
|
@ -18,7 +18,7 @@ mixin accountLinks
|
||||||
.style-flat
|
.style-flat
|
||||||
block header
|
block header
|
||||||
nav#main-nav.navbar.navbar-default
|
nav#main-nav.navbar.navbar-default
|
||||||
.container-fluid
|
.container-fluid.container
|
||||||
.row
|
.row
|
||||||
.col-lg-12
|
.col-lg-12
|
||||||
.navbar-header
|
.navbar-header
|
||||||
|
@ -81,8 +81,6 @@ mixin accountLinks
|
||||||
p If this is showing, you dun goofed
|
p If this is showing, you dun goofed
|
||||||
|
|
||||||
block footer
|
block footer
|
||||||
#character-lineup.text-center.m-t-3
|
|
||||||
img(src="/images/pages/home/character_lineup.png")
|
|
||||||
.container-fluid
|
.container-fluid
|
||||||
#footer.small
|
#footer.small
|
||||||
.container
|
.container
|
||||||
|
|
|
@ -123,7 +123,7 @@ block content
|
||||||
if memberLanguageMap && memberLanguageMap[member.id]
|
if memberLanguageMap && memberLanguageMap[member.id]
|
||||||
span.code-language-cell(style="background-image: url(/images/common/code_languages/#{memberLanguageMap[member.id]}_small.png)", title=memberLanguageMap[member.id])
|
span.code-language-cell(style="background-image: url(/images/common/code_languages/#{memberLanguageMap[member.id]}_small.png)", title=memberLanguageMap[member.id])
|
||||||
div
|
div
|
||||||
a(href="/user/#{member.id}")= member.get('name') || 'Anoner'
|
a(href="/user/#{member.id}")= member.get('name') || 'Anonymous'
|
||||||
div Level #{member.level()}
|
div Level #{member.level()}
|
||||||
if isOwner && member.id !== clan.get('ownerID')
|
if isOwner && member.id !== clan.get('ownerID')
|
||||||
button.btn.btn-xs.btn-warning.remove-member-btn(data-id="#{member.id}", data-i18n="clans.rem_hero") Remove Hero
|
button.btn.btn-xs.btn-warning.remove-member-btn(data-id="#{member.id}", data-i18n="clans.rem_hero") Remove Hero
|
||||||
|
@ -220,7 +220,7 @@ block content
|
||||||
if memberLanguageMap && memberLanguageMap[member.id]
|
if memberLanguageMap && memberLanguageMap[member.id]
|
||||||
span.code-language-cell(style="background-image: url(/images/common/code_languages/#{memberLanguageMap[member.id]}_small.png)", title=memberLanguageMap[member.id])
|
span.code-language-cell(style="background-image: url(/images/common/code_languages/#{memberLanguageMap[member.id]}_small.png)", title=memberLanguageMap[member.id])
|
||||||
td.name-cell
|
td.name-cell
|
||||||
a(href="/user/#{member.id}")= member.get('name') || 'Anoner'
|
a(href="/user/#{member.id}")= member.get('name') || 'Anonymous'
|
||||||
td.level-cell= member.level()
|
td.level-cell= member.level()
|
||||||
td.achievements-cell
|
td.achievements-cell
|
||||||
if memberAchievementsMap && memberAchievementsMap[member.id]
|
if memberAchievementsMap && memberAchievementsMap[member.id]
|
||||||
|
|
|
@ -45,7 +45,7 @@ block content
|
||||||
if view.idNameMap && view.idNameMap[clan.get('ownerID')]
|
if view.idNameMap && view.idNameMap[clan.get('ownerID')]
|
||||||
a(href="/user/#{clan.get('ownerID')}")= view.idNameMap[clan.get('ownerID')]
|
a(href="/user/#{clan.get('ownerID')}")= view.idNameMap[clan.get('ownerID')]
|
||||||
else
|
else
|
||||||
a(href="/user/#{clan.get('ownerID')}") Anoner
|
a(href="/user/#{clan.get('ownerID')}") Anonymous
|
||||||
td
|
td
|
||||||
if view.myClanIDs.indexOf(clan.id) < 0
|
if view.myClanIDs.indexOf(clan.id) < 0
|
||||||
button.btn.btn-success.join-clan-btn(data-id="#{clan.id}", data-i18n="clans.join_clan") Join Clan
|
button.btn.btn-success.join-clan-btn(data-id="#{clan.id}", data-i18n="clans.join_clan") Join Clan
|
||||||
|
@ -75,7 +75,7 @@ block content
|
||||||
if view.idNameMap && view.idNameMap[clan.get('ownerID')]
|
if view.idNameMap && view.idNameMap[clan.get('ownerID')]
|
||||||
a(href="/user/#{clan.get('ownerID')}")= view.idNameMap[clan.get('ownerID')]
|
a(href="/user/#{clan.get('ownerID')}")= view.idNameMap[clan.get('ownerID')]
|
||||||
else
|
else
|
||||||
a(href="/user/#{clan.get('ownerID')}") Anoner
|
a(href="/user/#{clan.get('ownerID')}") Anonymous
|
||||||
td= clan.get('type')
|
td= clan.get('type')
|
||||||
td
|
td
|
||||||
if clan.get('ownerID') !== me.id
|
if clan.get('ownerID') !== me.id
|
||||||
|
|
|
@ -3,11 +3,11 @@ extends /templates/base
|
||||||
// User pages might have some user page specific header, if not remove this
|
// User pages might have some user page specific header, if not remove this
|
||||||
block content
|
block content
|
||||||
.clearfix
|
.clearfix
|
||||||
if user && viewName
|
if view.userData && view.viewName
|
||||||
ol.breadcrumb
|
ol.breadcrumb
|
||||||
li
|
li
|
||||||
a(href="/user/#{user.getSlugOrID()}") #{user.displayName()}
|
a(href="/user/#{view.userData.getSlugOrID()}") #{view.userData.displayName()}
|
||||||
li.active
|
li.active
|
||||||
| #{viewName}
|
| #{view.viewName}
|
||||||
if !user || user.loading
|
if !view.userData || view.userData.loading
|
||||||
| LOADING
|
| LOADING
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
.row
|
.row
|
||||||
|
if contributors
|
||||||
for contributor in contributors
|
for contributor in contributors
|
||||||
.col-xs-6.col-md-3
|
.col-xs-6.col-md-3
|
||||||
.thumbnail
|
.thumbnail
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
img(src="/images/pages/modal/auth/login-background.png", draggable="false").auth-modal-background
|
img(src="/images/pages/modal/auth/login-background.png", draggable="false").auth-modal-background
|
||||||
h1(data-i18n="login.log_in")
|
h1(data-i18n="login.log_in")
|
||||||
|
|
||||||
div#close-modal
|
#close-modal
|
||||||
span.glyphicon.glyphicon-remove
|
span.glyphicon.glyphicon-remove
|
||||||
|
|
||||||
.auth-form-content
|
.auth-form-content
|
||||||
|
@ -12,23 +12,39 @@
|
||||||
.alert.alert-success
|
.alert.alert-success
|
||||||
span(data-i18n="signup.required")
|
span(data-i18n="signup.required")
|
||||||
|
|
||||||
|
#unknown-error-alert.alert.alert-danger.hide(data-i18n="loading_error.unknown")
|
||||||
|
|
||||||
form.form
|
form.form
|
||||||
.form-group
|
.form-group
|
||||||
label.control-label(for="email")
|
label.control-label(for="username-or-email-input")
|
||||||
span(data-i18n="general.email")
|
span(data-i18n="login.email_or_username")
|
||||||
| :
|
| :
|
||||||
.input-border
|
.input-border
|
||||||
input#email.input-large.form-control(name="email", type="email", value=formValues.email)
|
input#username-or-email-input.input-large.form-control(
|
||||||
|
name="emailOrUsername"
|
||||||
|
value=view.previousFormInputs.email
|
||||||
|
)
|
||||||
.form-group
|
.form-group
|
||||||
div#recover-account-wrapper
|
#recover-account-wrapper
|
||||||
a(data-toggle="coco-modal", data-target="core/RecoverModal", data-i18n="login.forgot_password")#link-to-recover
|
a#link-to-recover(
|
||||||
|
data-toggle="coco-modal"
|
||||||
|
data-target="core/RecoverModal"
|
||||||
|
data-i18n="login.forgot_password"
|
||||||
|
)
|
||||||
label.control-label(for="password")
|
label.control-label(for="password")
|
||||||
span(data-i18n="general.password")
|
span(data-i18n="general.password")
|
||||||
| :
|
| :
|
||||||
.input-border
|
.input-border
|
||||||
input#password.input-large.form-control(name="password", type="password", value=formValues.password)
|
input#password-input.input-large.form-control(
|
||||||
|
name="password"
|
||||||
|
type="password"
|
||||||
|
value=view.previousFormInputs.password
|
||||||
|
)
|
||||||
|
|
||||||
input.btn.btn-lg.btn-illustrated.btn-block.btn-success#login-button(value=translate("login.log_in"), type="submit")
|
input#login-btn.btn.btn-lg.btn-illustrated.btn-block.btn-success(
|
||||||
|
value=translate("login.log_in")
|
||||||
|
type="submit"
|
||||||
|
)
|
||||||
|
|
||||||
.wait.secret
|
.wait.secret
|
||||||
h3(data-i18n="login.logging_in")
|
h3(data-i18n="login.logging_in")
|
||||||
|
@ -39,10 +55,10 @@
|
||||||
// btn.btn.btn-sm.github-login-button#github-login-button
|
// btn.btn.btn-sm.github-login-button#github-login-button
|
||||||
// img(src="/images/pages/modal/auth/github_icon.png")
|
// img(src="/images/pages/modal/auth/github_icon.png")
|
||||||
// | GitHub
|
// | GitHub
|
||||||
#facebook-login-btn.btn.btn-primary.btn-lg.btn-illustrated.network-login
|
button#facebook-login-btn.btn.btn-primary.btn-lg.btn-illustrated.network-login(disabled=true)
|
||||||
img.network-logo(src="/images/pages/community/logo_facebook.png", draggable="false")
|
img.network-logo(src="/images/pages/community/logo_facebook.png", draggable="false")
|
||||||
span.sign-in-blurb(data-i18n="login.sign_in_with_facebook")
|
span.sign-in-blurb(data-i18n="login.sign_in_with_facebook")
|
||||||
#gplus-login-btn.btn.btn-danger.btn-lg.btn-illustrated.network-login
|
button#gplus-login-btn.btn.btn-danger.btn-lg.btn-illustrated.network-login(disabled=true)
|
||||||
img.network-logo(src="/images/pages/community/logo_g+.png", draggable="false")
|
img.network-logo(src="/images/pages/community/logo_g+.png", draggable="false")
|
||||||
span.sign-in-blurb(data-i18n="login.sign_in_with_gplus")
|
span.sign-in-blurb(data-i18n="login.sign_in_with_gplus")
|
||||||
.gplus-login-wrapper
|
.gplus-login-wrapper
|
|
@ -33,10 +33,10 @@
|
||||||
.col-md-6
|
.col-md-6
|
||||||
.auth-network-logins.text-center
|
.auth-network-logins.text-center
|
||||||
strong(data-i18n="signup.or_sign_up_with")
|
strong(data-i18n="signup.or_sign_up_with")
|
||||||
#facebook-signup-btn.btn.btn-primary.btn-lg.btn-illustrated.network-login
|
button#facebook-signup-btn.btn.btn-primary.btn-lg.btn-illustrated.network-login(disabled=true)
|
||||||
img.network-logo(src="/images/pages/community/logo_facebook.png", draggable="false")
|
img.network-logo(src="/images/pages/community/logo_facebook.png", draggable="false")
|
||||||
span.sign-in-blurb(data-i18n="login.sign_in_with_facebook")
|
span.sign-in-blurb(data-i18n="login.sign_in_with_facebook")
|
||||||
#gplus-signup-btn.btn.btn-danger.btn-lg.btn-illustrated.network-login
|
button#gplus-signup-btn.btn.btn-danger.btn-lg.btn-illustrated.network-login(disabled=true)
|
||||||
img.network-logo(src="/images/pages/community/logo_g+.png", draggable="false")
|
img.network-logo(src="/images/pages/community/logo_g+.png", draggable="false")
|
||||||
span.sign-in-blurb(data-i18n="login.sign_in_with_gplus")
|
span.sign-in-blurb(data-i18n="login.sign_in_with_gplus")
|
||||||
.gplus-login-wrapper
|
.gplus-login-wrapper
|
||||||
|
|
|
@ -2,7 +2,7 @@ extends /templates/base
|
||||||
|
|
||||||
block content
|
block content
|
||||||
|
|
||||||
if !me.isAnonymous() && (me.isTeacher() || view.ownedClassrooms.size())
|
if !me.isAnonymous() && me.isTeacher()
|
||||||
.alert.alert-danger.text-center
|
.alert.alert-danger.text-center
|
||||||
// DNT: Temporary
|
// DNT: Temporary
|
||||||
h3 ATTENTION TEACHERS:
|
h3 ATTENTION TEACHERS:
|
||||||
|
|
|
@ -2,7 +2,7 @@ extends /templates/base
|
||||||
|
|
||||||
block content
|
block content
|
||||||
|
|
||||||
if me.isTeacher() || view.ownedClassrooms.size()
|
if me.isTeacher()
|
||||||
.alert.alert-danger.text-center
|
.alert.alert-danger.text-center
|
||||||
// DNT: Temporary
|
// DNT: Temporary
|
||||||
h3 ATTENTION TEACHERS:
|
h3 ATTENTION TEACHERS:
|
||||||
|
|
|
@ -4,7 +4,7 @@ block content
|
||||||
.container
|
.container
|
||||||
.row.m-y-3
|
.row.m-y-3
|
||||||
.col-xs-12
|
.col-xs-12
|
||||||
if me.isTeacher() || view.ownedClassrooms.size()
|
if me.isTeacher()
|
||||||
.alert.alert-danger.text-center
|
.alert.alert-danger.text-center
|
||||||
// DNT: Temporary
|
// DNT: Temporary
|
||||||
h3 ATTENTION TEACHERS:
|
h3 ATTENTION TEACHERS:
|
||||||
|
@ -40,6 +40,18 @@ block content
|
||||||
.text-center
|
.text-center
|
||||||
h1(data-i18n="courses.welcome_to_page") Welcome to your Courses page!
|
h1(data-i18n="courses.welcome_to_page") Welcome to your Courses page!
|
||||||
|
|
||||||
|
.current-hero-container.text-center.row
|
||||||
|
.hero-avatar
|
||||||
|
img(src=view.hero.getPortraitURL())
|
||||||
|
.current-hero-right-col
|
||||||
|
.semibold.current-hero-text
|
||||||
|
span.spr(data-i18n="TODO")
|
||||||
|
| Current Hero:
|
||||||
|
span.current-hero-name= view.hero.getHeroShortName()
|
||||||
|
button.change-hero-btn.btn.btn-lg.btn-forest
|
||||||
|
span(data-i18n="TODO")
|
||||||
|
| Change Hero
|
||||||
|
|
||||||
if view.classrooms.size()
|
if view.classrooms.size()
|
||||||
h3.text-uppercase(data-i18n="courses.my_classes")
|
h3.text-uppercase(data-i18n="courses.my_classes")
|
||||||
hr
|
hr
|
||||||
|
@ -55,7 +67,7 @@ block content
|
||||||
h5
|
h5
|
||||||
span.spr= classroom.get('name')
|
span.spr= classroom.get('name')
|
||||||
span.spr (#{(classroom.get('aceConfig') || {}).language === 'javascript' ? 'JavaScript' : 'Python'})
|
span.spr (#{(classroom.get('aceConfig') || {}).language === 'javascript' ? 'JavaScript' : 'Python'})
|
||||||
a(href="/courses/"+classroom.id, data-i18n="courses.view_class")
|
a.view-class-btn(data-classroom-id=classroom.id, data-i18n="courses.view_class")
|
||||||
|
|
||||||
- var courseInstances = view.courseInstances.where({classroomID: classroom.id});
|
- var courseInstances = view.courseInstances.where({classroomID: classroom.id});
|
||||||
for courseInstance in courseInstances
|
for courseInstance in courseInstances
|
||||||
|
@ -65,7 +77,7 @@ block content
|
||||||
h6
|
h6
|
||||||
span.spr= course.get('name')
|
span.spr= course.get('name')
|
||||||
small
|
small
|
||||||
a(href="/courses/"+courseInstance.get('courseID')+'/'+courseInstance.id, data-i18n="courses.view_levels")
|
a.view-levels-btn(data-course-id=courseInstance.get('courseID'), data-courseinstance-id=courseInstance.id, data-i18n="courses.view_levels")
|
||||||
+course-instance-body(courseInstance, classroom)
|
+course-instance-body(courseInstance, classroom)
|
||||||
.clearfix
|
.clearfix
|
||||||
|
|
||||||
|
@ -100,19 +112,19 @@ mixin course-instance-body(courseInstance, classroom)
|
||||||
- var arenaLevel = stats.levels.arena;
|
- var arenaLevel = stats.levels.arena;
|
||||||
if arenaLevel
|
if arenaLevel
|
||||||
- var arenaURL = "/play/ladder/"+arenaLevel.get('slug')+"/course/"+courseInstance.id;
|
- var arenaURL = "/play/ladder/"+arenaLevel.get('slug')+"/course/"+courseInstance.id;
|
||||||
a.btn.btn-burgandy.btn-lg.m-b-1(href=arenaURL)
|
a.play-btn.btn.btn-burgandy.btn-lg.m-b-1(data-href=arenaURL, data-level-slug=arenaLevel.get('slug'), data-event-action="Students Play Arena")
|
||||||
span(data-i18n="courses.play_arena")
|
span(data-i18n="courses.play_arena")
|
||||||
else
|
else
|
||||||
a.btn.btn-default.btn-lg.m-b-1(disabled=true, data-i18n="courses.course_complete")
|
a.btn.btn-default.btn-lg.m-b-1(disabled=true, data-i18n="courses.course_complete")
|
||||||
else if stats.levels.next != stats.levels.first
|
else if stats.levels.next != stats.levels.first
|
||||||
- var next = stats.levels.next;
|
- var next = stats.levels.next;
|
||||||
- var levelURL = "/play/level/"+next.get('slug')+"?course="+courseInstance.get('courseID')+"&course-instance="+courseInstance.id;
|
- var levelURL = "/play/level/"+next.get('slug')+"?course="+courseInstance.get('courseID')+"&course-instance="+courseInstance.id;
|
||||||
a.btn.btn-forest.btn-lg.m-b-1(href=levelURL)
|
a.play-btn.btn.btn-forest.btn-lg.m-b-1(data-href=levelURL, data-level-slug=next.get('slug'), data-event-action="Students Continue Course")
|
||||||
span(data-i18n="common.continue")
|
span(data-i18n="common.continue")
|
||||||
else
|
else
|
||||||
- var firstLevel = stats.levels.first;
|
- var firstLevel = stats.levels.first;
|
||||||
- var levelURL = "/play/level/"+firstLevel.get('slug')+"?course="+courseInstance.get('courseID')+"&course-instance="+courseInstance.id;
|
- var levelURL = "/play/level/"+firstLevel.get('slug')+"?course="+courseInstance.get('courseID')+"&course-instance="+courseInstance.id;
|
||||||
a.btn.btn-navy.btn-lg.m-b-1(href=levelURL)
|
a.play-btn.btn.btn-navy.btn-lg.m-b-1(data-href=levelURL, data-level-slug=firstLevel.get('slug'), data-event-action="Students Start Course")
|
||||||
span(data-i18n="courses.start")
|
span(data-i18n="courses.start")
|
||||||
|
|
||||||
div
|
div
|
||||||
|
|
|
@ -5,6 +5,7 @@ block page_nav
|
||||||
|
|
||||||
block content
|
block content
|
||||||
if me.isAnonymous() || (!me.isTeacher() && !view.classrooms.size())
|
if me.isAnonymous() || (!me.isTeacher() && !view.classrooms.size())
|
||||||
|
.container
|
||||||
.access-restricted.container.text-center.m-y-3
|
.access-restricted.container.text-center.m-y-3
|
||||||
h5(data-i18n='teacher.access_restricted')
|
h5(data-i18n='teacher.access_restricted')
|
||||||
p(data-i18n='teacher.teacher_account_required')
|
p(data-i18n='teacher.teacher_account_required')
|
||||||
|
@ -15,6 +16,7 @@ block content
|
||||||
a.btn.btn-lg.btn-primary(href="/teachers/update-account" data-i18n="teachers_quote.convert_account_title")
|
a.btn.btn-lg.btn-primary(href="/teachers/update-account" data-i18n="teachers_quote.convert_account_title")
|
||||||
button#logout-button.btn.btn-lg.btn-primary-alt(data-i18n="login.log_out")
|
button#logout-button.btn.btn-lg.btn-primary-alt(data-i18n="login.log_out")
|
||||||
|
|
||||||
|
.container
|
||||||
.teacher-account-blurb.text-center.col-xs-6.col-xs-offset-3.m-y-3
|
.teacher-account-blurb.text-center.col-xs-6.col-xs-offset-3.m-y-3
|
||||||
h5(data-i18n='teacher.what_is_a_teacher_account')
|
h5(data-i18n='teacher.what_is_a_teacher_account')
|
||||||
p(data-i18n='teacher.teacher_account_explanation')
|
p(data-i18n='teacher.teacher_account_explanation')
|
||||||
|
|
27
app/templates/courses/hero-select-modal.jade
Normal file
27
app/templates/courses/hero-select-modal.jade
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
extends /templates/core/modal-base-flat
|
||||||
|
|
||||||
|
block modal-header-content
|
||||||
|
.text-center
|
||||||
|
h3(data-i18n="courses.select_your_hero")
|
||||||
|
h4(data-i18n="courses.select_your_hero_description")
|
||||||
|
|
||||||
|
block modal-body-content
|
||||||
|
.hero-list
|
||||||
|
if view.heroes.loaded
|
||||||
|
each hero in view.heroes.models
|
||||||
|
if hero.get('heroClass') === 'Warrior'
|
||||||
|
+heroOption(hero)
|
||||||
|
|
||||||
|
mixin heroOption(hero)
|
||||||
|
- var heroID = hero.id
|
||||||
|
- var selectedState = (state.get('selectedHeroID') === heroID ? 'selected' : (state.get('currentHeroID') === heroID ? 'current' : ''))
|
||||||
|
.hero-option(data-hero-id=heroID class=selectedState)
|
||||||
|
.hero-avatar
|
||||||
|
img(src=hero.getPortraitURL())
|
||||||
|
.text-h5.hero-name
|
||||||
|
span= hero.getHeroShortName()
|
||||||
|
|
||||||
|
block modal-footer-content
|
||||||
|
.select-hero-btn.btn.btn-lg.btn-forest
|
||||||
|
span(data-i18n="courses.select_this_hero")
|
||||||
|
|
|
@ -1,74 +0,0 @@
|
||||||
extends /templates/base
|
|
||||||
|
|
||||||
block content
|
|
||||||
.pull-right
|
|
||||||
if me.isAnonymous()
|
|
||||||
a(href="/teachers")
|
|
||||||
span(data-i18n="courses.teachers_click")
|
|
||||||
span !
|
|
||||||
else
|
|
||||||
a(href="/teachers/classes")
|
|
||||||
span(data-i18n="courses.teachers_click")
|
|
||||||
span !
|
|
||||||
br
|
|
||||||
|
|
||||||
h1.text-center(data-i18n="courses.welcome_to_hoc")
|
|
||||||
|
|
||||||
#main-content
|
|
||||||
.well.text-center
|
|
||||||
if !me.isAnonymous()
|
|
||||||
p
|
|
||||||
strong.spr(data-i18n="courses.logged_in_as")
|
|
||||||
strong= me.get('name') || me.get('email')
|
|
||||||
|
|
||||||
p
|
|
||||||
span.spr(data-i18n="courses.not_you")
|
|
||||||
a#log-out-link(data-i18n="login.logout")
|
|
||||||
|
|
||||||
hr
|
|
||||||
|
|
||||||
if !view.lastLevel
|
|
||||||
p
|
|
||||||
strong(data-i18n="courses.ready_to_play")
|
|
||||||
|
|
||||||
p
|
|
||||||
button#start-new-game-btn.btn.btn-success.btn-lg(data-i18n="courses.start_new_game")
|
|
||||||
else
|
|
||||||
|
|
||||||
p
|
|
||||||
strong(data-i18n="courses.welcome_back")
|
|
||||||
p
|
|
||||||
button#continue-playing-btn.btn.btn-success.btn-lg(data-i18n="courses.continue_playing")
|
|
||||||
p
|
|
||||||
em.spr
|
|
||||||
span(data-i18n="clans.last_played")
|
|
||||||
span.spr :
|
|
||||||
span= view.lastLevel.get('name').replace('Course :', '')
|
|
||||||
|
|
||||||
if me.isAnonymous()
|
|
||||||
p
|
|
||||||
strong(data-i18n="courses.more_options")
|
|
||||||
p
|
|
||||||
button#start-new-game-btn.btn.btn-default.btn-lg(data-i18n="courses.start_new_game")
|
|
||||||
|
|
||||||
if me.isAnonymous()
|
|
||||||
p
|
|
||||||
span.spr -
|
|
||||||
span.text-uppercase(data-i18n="general.or")
|
|
||||||
span.spl -
|
|
||||||
|
|
||||||
p
|
|
||||||
button#log-in-btn.btn.btn-default.btn-lg(data-i18n="login.log_in")
|
|
||||||
|
|
||||||
#begin-hoc-area.hide
|
|
||||||
h2.text-center(data-i18n="common.loading")
|
|
||||||
.progress.progress-striped.active
|
|
||||||
.progress-bar(style="width: 100%")
|
|
||||||
|
|
||||||
|
|
||||||
h3.text-center.text-uppercase(data-i18n="courses.play_now_learn_header")
|
|
||||||
ul
|
|
||||||
li(data-i18n="courses.play_now_learn_1")
|
|
||||||
li(data-i18n="courses.play_now_learn_2")
|
|
||||||
li(data-i18n="courses.play_now_learn_3")
|
|
||||||
li(data-i18n="courses.play_now_learn_4")
|
|
|
@ -4,6 +4,7 @@ block modal-header-content
|
||||||
.text-center
|
.text-center
|
||||||
h1.modal-title(data-i18n="courses.remove_student1")
|
h1.modal-title(data-i18n="courses.remove_student1")
|
||||||
span.glyphicon.glyphicon-warning-sign.text-danger
|
span.glyphicon.glyphicon-warning-sign.text-danger
|
||||||
|
p= view.user.get('name', true) + ' - ' + view.user.get('email')
|
||||||
h2(data-i18n="courses.are_you_sure")
|
h2(data-i18n="courses.are_you_sure")
|
||||||
|
|
||||||
block modal-body-content
|
block modal-body-content
|
||||||
|
|
|
@ -3,10 +3,21 @@ extends /templates/base-flat
|
||||||
block content
|
block content
|
||||||
.access-restricted.container.text-center.m-y-3
|
.access-restricted.container.text-center.m-y-3
|
||||||
h5(data-i18n='teacher.access_restricted')
|
h5(data-i18n='teacher.access_restricted')
|
||||||
|
if me.isTeacher()
|
||||||
p(data-i18n='courses.teacher_account_restricted')
|
p(data-i18n='courses.teacher_account_restricted')
|
||||||
a.btn.btn-lg.btn-primary(href="/teachers/classes" data-i18n="new_home.goto_classes")
|
a.btn.btn-lg.btn-primary(href="/teachers/classes" data-i18n="new_home.goto_classes")
|
||||||
button#logout-button.btn.btn-lg.btn-primary-alt(data-i18n="login.log_out")
|
button#logout-button.btn.btn-lg.btn-primary-alt(data-i18n="login.log_out")
|
||||||
|
else
|
||||||
|
p(data-i18n='courses.account_restricted')
|
||||||
|
if me.isAnonymous()
|
||||||
|
.login-button.btn.btn-lg.btn-primary(data-i18n='login.log_in')
|
||||||
|
.signup-button.btn.btn-lg.btn-primary-alt(data-i18n="login.sign_up")
|
||||||
|
else
|
||||||
|
a.btn.btn-lg.btn-primary(href="/courses/update-account" data-i18n="courses.update_account_update_student")
|
||||||
|
button#logout-button.btn.btn-lg.btn-primary-alt(data-i18n="login.log_out")
|
||||||
|
|
||||||
|
if me.isTeacher()
|
||||||
|
.container
|
||||||
.teacher-account-blurb.text-center.col-xs-6.col-xs-offset-3.m-y-3
|
.teacher-account-blurb.text-center.col-xs-6.col-xs-offset-3.m-y-3
|
||||||
h5(data-i18n='teacher.what_is_a_teacher_account')
|
h5(data-i18n='teacher.what_is_a_teacher_account')
|
||||||
p(data-i18n='teacher.teacher_account_explanation')
|
p(data-i18n='teacher.teacher_account_explanation')
|
|
@ -1,30 +0,0 @@
|
||||||
extends /templates/core/modal-base
|
|
||||||
|
|
||||||
block modal-header-content
|
|
||||||
.clearfix
|
|
||||||
|
|
||||||
|
|
||||||
block modal-body-content
|
|
||||||
.text-center
|
|
||||||
h2.modal-title(data-i18n="login.log_in")
|
|
||||||
|
|
||||||
form.form
|
|
||||||
.form-group
|
|
||||||
label.control-label(for="email")
|
|
||||||
span(data-i18n="general.email")
|
|
||||||
input#email.input-large.form-control(name="email", type="email")
|
|
||||||
.form-group
|
|
||||||
label.control-label(for="password")
|
|
||||||
span(data-i18n="general.password")
|
|
||||||
input#password.input-large.form-control(name="password", type="password")
|
|
||||||
|
|
||||||
#errors-alert.alert.alert-danger.hide
|
|
||||||
|
|
||||||
.text-center
|
|
||||||
input#log-in-btn.btn.btn-default(data-i18n="[value]login.log_in", type="submit")
|
|
||||||
p
|
|
||||||
a#create-new-account-link(data-i18n="login.signup_switch")
|
|
||||||
p
|
|
||||||
a(data-toggle="coco-modal", data-target="core/RecoverModal", data-i18n="login.forgot_password")
|
|
||||||
|
|
||||||
block modal-footer-content
|
|
|
@ -1,46 +0,0 @@
|
||||||
extends /templates/core/modal-base
|
|
||||||
|
|
||||||
block modal-header-content
|
|
||||||
.clearfix
|
|
||||||
|
|
||||||
|
|
||||||
block modal-body-content
|
|
||||||
.text-center
|
|
||||||
h2.modal-title(data-i18n="signup.sign_up")
|
|
||||||
|
|
||||||
form.form
|
|
||||||
.form-group
|
|
||||||
label.control-label(for="email")
|
|
||||||
span(data-i18n="general.email")
|
|
||||||
input#email.input-large.form-control(name="email", type="email")
|
|
||||||
.help-block(data-i18n="courses.use_school_email")
|
|
||||||
.form-group
|
|
||||||
label.control-label(for="name")
|
|
||||||
span(data-i18n="general.name")
|
|
||||||
if me.get('name')
|
|
||||||
input#name.input-large.form-control(name="name", type="text", value="#{me.get('name')}")
|
|
||||||
else
|
|
||||||
input#name.input-large.form-control(name="name", type="text", value="", placeholder="e.g. Alex W the Skater")
|
|
||||||
.help-block(data-i18n="courses.unique_name")
|
|
||||||
.form-group
|
|
||||||
label.control-label(for="password")
|
|
||||||
span(data-i18n="general.password")
|
|
||||||
input#password.input-large.form-control(name="password", type="password")
|
|
||||||
.help-block(data-i18n="courses.pick_something")
|
|
||||||
.form-group
|
|
||||||
label.control-label(for="class-code-input")
|
|
||||||
span(data-i18n="courses.class_code")
|
|
||||||
input#class-code-input.input-large.form-control(name="classCode", value=view.classCode)
|
|
||||||
.help-block(data-i18n="courses.optional_ask")
|
|
||||||
.form-group
|
|
||||||
label.control-label(for="school-input")
|
|
||||||
span(data-i18n="signup.school_name")
|
|
||||||
input#school-input.input-large.form-control(name="schoolName", data-i18n="[placeholder]signup.school_name_placeholder")
|
|
||||||
.help-block(data-i18n="courses.optional_school")
|
|
||||||
|
|
||||||
#errors-alert.alert.alert-danger.hide
|
|
||||||
|
|
||||||
.text-center
|
|
||||||
input#sign-up-btn.btn.btn-default(data-i18n="[value]signup.sign_up", type="submit")
|
|
||||||
|
|
||||||
block modal-footer-content
|
|
|
@ -108,6 +108,7 @@ block content
|
||||||
+copyCodes
|
+copyCodes
|
||||||
+addStudentsButton
|
+addStudentsButton
|
||||||
|
|
||||||
|
if view.students.length > 0
|
||||||
ul.nav.nav-tabs.m-t-5(role='tablist')
|
ul.nav.nav-tabs.m-t-5(role='tablist')
|
||||||
- var activeTab = state.get('activeTab');
|
- var activeTab = state.get('activeTab');
|
||||||
li(class=(activeTab === "#students-tab" ? 'active' : ''))
|
li(class=(activeTab === "#students-tab" ? 'active' : ''))
|
||||||
|
@ -131,6 +132,13 @@ block content
|
||||||
else
|
else
|
||||||
+enrollmentStatusTab
|
+enrollmentStatusTab
|
||||||
|
|
||||||
|
else
|
||||||
|
.text-center.m-t-5.m-b-5
|
||||||
|
.text-h2
|
||||||
|
span(data-i18n="teacher.no_students_yet")
|
||||||
|
.text-h4
|
||||||
|
span(data-i18n="teacher.try_refreshing")
|
||||||
|
|
||||||
mixin breadcrumbs
|
mixin breadcrumbs
|
||||||
.breadcrumbs
|
.breadcrumbs
|
||||||
a(data-i18n='teacher.my_classes' href='/teachers/classes')
|
a(data-i18n='teacher.my_classes' href='/teachers/classes')
|
||||||
|
@ -171,8 +179,8 @@ mixin studentsTab
|
||||||
+bulkAssignControls
|
+bulkAssignControls
|
||||||
table.students-table
|
table.students-table
|
||||||
thead
|
thead
|
||||||
th.checkbox-col.select-all
|
th.checkbox-col.select-all.small.text-center
|
||||||
span Select All
|
span(data-i18n="teacher.select_all")
|
||||||
.checkbox-flat
|
.checkbox-flat
|
||||||
input(type='checkbox' id='checkbox-all-students')
|
input(type='checkbox' id='checkbox-all-students')
|
||||||
label.checkmark(for='checkbox-all-students')
|
label.checkmark(for='checkbox-all-students')
|
||||||
|
@ -236,7 +244,7 @@ mixin studentRow(student)
|
||||||
div(data-i18n='teacher.remove')
|
div(data-i18n='teacher.remove')
|
||||||
|
|
||||||
mixin enrollStudentButton(student)
|
mixin enrollStudentButton(student)
|
||||||
a.enroll-student-button.btn.btn-lg.btn-primary(data-classroom-id=view.classroom.id data-user-id=student.id)
|
a.enroll-student-button.btn.btn-lg.btn-primary(data-classroom-id=view.classroom.id data-user-id=student.id data-event-action="Teachers Class Students Enroll Student")
|
||||||
span(data-i18n='teacher.enroll_student')
|
span(data-i18n='teacher.enroll_student')
|
||||||
|
|
||||||
mixin courseProgressTab
|
mixin courseProgressTab
|
||||||
|
@ -286,7 +294,7 @@ mixin courseProgressTab
|
||||||
span(data-i18n='TODO')
|
span(data-i18n='TODO')
|
||||||
| Assign Course
|
| Assign Course
|
||||||
else
|
else
|
||||||
.enroll-student-button.btn.btn-md.btn-navy.pull-right(data-user-id=student.id)
|
.enroll-student-button.btn.btn-md.btn-navy.pull-right(data-user-id=student.id data-event-action="Teachers Class Course Enroll Student")
|
||||||
span(data-i18n='TODO')
|
span(data-i18n='TODO')
|
||||||
| Enroll Student
|
| Enroll Student
|
||||||
|
|
||||||
|
@ -313,7 +321,7 @@ mixin studentLevelsRow(student)
|
||||||
- var levels = view.classroom.getLevels({courseID: course.id, withoutLadderLevels: true}).models
|
- var levels = view.classroom.getLevels({courseID: course.id, withoutLadderLevels: true}).models
|
||||||
each level, index in levels
|
each level, index in levels
|
||||||
- var progress = state.get('progressData').get({ classroom: view.classroom, course: course, level: level, user: student })
|
- var progress = state.get('progressData').get({ classroom: view.classroom, course: course, level: level, user: student })
|
||||||
+studentLevelProgressDot(progress, level, index+1)
|
+studentLevelProgressDot(progress, level, index+1, session)
|
||||||
|
|
||||||
mixin studentCourseProgressDot(progress, levelsTotal, level, label)
|
mixin studentCourseProgressDot(progress, levelsTotal, level, label)
|
||||||
//- TODO: Refactor with TeacherClassesView jade
|
//- TODO: Refactor with TeacherClassesView jade
|
||||||
|
@ -334,7 +342,7 @@ mixin studentLevelProgressDot(progress, level, levelNumber)
|
||||||
//- TODO: Refactor with TeacherClassesView jade
|
//- TODO: Refactor with TeacherClassesView jade
|
||||||
- dotClass = progress.completed ? 'forest' : (progress.started ? 'gold' : '');
|
- dotClass = progress.completed ? 'forest' : (progress.started ? 'gold' : '');
|
||||||
- levelName = level.get('name')
|
- levelName = level.get('name')
|
||||||
- context = _.merge(progress, { levelName: levelName, levelNumber: levelNumber })
|
- context = _.merge(progress, { levelName: levelName, levelNumber: levelNumber, moment: moment })
|
||||||
.progress-dot.level-progress-dot(class=dotClass, data-html='true', data-title=view.singleStudentLevelProgressDotTemplate(context))
|
.progress-dot.level-progress-dot(class=dotClass, data-html='true', data-title=view.singleStudentLevelProgressDotTemplate(context))
|
||||||
+progressDotLabel(levelNumber)
|
+progressDotLabel(levelNumber)
|
||||||
|
|
||||||
|
@ -418,4 +426,4 @@ mixin enrollmentStatusTab
|
||||||
strong(class= status === 'expired' ? 'text-danger' : '')= view.studentStatusString(student)
|
strong(class= status === 'expired' ? 'text-danger' : '')= view.studentStatusString(student)
|
||||||
td.enroll-col
|
td.enroll-col
|
||||||
if status !== 'enrolled'
|
if status !== 'enrolled'
|
||||||
button.enroll-student-button.btn.btn-navy(data-i18n="teacher.enroll_student", data-user-id=student.id)
|
button.enroll-student-button.btn.btn-navy(data-i18n="teacher.enroll_student", data-user-id=student.id, data-event-action="Teachers Class Enrollment Enroll Student")
|
||||||
|
|
|
@ -10,11 +10,12 @@ block content
|
||||||
p(data-i18n='teacher.teacher_account_required')
|
p(data-i18n='teacher.teacher_account_required')
|
||||||
if me.isAnonymous()
|
if me.isAnonymous()
|
||||||
.login-button.btn.btn-lg.btn-primary(data-i18n='login.log_in')
|
.login-button.btn.btn-lg.btn-primary(data-i18n='login.log_in')
|
||||||
a.btn.btn-lg.btn-primary-alt(href="/teachers/signup" data-i18n='teacher.create_teacher_account')
|
button.btn.btn-lg.btn-primary-alt.create-teacher-btn(data-event-action="Teachers Classes Create Teacher Account", data-i18n='teacher.create_teacher_account')
|
||||||
else
|
else
|
||||||
a.btn.btn-lg.btn-primary(href="/teachers/update-account" data-i18n="teachers_quote.convert_account_title")
|
button.btn.btn-lg.btn-primary.update-teacher-btn(data-event-action="Teachers Classes Convert Teacher Account", data-i18n="teachers_quote.convert_account_title")
|
||||||
button#logout-button.btn.btn-lg.btn-primary-alt(data-i18n="login.log_out")
|
button#logout-button.btn.btn-lg.btn-primary-alt(data-i18n="login.log_out")
|
||||||
|
|
||||||
|
.container
|
||||||
.teacher-account-blurb.text-center.col-xs-6.col-xs-offset-3.m-y-3
|
.teacher-account-blurb.text-center.col-xs-6.col-xs-offset-3.m-y-3
|
||||||
h5(data-i18n='teacher.what_is_a_teacher_account')
|
h5(data-i18n='teacher.what_is_a_teacher_account')
|
||||||
p(data-i18n='teacher.teacher_account_explanation')
|
p(data-i18n='teacher.teacher_account_explanation')
|
||||||
|
@ -28,7 +29,7 @@ block content
|
||||||
p
|
p
|
||||||
| We are transitioning to a new improved classroom management system for instructors.
|
| We are transitioning to a new improved classroom management system for instructors.
|
||||||
| Please convert your account to ensure you retain access to your classrooms.
|
| Please convert your account to ensure you retain access to your classrooms.
|
||||||
a.btn.btn-primary.btn-lg(href="/teachers/update-account") Upgrade to teacher account
|
button.btn.btn-primary.btn-lg.update-teacher-btn(data-event-action="Teachers Classes Convert Teacher Account Temp") Upgrade to teacher account
|
||||||
|
|
||||||
.container
|
.container
|
||||||
h3(data-i18n='teacher.current_classes')
|
h3(data-i18n='teacher.current_classes')
|
||||||
|
@ -67,9 +68,9 @@ mixin classRow(classroom)
|
||||||
span
|
span
|
||||||
= classroom.get('members').length
|
= classroom.get('members').length
|
||||||
.class-links
|
.class-links
|
||||||
a.text-h6(data-i18n='teacher.view_class' href=('/teachers/classes/' + classroom.id))
|
a.view-class-btn.text-h6(data-i18n='teacher.view_class' data-classroom-id=classroom.id data-event-action="Teachers Classes View Class Link")
|
||||||
a.edit-classroom.text-h6(data-i18n='teacher.edit_class_settings' data-classroom-id=classroom.id)
|
a.edit-classroom.text-h6(data-i18n='teacher.edit_class_settings' data-classroom-id=classroom.id data-event-action="Teachers Classes Edit Class Started")
|
||||||
a.archive-classroom.text-h6(data-i18n='teacher.archive_class' data-classroom-id=classroom.id)
|
a.archive-classroom.text-h6(data-i18n='teacher.archive_class' data-classroom-id=classroom.id data-event-action="Teachers Classes Archive Class")
|
||||||
|
|
||||||
.progress-col.col-xs-5
|
.progress-col.col-xs-5
|
||||||
if classroom.get('members').length == 0
|
if classroom.get('members').length == 0
|
||||||
|
@ -77,9 +78,10 @@ mixin classRow(classroom)
|
||||||
else
|
else
|
||||||
each trimCourse, index in classroom.get('courses') || []
|
each trimCourse, index in classroom.get('courses') || []
|
||||||
- var course = view.courses.get(trimCourse._id);
|
- var course = view.courses.get(trimCourse._id);
|
||||||
|
if view.courseInstances.findWhere({ classroomID: classroom.id, courseID: course.id })
|
||||||
+progressDot(classroom, course, index)
|
+progressDot(classroom, course, index)
|
||||||
.view-class-arrow.col-xs-1
|
.view-class-arrow.col-xs-1
|
||||||
a.view-class-arrow-inner.glyphicon.glyphicon-chevron-right(data-classroom-id=classroom.id, href=('/teachers/classes/' + classroom.id))
|
a.view-class-arrow-inner.glyphicon.glyphicon-chevron-right.view-class-btn(data-classroom-id=classroom.id data-event-action="Teachers Classes View Class Chevron")
|
||||||
|
|
||||||
|
|
||||||
mixin addStudentsButton(classroom)
|
mixin addStudentsButton(classroom)
|
||||||
|
|
|
@ -63,7 +63,7 @@ block content
|
||||||
span.spr
|
span.spr
|
||||||
| .
|
| .
|
||||||
span
|
span
|
||||||
= level.get('name')
|
= level.get('name').replace('Course: ', '')
|
||||||
a.play-level-button.btn.btn-lg.btn-primary
|
a.play-level-button.btn.btn-lg.btn-primary
|
||||||
span(data-i18n="courses.play_level")
|
span(data-i18n="courses.play_level")
|
||||||
.clearfix
|
.clearfix
|
||||||
|
@ -86,10 +86,10 @@ mixin course-info(course)
|
||||||
if view.guideLinks[course.id]
|
if view.guideLinks[course.id]
|
||||||
//- a.btn.btn-primary(href=view.guideLinks[course.id] class=(me.isTeacher() ? '': 'disabled'))
|
//- a.btn.btn-primary(href=view.guideLinks[course.id] class=(me.isTeacher() ? '': 'disabled'))
|
||||||
//- span(data-i18n="courses.print_guide")
|
//- span(data-i18n="courses.print_guide")
|
||||||
a.btn.btn-primary(href=view.guideLinks[course.id].python class=(me.isTeacher() ? '': 'disabled'))
|
a.guide-btn.btn.btn-primary(href=view.guideLinks[course.id].python data-course-id=course.id data-course-name=course.get('name') data-event-action="Classes Guides Guide Python" class=(me.isTeacher() ? '': 'disabled'))
|
||||||
span(data-i18n="courses.view_guide_online")
|
span(data-i18n="courses.view_guide_online")
|
||||||
| — Python
|
| — Python
|
||||||
a.btn.btn-primary(href=view.guideLinks[course.id].javascript class=(me.isTeacher() ? '': 'disabled'))
|
a.guide-btn.btn.btn-primary(href=view.guideLinks[course.id].javascript data-course-id=course.id data-course-name=course.get('name') data-event-action="Classes Guides Guide JavaScript" class=(me.isTeacher() ? '': 'disabled'))
|
||||||
span(data-i18n="courses.view_guide_online")
|
span(data-i18n="courses.view_guide_online")
|
||||||
| — JavaScript
|
| — JavaScript
|
||||||
else
|
else
|
||||||
|
|
|
@ -11,7 +11,7 @@ ul.user-feedback-list.list-group
|
||||||
em= moment(new Date(feedback.created)).fromNow()
|
em= moment(new Date(feedback.created)).fromNow()
|
||||||
span.spl.spr -
|
span.spl.spr -
|
||||||
a(href="/user/#{feedback.creator}")
|
a(href="/user/#{feedback.creator}")
|
||||||
strong= feedback.creatorName || 'Anoner'
|
strong= feedback.creatorName || 'Anonymous'
|
||||||
if feedback.review
|
if feedback.review
|
||||||
span.spr :
|
span.spr :
|
||||||
span= feedback.review
|
span= feedback.review
|
||||||
|
|
|
@ -2,27 +2,48 @@ extends /templates/base-flat
|
||||||
|
|
||||||
block content
|
block content
|
||||||
.container
|
.container
|
||||||
div.row(style="margin-top: 20px")
|
div.row.verifier-row
|
||||||
div.col-sm-3
|
div.col-sm-3
|
||||||
p.alert.alert-success(style="padding: 5px")
|
p.alert.alert-success
|
||||||
| Passed: #{view.passed}
|
| Passed: #{view.passed}
|
||||||
div.col-sm-3
|
div.col-sm-3
|
||||||
p.alert.alert-warning(style="padding: 5px")
|
p.alert.alert-warning
|
||||||
| Test Problem: #{view.problem}
|
| Test Problem: #{view.problem}
|
||||||
div.col-sm-3
|
div.col-sm-3
|
||||||
p.alert.alert-danger(style="padding: 5px")
|
p.alert.alert-danger
|
||||||
| Failed: #{view.failed}
|
| Failed: #{view.failed}
|
||||||
div.col-sm-3
|
div.col-sm-3
|
||||||
p.alert.alert-info(style="padding: 5px")
|
p.alert.alert-info
|
||||||
| To Run: #{view.testCount - view.passed - view.problem - view.failed}
|
| To Run: #{view.testCount - view.passed - view.problem - view.failed}
|
||||||
|
|
||||||
|
if view.levelsByCampaign
|
||||||
|
.form.form-inline
|
||||||
|
.row
|
||||||
|
each campaignInfo, campaign in view.levelsByCampaign
|
||||||
|
.form-group.campaign-mix
|
||||||
|
- var campaignID = "campaign-" + campaign + "-checkbox";
|
||||||
|
input(id=campaignID, type="checkbox", checked=campaignInfo.checked, disabled=!!view.tests)
|
||||||
|
label(for=campaignID)= campaign + ': ' + campaignInfo.levels.length
|
||||||
|
.row
|
||||||
|
each codeLanguage in view.codeLanguages
|
||||||
|
.form-group.code-language-mix
|
||||||
|
- var codeLanguageID = "code-language-" + codeLanguage.id + "-checkbox";
|
||||||
|
input(id=codeLanguageID, type="checkbox", checked=codeLanguage.checked, disabled=!!view.tests)
|
||||||
|
label(for=codeLanguageID)= codeLanguage.id
|
||||||
|
.pull-right
|
||||||
|
button.btn.btn-primary#go-button(disabled=!!view.tests) Start Tests
|
||||||
|
|
||||||
|
if view.levelsToLoad && !view.tests
|
||||||
|
.progress
|
||||||
|
.progress-bar.progress-bar-success(role="progressbar" style="width: #{100*(1 - view.levelsToLoad/view.initialLevelsToLoad)}%")
|
||||||
|
|
||||||
|
if view.tests
|
||||||
if view.levelIDs
|
if view.levelIDs
|
||||||
.progress
|
.progress
|
||||||
.progress-bar.progress-bar-success(role="progressbar" style="width: #{100*view.passed/view.testCount}%")
|
.progress-bar.progress-bar-success(role="progressbar" style="width: #{100*view.passed/view.testCount}%")
|
||||||
.progress-bar.progress-bar-warning(role="progressbar" style="width: #{100*view.problem/view.testCount}%")
|
.progress-bar.progress-bar-warning(role="progressbar" style="width: #{100*view.problem/view.testCount}%")
|
||||||
.progress-bar.progress-bar-danger(role="progressbar" style="width: #{100*view.failed/view.testCount}%")
|
.progress-bar.progress-bar-danger(role="progressbar" style="width: #{100*view.failed/view.testCount}%")
|
||||||
|
|
||||||
|
|
||||||
each test, id in view.tests
|
each test, id in view.tests
|
||||||
- if (test.state == 'no-solution')
|
- if (test.state == 'no-solution')
|
||||||
- continue;
|
- continue;
|
||||||
|
@ -35,13 +56,13 @@ block content
|
||||||
a.btn.btn-default(data-target='#verifier-test-' + id, data-toggle="collapse") Toggle
|
a.btn.btn-default(data-target='#verifier-test-' + id, data-toggle="collapse") Toggle
|
||||||
|
|
||||||
if !test.goals
|
if !test.goals
|
||||||
h2(style='color: orange')= test.level.get('name')
|
h2.test-running= test.level.get('name')
|
||||||
small= ' in ' + test.language + ''
|
small= ' in ' + test.language + ''
|
||||||
else if test.isSuccessful()
|
else if test.isSuccessful()
|
||||||
h2(style='color: green')= test.level.get('name')
|
h2.test-success= test.level.get('name')
|
||||||
small= ' in ' + test.language + ''
|
small= ' in ' + test.language + ''
|
||||||
else
|
else
|
||||||
h2(style='color: red')= test.level.get('name')
|
h2.test-failed= test.level.get('name')
|
||||||
small= ' in ' + test.language + ''
|
small= ' in ' + test.language + ''
|
||||||
|
|
||||||
div.row(class=(test.isSuccessful() && id > 1 ? 'collapse' : 'collapse in'), id='verifier-test-' + id)
|
div.row(class=(test.isSuccessful() && id > 1 ? 'collapse' : 'collapse in'), id='verifier-test-' + id)
|
||||||
|
@ -54,26 +75,26 @@ block content
|
||||||
div.col-xs-4.well
|
div.col-xs-4.well
|
||||||
if test.goals
|
if test.goals
|
||||||
if test.frames == test.solution.frameCount
|
if test.frames == test.solution.frameCount
|
||||||
div(style='color: green') ✓ Frames: #{test.frames}
|
div.test-success ✓ Frames: #{test.frames}
|
||||||
else
|
else
|
||||||
div(style='color: red') ✘ Frames: #{test.frames} vs #{test.solution.frameCount}
|
div.test-failed ✘ Frames: #{test.frames} vs #{test.solution.frameCount}
|
||||||
|
|
||||||
each v,k in test.goals || []
|
each v,k in test.goals || []
|
||||||
if !test.solution.goals
|
if !test.solution.goals
|
||||||
div(style='color: orange') ? #{k} (#{v.status})
|
div.test-running ? #{k} (#{v.status})
|
||||||
else if v.status == test.solution.goals[k]
|
else if v.status == test.solution.goals[k]
|
||||||
div(style='color: green') ✓ #{k} (#{v.status})
|
div.test-success ✓ #{k} (#{v.status})
|
||||||
else
|
else
|
||||||
div(style='color: red') ✘ #{k} (#{v.status} vs #{test.solution.goals[k]})
|
div.test-failed ✘ #{k} (#{v.status} vs #{test.solution.goals[k]})
|
||||||
else
|
else
|
||||||
h3 Pending....
|
h3 Pending....
|
||||||
|
|
||||||
if test.error
|
if test.error
|
||||||
pre(style="color: red") #{test.error}
|
pre.test-faile #{test.error}
|
||||||
|
|
||||||
if test.userCodeProblems.length
|
if test.userCodeProblems.length
|
||||||
h4(style="color: red") User Code Problems
|
h4.test-failed User Code Problems
|
||||||
pre(style="color: red") #{JSON.stringify(test.userCodeProblems, null, 2)}
|
pre.test-failed #{JSON.stringify(test.userCodeProblems, null, 2)}
|
||||||
|
|
||||||
else
|
else
|
||||||
h1 Loading Level...
|
h1 Loading Level...
|
||||||
|
|
|
@ -3,98 +3,38 @@ extends /templates/base-flat
|
||||||
mixin box
|
mixin box
|
||||||
.well.text-center
|
.well.text-center
|
||||||
if me.isAnonymous() == true
|
if me.isAnonymous() == true
|
||||||
if ['home-legacy','home-legacy-left'].indexOf(view.variation) != -1
|
|
||||||
h6#classroom-edition-header(data-i18n="new_home.classroom_edition")
|
h6#classroom-edition-header(data-i18n="new_home.classroom_edition")
|
||||||
div
|
div
|
||||||
button.teacher-btn.btn.btn-primary.btn-lg.btn-block(data-i18n="new_home.im_a_teacher")
|
a.teacher-btn.btn.btn-primary.btn-lg.btn-block(data-event-action="Homepage Click Teacher Button CTA", data-i18n="new_home.im_a_teacher")
|
||||||
div
|
div
|
||||||
a.btn.btn-forest.btn-lg.btn-block(href="/courses", data-i18n="new_home.im_a_student")
|
a.student-btn.btn.btn-forest.btn-lg.btn-block(href="/courses", data-event-action="Homepage Click Student Button CTA", data-i18n="new_home.im_a_student")
|
||||||
h6#learn-to-code-header(data-i18n="new_home.learn_to_code")
|
h6#learn-to-code-header(data-i18n="new_home.learn_to_code")
|
||||||
a.btn.btn-gold.btn-lg.btn-block.play-btn(href=view.playURL, data-i18n="new_home.play_now")
|
a.btn.btn-gold.btn-lg.btn-block.play-btn(href=view.playURL, data-event-action="Homepage Play Now CTA", data-i18n="new_home.play_now")
|
||||||
else if ['home-teachers','home-dropdowns'].indexOf(view.variation) != -1
|
|
||||||
h5#educator-header(data-i18n="new_home.teachers")
|
|
||||||
p.small(data-i18n="new_home.class_in_box")
|
|
||||||
|
|
||||||
if view.variation == 'home-dropdowns'
|
|
||||||
div.form-group
|
|
||||||
h6.control-label(data-i18n="new_home.role")
|
|
||||||
select.form-control#request-form-role
|
|
||||||
option(value="", data-i18n="new_home.form_select_role")
|
|
||||||
option(data-i18n="courses.teacher", value="Teacher")
|
|
||||||
option(data-i18n="teachers_quote.tech_coordinator", value="Technology coordinator")
|
|
||||||
option(data-i18n="teachers_quote.advisor", value="Advisor")
|
|
||||||
option(data-i18n="teachers_quote.principal", value="Principal")
|
|
||||||
option(data-i18n="teachers_quote.superintendent", value="Superintendent")
|
|
||||||
option(data-i18n="teachers_quote.parent", value="Parent")
|
|
||||||
div.form-group
|
|
||||||
h6.control-label(data-i18n="new_home.student_count")
|
|
||||||
select.form-control#request-form-range
|
|
||||||
option(value="", data-i18n="new_home.form_select_range")
|
|
||||||
option 1-10
|
|
||||||
option 11-50
|
|
||||||
option 51-100
|
|
||||||
option 101-200
|
|
||||||
option 201-500
|
|
||||||
option 501-1000
|
|
||||||
option 1000+
|
|
||||||
div
|
|
||||||
button.btn.btn-forest.btn-lg.btn-block.request-demo(href="#",data-i18n="new_home.get_started")
|
|
||||||
else
|
|
||||||
div
|
|
||||||
button.teacher-btn.btn.btn-forest.btn-lg.btn-block(data-i18n="new_home.get_started")
|
|
||||||
|
|
||||||
if view.variation == 'home-teachers'
|
|
||||||
h5#students-header(data-i18n="new_home.students")
|
|
||||||
div
|
|
||||||
button.join-class.btn.btn-primary.btn-lg.btn-block(data-i18n="new_home.join_class", href="/courses")
|
|
||||||
div
|
|
||||||
a.btn.btn-default.btn-lg.btn-block.play-btn(href=view.playURL, data-i18n="new_home.play_now")
|
|
||||||
else
|
|
||||||
h6#students-header(data-i18n="new_home.students_and_players")
|
|
||||||
div
|
|
||||||
a.btn.btn-primary.btn-lg.play-btn.btn-block(href=view.playURL, data-i18n="new_home.play_now")
|
|
||||||
else
|
|
||||||
h5#educator-header(data-i18n="new_home.start_playing_for_free")
|
|
||||||
div
|
|
||||||
a.btn.btn-forest.btn-lg.btn-block.play-btn(href=view.playURL, data-i18n="new_home.play_now")
|
|
||||||
div
|
|
||||||
button.join-class.btn.btn-default.btn-lg.btn-block(data-i18n="new_home.join_class", href="/courses")
|
|
||||||
|
|
||||||
|
|
||||||
h6#classroom-edition-header(style="padding-top: 20px",data-i18n="new_home.teachers_and_educators")
|
|
||||||
p.small(data-i18n="new_home.class_in_box")
|
|
||||||
button.teacher-btn.btn.btn-primary.btn-lg.btn-block(data-i18n="new_home.get_started")
|
|
||||||
|
|
||||||
|
|
||||||
if ['home-teachers','home-dropdowns','home-play-for-free'].indexOf(view.variation) != -1
|
|
||||||
p.small
|
|
||||||
span(data-i18n="new_home.have_an_account")
|
|
||||||
span
|
|
||||||
a.login-button(data-i18n="login.log_in", href="#")
|
|
||||||
else
|
else
|
||||||
h6#classroom-edition-header(data-i18n="new_home.logged_in_as")
|
h6#classroom-edition-header(data-i18n="new_home.logged_in_as")
|
||||||
p.small #{me.get("email")}
|
p.small #{me.get("email")}
|
||||||
if me.isTeacher()
|
if me.isTeacher()
|
||||||
div
|
div
|
||||||
button.teacher-btn.btn.btn-forest.btn-lg.btn-block(data-i18n="new_home.goto_classes")
|
button.teacher-btn.btn.btn-forest.btn-lg.btn-block(data-event-action="Homepage Click My Classes CTA", data-i18n="new_home.goto_classes")
|
||||||
div
|
div
|
||||||
if view.isTeacherWithDemo
|
if view.isTeacherWithDemo
|
||||||
h6(data-i18n="new_home.check_out_wiki")
|
h6(data-i18n="new_home.check_out_wiki")
|
||||||
a.btn.btn-primary.btn-lg.btn-block(href="https://sites.google.com/a/codecombat.com/teacher-guides/course-guides", data-i18n="nav.educator_wiki")
|
button.wiki-btn.btn.btn-primary.btn-lg.btn-block(data-event-action="Homepage Click Educator Wiki CTA", data-i18n="nav.educator_wiki")
|
||||||
else
|
else
|
||||||
h6(data-i18n="new_home.want_coco")
|
h6(data-i18n="new_home.want_coco")
|
||||||
a.btn.btn-primary.btn-lg.btn-block(href=view.demoRequestURL, data-i18n="new_home.get_started")
|
button.btn.btn-primary.btn-lg.request-demo(data-event-action="Homepage Request Demo CTA", data-i18n="new_home.request_demo")
|
||||||
|
|
||||||
else if me.justPlaysCourses()
|
else if me.justPlaysCourses()
|
||||||
div
|
div
|
||||||
a.btn.btn-forest.btn-lg.btn-block(href=view.playURL, data-i18n="courses.continue_playing")
|
a.btn.btn-forest.btn-lg.btn-block.play-btn(href=view.playURL, data-event-action="Homepage Classroom Continue Playing CTA", data-i18n="courses.continue_playing")
|
||||||
div
|
div
|
||||||
a.btn.btn-primary.btn-lg.btn-block.play-btn(href=view.playURL, data-i18n="new_home.view_progress")
|
a.btn.btn-primary.btn-lg.btn-block.play-btn(href=view.playURL, data-event-action="Homepage View Progress CTA", data-i18n="new_home.view_progress")
|
||||||
else
|
else
|
||||||
div
|
div
|
||||||
a.btn.btn-forest.btn-lg.btn-block.play-btn(href=view.playURL, data-i18n="courses.continue_playing")
|
a.btn.btn-forest.btn-lg.btn-block.play-btn(href=view.playURL, data-event-action="Homepage Campaign Continue Playing CTA", data-i18n="courses.continue_playing")
|
||||||
div
|
div
|
||||||
a.btn.btn-primary.btn-lg.btn-block(href="/user/#{me.getSlugOrID()}", data-i18n="new_home.view_profile")
|
a.btn.btn-primary.btn-lg.btn-block.profile-btn(href=view.playURL, data-event-action="Homepage View Profile CTA", data-i18n="new_home.view_profile")
|
||||||
|
|
||||||
|
|
||||||
p.small
|
p.small
|
||||||
|
@ -113,13 +53,6 @@ block content
|
||||||
.container
|
.container
|
||||||
.row.hidden-xs.top-spacer(style="height: 160px")
|
.row.hidden-xs.top-spacer(style="height: 160px")
|
||||||
.row.hidden-sm.hidden-xs
|
.row.hidden-sm.hidden-xs
|
||||||
case view.variation
|
|
||||||
when 'home-legacy-left'
|
|
||||||
.col-lg-3.col-md-4
|
|
||||||
+box
|
|
||||||
.col-lg-7.col-lg-offset-2.col-md-8
|
|
||||||
h1(data-i18n="new_home.slogan")
|
|
||||||
default
|
|
||||||
.col-lg-7.col-md-8
|
.col-lg-7.col-md-8
|
||||||
h1(data-i18n="new_home.slogan")
|
h1(data-i18n="new_home.slogan")
|
||||||
.col-lg-3.col-lg-offset-2.col-md-4
|
.col-lg-3.col-lg-offset-2.col-md-4
|
||||||
|
@ -130,7 +63,6 @@ block content
|
||||||
.col
|
.col
|
||||||
div(style="margin: auto; max-width: 300px")
|
div(style="margin: auto; max-width: 300px")
|
||||||
+box
|
+box
|
||||||
|
|
||||||
.row#learn-more-row
|
.row#learn-more-row
|
||||||
.col-xs-12.text-center
|
.col-xs-12.text-center
|
||||||
a#learn-more-link
|
a#learn-more-link
|
||||||
|
@ -281,11 +213,11 @@ block content
|
||||||
if view.isTeacherWithDemo
|
if view.isTeacherWithDemo
|
||||||
h4(data-i18n="new_home.get_started_subtitle")
|
h4(data-i18n="new_home.get_started_subtitle")
|
||||||
div
|
div
|
||||||
a.btn.btn-primary.btn-lg(href="/teachers/classes", data-i18n="new_home.setup_a_class")
|
button.btn.btn-primary.btn-lg.setup-class-btn(data-event-action="Homepage Setup Class", data-i18n="new_home.setup_a_class")
|
||||||
else
|
else
|
||||||
h4(data-i18n="new_home.request_demo_subtitle")
|
h4(data-i18n="new_home.request_demo_subtitle")
|
||||||
div
|
div
|
||||||
a.btn.btn-primary.btn-lg(href=view.demoRequestURL, data-i18n="new_home.request_demo")
|
button.btn.btn-primary.btn-lg.request-demo(data-event-action="Homepage Request Demo", data-i18n="new_home.request_demo")
|
||||||
if me.isAnonymous()
|
if me.isAnonymous()
|
||||||
.have-an-account
|
.have-an-account
|
||||||
span.spr(data-i18n="new_home.have_an_account")
|
span.spr(data-i18n="new_home.have_an_account")
|
||||||
|
@ -374,10 +306,10 @@ block content
|
||||||
h3(data-i18n="new_home.run_class")
|
h3(data-i18n="new_home.run_class")
|
||||||
if view.isTeacherWithDemo
|
if view.isTeacherWithDemo
|
||||||
div
|
div
|
||||||
a.btn.btn-primary.btn-lg(href="/teachers/classes", data-i18n="new_home.setup_a_class")
|
button.btn.btn-primary.btn-lg.setup-class-btn(data-event-action="Homepage Setup Class Page Bottom", data-i18n="new_home.setup_a_class")
|
||||||
else
|
else
|
||||||
div
|
div
|
||||||
a.btn.btn-primary.btn-lg(href=view.demoRequestURL, data-i18n="new_home.request_demo")
|
button.btn.btn-primary.btn-lg.request-demo(data-event-action="Homepage Request Demo Page Bottom", data-i18n="new_home.request_demo")
|
||||||
if me.isAnonymous()
|
if me.isAnonymous()
|
||||||
.have-an-account
|
.have-an-account
|
||||||
span.spr(data-i18n="new_home.have_an_account")
|
span.spr(data-i18n="new_home.have_an_account")
|
||||||
|
|
|
@ -1,16 +1,21 @@
|
||||||
|
- var league = view.options.league
|
||||||
.row
|
.row
|
||||||
for team, teamIndex in teams
|
for team, teamIndex in view.teams
|
||||||
div.column.col-md-6
|
div.column.col-md-6
|
||||||
div(id="histogram-display-#{team.name}", class="histogram-display", data-team-name=team.name)
|
div(id="histogram-display-#{team.name}", class="histogram-display", data-team-name=team.name)
|
||||||
table.table.table-bordered.table-condensed.table-hover.ladder-table(data-team=team.id)
|
table.table.table-bordered.table-condensed.table-hover.ladder-table(data-team=team.id)
|
||||||
|
- var levelType = view.level.get('type', true)
|
||||||
|
- var topSessions = team.leaderboard.topPlayers.models;
|
||||||
|
- var showJustTop = team.leaderboard.inTopSessions() || me.get('anonymous');
|
||||||
|
- if(!showJustTop && topSessions.length == 20) topSessions = topSessions.slice(0, 10);
|
||||||
thead
|
thead
|
||||||
tr
|
tr
|
||||||
th(colspan=level.get('type', true) == 'hero-ladder' ? 3 : 2)
|
th(colspan=levelType == 'hero-ladder' ? 3 : 2)
|
||||||
th(colspan=4, style="color: #{team.primaryColor}")
|
th(colspan=4, style="color: #{team.primaryColor}")
|
||||||
span= team.displayName
|
span= team.displayName
|
||||||
span.spl(data-i18n="ladder.leaderboard") Leaderboard
|
span.spl(data-i18n="ladder.leaderboard") Leaderboard
|
||||||
tr
|
tr
|
||||||
th(colspan=level.get('type', true) == 'hero-ladder' ? 3 : 2)
|
th(colspan=levelType == 'hero-ladder' ? 3 : 2)
|
||||||
th(data-i18n="general.score") Score
|
th(data-i18n="general.score") Score
|
||||||
th(data-i18n="general.name").name-col-cell Name
|
th(data-i18n="general.name").name-col-cell Name
|
||||||
th(data-i18n="general.when") When
|
th(data-i18n="general.when") When
|
||||||
|
@ -19,22 +24,19 @@
|
||||||
.glyphicon.glyphicon-eye-open
|
.glyphicon.glyphicon-eye-open
|
||||||
|
|
||||||
tbody
|
tbody
|
||||||
- var topSessions = team.leaderboard.topPlayers.models;
|
|
||||||
- var showJustTop = team.leaderboard.inTopSessions() || me.get('anonymous');
|
|
||||||
- if(!showJustTop && topSessions.length == 20) topSessions = topSessions.slice(0, 10);
|
|
||||||
for session, rank in topSessions
|
for session, rank in topSessions
|
||||||
- var myRow = session.get('creator') == me.id
|
- var myRow = session.get('creator') == me.id
|
||||||
- var sessionStats = league ? (_.find(session.get('leagues') || [], {leagueID: league.id}) || {}).stats || {} : session.attributes;
|
- var sessionStats = league ? (_.find(session.get('leagues') || [], {leagueID: league.id}) || {}).stats || {} : session.attributes;
|
||||||
tr(class=myRow ? "success" : "", data-player-id=session.get('creator'), data-session-id=session.id)
|
tr(class=myRow ? "success" : "", data-player-id=session.get('creator'), data-session-id=session.id)
|
||||||
td.code-language-cell(style="background-image: url(/images/common/code_languages/" + session.get('submittedCodeLanguage') + "_icon.png)" title=capitalize(session.get('submittedCodeLanguage')))
|
td.code-language-cell(style="background-image: url(/images/common/code_languages/" + session.get('submittedCodeLanguage') + "_icon.png)" title=view.capitalize(session.get('submittedCodeLanguage')))
|
||||||
if level.get('type', true) == 'hero-ladder'
|
if levelType == 'hero-ladder'
|
||||||
td.hero-portrait-cell(style="background-image: url(/file/db/thang.type/#{(session.get('heroConfig') || {}).thangType || '529ffbf1cf1818f2be000001'}/portrait.png)")
|
td.hero-portrait-cell(style="background-image: url(/file/db/thang.type/#{(session.get('heroConfig') || {}).thangType || '529ffbf1cf1818f2be000001'}/portrait.png)")
|
||||||
td.rank-cell= rank + 1
|
td.rank-cell= rank + 1
|
||||||
td.score-cell= Math.round((sessionStats.totalScore || session.get('totalScore') / 2) * 100)
|
td.score-cell= Math.round((sessionStats.totalScore || session.get('totalScore') / 2) * 100)
|
||||||
td(class='name-col-cell' + ((new RegExp('(Simple|Shaman|Brawler|Chieftain|Thoktar) CPU')).test(session.get('creatorName')) ? ' ai' : ''))= session.get('creatorName') || "Anonymous"
|
td(class='name-col-cell' + ((new RegExp('(Simple|Shaman|Brawler|Chieftain|Thoktar) CPU')).test(session.get('creatorName')) ? ' ai' : ''))= session.get('creatorName') || "Anonymous"
|
||||||
td.age-cell= moment(session.get('submitDate')).fromNow().replace('a few ', '')
|
td.age-cell= moment(session.get('submitDate')).fromNow().replace('a few ', '')
|
||||||
td.fight-cell
|
td.fight-cell
|
||||||
a(href="/play/level/#{level.get('slug') || level.id}?team=#{team.otherTeam}&opponent=#{session.id}" + (league ? "&league=" + league.id : ""))
|
a(href="/play/level/#{view.level.get('slug') || view.level.id}?team=#{team.otherTeam}&opponent=#{session.id}" + (league ? "&league=" + league.id : ""))
|
||||||
span(data-i18n="ladder.fight") Fight!
|
span(data-i18n="ladder.fight") Fight!
|
||||||
td.spectate-cell.iconic-cell
|
td.spectate-cell.iconic-cell
|
||||||
.glyphicon.glyphicon-eye-open
|
.glyphicon.glyphicon-eye-open
|
||||||
|
@ -47,14 +49,14 @@
|
||||||
- var sessionStats = league ? (_.find(session.get('leagues'), {leagueID: league.id}) || {}).stats || {} : session.attributes;
|
- var sessionStats = league ? (_.find(session.get('leagues'), {leagueID: league.id}) || {}).stats || {} : session.attributes;
|
||||||
tr(class=myRow ? "success" : "", data-player-id=session.get('creator'), data-session-id=session.id)
|
tr(class=myRow ? "success" : "", data-player-id=session.get('creator'), data-session-id=session.id)
|
||||||
td.code-language-cell(style="background-image: url(/images/common/code_languages/" + session.get('submittedCodeLanguage') + "_icon.png)")
|
td.code-language-cell(style="background-image: url(/images/common/code_languages/" + session.get('submittedCodeLanguage') + "_icon.png)")
|
||||||
if level.get('type', true) == 'hero-ladder'
|
if levelType == 'hero-ladder'
|
||||||
td.hero-portrait-cell(style="background-image: url(/file/db/thang.type/#{(session.get('heroConfig') || {}).thangType || '529ffbf1cf1818f2be000001'}/portrait.png)")
|
td.hero-portrait-cell(style="background-image: url(/file/db/thang.type/#{(session.get('heroConfig') || {}).thangType || '529ffbf1cf1818f2be000001'}/portrait.png)")
|
||||||
td.rank-cell= session.rank
|
td.rank-cell= session.rank
|
||||||
td.score-cell= Math.round((sessionStats.totalScore || session.get('totalScore') / 2) * 100)
|
td.score-cell= Math.round((sessionStats.totalScore || session.get('totalScore') / 2) * 100)
|
||||||
td(class='name-col-cell' + ((new RegExp('(Simple|Shaman|Brawler|Chieftain|Thoktar) CPU')).test(session.get('creatorName')) ? ' ai' : ''))= session.get('creatorName') || "Anonymous"
|
td(class='name-col-cell' + ((new RegExp('(Simple|Shaman|Brawler|Chieftain|Thoktar) CPU')).test(session.get('creatorName')) ? ' ai' : ''))= session.get('creatorName') || "Anonymous"
|
||||||
td.age-cell= moment(session.get('submitDate')).fromNow().replace('a few ', '')
|
td.age-cell= moment(session.get('submitDate')).fromNow().replace('a few ', '')
|
||||||
td.fight-cell
|
td.fight-cell
|
||||||
a(href="/play/level/#{level.get('slug') || level.id}?team=#{team.otherTeam}&opponent=#{session.id}" + (league ? "&league=" + league.id : ""))
|
a(href="/play/level/#{view.level.get('slug') || view.level.id}?team=#{team.otherTeam}&opponent=#{session.id}" + (league ? "&league=" + league.id : ""))
|
||||||
span(data-i18n="ladder.fight") Fight!
|
span(data-i18n="ladder.fight") Fight!
|
||||||
td.spectate-cell.iconic-cell
|
td.spectate-cell.iconic-cell
|
||||||
.glyphicon.glyphicon-eye-open
|
.glyphicon.glyphicon-eye-open
|
||||||
|
@ -77,8 +79,8 @@
|
||||||
if !onGPlus
|
if !onGPlus
|
||||||
button.btn.btn-sm.connect-google-plus(data-i18n="community.gplus") Google+
|
button.btn.btn-sm.connect-google-plus(data-i18n="community.gplus") Google+
|
||||||
|
|
||||||
if friends.length
|
if view.friends
|
||||||
for friend in friends
|
for friend in view.friends
|
||||||
p.friend-entry
|
p.friend-entry
|
||||||
img(src=friend.imageSource).img-thumbnail
|
img(src=friend.imageSource).img-thumbnail
|
||||||
span= friend.creatorName + ' (' + friend.name + ')'
|
span= friend.creatorName + ' (' + friend.name + ')'
|
||||||
|
@ -87,7 +89,7 @@
|
||||||
span :
|
span :
|
||||||
span= friend.team
|
span= friend.team
|
||||||
br
|
br
|
||||||
a(href="/play/level/#{level.get('slug') || level.id}/?team=#{friend.otherTeam}&opponent=#{friend._id}" + (league ? "&league=" + league.id : ""))
|
a(href="/play/level/#{view.level.get('slug') || view.level.id}/?team=#{friend.otherTeam}&opponent=#{friend._id}" + (league ? "&league=" + league.id : ""))
|
||||||
span(data-i18n="ladder.fight") Fight!
|
span(data-i18n="ladder.fight") Fight!
|
||||||
|
|
||||||
else if onFacebook || onGPlus
|
else if onFacebook || onGPlus
|
||||||
|
|
|
@ -4,10 +4,10 @@ block content
|
||||||
|
|
||||||
div#ladder-top
|
div#ladder-top
|
||||||
|
|
||||||
if leagueType == 'course' && view.course.id
|
if view.leagueType === 'course' && view.course
|
||||||
#course-header
|
#course-header
|
||||||
#course-details-link
|
#course-details-link
|
||||||
a(href="/courses/"+view.course.id+"/"+view.league.id)
|
a(href="/courses/{#view.course.id}/{#view.league.id}")
|
||||||
span.glyphicon.glyphicon-arrow-left
|
span.glyphicon.glyphicon-arrow-left
|
||||||
span.spl Levels
|
span.spl Levels
|
||||||
|
|
||||||
|
@ -16,21 +16,20 @@ block content
|
||||||
span= view.course.get('name')
|
span= view.course.get('name')
|
||||||
span.spl - Arena
|
span.spl - Arena
|
||||||
|
|
||||||
|
|
||||||
div#level-column
|
div#level-column
|
||||||
if levelDescription
|
if view.levelDescription
|
||||||
div!= levelDescription
|
div!= view.levelDescription
|
||||||
|
|
||||||
if leagueType === 'clan'
|
if view.leagueType === 'clan'
|
||||||
h1.league-header
|
h1.league-header
|
||||||
a(href="/clans/#{league.id}")= league.get('name')
|
a(href="/clans/#{view.league.id}")= view.league.get('name')
|
||||||
span.spl(data-i18n="ladder.league") League
|
span.spl(data-i18n="ladder.league") League
|
||||||
|
|
||||||
if level.get('name') == 'Greed'
|
if view.level.get('name') == 'Greed'
|
||||||
.tournament-blurb
|
.tournament-blurb
|
||||||
h2
|
h2
|
||||||
span(data-i18n="ladder.tournament_ended") Tournament ended
|
span(data-i18n="ladder.tournament_ended") Tournament ended
|
||||||
| #{tournamentTimeLeft}
|
| #{view.tournamentTimeLeft}
|
||||||
p
|
p
|
||||||
span(data-i18n="ladder.tournament_blurb") Write code, collect gold, build armies, crush foes, win prizes, and upgrade your career in our $40,000 Greed tournament! Check out the details
|
span(data-i18n="ladder.tournament_blurb") Write code, collect gold, build armies, crush foes, win prizes, and upgrade your career in our $40,000 Greed tournament! Check out the details
|
||||||
|
|
|
|
||||||
|
@ -63,11 +62,11 @@ block content
|
||||||
a(href="http://aws.amazon.com/")
|
a(href="http://aws.amazon.com/")
|
||||||
img(src=base + "aws.png")
|
img(src=base + "aws.png")
|
||||||
|
|
||||||
if level.get('name') == 'Criss-Cross'
|
if view.level.get('name') == 'Criss-Cross'
|
||||||
.tournament-blurb
|
.tournament-blurb
|
||||||
h2
|
h2
|
||||||
span(data-i18n="ladder.tournament_ended") Tournament ended
|
span(data-i18n="ladder.tournament_ended") Tournament ended
|
||||||
| #{tournamentTimeLeft}
|
| #{view.tournamentTimeLeft}
|
||||||
p
|
p
|
||||||
span(data-i18n="ladder.tournament_blurb_criss_cross") Win bids, construct paths, outwit opponents, grab gems, and upgrade your career in our Criss-Cross tournament! Check out the details
|
span(data-i18n="ladder.tournament_blurb_criss_cross") Win bids, construct paths, outwit opponents, grab gems, and upgrade your career in our Criss-Cross tournament! Check out the details
|
||||||
|
|
|
|
||||||
|
@ -86,13 +85,13 @@ block content
|
||||||
a(href="http://discourse.codecombat.com/") the forum
|
a(href="http://discourse.codecombat.com/") the forum
|
||||||
| and discuss your strategies, your triumphs, and your turmoils.
|
| and discuss your strategies, your triumphs, and your turmoils.
|
||||||
|
|
||||||
if level.get('name') == 'Zero Sum' && !league
|
if view.level.get('name') == 'Zero Sum' && !view.league
|
||||||
.tournament-blurb
|
.tournament-blurb
|
||||||
h2
|
h2
|
||||||
span(data-i18n="ladder.tournament_ended") Tournament ended
|
span(data-i18n="ladder.tournament_ended") Tournament ended
|
||||||
| #{tournamentTimeLeft}
|
| #{view.tournamentTimeLeft}
|
||||||
//span(data-i18n="ladder.tournament_started") , started
|
//span(data-i18n="ladder.tournament_started") , started
|
||||||
//| #{tournamentTimeElapsed}
|
//| #{view.tournamentTimeElapsed}
|
||||||
p
|
p
|
||||||
span(data-i18n="ladder.tournament_blurb_zero_sum") Unleash your coding creativity in both gold gathering and battle tactics in this alpine mirror match between red sorcerer and blue sorcerer. The tournament began on Friday, March 27 and will run until Monday, April 6 at 5PM PDT. Compete for fun and glory! Check out the details
|
span(data-i18n="ladder.tournament_blurb_zero_sum") Unleash your coding creativity in both gold gathering and battle tactics in this alpine mirror match between red sorcerer and blue sorcerer. The tournament began on Friday, March 27 and will run until Monday, April 6 at 5PM PDT. Compete for fun and glory! Check out the details
|
||||||
|
|
|
|
||||||
|
@ -109,14 +108,14 @@ block content
|
||||||
a(href="http://discourse.codecombat.com/") the forum
|
a(href="http://discourse.codecombat.com/") the forum
|
||||||
| and discuss your strategies, your triumphs, and your turmoils.
|
| and discuss your strategies, your triumphs, and your turmoils.
|
||||||
|
|
||||||
if level.get('name') == 'Ace of Coders'
|
if view.level.get('name') == 'Ace of Coders'
|
||||||
.tournament-blurb
|
.tournament-blurb
|
||||||
h2
|
h2
|
||||||
//span(data-i18n="ladder.tournament_ends") Tournament ends
|
//span(data-i18n="ladder.tournament_ends") Tournament ends
|
||||||
span(data-i18n="ladder.tournament_ended") Tournament ended
|
span(data-i18n="ladder.tournament_ended") Tournament ended
|
||||||
| #{tournamentTimeLeft}
|
| #{view.tournamentTimeLeft}
|
||||||
span(data-i18n="ladder.tournament_started") , started
|
span(data-i18n="ladder.tournament_started") , started
|
||||||
| #{tournamentTimeElapsed}
|
| #{view.tournamentTimeElapsed}
|
||||||
p
|
p
|
||||||
span(data-i18n="ladder.tournament_blurb_ace_of_coders") Battle it out in the frozen glacier in this domination-style mirror match! The tournament began on Wednesday, September 16 and will run until Wednesday, October 14 at 5PM PDT. Check out the details
|
span(data-i18n="ladder.tournament_blurb_ace_of_coders") Battle it out in the frozen glacier in this domination-style mirror match! The tournament began on Wednesday, September 16 and will run until Wednesday, October 14 at 5PM PDT. Check out the details
|
||||||
|
|
|
|
||||||
|
@ -135,7 +134,8 @@ block content
|
||||||
|
|
||||||
div#columns.row
|
div#columns.row
|
||||||
div.column.col-md-2
|
div.column.col-md-2
|
||||||
for team in teams
|
if view.teams
|
||||||
|
for team in view.teams
|
||||||
div.column.col-md-4
|
div.column.col-md-4
|
||||||
a(class="play-button btn btn-illustrated btn-block btn-lg " + (team.id == 'ogres' ? 'btn-primary' : 'btn-danger'), data-team=team.id)
|
a(class="play-button btn btn-illustrated btn-block btn-lg " + (team.id == 'ogres' ? 'btn-primary' : 'btn-danger'), data-team=team.id)
|
||||||
span(data-i18n="play.play_as") Play As
|
span(data-i18n="play.play_as") Play As
|
||||||
|
@ -143,9 +143,9 @@ block content
|
||||||
span= team.displayName
|
span= team.displayName
|
||||||
div.column.col-md-2
|
div.column.col-md-2
|
||||||
|
|
||||||
if leagueType !== 'course'
|
if view.leagueType !== 'course'
|
||||||
.spectate-button-container
|
.spectate-button-container
|
||||||
a(href="/play/spectate/#{level.get('slug')}" + (league ? "?league=" + league.id : "")).spectate-button.btn.btn-illustrated.btn-info.center
|
a(href="/play/spectate/#{view.level.get('slug')}" + (view.league ? "?league=" + view.league.id : "")).spectate-button.btn.btn-illustrated.btn-info.center
|
||||||
span(data-i18n="play.spectate") Spectate
|
span(data-i18n="play.spectate") Spectate
|
||||||
|
|
||||||
ul.nav.nav-pills
|
ul.nav.nav-pills
|
||||||
|
@ -154,16 +154,16 @@ block content
|
||||||
if !me.get('anonymous')
|
if !me.get('anonymous')
|
||||||
li
|
li
|
||||||
a(href="#my-matches", data-toggle="tab", data-i18n="ladder.my_matches") My Matches
|
a(href="#my-matches", data-toggle="tab", data-i18n="ladder.my_matches") My Matches
|
||||||
if leagueType !== 'course'
|
if view.leagueType !== 'course'
|
||||||
li
|
li
|
||||||
a(href="#simulate", data-toggle="tab", data-i18n="ladder.simulate") Simulate
|
a(href="#simulate", data-toggle="tab", data-i18n="ladder.simulate") Simulate
|
||||||
if level.get('name') == 'Greed'
|
if view.level.get('name') == 'Greed'
|
||||||
li
|
li
|
||||||
a(href="#prizes", data-toggle="tab", data-i18n="ladder_prizes.prizes") Prizes
|
a(href="#prizes", data-toggle="tab", data-i18n="ladder_prizes.prizes") Prizes
|
||||||
if level.get('name') == 'Greed'
|
if view.level.get('name') == 'Greed'
|
||||||
li
|
li
|
||||||
a(href="#rules", data-toggle="tab", data-i18n="ladder.rules") Rules
|
a(href="#rules", data-toggle="tab", data-i18n="ladder.rules") Rules
|
||||||
if level.get('name') == 'Greed' || level.get('name') == 'Criss-Cross' || level.get('name') == 'Zero Sum' || level.get('name') == 'Ace of Coders'
|
if view.level.get('name') == 'Greed' || view.level.get('name') == 'Criss-Cross' || view.level.get('name') == 'Zero Sum' || view.level.get('name') == 'Ace of Coders'
|
||||||
li
|
li
|
||||||
a(href="#winners", data-toggle="tab", data-i18n="ladder.winners") Winners
|
a(href="#winners", data-toggle="tab", data-i18n="ladder.winners") Winners
|
||||||
|
|
||||||
|
@ -174,7 +174,7 @@ block content
|
||||||
#my-matches-tab-view
|
#my-matches-tab-view
|
||||||
.tab-pane.well#simulate
|
.tab-pane.well#simulate
|
||||||
#simulate-tab-view
|
#simulate-tab-view
|
||||||
if level.get('name') == 'Greed'
|
if view.level.get('name') == 'Greed'
|
||||||
.tab-pane.well#prizes
|
.tab-pane.well#prizes
|
||||||
h1(data-i18n="ladder_prizes.title") Tournament Prizes
|
h1(data-i18n="ladder_prizes.title") Tournament Prizes
|
||||||
p
|
p
|
||||||
|
@ -740,7 +740,7 @@ block content
|
||||||
| - $50
|
| - $50
|
||||||
td $50
|
td $50
|
||||||
|
|
||||||
if level.get('name') == 'Greed'
|
if view.level.get('name') == 'Greed'
|
||||||
.tab-pane.well#rules
|
.tab-pane.well#rules
|
||||||
h1(data-i18n="ladder.tournament_rules") Tournament Rules
|
h1(data-i18n="ladder.tournament_rules") Tournament Rules
|
||||||
h2 General
|
h2 General
|
||||||
|
@ -802,7 +802,7 @@ block content
|
||||||
a(href="http://discourse.codecombat.com/") Discourse forum
|
a(href="http://discourse.codecombat.com/") Discourse forum
|
||||||
| .
|
| .
|
||||||
|
|
||||||
if level.get('name') == 'Greed' || level.get('name') == 'Criss-Cross' || level.get('name') == 'Zero Sum'
|
if view.level.get('name') == 'Greed' || view.level.get('name') == 'Criss-Cross' || view.level.get('name') == 'Zero Sum'
|
||||||
.tab-pane.well#winners
|
.tab-pane.well#winners
|
||||||
h1(data-i18n="ladder.winners") Winners
|
h1(data-i18n="ladder.winners") Winners
|
||||||
|
|
||||||
|
@ -810,71 +810,71 @@ block content
|
||||||
thead
|
thead
|
||||||
tr
|
tr
|
||||||
th(data-i18n="ladder_prizes.rank") Rank
|
th(data-i18n="ladder_prizes.rank") Rank
|
||||||
if level.get('name') == 'Criss-Cross' || level.get('name') == 'Zero Sum'
|
if view.level.get('name') == 'Criss-Cross' || view.level.get('name') == 'Zero Sum'
|
||||||
th
|
th
|
||||||
th Human
|
th Human
|
||||||
if level.get('name') == 'Greed' || level.get('name') == 'Zero Sum'
|
if view.level.get('name') == 'Greed' || view.level.get('name') == 'Zero Sum'
|
||||||
th Human wins/losses/ties
|
th Human wins/losses/ties
|
||||||
else
|
else
|
||||||
th Human score
|
th Human score
|
||||||
if level.get('name') == 'Zero Sum'
|
if view.level.get('name') == 'Zero Sum'
|
||||||
th
|
th
|
||||||
if level.get('name') == 'Criss-Cross' || level.get('name') == 'Zero Sum'
|
if view.level.get('name') == 'Criss-Cross' || view.level.get('name') == 'Zero Sum'
|
||||||
th
|
th
|
||||||
th Ogre
|
th Ogre
|
||||||
if level.get('name') == 'Greed' || level.get('name') == 'Zero Sum'
|
if view.level.get('name') == 'Greed' || view.level.get('name') == 'Zero Sum'
|
||||||
th Ogre wins/losses/ties
|
th Ogre wins/losses/ties
|
||||||
else
|
else
|
||||||
th Ogre score
|
th Ogre score
|
||||||
th(data-i18n="play.spectate") Spectate
|
th(data-i18n="play.spectate") Spectate
|
||||||
tbody
|
tbody
|
||||||
each human, index in winners.humans
|
each human, index in view.winners.humans
|
||||||
- var ogre = winners.ogres[index]
|
- var ogre = view.winners.ogres[index]
|
||||||
tr
|
tr
|
||||||
td= human.rank
|
td= human.rank
|
||||||
if level.get('name') == 'Criss-Cross' || level.get('name') == 'Zero Sum'
|
if view.level.get('name') == 'Criss-Cross' || view.level.get('name') == 'Zero Sum'
|
||||||
td.code-language-cell(style="background-image: url(/images/common/code_languages/" + human.codeLanguage + "_icon.png)" title=_.string.capitalize(human.codeLanguage))
|
td.code-language-cell(style="background-image: url(/images/common/code_languages/" + human.codeLanguage + "_icon.png)" title=_.string.capitalize(human.codeLanguage))
|
||||||
td= human.name
|
td= human.name
|
||||||
if level.get('name') == 'Greed' || level.get('name') == 'Zero Sum'
|
if view.level.get('name') == 'Greed' || view.level.get('name') == 'Zero Sum'
|
||||||
td
|
td
|
||||||
span.win= human.wins
|
span.win= human.wins
|
||||||
| -
|
| -
|
||||||
span.loss= human.losses
|
span.loss= human.losses
|
||||||
| -
|
| -
|
||||||
if level.get('name') == 'Greed'
|
if view.level.get('name') == 'Greed'
|
||||||
span.tie= 377 - human.wins - human.losses
|
span.tie= 377 - human.wins - human.losses
|
||||||
else if level.get('name') == 'Zero Sum'
|
else if view.level.get('name') == 'Zero Sum'
|
||||||
span.tie= 108 - human.wins - human.losses
|
span.tie= 108 - human.wins - human.losses
|
||||||
else
|
else
|
||||||
td
|
td
|
||||||
span= Math.round(100 * human.score)
|
span= Math.round(100 * human.score)
|
||||||
if ogre
|
if ogre
|
||||||
if level.get('name') == 'Zero Sum'
|
if view.level.get('name') == 'Zero Sum'
|
||||||
td= ogre.rank
|
td= ogre.rank
|
||||||
if level.get('name') == 'Criss-Cross' || level.get('name') == 'Zero Sum'
|
if view.level.get('name') == 'Criss-Cross' || view.level.get('name') == 'Zero Sum'
|
||||||
td.code-language-cell(style="background-image: url(/images/common/code_languages/" + ogre.codeLanguage + "_icon.png)" title=_.string.capitalize(ogre.codeLanguage))
|
td.code-language-cell(style="background-image: url(/images/common/code_languages/" + ogre.codeLanguage + "_icon.png)" title=_.string.capitalize(ogre.codeLanguage))
|
||||||
td= ogre.name
|
td= ogre.name
|
||||||
if level.get('name') == 'Greed' || level.get('name') == 'Zero Sum'
|
if view.level.get('name') == 'Greed' || view.level.get('name') == 'Zero Sum'
|
||||||
td
|
td
|
||||||
span.win= ogre.wins
|
span.win= ogre.wins
|
||||||
| -
|
| -
|
||||||
span.loss= ogre.losses
|
span.loss= ogre.losses
|
||||||
| -
|
| -
|
||||||
if level.get('name') == 'Greed'
|
if view.level.get('name') == 'Greed'
|
||||||
span.tie= 407 - ogre.wins - ogre.losses
|
span.tie= 407 - ogre.wins - ogre.losses
|
||||||
else if level.get('name') == 'Zero Sum'
|
else if view.level.get('name') == 'Zero Sum'
|
||||||
span.tie= Math.max(0, 163 - ogre.wins - ogre.losses)
|
span.tie= Math.max(0, 163 - ogre.wins - ogre.losses)
|
||||||
else
|
else
|
||||||
td
|
td
|
||||||
span= Math.round(100 * ogre.score)
|
span= Math.round(100 * ogre.score)
|
||||||
td
|
td
|
||||||
a(href="/play/spectate/" + level.get('slug') + "?session-one=" + human.sessionID + "&session-two=" + ogre.sessionID, data-i18n="ladder.watch_battle") Watch the battle
|
a(href="/play/spectate/" + view.level.get('slug') + "?session-one=" + human.sessionID + "&session-two=" + ogre.sessionID, data-i18n="ladder.watch_battle") Watch the battle
|
||||||
else
|
else
|
||||||
td
|
td
|
||||||
td
|
td
|
||||||
td
|
td
|
||||||
|
|
||||||
if level.get('name') == 'Ace of Coders'
|
if view.level.get('name') == 'Ace of Coders'
|
||||||
.tab-pane.well#winners
|
.tab-pane.well#winners
|
||||||
h1(data-i18n="ladder.winners") Winners
|
h1(data-i18n="ladder.winners") Winners
|
||||||
|
|
||||||
|
@ -888,7 +888,7 @@ block content
|
||||||
th Losses
|
th Losses
|
||||||
th(data-i18n="play.spectate") Spectate
|
th(data-i18n="play.spectate") Spectate
|
||||||
tbody
|
tbody
|
||||||
each player in winners.humans
|
each player in view.winners.humans
|
||||||
tr
|
tr
|
||||||
td= player.rank
|
td= player.rank
|
||||||
td.code-language-cell(style="background-image: url(/images/common/code_languages/" + player.codeLanguage + "_icon.png)" title=_.string.capitalize(player.codeLanguage))
|
td.code-language-cell(style="background-image: url(/images/common/code_languages/" + player.codeLanguage + "_icon.png)" title=_.string.capitalize(player.codeLanguage))
|
||||||
|
@ -899,6 +899,6 @@ block content
|
||||||
span.loss= player.losses
|
span.loss= player.losses
|
||||||
td
|
td
|
||||||
if player.team == "ogres"
|
if player.team == "ogres"
|
||||||
a(href="/play/spectate/" + level.get('slug') + "?session-one=55df8c9207d920b7e4262f33" + "&session-two=" + player.sessionID, data-i18n="ladder.watch_battle") Watch the battle
|
a(href="/play/spectate/" + view.level.get('slug') + "?session-one=55df8c9207d920b7e4262f33" + "&session-two=" + player.sessionID, data-i18n="ladder.watch_battle") Watch the battle
|
||||||
else
|
else
|
||||||
a(href="/play/spectate/" + level.get('slug') + "?session-one=" + player.sessionID + "&session-two=55e1d23686c019bc47b640fe", data-i18n="ladder.watch_battle") Watch the battle
|
a(href="/play/spectate/" + view.level.get('slug') + "?session-one=" + player.sessionID + "&session-two=55e1d23686c019bc47b640fe", data-i18n="ladder.watch_battle") Watch the battle
|
||||||
|
|
|
@ -9,81 +9,81 @@ block modal-body-content
|
||||||
h4.language-selection(data-i18n="ladder.select_your_language") Select your language!
|
h4.language-selection(data-i18n="ladder.select_your_language") Select your language!
|
||||||
.form-group.select-group
|
.form-group.select-group
|
||||||
select#tome-language(name="language")
|
select#tome-language(name="language")
|
||||||
for option in languages
|
for option in view.languages
|
||||||
option(value=option.id selected=(language === option.id))= option.name
|
option(value=option.id selected=(view.language === option.id))= option.name
|
||||||
|
|
||||||
div#noob-view.secret
|
div#noob-view.secret
|
||||||
a(href="/play/level/#{levelID}-tutorial" + (league ? "?league=" + league.id : "")).btn.btn-success.btn-block.btn-lg
|
a(href="/play/level/#{view.levelID}-tutorial" + (view.options.league ? "?league=" + view.options.league.id : "")).btn.btn-success.btn-block.btn-lg
|
||||||
p
|
p
|
||||||
strong(data-i18n="ladder.tutorial_play") Play Tutorial
|
strong(data-i18n="ladder.tutorial_play") Play Tutorial
|
||||||
span(data-i18n="ladder.tutorial_recommended") Recommended if you've never played before
|
span(data-i18n="ladder.tutorial_recommended") Recommended if you've never played before
|
||||||
span.btn.btn-primary.btn-block.btn-lg#skip-tutorial-button(data-i18n="ladder.tutorial_skip") Skip Tutorial
|
span.btn.btn-primary.btn-block.btn-lg#skip-tutorial-button(data-i18n="ladder.tutorial_skip") Skip Tutorial
|
||||||
|
|
||||||
div#normal-view
|
div#normal-view
|
||||||
if tutorialLevelExists
|
if view.tutorialLevelExists
|
||||||
p.tutorial-suggestion
|
p.tutorial-suggestion
|
||||||
strong(data-i18n="ladder.tutorial_not_sure") Not sure what's going on?
|
strong(data-i18n="ladder.tutorial_not_sure") Not sure what's going on?
|
||||||
|
|
|
|
||||||
a(href="/play/level/#{levelID}-tutorial" + (league ? "?league=" + league.id : ""), data-i18n="ladder.tutorial_play_first") Play the tutorial first.
|
a(href="/play/level/#{view.levelID}-tutorial" + (view.options.league ? "?league=" + view.options.league.id : ""), data-i18n="ladder.tutorial_play_first") Play the tutorial first.
|
||||||
a(href="/play/level/#{levelID}?team=#{teamID}" + (league ? "&league=" + league.id : ""))
|
a(href="/play/level/#{view.levelID}?team=#{view.team}" + (view.options.league ? "&league=" + view.options.league.id : ""))
|
||||||
div.play-option
|
div.play-option
|
||||||
img(src=myPortrait).my-icon.only-one
|
img(src=view.myPortrait).my-icon.only-one
|
||||||
img(src="/images/pages/play/ladder/"+teamID+"_ladder_tutorial.png", style="border: 1px solid #{teamColor}; background: #{teamBackgroundColor}").my-team-icon.img-circle.only-one
|
img(src="/images/pages/play/ladder/#{view.team}_ladder_tutorial.png", style="border: 1px solid #{view.teamColor}; background: #{view.teamBackgroundColor}").my-team-icon.img-circle.only-one
|
||||||
img(src=genericPortrait).opponent-icon
|
img(src=view.genericPortrait).opponent-icon
|
||||||
img(src="/images/pages/play/ladder/"+otherTeamID+"_ladder_tutorial.png", style="border: 1px solid #{opponentTeamColor}; background: #{opponentTeamBackgroundColor}").opponent-team-icon.img-circle
|
img(src="/images/pages/play/ladder/#{view.otherTeam}_ladder_tutorial.png", style="border: 1px solid #{view.opponentTeamColor}; background: #{view.opponentTeamBackgroundColor}").opponent-team-icon.img-circle
|
||||||
div.my-name.name-label.only-one
|
div.my-name.name-label.only-one
|
||||||
span= myName
|
span= view.myName
|
||||||
div.opponent-name.name-label
|
div.opponent-name.name-label
|
||||||
span(data-i18n="ladder.simple_ai")
|
span(data-i18n="ladder.simple_ai")
|
||||||
//span.code-language(style="background-image: url(/images/common/code_languages/javascript_small.png)")
|
//span.code-language(style="background-image: url(/images/common/code_languages/javascript_small.png)")
|
||||||
div.difficulty
|
div.difficulty
|
||||||
span(data-i18n="ladder.warmup") Warmup
|
span(data-i18n="ladder.warmup") Warmup
|
||||||
|
|
||||||
if challengers.easy
|
if view.challengers && view.challengers.easy
|
||||||
a(href="/play/level/#{levelID}?team=#{teamID}&opponent=#{challengers.easy.sessionID}" + (league ? "&league=" + league.id : ""))
|
a(href="/play/level/#{view.levelID}?team=#{view.team}&opponent=#{view.challengers.easy.sessionID}" + (view.options.league ? "&league=" + view.options.league.id : ""))
|
||||||
div.play-option.easy-option
|
div.play-option.easy-option
|
||||||
img(src=myPortrait).my-icon.only-one
|
img(src=view.myPortrait).my-icon.only-one
|
||||||
img(src="/images/pages/play/ladder/"+teamID+"_ladder_easy.png", style="border: 1px solid #{teamColor}; background: #{teamBackgroundColor}").my-team-icon.img-circle.only-one
|
img(src="/images/pages/play/ladder/#{view.team}_ladder_easy.png", style="border: 1px solid #{view.teamColor}; background: #{view.teamBackgroundColor}").my-team-icon.img-circle.only-one
|
||||||
img(src=challengers.easy.opponentImageSource||genericPortrait).opponent-icon
|
img(src=view.challengers.easy.opponentImageSource||view.genericPortrait).opponent-icon
|
||||||
img(src="/images/pages/play/ladder/"+otherTeamID+"_ladder_easy.png", style="border: 1px solid #{opponentTeamColor}; background: #{opponentTeamBackgroundColor}").opponent-team-icon.img-circle
|
img(src="/images/pages/play/ladder/#{view.otherTeam}_ladder_easy.png", style="border: 1px solid #{view.opponentTeamColor}; background: #{view.opponentTeamBackgroundColor}").opponent-team-icon.img-circle
|
||||||
div.my-name.name-label.only-one
|
div.my-name.name-label.only-one
|
||||||
span= myName
|
span= view.myName
|
||||||
div.opponent-name.name-label
|
div.opponent-name.name-label
|
||||||
span= challengers.easy.opponentName
|
span= view.challengers.easy.opponentName
|
||||||
if challengers.easy.codeLanguage
|
if view.challengers.easy.codeLanguage
|
||||||
span.code-language(style="background-image: url(/images/common/code_languages/" + challengers.easy.codeLanguage + "_small.png)")
|
span.code-language(style="background-image: url(/images/common/code_languages/#{view.challengers.easy.codeLanguage}_small.png)")
|
||||||
div.difficulty
|
div.difficulty
|
||||||
span(data-i18n="general.easy") Easy
|
span(data-i18n="general.easy") Easy
|
||||||
|
|
||||||
if challengers.medium
|
if view.challengers && view.challengers.medium
|
||||||
a(href="/play/level/#{levelID}?team=#{teamID}&opponent=#{challengers.medium.sessionID}" + (league ? "&league=" + league.id : ""))
|
a(href="/play/level/#{view.levelID}?team=#{view.team}&opponent=#{view.challengers.medium.sessionID}" + (view.options.league ? "&league=" + view.options.league.id : ""))
|
||||||
div.play-option.medium-option
|
div.play-option.medium-option
|
||||||
img(src=myPortrait).my-icon.only-one
|
img(src=view.myPortrait).my-icon.only-one
|
||||||
img(src="/images/pages/play/ladder/"+teamID+"_ladder_medium.png", style="border: 1px solid #{teamColor}; background: #{teamBackgroundColor}").my-team-icon.img-circle.only-one
|
img(src="/images/pages/play/ladder/#{view.team}_ladder_medium.png", style="border: 1px solid #{view.teamColor}; background: #{view.teamBackgroundColor}").my-team-icon.img-circle.only-one
|
||||||
img(src=challengers.medium.opponentImageSource||genericPortrait).opponent-icon
|
img(src=view.challengers.medium.opponentImageSource||view.genericPortrait).opponent-icon
|
||||||
img(src="/images/pages/play/ladder/"+otherTeamID+"_ladder_medium.png", style="border: 1px solid #{opponentTeamColor}; background: #{opponentTeamBackgroundColor}").opponent-team-icon.img-circle
|
img(src="/images/pages/play/ladder/#{view.otherTeam}_ladder_medium.png", style="border: 1px solid #{view.opponentTeamColor}; background: #{view.opponentTeamBackgroundColor}").opponent-team-icon.img-circle
|
||||||
div.my-name.name-label.only-one
|
div.my-name.name-label.only-one
|
||||||
span= myName
|
span= view.myName
|
||||||
div.opponent-name.name-label
|
div.opponent-name.name-label
|
||||||
span= challengers.medium.opponentName
|
span= view.challengers.medium.opponentName
|
||||||
if challengers.medium.codeLanguage
|
if view.challengers.medium.codeLanguage
|
||||||
span.code-language(style="background-image: url(/images/common/code_languages/" + challengers.medium.codeLanguage + "_small.png)")
|
span.code-language(style="background-image: url(/images/common/code_languages/#{view.challengers.medium.codeLanguage}_small.png)")
|
||||||
div.difficulty
|
div.difficulty
|
||||||
span(data-i18n="general.medium") Medium
|
span(data-i18n="general.medium") Medium
|
||||||
|
|
||||||
if challengers.hard
|
if view.challengers && view.challengers.hard
|
||||||
a(href="/play/level/#{levelID}?team=#{teamID}&opponent=#{challengers.hard.sessionID}" + (league ? "&league=" + league.id : ""))
|
a(href="/play/level/#{view.levelID}?team=#{view.team}&opponent=#{view.challengers.hard.sessionID}" + (view.options.league ? "&league=" + view.options.league.id : ""))
|
||||||
div.play-option.hard-option
|
div.play-option.hard-option
|
||||||
img(src=myPortrait).my-icon.only-one
|
img(src=view.myPortrait).my-icon.only-one
|
||||||
img(src="/images/pages/play/ladder/"+teamID+"_ladder_hard.png", style="border: 1px solid #{teamColor}; background: #{teamBackgroundColor}").my-team-icon.img-circle.only-one
|
img(src="/images/pages/play/ladder/#{view.team}_ladder_hard.png", style="border: 1px solid #{view.teamColor}; background: #{view.teamBackgroundColor}").my-team-icon.img-circle.only-one
|
||||||
img(src=challengers.hard.opponentImageSource||genericPortrait).opponent-icon
|
img(src=view.challengers.hard.opponentImageSource||view.genericPortrait).opponent-icon
|
||||||
img(src="/images/pages/play/ladder/"+otherTeamID+"_ladder_hard.png", style="border: 1px solid #{opponentTeamColor}; background: #{opponentTeamBackgroundColor}").opponent-team-icon.img-circle
|
img(src="/images/pages/play/ladder/#{view.otherTeam}_ladder_hard.png", style="border: 1px solid #{view.opponentTeamColor}; background: #{view.opponentTeamBackgroundColor}").opponent-team-icon.img-circle
|
||||||
div.my-name.name-label.only-one
|
div.my-name.name-label.only-one
|
||||||
span= myName
|
span= view.myName
|
||||||
div.opponent-name.name-label
|
div.opponent-name.name-label
|
||||||
span= challengers.hard.opponentName
|
span= view.challengers.hard.opponentName
|
||||||
if challengers.hard.codeLanguage
|
if view.challengers.hard.codeLanguage
|
||||||
span.code-language(style="background-image: url(/images/common/code_languages/" + challengers.hard.codeLanguage + "_small.png)")
|
span.code-language(style="background-image: url(/images/common/code_languages/#{view.challengers.hard.codeLanguage}_small.png)")
|
||||||
div.difficulty
|
div.difficulty
|
||||||
span(data-i18n="general.hard") Hard
|
span(data-i18n="general.hard") Hard
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@ for player in view.players
|
||||||
.player-gold
|
.player-gold
|
||||||
.gold-icon
|
.gold-icon
|
||||||
.gold-value
|
.gold-value
|
||||||
.player-name= player.name || 'Anoner'
|
.player-name= player.name || 'Anonymous'
|
||||||
.player-health
|
.player-health
|
||||||
.health-icon
|
.health-icon
|
||||||
.health-bar-container
|
.health-bar-container
|
||||||
|
|
21
app/templates/play/level/hints-view.jade
Normal file
21
app/templates/play/level/hints-view.jade
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
|
||||||
|
button.close-hint-btn.btn.btn-illustrated.btn-danger
|
||||||
|
span.glyphicon.glyphicon-remove
|
||||||
|
|
||||||
|
h1.text-center.hint-title
|
||||||
|
span= view.state.get('hintsTitle')
|
||||||
|
|
||||||
|
.hint-body
|
||||||
|
!= view.getProcessedHint()
|
||||||
|
|
||||||
|
.row.btn-area
|
||||||
|
.col-md-4
|
||||||
|
if view.state.get('hintIndex') > 0
|
||||||
|
button.previous-btn.btn.btn-illustrated.pull-left(data-i18n="about.previous")
|
||||||
|
.col-md-4
|
||||||
|
h2.text-center.hint-pagination #{view.state.get('hintIndex')+1} / #{view.hintsState.get('total')}
|
||||||
|
.col-md-4
|
||||||
|
if view.state.get('hintIndex') < view.hintsState.get('total') - 1
|
||||||
|
button.next-btn.btn.btn-illustrated.pull-right(data-i18n="about.next")
|
||||||
|
|
||||||
|
.clearfix
|
|
@ -25,6 +25,9 @@
|
||||||
.progress-bar.progress-bar-success
|
.progress-bar.progress-bar-success
|
||||||
.rim
|
.rim
|
||||||
|
|
||||||
|
.could-not-load
|
||||||
|
span(data-i18n="loading_error.could_not_load") Error loading from server
|
||||||
|
|
||||||
.subscription-required
|
.subscription-required
|
||||||
span(data-i18n="subscribe.subscription_required_to_play") You'll need a subscription to play this level.
|
span(data-i18n="subscribe.subscription_required_to_play") You'll need a subscription to play this level.
|
||||||
button.start-subscription-button.btn.btn-lg.btn-warning(data-i18n="subscribe.subscribe") Subscribe
|
button.start-subscription-button.btn.btn-lg.btn-warning(data-i18n="subscribe.subscribe") Subscribe
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
.modal-header
|
.modal-header
|
||||||
#close-modal.well.well-sm.well-parchment(data-dismiss="modal")
|
#close-modal.btn.well.well-sm.well-parchment(data-dismiss="modal")
|
||||||
span.glyphicon.glyphicon-remove
|
span.glyphicon.glyphicon-remove
|
||||||
.well.well-sm.well-parchment
|
.well.well-sm.well-parchment
|
||||||
h1(data-i18n="play_level.victory_new_item")
|
h1(data-i18n="play_level.victory_new_item")
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
.modal-header
|
.modal-header
|
||||||
#close-modal.well.well-sm.well-parchment(data-dismiss="modal")
|
#close-modal.btn.well.well-sm.well-parchment(data-dismiss="modal")
|
||||||
span.glyphicon.glyphicon-remove
|
span.glyphicon.glyphicon-remove
|
||||||
.well.well-sm.well-parchment
|
.well.well-sm.well-parchment
|
||||||
h1(data-i18n='play_level.level_complete')
|
h1(data-i18n='play_level.level_complete')
|
||||||
|
@ -36,9 +36,9 @@
|
||||||
h3.text-uppercase
|
h3.text-uppercase
|
||||||
span(data-i18n='play_level.next_level')
|
span(data-i18n='play_level.next_level')
|
||||||
span :
|
span :
|
||||||
h2.text-uppercase= i18n(view.nextLevel.attributes, 'name')
|
h2.text-uppercase= i18n(view.nextLevel.attributes, 'name').replace('Course: ', '')
|
||||||
|
|
||||||
p= i18n(view.nextLevel.attributes, 'description')
|
div!= view.nextLevelDescription
|
||||||
|
|
||||||
.row
|
.row
|
||||||
.col-sm-5.col-sm-offset-2
|
.col-sm-5.col-sm-offset-2
|
||||||
|
|
36
app/templates/play/level/tome/spell-palette-view.jade
Normal file
36
app/templates/play/level/tome/spell-palette-view.jade
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
|
||||||
|
div
|
||||||
|
span.code-palette-background
|
||||||
|
if view.entryGroupSlugs
|
||||||
|
// Non-hero; group by entry groups, or maybe nothing.
|
||||||
|
ul(class="nav nav-pills" + (tabbed ? ' multiple-tabs' : ''))
|
||||||
|
each slug, group in view.entryGroupSlugs
|
||||||
|
li(class=group == "this" || slug == "available-spells" ? "active" : "")
|
||||||
|
a(data-toggle="pill", data-target='#palette-tab-' + slug)
|
||||||
|
h4= view.entryGroupNames[group]
|
||||||
|
.tab-content
|
||||||
|
each slug, group in view.entryGroupSlugs
|
||||||
|
div(id="palette-tab-" + slug, class="tab-pane nano" + (group == "this" || slug == view.defaultGroupSlug ? " active" : ""))
|
||||||
|
div(class="properties properties-" + slug + " nano-content")
|
||||||
|
|
||||||
|
else if view.tabs
|
||||||
|
// Hero; group by items, but also include tabs
|
||||||
|
ul(class="nav nav-pills multiple-tabs")
|
||||||
|
li.active
|
||||||
|
a(data-toggle="pill", data-target="#palette-tab-this")
|
||||||
|
h4= view.thisName
|
||||||
|
each entries, tab in view.tabs
|
||||||
|
li
|
||||||
|
a(data-toggle="pill", data-target='#palette-tab-' + _.string.slugify(tab))
|
||||||
|
h4= tab
|
||||||
|
.tab-content
|
||||||
|
div#palette-tab-this.tab-pane.active
|
||||||
|
.properties.properties-this
|
||||||
|
each entries, tab in tabs
|
||||||
|
div(id="palette-tab-" + _.string.slugify(tab), class="tab-pane")
|
||||||
|
div(class="properties properties-" + _.string.slugify(tab))
|
||||||
|
|
||||||
|
else
|
||||||
|
// Hero; group by items, no tabs.
|
||||||
|
br
|
||||||
|
.properties.properties-this
|
|
@ -9,10 +9,6 @@ if includeSpellList
|
||||||
|
|
||||||
.thang-avatar-placeholder
|
.thang-avatar-placeholder
|
||||||
|
|
||||||
.method-name-area
|
|
||||||
.method-label(data-i18n="play_level.tome_current_method") Current Method
|
|
||||||
.method-signature #{methodSignature}
|
|
||||||
|
|
||||||
.spell-tool-buttons
|
.spell-tool-buttons
|
||||||
.btn.btn-small.btn-illustrated.btn-warning.reload-code(data-i18n="[title]play_level.tome_reload_method", title="Reload original code for this method")
|
.btn.btn-small.btn-illustrated.btn-warning.reload-code(data-i18n="[title]play_level.tome_reload_method", title="Reload original code for this method")
|
||||||
.glyphicon.glyphicon-repeat
|
.glyphicon.glyphicon-repeat
|
||||||
|
@ -27,4 +23,8 @@ if includeSpellList
|
||||||
.btn.btn-small.btn-illustrated.beautify-code(title=beautifyShortcutVerbose)
|
.btn.btn-small.btn-illustrated.beautify-code(title=beautifyShortcutVerbose)
|
||||||
.glyphicon.glyphicon-magnet
|
.glyphicon.glyphicon-magnet
|
||||||
|
|
||||||
|
if view.hintsState && view.hintsState.get('total') > 0
|
||||||
|
.btn.btn-small.btn-illustrated.hints-button
|
||||||
|
span(data-i18n="play_level.hints")
|
||||||
|
|
||||||
.clearfix
|
.clearfix
|
|
@ -1,37 +0,0 @@
|
||||||
span.code-palette-background
|
|
||||||
if entryGroupSlugs
|
|
||||||
// Non-hero; group by entry groups, or maybe nothing.
|
|
||||||
ul(class="nav nav-pills" + (tabbed ? ' multiple-tabs' : ''))
|
|
||||||
each slug, group in entryGroupSlugs
|
|
||||||
li(class=group == "this" || slug == "available-spells" ? "active" : "")
|
|
||||||
a(data-toggle="pill", data-target='#palette-tab-' + slug)
|
|
||||||
h4= entryGroupNames[group]
|
|
||||||
.tab-content
|
|
||||||
each slug, group in entryGroupSlugs
|
|
||||||
div(id="palette-tab-" + slug, class="tab-pane nano" + (group == "this" || slug == defaultGroupSlug ? " active" : ""))
|
|
||||||
div(class="properties properties-" + slug + " nano-content")
|
|
||||||
|
|
||||||
else if tabs
|
|
||||||
// Hero; group by items, but also include tabs
|
|
||||||
ul(class="nav nav-pills multiple-tabs")
|
|
||||||
li.active
|
|
||||||
a(data-toggle="pill", data-target="#palette-tab-this")
|
|
||||||
h4= thisName
|
|
||||||
each entries, tab in tabs
|
|
||||||
li
|
|
||||||
a(data-toggle="pill", data-target='#palette-tab-' + _.string.slugify(tab))
|
|
||||||
h4= tab
|
|
||||||
.tab-content
|
|
||||||
div#palette-tab-this.tab-pane.active
|
|
||||||
.properties.properties-this
|
|
||||||
each entries, tab in tabs
|
|
||||||
div(id="palette-tab-" + _.string.slugify(tab), class="tab-pane")
|
|
||||||
div(class="properties properties-" + _.string.slugify(tab))
|
|
||||||
|
|
||||||
else
|
|
||||||
// Hero; group by items, no tabs.
|
|
||||||
if showsHelp
|
|
||||||
button.btn.btn-sm.btn-info.banner#spell-palette-help-button(data-i18n="common.help")
|
|
||||||
.properties.properties-this
|
|
||||||
else
|
|
||||||
.properties.properties-this.no-help
|
|
|
@ -26,14 +26,6 @@
|
||||||
|
|
||||||
h3(data-i18n="options.editor_config_title") Editor Configuration
|
h3(data-i18n="options.editor_config_title") Editor Configuration
|
||||||
|
|
||||||
.form-group.select-group
|
|
||||||
label.control-label(for="option-key-bindings", data-i18n="options.editor_config_keybindings_label") Key Bindings
|
|
||||||
select#option-key-bindings.form-control(name="keyBindings")
|
|
||||||
option(value="default", selected=(aceConfig.keyBindings === "default"), data-i18n="options.editor_config_keybindings_default") Default (Ace)
|
|
||||||
option(value="vim", selected=(aceConfig.keyBindings === "vim")) Vim
|
|
||||||
option(value="emacs", selected=(aceConfig.keyBindings === "emacs")) Emacs
|
|
||||||
span.help-block(data-i18n="options.editor_config_keybindings_description") Adds additional shortcuts known from the common editors.
|
|
||||||
|
|
||||||
.form-group.checkbox
|
.form-group.checkbox
|
||||||
label(for="option-live-completion")
|
label(for="option-live-completion")
|
||||||
input#option-live-completion(name="liveCompletion", type="checkbox", checked=aceConfig.liveCompletion)
|
input#option-live-completion(name="liveCompletion", type="checkbox", checked=aceConfig.liveCompletion)
|
||||||
|
|
|
@ -49,6 +49,8 @@ if view.showAds()
|
||||||
|
|
||||||
button.btn.btn-lg.btn-warning.banner.header-font#stop-real-time-playback-button(title="Stop real-time playback", data-i18n="play_level.skip") Skip
|
button.btn.btn-lg.btn-warning.banner.header-font#stop-real-time-playback-button(title="Stop real-time playback", data-i18n="play_level.skip") Skip
|
||||||
|
|
||||||
|
.hints-view.hide
|
||||||
|
|
||||||
#level-footer-shadow
|
#level-footer-shadow
|
||||||
#level-footer-background
|
#level-footer-background
|
||||||
|
|
|
@ -1,3 +1,10 @@
|
||||||
|
mixin timePlayed()
|
||||||
|
if session.get('playtime') > 0
|
||||||
|
.small-details.nowrap
|
||||||
|
span.spr(data-i18n='teacher.time_played')
|
||||||
|
| Played for
|
||||||
|
span= moment.duration({ seconds: session.get('playtime') }).humanize()
|
||||||
|
|
||||||
if completed
|
if completed
|
||||||
.small-details.nowrap
|
.small-details.nowrap
|
||||||
span= levelNumber
|
span= levelNumber
|
||||||
|
@ -7,6 +14,7 @@ if completed
|
||||||
span.spr(data-i18n='teacher.completed')
|
span.spr(data-i18n='teacher.completed')
|
||||||
| Completed
|
| Completed
|
||||||
span= new Date(dateFirstCompleted).toLocaleString()
|
span= new Date(dateFirstCompleted).toLocaleString()
|
||||||
|
+timePlayed
|
||||||
//- .small-details
|
//- .small-details
|
||||||
//- i(data-i18n='teacher.click_to_view_solution')
|
//- i(data-i18n='teacher.click_to_view_solution')
|
||||||
//- | click to view solution
|
//- | click to view solution
|
||||||
|
@ -19,6 +27,7 @@ else if started
|
||||||
span.spr(data-i18n='teacher.last_played')
|
span.spr(data-i18n='teacher.last_played')
|
||||||
| Last played
|
| Last played
|
||||||
span= new Date(lastPlayed).toLocaleString()
|
span= new Date(lastPlayed).toLocaleString()
|
||||||
|
+timePlayed
|
||||||
//- .small-details
|
//- .small-details
|
||||||
//- i(data-i18n='teacher.click_to_view_progress')
|
//- i(data-i18n='teacher.click_to_view_progress')
|
||||||
//- | click to view progress
|
//- | click to view progress
|
||||||
|
|
|
@ -14,6 +14,7 @@ block content
|
||||||
a.btn.btn-lg.btn-primary(href="/teachers/update-account" data-i18n="teachers_quote.convert_account_title")
|
a.btn.btn-lg.btn-primary(href="/teachers/update-account" data-i18n="teachers_quote.convert_account_title")
|
||||||
button#logout-button.btn.btn-lg.btn-primary-alt(data-i18n="login.log_out")
|
button#logout-button.btn.btn-lg.btn-primary-alt(data-i18n="login.log_out")
|
||||||
|
|
||||||
|
.container
|
||||||
.teacher-account-blurb.text-center.col-xs-6.col-xs-offset-3.m-y-3
|
.teacher-account-blurb.text-center.col-xs-6.col-xs-offset-3.m-y-3
|
||||||
h5(data-i18n='teacher.what_is_a_teacher_account')
|
h5(data-i18n='teacher.what_is_a_teacher_account')
|
||||||
p(data-i18n='teacher.teacher_account_explanation')
|
p(data-i18n='teacher.teacher_account_explanation')
|
|
@ -11,6 +11,20 @@ ol.breadcrumb
|
||||||
.container-fluid
|
.container-fluid
|
||||||
.row
|
.row
|
||||||
.col-md-8
|
.col-md-8
|
||||||
|
#failure-reports
|
||||||
|
for report in view.failureReports
|
||||||
|
.alert.alert-danger.alert-report
|
||||||
|
ul.suite-list
|
||||||
|
for description in report.suiteDescriptions
|
||||||
|
li= description
|
||||||
|
li
|
||||||
|
strong ... #{report.testDescription}
|
||||||
|
hr
|
||||||
|
ol.error-list
|
||||||
|
for message in report.failMessages
|
||||||
|
li
|
||||||
|
strong= message
|
||||||
|
|
||||||
#test-wrapper.well
|
#test-wrapper.well
|
||||||
#testing-area
|
#testing-area
|
||||||
|
|
||||||
|
|
|
@ -9,24 +9,25 @@ block append content
|
||||||
a(href="/account", data-i18n="nav.account")
|
a(href="/account", data-i18n="nav.account")
|
||||||
li.active(data-i18n="nav.profile")
|
li.active(data-i18n="nav.profile")
|
||||||
|
|
||||||
if user
|
if view.user
|
||||||
|
- var playerLevel = view.user.level()
|
||||||
|
- var emails = view.user.getEnabledEmails()
|
||||||
.vertical-buffer
|
.vertical-buffer
|
||||||
.row
|
.row
|
||||||
.left-column
|
.left-column
|
||||||
.profile-wrapper
|
.profile-wrapper
|
||||||
img.picture(src="#{user.getPhotoURL(150)}" alt="")
|
img.picture(src="#{view.user.getPhotoURL(150)}" alt="")
|
||||||
div.profile-info
|
div.profile-info
|
||||||
h3.name= user.get('name')
|
h3.name= view.user.get('name')
|
||||||
if favoriteLanguage
|
if view.favoriteLanguage
|
||||||
div.extra-info
|
div.extra-info
|
||||||
span(data-i18n="user.favorite_prefix") Favorite language is
|
span(data-i18n="user.favorite_prefix") Favorite language is
|
||||||
strong.favorite-language= favoriteLanguage
|
strong.favorite-language= view.favoriteLanguage
|
||||||
span(data-i18n="user.favorite_postfix") .
|
span(data-i18n="user.favorite_postfix") .
|
||||||
if playerLevel
|
if playerLevel
|
||||||
div.extra-info
|
div.extra-info
|
||||||
span.spr(data-i18n="general.player_level") Level
|
span.spr(data-i18n="general.player_level") Level
|
||||||
strong= playerLevel
|
strong= playerLevel
|
||||||
- var emails = user.getEnabledEmails()
|
|
||||||
// TODO: fix this, use some other method for finding contributor classes other than email settings, since they're private... Maybe achievements?
|
// TODO: fix this, use some other method for finding contributor classes other than email settings, since they're private... Maybe achievements?
|
||||||
if emails
|
if emails
|
||||||
ul.contributor-categories
|
ul.contributor-categories
|
||||||
|
@ -64,24 +65,24 @@ block append content
|
||||||
.panel.panel-default
|
.panel.panel-default
|
||||||
.panel-heading
|
.panel-heading
|
||||||
h3.panel-title(data-i18n="clans.clans") Clans
|
h3.panel-title(data-i18n="clans.clans") Clans
|
||||||
if (!clans)
|
if (!view.clanModels)
|
||||||
.panel-body
|
.panel-body
|
||||||
p(data-i18n="common.loading")
|
p(data-i18n="common.loading")
|
||||||
else if (clans.length)
|
else if (view.clanModels.length)
|
||||||
table.table
|
table.table
|
||||||
tr
|
tr
|
||||||
th.col-xs-4(data-i18n="clans.name") Name
|
th.col-xs-4(data-i18n="clans.name") Name
|
||||||
th.col-xs-4(data-i18n="clans.chieftain") Chieftain
|
th.col-xs-4(data-i18n="clans.chieftain") Chieftain
|
||||||
th.col-xs-4(data-i18n="play.heroes") Heroes
|
th.col-xs-4(data-i18n="play.heroes") Heroes
|
||||||
each clan in clans
|
each clan in view.clanModels
|
||||||
tr
|
tr
|
||||||
td
|
td
|
||||||
a(href="/clans/#{clan.id}")= clan.get('name')
|
a(href="/clans/#{clan.id}")= clan.get('name')
|
||||||
td
|
td
|
||||||
if idNameMap && idNameMap[clan.get('ownerID')]
|
if view.idNameMap && view.idNameMap[clan.get('ownerID')]
|
||||||
a(href="/user/#{clan.get('ownerID')}")= idNameMap[clan.get('ownerID')]
|
a(href="/user/#{clan.get('ownerID')}")= view.idNameMap[clan.get('ownerID')]
|
||||||
else
|
else
|
||||||
a(href="/user/#{clan.get('ownerID')}") Anoner
|
a(href="/user/#{clan.get('ownerID')}") Anonymous
|
||||||
td= clan.get('members').length
|
td= clan.get('members').length
|
||||||
else
|
else
|
||||||
.panel-body
|
.panel-body
|
||||||
|
@ -90,17 +91,17 @@ block append content
|
||||||
.panel.panel-default
|
.panel.panel-default
|
||||||
.panel-heading
|
.panel-heading
|
||||||
h3.panel-title(data-i18n="user.singleplayer_title") Singleplayer Levels
|
h3.panel-title(data-i18n="user.singleplayer_title") Singleplayer Levels
|
||||||
if (!singlePlayerSessions)
|
if (!view.singlePlayerSessions)
|
||||||
.panel-body
|
.panel-body
|
||||||
p(data-i18n="common.loading") Loading...
|
p(data-i18n="common.loading") Loading...
|
||||||
else if (singlePlayerSessions.length)
|
else if (view.singlePlayerSessions.length)
|
||||||
table.table
|
table.table
|
||||||
tr
|
tr
|
||||||
th.col-xs-4(data-i18n="resources.level") Level
|
th.col-xs-4(data-i18n="resources.level") Level
|
||||||
th.col-xs-4(data-i18n="user.last_played") Last Played
|
th.col-xs-4(data-i18n="user.last_played") Last Played
|
||||||
th.col-xs-4(data-i18n="user.status") Status
|
th.col-xs-4(data-i18n="user.status") Status
|
||||||
- var count = 0
|
- var count = 0
|
||||||
each session, index in singlePlayerSessions
|
each session, index in view.singlePlayerSessions
|
||||||
if session.get('levelName')
|
if session.get('levelName')
|
||||||
tr(class=count > 4 ? 'hide' : '')
|
tr(class=count > 4 ? 'hide' : '')
|
||||||
- count++;
|
- count++;
|
||||||
|
@ -120,16 +121,16 @@ block append content
|
||||||
.panel.panel-default
|
.panel.panel-default
|
||||||
.panel-heading
|
.panel-heading
|
||||||
h3.panel-title(data-i18n="user.multiplayer_title") Multiplayer Levels
|
h3.panel-title(data-i18n="user.multiplayer_title") Multiplayer Levels
|
||||||
if (!multiPlayerSessions)
|
if (!view.multiPlayerSessions)
|
||||||
.panel-body
|
.panel-body
|
||||||
p(data-i18n="common.loading") Loading...
|
p(data-i18n="common.loading") Loading...
|
||||||
else if (multiPlayerSessions.length)
|
else if (view.multiPlayerSessions.length)
|
||||||
table.table
|
table.table
|
||||||
tr
|
tr
|
||||||
th.col-xs-4(data-i18n="resources.level") Level
|
th.col-xs-4(data-i18n="resources.level") Level
|
||||||
th.col-xs-4(data-i18n="user.last_played") Last Played
|
th.col-xs-4(data-i18n="user.last_played") Last Played
|
||||||
th.col-xs-4(data-i18n="general.score") Score
|
th.col-xs-4(data-i18n="general.score") Score
|
||||||
each session, index in multiPlayerSessions
|
each session, index in view.multiPlayerSessions
|
||||||
tr(class=index > 4 ? 'hide' : '')
|
tr(class=index > 4 ? 'hide' : '')
|
||||||
td
|
td
|
||||||
- var posturl = ''
|
- var posturl = ''
|
||||||
|
@ -140,7 +141,7 @@ block append content
|
||||||
td= parseInt(session.get('totalScore') * 100)
|
td= parseInt(session.get('totalScore') * 100)
|
||||||
else
|
else
|
||||||
td(data-i18n="user.status_unfinished") Unfinished
|
td(data-i18n="user.status_unfinished") Unfinished
|
||||||
if multiPlayerSessions.length > 4
|
if view.multiPlayerSessions.length > 4
|
||||||
.panel-footer
|
.panel-footer
|
||||||
button.btn.btn-info.btn-sm.more-button(data-i18n="editor.more")
|
button.btn.btn-info.btn-sm.more-button(data-i18n="editor.more")
|
||||||
else
|
else
|
||||||
|
@ -149,10 +150,10 @@ block append content
|
||||||
.panel.panel-default
|
.panel.panel-default
|
||||||
.panel-heading
|
.panel-heading
|
||||||
h3.panel-title(data-i18n="user.achievements_title") Achievements
|
h3.panel-title(data-i18n="user.achievements_title") Achievements
|
||||||
if ! earnedAchievements
|
if ! view.earnedAchievements
|
||||||
.panel-body
|
.panel-body
|
||||||
p(data-i18n="common.loading") Loading...
|
p(data-i18n="common.loading") Loading...
|
||||||
else if ! earnedAchievements.length
|
else if ! view.earnedAchievements.length
|
||||||
.panel-body
|
.panel-body
|
||||||
p(data-i18n="user.no_achievements") No achievements earned so far.
|
p(data-i18n="user.no_achievements") No achievements earned so far.
|
||||||
else
|
else
|
||||||
|
@ -161,7 +162,7 @@ block append content
|
||||||
th.col-xs-4(data-i18n="achievements.achievement") Achievement
|
th.col-xs-4(data-i18n="achievements.achievement") Achievement
|
||||||
th.col-xs-4(data-i18n="achievements.last_earned") Last Earned
|
th.col-xs-4(data-i18n="achievements.last_earned") Last Earned
|
||||||
th.col-xs-4(data-i18n="achievements.amount_achieved") Amount
|
th.col-xs-4(data-i18n="achievements.amount_achieved") Amount
|
||||||
each achievement, index in earnedAchievements.models
|
each achievement, index in view.earnedAchievements.models
|
||||||
tr(class=index > 4 ? 'hide' : '')
|
tr(class=index > 4 ? 'hide' : '')
|
||||||
td= achievement.get('achievementName')
|
td= achievement.get('achievementName')
|
||||||
td= moment(achievement.get('changed')).format("MMMM Do YYYY")
|
td= moment(achievement.get('changed')).format("MMMM Do YYYY")
|
||||||
|
@ -169,6 +170,6 @@ block append content
|
||||||
td= achievement.get('achievedAmount')
|
td= achievement.get('achievedAmount')
|
||||||
else
|
else
|
||||||
td
|
td
|
||||||
if earnedAchievements.length > 4
|
if view.earnedAchievements.length > 4
|
||||||
.panel-footer
|
.panel-footer
|
||||||
button.btn.btn-info.btn-sm.more-button(data-i18n="editor.more")
|
button.btn.btn-info.btn-sm.more-button(data-i18n="editor.more")
|
||||||
|
|
|
@ -8,12 +8,7 @@ module.exports = class AboutView extends RootView
|
||||||
logoutRedirectURL: false
|
logoutRedirectURL: false
|
||||||
|
|
||||||
events:
|
events:
|
||||||
'click #mission-link': 'onClickMissionLink'
|
'click #fixed-nav a': 'onClickFixedNavLink'
|
||||||
'click #team-link': 'onClickTeamLink'
|
|
||||||
'click #community-link': 'onClickCommunityLink'
|
|
||||||
'click #story-link': 'onClickStoryLink'
|
|
||||||
'click #jobs-link': 'onClickJobsLink'
|
|
||||||
'click #contact-link': 'onClickContactLink'
|
|
||||||
'click .screen-thumbnail': 'onClickScreenThumbnail'
|
'click .screen-thumbnail': 'onClickScreenThumbnail'
|
||||||
'click #carousel-left': 'onLeftPressed'
|
'click #carousel-left': 'onLeftPressed'
|
||||||
'click #carousel-right': 'onRightPressed'
|
'click #carousel-right': 'onRightPressed'
|
||||||
|
@ -23,6 +18,8 @@ module.exports = class AboutView extends RootView
|
||||||
'left': 'onLeftPressed'
|
'left': 'onLeftPressed'
|
||||||
'esc': 'onEscapePressed'
|
'esc': 'onEscapePressed'
|
||||||
|
|
||||||
|
getTitle: -> return $.i18n.t('nav.about')
|
||||||
|
|
||||||
afterRender: ->
|
afterRender: ->
|
||||||
super(arguments...)
|
super(arguments...)
|
||||||
@$('#fixed-nav').affix({
|
@$('#fixed-nav').affix({
|
||||||
|
@ -42,29 +39,21 @@ module.exports = class AboutView extends RootView
|
||||||
keyboard: false
|
keyboard: false
|
||||||
})
|
})
|
||||||
|
|
||||||
onClickMissionLink: (event) ->
|
afterInsert: ->
|
||||||
event.preventDefault()
|
# scroll to the current hash, once everything in the browser is set up
|
||||||
@scrollToLink('#mission')
|
f = =>
|
||||||
|
return if @destroyed
|
||||||
|
link = $(document.location.hash)
|
||||||
|
if link.length
|
||||||
|
@scrollToLink(document.location.hash, 0)
|
||||||
|
_.delay(f, 100)
|
||||||
|
|
||||||
onClickTeamLink: (event) ->
|
onClickFixedNavLink: (event) ->
|
||||||
event.preventDefault()
|
event.preventDefault() # prevent default page scroll
|
||||||
@scrollToLink('#team')
|
link = $(event.target).closest('a')
|
||||||
|
target = link.attr('href')
|
||||||
onClickCommunityLink: (event) ->
|
history.replaceState(null, null, "about#{target}") # update hash without triggering page scroll
|
||||||
event.preventDefault()
|
@scrollToLink(target)
|
||||||
@scrollToLink('#community')
|
|
||||||
|
|
||||||
onClickStoryLink: (event) ->
|
|
||||||
event.preventDefault()
|
|
||||||
@scrollToLink('#story')
|
|
||||||
|
|
||||||
onClickJobsLink: (event) ->
|
|
||||||
event.preventDefault()
|
|
||||||
@scrollToLink('#jobs')
|
|
||||||
|
|
||||||
onClickContactLink: (event) ->
|
|
||||||
event.preventDefault()
|
|
||||||
@scrollToLink('#contact')
|
|
||||||
|
|
||||||
onRightPressed: (event) ->
|
onRightPressed: (event) ->
|
||||||
# Special handling, otherwise after you click the control, keyboard presses move the slide twice
|
# Special handling, otherwise after you click the control, keyboard presses move the slide twice
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue