mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-11-23 23:58:02 -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:
|
||||
- "./node_modules/karma/bin/karma start --browsers Firefox --single-run --reporters progress"
|
||||
- "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 |
|
@ -3,4 +3,9 @@ ThangType = require 'models/ThangType'
|
|||
|
||||
module.exports = class ThangTypeCollection extends CocoCollection
|
||||
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!
|
||||
if @queue.progress is 1
|
||||
@recentPaths.sort()
|
||||
console.debug @recentPaths.join('\n')
|
||||
console.debug 'loaded', @recentPaths.length, 'files,', parseInt(@recentLoadedBytes/1024), 'KB'
|
||||
# console.debug @recentPaths.join('\n')
|
||||
# console.debug 'loaded', @recentPaths.length, 'files,', parseInt(@recentLoadedBytes/1024), 'KB'
|
||||
@trigger 'load-complete'
|
||||
|
||||
@trigger 'loaded', e.item
|
||||
|
|
|
@ -239,6 +239,12 @@ particleKinds['level-dungeon-replayable'] = particleKinds['level-dungeon-replaya
|
|||
colorMiddle: hsl 0.17, 0.75, 0.5
|
||||
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'],
|
||||
emitter:
|
||||
particleCount: 2000
|
||||
|
@ -288,6 +294,12 @@ particleKinds['level-forest-replayable'] = particleKinds['level-forest-replayabl
|
|||
colorMiddle: hsl 0.17, 0.75, 0.5
|
||||
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'],
|
||||
emitter:
|
||||
particleCount: 2000
|
||||
|
@ -337,6 +349,12 @@ particleKinds['level-desert-replayable'] = particleKinds['level-desert-replayabl
|
|||
colorMiddle: hsl 0.17, 0.75, 0.5
|
||||
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'],
|
||||
emitter:
|
||||
particleCount: 200
|
||||
|
@ -371,6 +389,12 @@ particleKinds['level-mountain-replayable'] = particleKinds['level-mountain-repla
|
|||
colorMiddle: hsl 0.17, 0.75, 0.5
|
||||
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'],
|
||||
emitter:
|
||||
particleCount: 200
|
||||
|
@ -405,6 +429,12 @@ particleKinds['level-glacier-replayable'] = particleKinds['level-glacier-replaya
|
|||
colorMiddle: hsl 0.17, 0.75, 0.5
|
||||
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'],
|
||||
emitter:
|
||||
particleCount: 200
|
||||
|
@ -438,3 +468,9 @@ particleKinds['level-volcano-replayable'] = particleKinds['level-volcano-replaya
|
|||
colorStart: hsl 0.17, 0.75, 0.7
|
||||
colorMiddle: hsl 0.17, 0.75, 0.5
|
||||
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/scribe': go('contribute/ScribeView')
|
||||
|
||||
'courses': go('courses/CoursesView') # , { studentsOnly: true }) # TODO: Enforce after session-less play for teachers
|
||||
'Courses': go('courses/CoursesView') # , { studentsOnly: true })
|
||||
'courses': go('courses/CoursesView')
|
||||
'Courses': go('courses/CoursesView')
|
||||
'courses/students': redirect('/courses')
|
||||
'courses/teachers': redirect('/teachers/classes')
|
||||
'courses/purchase': redirect('/teachers/licenses')
|
||||
'courses/enroll(/:courseID)': redirect('/teachers/licenses')
|
||||
'courses/update-account': go('courses/CoursesUpdateAccountView')
|
||||
'courses/:classroomID': go('courses/ClassroomView') #, { studentsOnly: true })
|
||||
'courses/:courseID/:courseInstanceID': go('courses/CourseDetailsView')
|
||||
'courses/:classroomID': go('courses/ClassroomView', { studentsOnly: true })
|
||||
'courses/:courseID/:courseInstanceID': go('courses/CourseDetailsView', { studentsOnly: true })
|
||||
|
||||
'db/*path': 'routeToServer'
|
||||
'demo(/*subpath)': go('DemoView')
|
||||
|
@ -142,14 +142,14 @@ module.exports = class CocoRouter extends Backbone.Router
|
|||
'SEEN': go('NewHomeView')
|
||||
|
||||
'teachers': redirect('/teachers/classes')
|
||||
'teachers/classes': go('courses/TeacherClassesView') #, { teachersOnly: true })
|
||||
'teachers/classes/:classroomID': go('courses/TeacherClassView') #, { teachersOnly: true })
|
||||
'teachers/classes': go('courses/TeacherClassesView', { teachersOnly: true })
|
||||
'teachers/classes/:classroomID': go('courses/TeacherClassView', { teachersOnly: true })
|
||||
'teachers/courses': go('courses/TeacherCoursesView')
|
||||
'teachers/demo': go('teachers/RequestQuoteView')
|
||||
'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/quote': go('teachers/RequestQuoteView')
|
||||
'teachers/quote': redirect('/teachers/demo')
|
||||
'teachers/signup': ->
|
||||
return @routeDirectly('teachers/CreateTeacherAccountView', []) if me.isAnonymous()
|
||||
@navigate('/teachers/update-account', {trigger: true, replace: true})
|
||||
|
@ -172,9 +172,9 @@ module.exports = class CocoRouter extends Backbone.Router
|
|||
@navigate e, {trigger: true}
|
||||
|
||||
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')
|
||||
if options.studentsOnly and me.isTeacher()
|
||||
if options.studentsOnly and not (me.isStudent() or me.isAdmin())
|
||||
return @routeDirectly('courses/RestrictedToStudentsView')
|
||||
leavingMessage = _.result(window.currentView, 'onLeaveMessage')
|
||||
if leavingMessage
|
||||
|
|
|
@ -95,9 +95,13 @@ module.exports = class Tracker extends CocoClass
|
|||
analytics.identify me.id, traits
|
||||
|
||||
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()
|
||||
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
|
||||
return unless @isProduction and not me.isAdmin()
|
||||
|
||||
|
@ -106,8 +110,7 @@ module.exports = class Tracker extends CocoClass
|
|||
ga? 'send', 'pageview', url
|
||||
|
||||
# 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 name in mixpanelIncludes
|
||||
mixpanel.track('page viewed', 'page name' : name, url : url) if includeMixpanel(name)
|
||||
|
||||
if me.isTeacher() and @segmentLoaded
|
||||
options = {}
|
||||
|
@ -162,22 +165,13 @@ module.exports = class Tracker extends CocoClass
|
|||
|
||||
properties[key] = value for key, value of @explicitTraits if @explicitTraits?
|
||||
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 {
|
||||
url: '/db/analytics.log.event/-/log_event'
|
||||
data: {event: event, properties: properties}
|
||||
method: 'POST'
|
||||
}, 0
|
||||
request.load()
|
||||
|
||||
request = @supermodel.addRequestResource {
|
||||
url: '/db/analytics.log.event/-/log_event'
|
||||
data: {event: event, properties: properties}
|
||||
method: 'POST'
|
||||
}, 0
|
||||
request.load()
|
||||
|
||||
trackTiming: (duration, category, variable, label) ->
|
||||
# https://developers.google.com/analytics/devguides/collection/analyticsjs/user-timings
|
||||
|
|
|
@ -14,40 +14,6 @@ init = ->
|
|||
|
||||
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 = ->
|
||||
# TODO: Refactor to use User.logout
|
||||
FB?.logout?()
|
||||
|
|
|
@ -259,8 +259,11 @@ module.exports.filterMarkdownCodeLanguages = (text, language) ->
|
|||
return '' unless text
|
||||
currentLanguage = language or me.get('aceConfig')?.language or 'python'
|
||||
excludedLanguages = _.without ['javascript', 'python', 'coffeescript', 'clojure', 'lua', 'java', 'io'], currentLanguage
|
||||
exclusionRegex = new RegExp "```(#{excludedLanguages.join('|')})\n[^`]+```\n?", 'gm'
|
||||
text.replace exclusionRegex, ''
|
||||
# Exclude language-specific code blocks like ```python (... code ...)``` for each non-target language.
|
||||
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 =
|
||||
'javascript': 'ace/mode/javascript'
|
||||
|
|
|
@ -40,6 +40,7 @@ module.exports = class LevelLoader extends CocoClass
|
|||
|
||||
@worldNecessities = []
|
||||
@listenTo @supermodel, 'resource-loaded', @onWorldNecessityLoaded
|
||||
@listenTo @supermodel, 'failed', @onWorldNecessityLoadFailed
|
||||
@loadLevel()
|
||||
@loadAudio()
|
||||
@playJingle()
|
||||
|
@ -110,7 +111,7 @@ module.exports = class LevelLoader extends CocoClass
|
|||
@loadDependenciesForSession @session
|
||||
|
||||
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 = {}
|
||||
|
||||
if @sessionID
|
||||
|
@ -122,7 +123,7 @@ module.exports = class LevelLoader extends CocoClass
|
|||
url += "?course=#{@courseID}" if @courseID
|
||||
|
||||
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})
|
||||
@session = @sessionResource.model
|
||||
if @opponentSessionID
|
||||
|
@ -146,6 +147,7 @@ module.exports = class LevelLoader extends CocoClass
|
|||
@listenToOnce @opponentSession, 'sync', @loadDependenciesForSession
|
||||
|
||||
loadDependenciesForSession: (session) ->
|
||||
console.log "Loading dependencies for session: ", session
|
||||
if me.id isnt session.get 'creator'
|
||||
session.patch = session.save = -> console.error "Not saving session, since we didn't create it."
|
||||
else if codeLanguage = utils.getQueryVariable 'codeLanguage'
|
||||
|
@ -168,6 +170,16 @@ module.exports = class LevelLoader extends CocoClass
|
|||
@consolidateFlagHistory() if @opponentSession?.loaded
|
||||
else if session is @opponentSession
|
||||
@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']
|
||||
heroConfig = session.get('heroConfig')
|
||||
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?)
|
||||
@onWorldNecessitiesLoaded() if @checkAllWorldNecessitiesRegisteredAndLoaded()
|
||||
|
||||
onWorldNecessityLoadFailed: (resource) ->
|
||||
@trigger('world-necessity-load-failed', resource: resource)
|
||||
|
||||
checkAllWorldNecessitiesRegisteredAndLoaded: ->
|
||||
return false unless _.filter(@worldNecessities).length is 0
|
||||
return false unless @thangNamesLoaded
|
||||
|
@ -330,6 +345,7 @@ module.exports = class LevelLoader extends CocoClass
|
|||
true
|
||||
|
||||
onWorldNecessitiesLoaded: ->
|
||||
console.log "World necessities loaded."
|
||||
@initWorld()
|
||||
@supermodel.clearMaxProgress()
|
||||
@trigger 'world-necessities-loaded'
|
||||
|
|
|
@ -156,6 +156,8 @@ module.exports =
|
|||
courseProgress[levelID][userID] = { completed: true, started: false } # These don't matter, will always be set
|
||||
session = _.find classroom.sessions.models, (session) ->
|
||||
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
|
||||
courseProgress.started ||= false #no-op
|
||||
|
|
|
@ -57,11 +57,11 @@ module.exports = class CountdownScreen extends CocoClass
|
|||
else
|
||||
@endCountdown()
|
||||
|
||||
hide: ->
|
||||
hide: (duration=500) ->
|
||||
return unless @showing
|
||||
@showing = false
|
||||
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: =>
|
||||
return if @destroyed
|
||||
|
@ -85,4 +85,4 @@ module.exports = class CountdownScreen extends CocoClass
|
|||
onRealTimePlaybackEnded: (e) ->
|
||||
clearInterval @countdownInterval if @countdownInterval
|
||||
@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.fontWeight = {D: 'bold', S: 'bold', N: 'bold'}[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]
|
||||
fontFamily = {D: 'Arial', S: 'Arial', N: 'Arial'}[st]
|
||||
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'
|
||||
o.fontColor = '#a00'
|
||||
o.fontColor = '#c66'
|
||||
else if @style is 'name' and @sprite?.thang?.team is 'ogres'
|
||||
o.fontColor = '#00a'
|
||||
o.backgroundFillColor = {D: 'white', S: 'rgba(0,0,0,0.4)', N: 'rgba(255,255,255,0.5)'}[st]
|
||||
o.fontColor = '#66c'
|
||||
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.backgroundStrokeStyle = {D: 2, S: 1, N: 1}[st]
|
||||
o.backgroundBorderRadius = {D: 10, S: 3, N: 3}[st]
|
||||
|
|
|
@ -3,6 +3,7 @@ module.exports.thangNames = thangNames =
|
|||
# Female
|
||||
'Alali'
|
||||
'Anabel'
|
||||
'Delma'
|
||||
'Dosha'
|
||||
'Gurzunn'
|
||||
'Hoot'
|
||||
|
@ -22,6 +23,7 @@ module.exports.thangNames = thangNames =
|
|||
# Male
|
||||
'Blob'
|
||||
'Brack'
|
||||
'Cragg'
|
||||
'Dobo'
|
||||
'Draff'
|
||||
'Eugen'
|
||||
|
@ -72,6 +74,7 @@ module.exports.thangNames = thangNames =
|
|||
'Pinakin'
|
||||
'Rakash'
|
||||
'Rasha'
|
||||
'Savatha'
|
||||
'Vujii'
|
||||
'Wuda'
|
||||
'Yetu'
|
||||
|
@ -108,6 +111,7 @@ module.exports.thangNames = thangNames =
|
|||
]
|
||||
'Ogre Warlock': [
|
||||
# Male
|
||||
'Gronak'
|
||||
'Sorgoth'
|
||||
'Vax'
|
||||
'Vyrryx'
|
||||
|
@ -145,31 +149,14 @@ module.exports.thangNames = thangNames =
|
|||
'Ofgar'
|
||||
'Randall'
|
||||
]
|
||||
'Raven Pet': [
|
||||
# Animal
|
||||
'Nevermore'
|
||||
]
|
||||
'Cougar Pet': [
|
||||
# Animal
|
||||
'Kitty'
|
||||
]
|
||||
'Frog Pet': [
|
||||
# Animal
|
||||
'Bighead'
|
||||
'Bufo'
|
||||
'Bunda'
|
||||
'Dan\'l Webster'
|
||||
'Freddy'
|
||||
'Frogger'
|
||||
'Froggy'
|
||||
'Hypnotoad'
|
||||
'Mr. Toad'
|
||||
'Slippy'
|
||||
'Toada'
|
||||
'Trevor'
|
||||
'Wart'
|
||||
'Wei Qi'
|
||||
]
|
||||
# Pets only have one name
|
||||
'Raven Pet': ['Nevermore']
|
||||
'Cougar Pet': ['Kitty']
|
||||
'Frog Pet': ['Hypnotoad']
|
||||
'Griffin Pet': ['']
|
||||
'Pugicorn Pet': ['']
|
||||
'Polar Bear Pet': ['']
|
||||
'Wolf Pet': ['']
|
||||
'Horse': [
|
||||
# Animal
|
||||
'Abby'
|
||||
|
@ -606,6 +593,7 @@ module.exports.thangNames = thangNames =
|
|||
'Hugo'
|
||||
'Ieyasu'
|
||||
'Jack'
|
||||
'Jackson'
|
||||
'James'
|
||||
'Jason'
|
||||
'Jax'
|
||||
|
|
|
@ -108,7 +108,7 @@ module.exports = class ThangState
|
|||
storage = @trackedPropertyValues[propIndex]
|
||||
value = @getStoredProp propIndex, type, storage
|
||||
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
|
||||
@thang.pos = value
|
||||
else
|
||||
|
|
|
@ -5,14 +5,14 @@ class Vector
|
|||
for name in ['add', 'subtract', 'multiply', 'divide', 'limit', 'normalize', 'rotate']
|
||||
do (name) ->
|
||||
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']
|
||||
do (name) ->
|
||||
Vector[name] = (a, b, useZ) ->
|
||||
a[name](b, useZ)
|
||||
|
||||
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) ->
|
||||
return new Vector x, y, z unless @ instanceof Vector
|
||||
|
@ -24,68 +24,67 @@ class Vector
|
|||
|
||||
# Mutating methods:
|
||||
|
||||
normalizeSelf: (useZ) ->
|
||||
normalize: (useZ) ->
|
||||
m = @magnitude useZ
|
||||
@divideSelf m, useZ if m > 0
|
||||
@divide m, useZ if m > 0
|
||||
@
|
||||
|
||||
normalize: (useZ) ->
|
||||
# Hack to detect when we are in player code so we can avoid mutation
|
||||
(if @__aetherAPIValue? then @copy() else @).normalizeSelf(useZ)
|
||||
esper_normalize: (useZ) ->
|
||||
@copy().normalize(useZ)
|
||||
|
||||
limitSelf: (max) ->
|
||||
limit: (max) ->
|
||||
if @magnitude() > max
|
||||
@normalizeSelf()
|
||||
@multiplySelf(max)
|
||||
@normalize()
|
||||
@multiply(max)
|
||||
else
|
||||
@
|
||||
|
||||
limit: (useZ) ->
|
||||
(if @__aetherAPIValue? then @copy() else @).limitSelf(useZ)
|
||||
esper_limit: (max) ->
|
||||
@copy().limit(max)
|
||||
|
||||
subtractSelf: (other, useZ) ->
|
||||
subtract: (other, useZ) ->
|
||||
@x -= other.x
|
||||
@y -= other.y
|
||||
@z -= other.z if useZ
|
||||
@
|
||||
|
||||
subtract: (other, useZ) ->
|
||||
(if @__aetherAPIValue? then @copy() else @).subtractSelf(other, useZ)
|
||||
esper_subtract: (other, useZ) ->
|
||||
@copy().subtract(other, useZ)
|
||||
|
||||
addSelf: (other, useZ) ->
|
||||
add: (other, useZ) ->
|
||||
@x += other.x
|
||||
@y += other.y
|
||||
@z += other.z if useZ
|
||||
@
|
||||
|
||||
add: (other, useZ) ->
|
||||
(if @__aetherAPIValue? then @copy() else @).addSelf(other, useZ)
|
||||
esper_add: (other, useZ) ->
|
||||
@copy().add(other, useZ)
|
||||
|
||||
divideSelf: (n, useZ) ->
|
||||
divide: (n, useZ) ->
|
||||
[@x, @y] = [@x / n, @y / n]
|
||||
@z = @z / n if useZ
|
||||
@
|
||||
|
||||
divide: (n, useZ) ->
|
||||
(if @__aetherAPIValue? then @copy() else @).divideSelf(n, useZ)
|
||||
esper_divide: (n, useZ) ->
|
||||
@copy().divide(n, useZ)
|
||||
|
||||
multiplySelf: (n, useZ) ->
|
||||
multiply: (n, useZ) ->
|
||||
[@x, @y] = [@x * n, @y * n]
|
||||
@z = @z * n if useZ
|
||||
@
|
||||
|
||||
multiply: (n, useZ) ->
|
||||
(if @__aetherAPIValue? then @copy() else @).multiplySelf(n, useZ)
|
||||
esper_multiply: (n, useZ) ->
|
||||
@copy().multiply(n, useZ)
|
||||
|
||||
# Rotate it around the origin
|
||||
# If we ever want to make this also use z: https://en.wikipedia.org/wiki/Axes_conventions
|
||||
rotateSelf: (theta) ->
|
||||
rotate: (theta) ->
|
||||
return @ unless theta
|
||||
[@x, @y] = [Math.cos(theta) * @x - Math.sin(theta) * @y, Math.sin(theta) * @x + Math.cos(theta) * @y]
|
||||
@
|
||||
|
||||
rotate: (theta) ->
|
||||
(if @__aetherAPIValue? then @copy() else @).rotateSelf(theta)
|
||||
esper_rotate: (theta) ->
|
||||
@copy().rotate(theta)
|
||||
|
||||
# Non-mutating methods:
|
||||
|
||||
|
@ -127,7 +126,7 @@ class Vector
|
|||
|
||||
# Not the strict projection, the other isn't converted to a unit vector first.
|
||||
projectOnto: (other, useZ) ->
|
||||
other.copy().multiplySelf(@dot(other, useZ), useZ)
|
||||
other.copy().multiply(@dot(other, useZ), useZ)
|
||||
|
||||
isZero: (useZ) ->
|
||||
result = @x is 0 and @y is 0
|
||||
|
|
|
@ -364,8 +364,8 @@ module.exports = class World
|
|||
endFrame = @frames.length
|
||||
#console.log "... world serializing frames from", startFrame, "to", endFrame, "of", @totalFrames
|
||||
[transferableObjects, nontransferableObjects] = [0, 0]
|
||||
delete 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}
|
||||
serializedFlagHistory = (_.omit(_.clone(flag), 'processed') for flag in @flagHistory)
|
||||
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 []
|
||||
|
||||
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_mobile: "CodeCombat ist nicht für Mobilgeräte optimiert und funktioniert möglicherweise nicht." # Warning that shows up on mobile devices
|
||||
play: "Spielen" # The big play button that opens up the campaign view.
|
||||
# play_campaign_version: "Play Campaign Version" # Shows up under big play button if you only play /courses
|
||||
play_campaign_version: "Spiele 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_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."
|
||||
|
@ -97,12 +97,12 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
|
|||
nav:
|
||||
play: "Spielen" # The top nav bar entry where players choose which levels to play
|
||||
community: "Community"
|
||||
# courses: "Courses"
|
||||
courses: "Kurse"
|
||||
editor: "Editor"
|
||||
blog: "Blog"
|
||||
forum: "Forum"
|
||||
account: "Account"
|
||||
# my_account: "My Account"
|
||||
my_account: "Mein Account"
|
||||
profile: "Profil"
|
||||
stats: "Statistiken"
|
||||
code: "Code"
|
||||
|
@ -112,24 +112,24 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
|
|||
about: "Über"
|
||||
contact: "Kontakt"
|
||||
twitter_follow: "Twitter"
|
||||
# students: "Students"
|
||||
students: "Studenten"
|
||||
teachers: "Lehrer"
|
||||
# careers: "Careers"
|
||||
# facebook: "Facebook"
|
||||
# twitter: "Twitter"
|
||||
# create_a_class: "Create a Class"
|
||||
# other: "Other"
|
||||
# learn_to_code: "Learn to Code!"
|
||||
# toggle_nav: "Toggle navigation"
|
||||
# jobs: "Jobs"
|
||||
# schools: "Schools"
|
||||
# educator_wiki: "Educator Wiki"
|
||||
# get_involved: "Get Involved"
|
||||
# open_source: "Open source (GitHub)"
|
||||
# support: "Support"
|
||||
# faqs: "FAQs"
|
||||
# help_pref: "Need help? Email"
|
||||
# help_suff: "and we'll get in touch!"
|
||||
careers: "Berufe"
|
||||
facebook: "Facebook"
|
||||
twitter: "Twitter"
|
||||
create_a_class: "Erstelle eine Klasse"
|
||||
other: "Andere"
|
||||
learn_to_code: "Lerne zu programmieren!"
|
||||
toggle_nav: "Navigation umschalten"
|
||||
jobs: "Jobs"
|
||||
schools: "Schule"
|
||||
educator_wiki: "Educator Wiki"
|
||||
get_involved: "Werde eingebunden"
|
||||
open_source: "Open source (GitHub)"
|
||||
support: "Support"
|
||||
faqs: "FAQs"
|
||||
help_pref: "Brauchst du Hilfe? Email"
|
||||
help_suff: "und wir treten in Kontakt!"
|
||||
|
||||
modal:
|
||||
close: "Schließen"
|
||||
|
@ -148,18 +148,18 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
|
|||
|
||||
play:
|
||||
play_as: "Spiele als " # Ladder page
|
||||
# compete: "Compete!" # Course details page
|
||||
compete: "Abgeschlossen!" # Course details page
|
||||
spectate: "Zuschauen" # Ladder page
|
||||
players: "Spieler" # 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
|
||||
# unlock: "Unlock" # For purchasing items and heroes
|
||||
unlock: "Kaufen" # For purchasing items and heroes
|
||||
confirm: "Bestätigen"
|
||||
# owned: "Owned" # For items you own
|
||||
owned: "bereits im Besitz" # For items you own
|
||||
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"
|
||||
# skills_granted: "Skills Granted" # Property documentation details
|
||||
skills_granted: "Freischaltbare Fähigkeiten" # Property documentation details
|
||||
heroes: "Helden" # Tooltip on hero shop button from /play
|
||||
achievements: "Erfolge" # Tooltip on achievement list 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
|
||||
change_hero: "Held wechseln" # Go back from choose inventory to choose hero
|
||||
buy_gems: "Juwelen kaufen"
|
||||
# subscription_required: "Subscription Required"
|
||||
subscription_required: "Abonnement benötigt"
|
||||
anonymous: "Anonymer Spieler"
|
||||
level_difficulty: "Schwierigkeit: "
|
||||
# play_classroom_version: "Play Classroom Version" # Choose a level in campaign version that you also can play in one of your courses
|
||||
play_classroom_version: "Spiele Kurs Version" # Choose a level in campaign version that you also can play in one of your courses
|
||||
campaign_beginner: "Anfängerkampagne"
|
||||
# awaiting_levels_adventurer_prefix: "We release new levels every week."
|
||||
# awaiting_levels_adventurer: "Sign up as an Adventurer"
|
||||
# awaiting_levels_adventurer_suffix: "to be the first to play new levels."
|
||||
# adjust_volume: "Adjust volume"
|
||||
awaiting_levels_adventurer_prefix: "Wir veröffentlichen wöchentlichen neu Levels."
|
||||
awaiting_levels_adventurer: "Melde dich als Abenteuerer an"
|
||||
awaiting_levels_adventurer_suffix: "um der erste zu sein der neue Levels spielt."
|
||||
adjust_volume: "Lautstärke anpassen"
|
||||
campaign_multiplayer: "Multiplayerarena"
|
||||
campaign_multiplayer_description: "... in der Du Kopf-an-Kopf gegen andere Spieler programmierst."
|
||||
# campaign_old_multiplayer: "(Deprecated) Old Multiplayer Arenas"
|
||||
# campaign_old_multiplayer_description: "Relics of a more civilized age. No simulations are run for these older, hero-less multiplayer arenas."
|
||||
campaign_old_multiplayer: "(Veraltet) Alte Multiplayer Arenen"
|
||||
campaign_old_multiplayer_description: "Relikte eines zivilisierteren Zeitalters. Es werden keine Simulationen für diese älteren, heldenlosen Mehrspieler Arenen durchgeführt."
|
||||
|
||||
# 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.)
|
||||
# else: "else"
|
||||
# elif: "else if"
|
||||
# while: "while"
|
||||
# loop: "loop"
|
||||
# for: "for"
|
||||
# break: "break"
|
||||
# continue: "continue"
|
||||
# pass: "pass"
|
||||
# return: "return"
|
||||
# then: "then"
|
||||
# do: "do"
|
||||
# end: "end"
|
||||
# function: "function"
|
||||
# def: "define"
|
||||
# var: "variable"
|
||||
# self: "self"
|
||||
# hero: "hero"
|
||||
# this: "this"
|
||||
# or: "or"
|
||||
# "||": "or"
|
||||
# and: "and"
|
||||
# "&&": "and"
|
||||
# not: "not"
|
||||
# "!": "not"
|
||||
# "=": "assign"
|
||||
# "==": "equals"
|
||||
# "===": "strictly equals"
|
||||
# "!=": "does not equal"
|
||||
# "!==": "does not strictly equal"
|
||||
# ">": "is greater than"
|
||||
# ">=": "is greater than or equal"
|
||||
# "<": "is less than"
|
||||
# "<=": "is less than or equal"
|
||||
# "*": "multiplied by"
|
||||
# "/": "divided by"
|
||||
# "+": "plus"
|
||||
# "-": "minus"
|
||||
# "+=": "add and assign"
|
||||
# "-=": "subtract and assign"
|
||||
# True: "True"
|
||||
# true: "true"
|
||||
# False: "False"
|
||||
# false: "false"
|
||||
# undefined: "undefined"
|
||||
# null: "null"
|
||||
# nil: "nil"
|
||||
# None: "None"
|
||||
code:
|
||||
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: "sonst"
|
||||
elif: "sonst wenn"
|
||||
while: "so lange"
|
||||
loop: "schleife"
|
||||
for: "für"
|
||||
break: "pause"
|
||||
continue: "fortsetzen"
|
||||
pass: "bestehen"
|
||||
return: "zurückgeben"
|
||||
then: "dann"
|
||||
do: "mache"
|
||||
end: "ende"
|
||||
function: "funktion"
|
||||
def: "definiere"
|
||||
var: "variable"
|
||||
self: "selbst"
|
||||
hero: "held"
|
||||
this: "dies"
|
||||
or: "oder"
|
||||
"||": "oder"
|
||||
and: "und"
|
||||
"&&": "und"
|
||||
not: "nicht"
|
||||
"!": "nicht"
|
||||
"=": "zuweisen"
|
||||
"==": "entspricht"
|
||||
"===": "entspricht strikt"
|
||||
"!=": "entspricht nicht"
|
||||
"!==": "entspricht strikt nicht"
|
||||
">": "ist größer als"
|
||||
">=": "ist größer als oder gleich"
|
||||
"<": "ist kleiner als"
|
||||
"<=": "ist kleiner als oder gleich"
|
||||
"*": "multipliziert um"
|
||||
"/": "dividiert durch"
|
||||
"+": "plus"
|
||||
"-": "minus"
|
||||
"+=": "addieren und zuweisen"
|
||||
"-=": "subtrahieren und zuweisen"
|
||||
True: "Wahr"
|
||||
true: "wahr"
|
||||
False: "Falsch"
|
||||
false: "falsch"
|
||||
undefined: "undefiniert"
|
||||
null: "nichts"
|
||||
nil: "nichts"
|
||||
None: "Kein"
|
||||
|
||||
# share_progress_modal:
|
||||
# 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"
|
||||
required: "Du musst dich vorher einloggen um dort hin zu gehen."
|
||||
login_switch: "Du hast bereits einen Account?"
|
||||
# school_name: "School Name and City"
|
||||
# optional: "optional"
|
||||
# school_name_placeholder: "Example High School, Springfield, IL"
|
||||
# or_sign_up_with: "or sign up with"
|
||||
# connected_gplus_header: "You've successfully connected with Google+!"
|
||||
# connected_gplus_p: "Finish signing up so you can log in with your Google+ account."
|
||||
# gplus_exists: "You already have an account associated with Google+!"
|
||||
# connected_facebook_header: "You've successfully connected with Facebook!"
|
||||
# connected_facebook_p: "Finish signing up so you can log in with your Facebook account."
|
||||
# facebook_exists: "You already have an account associated with Facebook!"
|
||||
# hey_students: "Students, enter the class code from your teacher."
|
||||
# birthday: "Birthday"
|
||||
school_name: "Schulname und Stadt"
|
||||
optional: "Optional"
|
||||
school_name_placeholder: "Beispiel Schule, Springfield, IL"
|
||||
or_sign_up_with: "oder melde dich an mit"
|
||||
connected_gplus_header: "Du hast dich erfolgreich über Google+ verbunden!"
|
||||
connected_gplus_p: "Vervollständige die Anmeldung um dich mit deinem Google+ Account anzumelden."
|
||||
gplus_exists: "Du hast bereits einen verknüpften Google+ Account!"
|
||||
connected_facebook_header: "Du hast dich erfolgreich über Facebook verbunden!"
|
||||
connected_facebook_p: "Vervollständige die Anmeldung um dich mit deinem Facebook Account anzumelden."
|
||||
facebook_exists: "Du hast bereits einen verknüpften Facebook Account!"
|
||||
hey_students: "Schüler, gebt den Klassencode eures Lehrers ein."
|
||||
birthday: "Geburstag"
|
||||
|
||||
recover:
|
||||
recover_account_title: "Account Wiederherstellung"
|
||||
|
@ -316,23 +316,23 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
|
|||
date: "Datum"
|
||||
body: "Inhalt"
|
||||
version: "Version"
|
||||
# pending: "Pending"
|
||||
# accepted: "Accepted"
|
||||
# rejected: "Rejected"
|
||||
# withdrawn: "Withdrawn"
|
||||
# accept: "Accept"
|
||||
# reject: "Reject"
|
||||
# withdraw: "Withdraw"
|
||||
pending: "Ausstehend"
|
||||
accepted: "Akzeptiert"
|
||||
rejected: "Abgelehnt"
|
||||
withdrawn: "Zurückgezogen"
|
||||
accept: "Akzeptieren"
|
||||
reject: "Abgelehnen"
|
||||
withdraw: "Zurückziehen"
|
||||
submitter: "Veröffentlicher"
|
||||
submitted: "Veröffentlicht"
|
||||
commit_msg: "Nachricht absenden"
|
||||
version_history: "Versionshistorie"
|
||||
version_history_for: "Versionsgeschichte für: "
|
||||
# select_changes: "Select two changes below to see the difference."
|
||||
# undo_prefix: "Undo"
|
||||
# undo_shortcut: "(Ctrl+Z)"
|
||||
# redo_prefix: "Redo"
|
||||
# redo_shortcut: "(Ctrl+Shift+Z)"
|
||||
select_changes: "Wählen zwei Änderungen unterhalb um den Unterschied zu sehen."
|
||||
undo_prefix: "Rückgängig"
|
||||
undo_shortcut: "(Strg+Z)"
|
||||
redo_prefix: "Wiederherstellen"
|
||||
redo_shortcut: "(Strg+Umschalt+Z)"
|
||||
play_preview: "Vorschau vom aktuellen Level spielen"
|
||||
result: "Ergebnis"
|
||||
results: "Ergebnisse"
|
||||
|
@ -341,7 +341,7 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
|
|||
subject: "Betreff"
|
||||
email: "Email"
|
||||
password: "Passwort"
|
||||
# confirm_password: "Confirm Password"
|
||||
confirm_password: "Passwort bestätigen"
|
||||
message: "Nachricht"
|
||||
code: "Code"
|
||||
ladder: "Rangliste"
|
||||
|
@ -357,12 +357,12 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
|
|||
hard: "Schwer"
|
||||
player: "Spieler"
|
||||
player_level: "Spielerlevel" # Like player level 5, not like level: Dungeons of Kithgard
|
||||
# warrior: "Warrior"
|
||||
# ranger: "Ranger"
|
||||
# wizard: "Wizard"
|
||||
# first_name: "First Name"
|
||||
# last_name: "Last Name"
|
||||
# username: "Username"
|
||||
warrior: "Krieger"
|
||||
ranger: "Jäger"
|
||||
wizard: "Hexer"
|
||||
first_name: "Vorname"
|
||||
last_name: "Nachname"
|
||||
username: "Benutzername"
|
||||
|
||||
units:
|
||||
second: "Sekunde"
|
||||
|
@ -1869,19 +1869,19 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
|
|||
license: "Lizenz"
|
||||
oreilly: "Ebook deiner Wahl"
|
||||
|
||||
# calendar:
|
||||
# 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"
|
||||
calendar:
|
||||
year: "Jahr"
|
||||
day: "Tag"
|
||||
month: "Monat"
|
||||
january: "Januar"
|
||||
february: "Februar"
|
||||
march: "März"
|
||||
april: "April"
|
||||
may: "Mai"
|
||||
june: "Juni"
|
||||
july: "Juli"
|
||||
august: "August"
|
||||
september: "September"
|
||||
october: "Oktober"
|
||||
november: "November"
|
||||
december: "Dezember"
|
||||
|
|
|
@ -243,6 +243,7 @@
|
|||
|
||||
login:
|
||||
sign_up: "Create Account"
|
||||
email_or_username: "Email or username"
|
||||
log_in: "Log In"
|
||||
logging_in: "Logging In"
|
||||
log_out: "Log Out"
|
||||
|
@ -439,6 +440,8 @@
|
|||
tome_available_spells: "Available Spells"
|
||||
tome_your_skills: "Your Skills"
|
||||
tome_current_method: "Current Method"
|
||||
hints: "Hints"
|
||||
hints_title: "Hint {{number}}"
|
||||
code_saved: "Code Saved"
|
||||
skip_tutorial: "Skip (esc)"
|
||||
keyboard_shortcuts: "Key Shortcuts"
|
||||
|
@ -711,9 +714,6 @@
|
|||
music_label: "Music"
|
||||
music_description: "Turn background music on/off."
|
||||
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_description: "Displays autocomplete suggestions while typing."
|
||||
editor_config_invisibles_label: "Show Invisibles"
|
||||
|
@ -1279,7 +1279,8 @@
|
|||
student_age_range_to: "to"
|
||||
create_class: "Create Class"
|
||||
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_title: "Your account needs attention!"
|
||||
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:"
|
||||
you_can_edit: "You can edit your email address in "
|
||||
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_dashboard: "Teacher Dashboard" # Navbar
|
||||
|
@ -1341,6 +1345,7 @@
|
|||
unarchive_class: "unarchive class"
|
||||
unarchive_this_class: "Unarchive this class"
|
||||
no_students_yet: "This class has no students yet."
|
||||
try_refreshing: "(You may need to refresh the page)"
|
||||
add_students: "Add Students"
|
||||
create_new_class: "Create a New Class"
|
||||
class_overview: "Class Overview" # View Class page
|
||||
|
@ -1423,6 +1428,7 @@
|
|||
status_expired: "Expired on {{date}}"
|
||||
status_not_enrolled: "Not Enrolled"
|
||||
status_enrolled: "Expires on {{date}}"
|
||||
select_all: "Select All"
|
||||
|
||||
classes:
|
||||
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."
|
||||
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}
|
||||
# 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"
|
||||
real_code: "Escritura real de código"
|
||||
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."
|
||||
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."
|
||||
# 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."
|
||||
# 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_title: "Configure su clase hoy"
|
||||
# get_started_subtitle: "Configure a class, add your students, and monitor their progress as they learn computer science."
|
||||
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}
|
||||
logged_in_as: "Estás actualmente conectado como"
|
||||
view_my_classes: "Ver mis clases"
|
||||
|
@ -79,10 +79,10 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
teachers: "Maestros!"
|
||||
teachers_and_educators: "Maestros y Educadores"
|
||||
# class_in_box: "Learn how our classroom-in-a-box platform fits into your curriculum."
|
||||
# get_started: "Get Started"
|
||||
get_started: "Iniciarse"
|
||||
students: "Estudiantes:"
|
||||
join_class: "Unirse a una clase"
|
||||
# role: "Your role:"
|
||||
role: "Su rol:"
|
||||
student_count: "Número de estudiantes:"
|
||||
start_playing_for_free: "Empieza a jugar gratis!"
|
||||
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_progress: "Ver mi progreso"
|
||||
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_range: "Seleccione el tamaño de la clase"
|
||||
|
||||
|
@ -102,7 +102,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
blog: "Blog"
|
||||
forum: "Foro"
|
||||
account: "Cuenta"
|
||||
# my_account: "My Account"
|
||||
my_account: "Mi Cuenta"
|
||||
profile: "Perfil"
|
||||
stats: "Estadísticas"
|
||||
code: "Código"
|
||||
|
@ -112,7 +112,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
about: "Acerca"
|
||||
contact: "Contacto"
|
||||
twitter_follow: "Seguir"
|
||||
# students: "Students"
|
||||
students: "Estudiantes"
|
||||
teachers: "Maestros"
|
||||
careers: "Carreras"
|
||||
facebook: "Facebook"
|
||||
|
@ -125,9 +125,9 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
schools: "Escuelas"
|
||||
# educator_wiki: "Educator Wiki"
|
||||
get_involved: "Participa"
|
||||
# open_source: "Open source (GitHub)"
|
||||
# support: "Support"
|
||||
# faqs: "FAQs"
|
||||
open_source: "Código Libre (GitHub)"
|
||||
support: "Soporte"
|
||||
faqs: "FAQs"
|
||||
help_pref: "¿Necesitas ayuda? Envianos un correó electronico!"
|
||||
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_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.)
|
||||
# else: "else"
|
||||
# elif: "else if"
|
||||
|
@ -204,14 +204,14 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
# this: "this"
|
||||
# or: "or"
|
||||
# "||": "or"
|
||||
# and: "and"
|
||||
# "&&": "and"
|
||||
# not: "not"
|
||||
# "!": "not"
|
||||
and: "y"
|
||||
"&&": "y"
|
||||
not: "no"
|
||||
"!": "no"
|
||||
# "=": "assign"
|
||||
# "==": "equals"
|
||||
# "===": "strictly equals"
|
||||
# "!=": "does not equal"
|
||||
"==": "iguala"
|
||||
"===": "iguala estrictamente"
|
||||
"!=": "no iguala"
|
||||
# "!==": "does not strictly equal"
|
||||
# ">": "is greater than"
|
||||
# ">=": "is greater than or equal"
|
||||
|
@ -219,15 +219,15 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
# "<=": "is less than or equal"
|
||||
# "*": "multiplied by"
|
||||
# "/": "divided by"
|
||||
# "+": "plus"
|
||||
# "-": "minus"
|
||||
"+": "mas"
|
||||
"-": "menos"
|
||||
# "+=": "add and assign"
|
||||
# "-=": "subtract and assign"
|
||||
# True: "True"
|
||||
# true: "true"
|
||||
# False: "False"
|
||||
# false: "false"
|
||||
# undefined: "undefined"
|
||||
True: "Verdadero"
|
||||
true: "verdadero"
|
||||
False: "Falso"
|
||||
false: "falso"
|
||||
undefined: "undefinido"
|
||||
# null: "null"
|
||||
# nil: "nil"
|
||||
# None: "None"
|
||||
|
@ -265,13 +265,13 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
school_name_placeholder: "Ejemplo: High School, Springfield, IL"
|
||||
or_sign_up_with: "o conectate a travez de:"
|
||||
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."
|
||||
# gplus_exists: "You already have an account associated with Google+!"
|
||||
connected_gplus_p: "Termina el registro para que inicies sesión con tu cuenta de Google+."
|
||||
gplus_exists: "Ya tienes asociada una cuenta con Google+!"
|
||||
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."
|
||||
# facebook_exists: "You already have an account associated with Facebook!"
|
||||
# hey_students: "Students, enter the class code from your teacher."
|
||||
# birthday: "Birthday"
|
||||
connected_facebook_p: "Termina el registro para que inicies sesión con tu cuenta de Facebook."
|
||||
facebook_exists: "Ya tienes asociada una cuenta Facebook!"
|
||||
hey_students: "Estudiante, ingresa el coódigo de clase de tu maestro."
|
||||
birthday: "Cumpleaños"
|
||||
|
||||
recover:
|
||||
recover_account_title: "recuperar cuenta"
|
||||
|
@ -341,7 +341,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
subject: "Asunto"
|
||||
email: "Email"
|
||||
password: "Contraseña"
|
||||
# confirm_password: "Confirm Password"
|
||||
confirm_password: "Confirme Contraseña"
|
||||
message: "Mensaje"
|
||||
code: "Código"
|
||||
ladder: "Escalera"
|
||||
|
@ -425,7 +425,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
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_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"
|
||||
tome_cast_button_run: "Ejecutar"
|
||||
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_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_adding_orgres: "Rounding up ogres."
|
||||
# tip_sharpening_swords: "Sharpening the swords."
|
||||
# tip_adding_orgres: "Rounding up ogros."
|
||||
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_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_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_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_programming_not_about_computers: "Computer Science is no more about computers than astronomy is about telescopes. - Edsger Dijkstra"
|
||||
# tip_mulan: "Believe you can, then you will. - Mulan"
|
||||
# tip_programming_not_about_computers: "La ciencia cpomputacional is no more about computers than astronomy is about telescopes. - Edsger Dijkstra"
|
||||
tip_mulan: "Cree que puedes, y entonces lo harás. - Mulan"
|
||||
|
||||
game_menu:
|
||||
inventory_tab: "Inventario"
|
||||
|
@ -585,7 +585,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
feature5: "Video tutoriales"
|
||||
feature6: "Soporte Premium vía email"
|
||||
feature7: "<strong>Clan</strong> Privado"
|
||||
# feature8: "<strong>No ads!</strong>"
|
||||
feature8: "<strong>¡Sin publicidad!</strong>"
|
||||
free: "Gratis"
|
||||
month: "mes"
|
||||
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."
|
||||
|
||||
skill_docs:
|
||||
# function: "function" # skill types
|
||||
# method: "method"
|
||||
function: "función" # skill types
|
||||
method: "método"
|
||||
# snippet: "snippet"
|
||||
# number: "number"
|
||||
# array: "array"
|
||||
# object: "object"
|
||||
# string: "string"
|
||||
number: "número"
|
||||
array: "arreglo"
|
||||
object: "objeto"
|
||||
string: "cadena"
|
||||
writable: "escribible" # Hover over "attack" in Your Skills while playing a level to see most of this
|
||||
read_only: "Sólo Lectura"
|
||||
action: "Acción"
|
||||
|
@ -753,9 +753,9 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
robin_blurb: "Scaffolding"
|
||||
josh_title: "Diseñador de Juegos"
|
||||
josh_blurb: "El piso es Lava"
|
||||
# phoenix_title: "Software Engineer"
|
||||
# nolan_title: "Territory Manager"
|
||||
# elliot_title: "Partnership Manager"
|
||||
phoenix_title: "Ingeniero de Software"
|
||||
nolan_title: "Administrador de territorio"
|
||||
# elliot_title: "Administrador de Partnership"
|
||||
retrostyle_title: "Ilustración"
|
||||
retrostyle_blurb: "Juegos con estilo Retro"
|
||||
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_5: "Desarrollo profesional y soporte de formación continua" # {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_10: "Maternity leave: 10 weeks paid, next 6 @ 55% salary"
|
||||
# jobs_benefit_11: "Paternity leave: 10 weeks paid"
|
||||
# jobs_benefit_10: "Maternity leave: 10 semanas pagadas, next 6 @ 55% salary"
|
||||
# jobs_benefit_11: "Paternity leave: 10 semanas pagadas"
|
||||
learn_more: "Aprender Más"
|
||||
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!"
|
||||
|
@ -824,10 +824,10 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
email_exists: "Existe un usuario con este email."
|
||||
phone_number: "Teléfono"
|
||||
phone_number_help: "¿Dónde podemos contactarte durante el horario de trabajo ?"
|
||||
# primary_role_label: "Your Primary Role"
|
||||
# role_default: "Select Role"
|
||||
# primary_role_default: "Select Primary Role"
|
||||
# purchaser_role_default: "Select Purchaser Role"
|
||||
primary_role_label: "Tu Rol Primario"
|
||||
role_default: "Seleccione Rol"
|
||||
primary_role_default: "Seleccione Rol Primario"
|
||||
# purchaser_role_default: "Seleccione Purchaser Role"
|
||||
tech_coordinator: "Coordinador de tecnología"
|
||||
advisor: "Tutor"
|
||||
principal: "Director"
|
||||
|
@ -835,15 +835,15 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
parent: "Padre"
|
||||
# purchaser_role_label: "Your Purchaser Role"
|
||||
# influence_advocate: "Influence/Advocate"
|
||||
# evaluate_recommend: "Evaluate/Recommend"
|
||||
# approve_funds: "Approve Funds"
|
||||
evaluate_recommend: "Evaluar/Recomendar"
|
||||
approve_funds: "Aprobar Fondos"
|
||||
# no_purchaser_role: "No role in purchase decisions"
|
||||
organization_label: "Escuela / Distrito"
|
||||
city: "Ciudad"
|
||||
state: "Estado"
|
||||
country: "País"
|
||||
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_help: "Elegí todas las que correspondan."
|
||||
elementary_school: "Escuela Primaria"
|
||||
|
@ -853,19 +853,19 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
college_plus: "Universidad o superior"
|
||||
anything_else: "¿Algo más que deberíamos saber?"
|
||||
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}
|
||||
# back_to_classes: "Back to Classes"
|
||||
# finish_signup: "Finish creating your teacher account:"
|
||||
# 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: "Sign up with:"
|
||||
# connect_with: "Connect with:"
|
||||
back_to_classes: "Volver a las clases"#"Back to Clases"
|
||||
finish_signup: "Termine la creación de su cuenta de maestro:"
|
||||
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: "Registrarse con:"
|
||||
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."
|
||||
# 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>!"
|
||||
# convert_account_title: "Update to Teacher Account"
|
||||
# not: "Not"
|
||||
not: "No"
|
||||
# setup_a_class: "Set Up a Class"
|
||||
|
||||
versions:
|
||||
|
@ -975,7 +975,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
social_facebook: "Me Gusta CodeCombat en Facebook"
|
||||
social_twitter: "Sigue a CodeCombat en Twitter"
|
||||
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"
|
||||
|
||||
clans:
|
||||
|
@ -1080,8 +1080,8 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
buy_course1: "Comprar este curso"
|
||||
select_all_courses: "Seleccione 'Todos los cursos' para un 50% de descuento!"
|
||||
all_courses: "Todos los Cursos"
|
||||
# number_programming_students: "Number of Programming Students"
|
||||
# number_total_students: "Total Students in School/District"
|
||||
# number_programming_students: "Número de Programming Students"
|
||||
# number_total_students: "Total Students en School/District"
|
||||
enter_number_students: "Introducir el número de estudiantes que necesita para este 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."
|
||||
|
@ -1234,8 +1234,8 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
additional_resources: "Recursos Adicionales"
|
||||
additional_resources_1_pref: "Descargar/imprimir nuestra"
|
||||
additional_resources_1_mid: "Guía para maestros: Curso 1"
|
||||
# additional_resources_1_mid2: "and"
|
||||
# additional_resources_1_mid3: "Course 2"
|
||||
additional_resources_1_mid2: "y"
|
||||
additional_resources_1_mid3: "Curso 2"
|
||||
additional_resources_1_suff: "explicaciones y soluciones para cada nivel." # {change}
|
||||
additional_resources_2_pref: "Complete nuestro"
|
||||
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
|
||||
# subtitle: "Review course guidelines, solutions, and levels"
|
||||
# changelog: "View latest changes to course levels."
|
||||
# select_language: "Select language"
|
||||
# select_level: "Select level"
|
||||
# play_level: "Play Level"
|
||||
select_language: "Seleccione lenguaje"
|
||||
select_level: "Seleccione nivel"
|
||||
# play_level: "Play Nivel"
|
||||
concepts_covered: "Conceptos Cubiertos"
|
||||
# print_guide: "Print Guide (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"
|
||||
# teacher_account_restricted: "Your account is a teacher account, and so cannot access student content."
|
||||
|
||||
# teacher:
|
||||
teacher:
|
||||
# teacher_dashboard: "Teacher Dashboard" # Navbar
|
||||
# my_classes: "My Classes"
|
||||
# courses: "Courses"
|
||||
# enrollments: "Enrollments"
|
||||
# resources: "Resources"
|
||||
# help: "Help"
|
||||
help: "Ayuda"
|
||||
# students: "Students" # Shared
|
||||
# language: "Language"
|
||||
language: "Lenguaje"
|
||||
# edit_class_settings: "edit class settings"
|
||||
# complete: "Complete"
|
||||
# access_restricted: "Account Update Required"
|
||||
|
@ -1368,8 +1368,8 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
# total_enrolled_students: "Total Enrolled Students"
|
||||
# unenrolled_students: "Unenrolled Students"
|
||||
# add_enrollment_credits: "Add Enrollment Credits"
|
||||
# purchasing: "Purchasing..."
|
||||
# purchased: "Purchased!"
|
||||
purchasing: "Adquiriendo..."
|
||||
purchased: "Adquirido!"
|
||||
# purchase_now: "Purchase Now"
|
||||
# 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."
|
||||
|
@ -1398,7 +1398,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
ambassador_title: "Embajador"
|
||||
ambassador_title_description: "(Soporte)"
|
||||
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:
|
||||
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_4: "y ahí empezaremos!"
|
||||
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."
|
||||
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."
|
||||
|
@ -1555,7 +1555,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
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_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."
|
||||
diligent_scribes: "Nuestros diligentes Escribas:"
|
||||
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_can3: "que puede ser aplicado a tu propia cuenta o regalado a otros."
|
||||
|
||||
# coppa_deny:
|
||||
# text1: "Can’t wait to learn programming?"
|
||||
# text2: "Ask your parents to create an account for you!"
|
||||
# close: "Close Window"
|
||||
coppa_deny:
|
||||
text1: "¿No puedes esperar para aprender a programar?"
|
||||
# text2: "Ask your parents que creen una cuenta for you!"
|
||||
close: "Cerrar ventana"
|
||||
|
||||
loading_error:
|
||||
could_not_load: "Error cargando del servidor"
|
||||
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."
|
||||
# login_required: "Login Required"
|
||||
login_required: "Login Requerido"
|
||||
# login_required_desc: "You need to be logged in to access this page."
|
||||
unauthorized: "Necesitas acceder. ¿Tienes desabilitadas las cookies?"
|
||||
forbidden: "No tienes los permisos."
|
||||
|
@ -1869,19 +1869,19 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
|
|||
license: "licencia"
|
||||
oreilly: "ebook de su elección"
|
||||
|
||||
# calendar:
|
||||
# year: "Year"
|
||||
# day: "Day"
|
||||
# month: "Month"
|
||||
calendar:
|
||||
year: "Año"
|
||||
day: "Día"
|
||||
month: "Mes"
|
||||
# january: "January"
|
||||
# february: "February"
|
||||
# march: "March"
|
||||
# april: "April"
|
||||
# may: "May"
|
||||
# june: "June"
|
||||
# july: "July"
|
||||
june: "Junio"
|
||||
july: "Julio"
|
||||
# august: "August"
|
||||
# september: "September"
|
||||
# october: "October"
|
||||
# november: "November"
|
||||
# december: "December"
|
||||
december: "Diciembre"
|
||||
|
|
|
@ -15,8 +15,8 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
|||
or_ipad: "O descargalo para iPad"
|
||||
|
||||
new_home:
|
||||
# slogan: "The most engaging game for learning programming."
|
||||
# classroom_edition: "Classroom Edition:"
|
||||
slogan: "El juego más atractivo para aprender a programar."
|
||||
classroom_edition: "Edición para aulas:"
|
||||
learn_to_code: "Aprende a programar:"
|
||||
teacher: "Profesor"
|
||||
student: "Alumno"
|
||||
|
@ -31,24 +31,24 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
|||
designed_with: "Diseñado pensando en los profesores"
|
||||
real_code: "Real, escribe código"
|
||||
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."
|
||||
# educator_resources: "Educator resources"
|
||||
# course_guides: "and course guides"
|
||||
# teaching_computer_science: "Teaching computer science does not require a costly degree, because we provide tools to support educators of all backgrounds."
|
||||
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: "Recursos para educadores"
|
||||
course_guides: "y guías de cursos"
|
||||
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"
|
||||
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."
|
||||
# forgot_learning: "I think they actually forgot that they were actually learning something."
|
||||
# wanted_to_do: " Coding is something I've always wanted to do, and I never thought I would be able to learn it in school."
|
||||
# why_games: "Why is learning through games important?"
|
||||
# games_reward: "Games reward the productive struggle."
|
||||
# encourage: "Gaming is a medium that encourages interaction, discovery, and trial-and-error. A good game challenges the player to master skills over time, which is the same critical process students go through as they learn."
|
||||
# excel: "Games excel at rewarding"
|
||||
# struggle: "productive struggle"
|
||||
# kind_of_struggle: "the kind of struggle that results in learning that’s engaging and"
|
||||
# motivating: "motivating"
|
||||
# not_tedious: "not tedious."
|
||||
# gaming_is_good: "Studies suggest gaming is good for children’s brains. (it’s true!)"
|
||||
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: "En realidad creo que que ellos olvidaron que en realidad están aprendiendo algo."
|
||||
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: "¿Por qué aprender usando juegos es importante?"
|
||||
games_reward: "Los juegos premian el esfuerzo productivo"
|
||||
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: "Los juegos son excelentes premiando"
|
||||
struggle: "el esfuerzo productivo"
|
||||
kind_of_struggle: "el tipo de esfuerzo que resulta en aprendizaje learning que es atractivo y"
|
||||
motivating: "motivante"
|
||||
not_tedious: "no tedioso."
|
||||
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"
|
||||
# compared: "compared"
|
||||
# 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."
|
||||
# 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."
|
||||
# request_demo: "Request a Demo"
|
||||
request_demo: "Pide una demostración"
|
||||
# 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"
|
||||
# view_my_classes: "View my classes"
|
||||
view_my_classes: "Ver mis clases"
|
||||
# computer_science: "Computer science courses for all ages"
|
||||
# show_me_lesson_time: "Show me lesson time estimates for:"
|
||||
# curriculum: "Total curriculum hours:"
|
||||
|
@ -905,17 +905,17 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
|||
wrong_password: "Contraseña incorrecta"
|
||||
upload_picture: "Sube una imagen"
|
||||
delete_this_account: "Eliminar esta cuenta de forma permanente"
|
||||
# reset_progress_tab: "Reset All Progress"
|
||||
# reset_your_progress: "Clear all your progress and start over"
|
||||
reset_progress_tab: "Reestablecer progreso"
|
||||
reset_your_progress: "Elimina tu progreso y empieza de nuevo"
|
||||
god_mode: "Modo Dios"
|
||||
password_tab: "Contraseña"
|
||||
emails_tab: "Correos electrónicos"
|
||||
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_verify: "Verificar"
|
||||
type_in_email: "Introduce tu email para confirmar el borrado de esta cuenta"
|
||||
# type_in_email_progress: "Type in your email to confirm deleting your progress."
|
||||
type_in_email: "Introduce tu correo para confirmar el borrado de esta cuenta"
|
||||
type_in_email_progress: "TypeIntroduce tu correo para confirmar el borrado de tu progreso."
|
||||
type_in_password: "Además, introduce tu contraseña."
|
||||
email_subscriptions: "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_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."
|
||||
# teacher_title: "Teacher"
|
||||
teacher_title: "Profesor"
|
||||
|
||||
editor:
|
||||
main_title: "Editores de CodeCombat"
|
||||
|
@ -1406,7 +1406,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
|||
thang_title: "Editor de Objetos"
|
||||
level_title: "Editor de Niveles"
|
||||
achievement_title: "Editor de Logros"
|
||||
# poll_title: "Poll Editor"
|
||||
poll_title: "Editor de Encuestas"
|
||||
back: "Volver"
|
||||
revert: "Revertir"
|
||||
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_login: "Inicia sesión para Crear un Nuevo Logro"
|
||||
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í"
|
||||
thang_search_title: "Busca tipos de objetos 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_4: "¡y partiremos desde ese punto!"
|
||||
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."
|
||||
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."
|
||||
|
@ -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_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_subscribe_desc: "Recibe correos sobre actualizaciones de soporte y desarrollo del multijugador."
|
||||
# teacher_subscribe_desc: "Get emails on updates and announcements for teachers."
|
||||
ambassador_subscribe_desc: "Recibe correos acerca de actualizaciones de soporte y desarrollo del multijugador."
|
||||
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."
|
||||
diligent_scribes: "Nuestros diligentes Escribas:"
|
||||
powerful_archmages: "Nuestros poderosos Archimagos:"
|
||||
|
@ -1610,7 +1610,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
|||
fight: "¡Pelea!"
|
||||
watch_victory: "Ver tu victoria"
|
||||
defeat_the: "Vence a"
|
||||
# watch_battle: "Watch the battle"
|
||||
watch_battle: "Observa la batalla"
|
||||
tournament_started: ", iniciado"
|
||||
tournament_ends: "El torneo termina"
|
||||
tournament_ended: "El torneo ha terminado"
|
||||
|
@ -1659,7 +1659,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
|||
|
||||
account:
|
||||
payments: "Pagos"
|
||||
# prepaid_codes: "Prepaid Codes"
|
||||
prepaid_codes: "Código prepagados"
|
||||
purchased: "Adquirido"
|
||||
subscription: "Suscripción"
|
||||
invoices: "Facturas"
|
||||
|
@ -1711,10 +1711,10 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
|||
# you_can2: "purchase a prepaid code"
|
||||
# you_can3: "that can be applied to your own account or given to others."
|
||||
|
||||
# coppa_deny:
|
||||
# text1: "Can’t wait to learn programming?"
|
||||
# text2: "Ask your parents to create an account for you!"
|
||||
# close: "Close Window"
|
||||
coppa_deny:
|
||||
text1: "¿No puedes esperar para empezar a programar?"
|
||||
text2: "¡Pide a tus padres que hagan una cuenta para ti!"
|
||||
close: "Cerrar ventana"
|
||||
|
||||
loading_error:
|
||||
could_not_load: "Error al cargar desde el servidor."
|
||||
|
@ -1860,7 +1860,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
|||
prizes: "Premios"
|
||||
total_value: "Valor Total"
|
||||
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"
|
||||
heap: "Por seis meses de acceso \"Startup\""
|
||||
credits: "creditos"
|
||||
|
@ -1869,19 +1869,19 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
|
|||
license: "licencia"
|
||||
oreilly: "ebook de tu eleccion"
|
||||
|
||||
# calendar:
|
||||
# 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"
|
||||
calendar:
|
||||
year: "Año"
|
||||
day: "Día"
|
||||
month: "Mes"
|
||||
january: "Enero"
|
||||
february: "Febrero"
|
||||
march: "Marzo"
|
||||
april: "Abril"
|
||||
may: "Mayo"
|
||||
june: "Junio"
|
||||
july: "Julio"
|
||||
august: "Agosto"
|
||||
september: "Septiembre"
|
||||
october: "Octubre"
|
||||
november: "Noviembre"
|
||||
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.
|
||||
or_ipad: "Ou télécharger pour iPad"
|
||||
|
||||
# new_home:
|
||||
# slogan: "The most engaging game for learning programming."
|
||||
# classroom_edition: "Classroom Edition:"
|
||||
# learn_to_code: "Learn to code:"
|
||||
# teacher: "Teacher"
|
||||
# student: "Student"
|
||||
# play_now: "Play Now"
|
||||
# im_a_teacher: "I'm a Teacher"
|
||||
# im_a_student: "I'm a Student"
|
||||
# learn_more: "Learn more"
|
||||
# classroom_in_a_box: "A classroom in-a-box for teaching computer science."
|
||||
# codecombat_is: "CodeCombat is a platform <strong>for students</strong> to learn computer science while playing through a real game."
|
||||
# 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."
|
||||
# top_screenshots_hint: "Students write code and see their changes update in real-time"
|
||||
# designed_with: "Designed with teachers in mind"
|
||||
# real_code: "Real, typed code"
|
||||
# from_the_first_level: "from the first level"
|
||||
# getting_students: "Getting students to typed code as quickly as possible is critical to learning programming syntax and proper structure."
|
||||
# educator_resources: "Educator resources"
|
||||
# course_guides: "and course guides"
|
||||
# teaching_computer_science: "Teaching computer science does not require a costly degree, because we provide tools to support educators of all backgrounds."
|
||||
# accessible_to: "Accessible to"
|
||||
# everyone: "everyone"
|
||||
# democratizing: "Democratizing the process of learning coding is at the core of our philosophy. Everyone should be able to learn to code."
|
||||
# forgot_learning: "I think they actually forgot that they were actually learning something."
|
||||
# wanted_to_do: " Coding is something I've always wanted to do, and I never thought I would be able to learn it in school."
|
||||
# why_games: "Why is learning through games important?"
|
||||
# games_reward: "Games reward the productive struggle."
|
||||
# encourage: "Gaming is a medium that encourages interaction, discovery, and trial-and-error. A good game challenges the player to master skills over time, which is the same critical process students go through as they learn."
|
||||
# excel: "Games excel at rewarding"
|
||||
# struggle: "productive struggle"
|
||||
# kind_of_struggle: "the kind of struggle that results in learning that’s engaging and"
|
||||
# motivating: "motivating"
|
||||
# not_tedious: "not tedious."
|
||||
# gaming_is_good: "Studies suggest gaming is good for children’s brains. (it’s true!)"
|
||||
# game_based: "When game-based learning systems are"
|
||||
# compared: "compared"
|
||||
# conventional: "against conventional assessment methods, the difference is clear: games are better at helping students retain knowledge, concentrate and"
|
||||
# perform_at_higher_level: "perform at a higher level of achievement"
|
||||
# feedback: "Games also provide real-time feedback that allows students to adjust their solution path and understand concepts more holistically, instead of being limited to just “correct” or “incorrect” answers."
|
||||
# real_game: "A real game, played with real coding."
|
||||
# great_game: "A great game is more than just badges and achievements - it’s about a player’s journey, well-designed puzzles, and the ability to tackle challenges with agency and confidence."
|
||||
# agency: "CodeCombat is a game that gives players that agency and confidence with our robust typed code engine, which helps beginner and advanced students alike write proper, valid code."
|
||||
# request_demo_title: "Get your students started today!"
|
||||
# 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_subtitle: "Set up a class, add your students, and monitor their progress as they learn computer science."
|
||||
# request_demo: "Request a Demo"
|
||||
# setup_a_class: "Set Up a Class"
|
||||
# have_an_account: "Have an account?"
|
||||
# logged_in_as: "You are currently logged in as"
|
||||
# view_my_classes: "View my classes"
|
||||
# computer_science: "Computer science courses for all ages"
|
||||
# show_me_lesson_time: "Show me lesson time estimates for:"
|
||||
# curriculum: "Total curriculum hours:"
|
||||
# ffa: "Free for all students"
|
||||
# lesson_time: "Lesson time:"
|
||||
# coming_soon: "Coming soon!"
|
||||
# courses_available_in: "Courses are available in JavaScript, Python, and Java (coming soon!)"
|
||||
# boast: "Boasts riddles that are complex enough to fascinate gamers and coders alike."
|
||||
# winning: "A winning combination of RPG gameplay and programming homework that pulls off making kid-friendly education legitimately enjoyable."
|
||||
# run_class: "Everything you need to run a computer science class in your school today, no CS background required."
|
||||
# teachers: "Teachers!"
|
||||
# teachers_and_educators: "Teachers & Educators"
|
||||
# class_in_box: "Learn how our classroom-in-a-box platform fits into your curriculum."
|
||||
new_home:
|
||||
slogan: "Le jeu le plus engageant pour apprendre la programmation."
|
||||
classroom_edition: "Édition Classe:"
|
||||
learn_to_code: "Apprend à programmer:"
|
||||
teacher: "Enseignant"
|
||||
student: "Étudiant"
|
||||
play_now: "Jouez Maintenant"
|
||||
im_a_teacher: "Je suis un enseignant"
|
||||
im_a_student: "Je suis un étudiant"
|
||||
learn_more: "Pour en savoir plus"
|
||||
classroom_in_a_box: "Une classe tout-inclus pour enseigner l'informatique."
|
||||
codecombat_is: "CodeCombat est une plateforme <strong>pour les étudiants</strong> afin d'apprendre l'informatique tout en jouant."
|
||||
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: "Les étudiants écrivent du code et voient leurs changements s'appliqués en temps-réel"
|
||||
designed_with: "Concu en pensant aux enseignants"
|
||||
real_code: "Vrai code entré au clavier"
|
||||
from_the_first_level: "à partir du premier niveau"
|
||||
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: "Resources pour les enseignants"
|
||||
course_guides: "et les guides de cours"
|
||||
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 à"
|
||||
everyone: "tout le monde"
|
||||
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: "Je crois qu'ils ont oublié qu'ils étaient en train d'apprendre quelquechose."
|
||||
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: "Pourquoi est-ce qu'apprendre en jouant est important?"
|
||||
games_reward: "Les jeux récompensent l'effort productif."
|
||||
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: "Les jeux sont excellents afin de récompenser"
|
||||
struggle: "l'effort productif"
|
||||
kind_of_struggle: "le type d'effort qui permet d'apprendre, qui nous engage et"
|
||||
motivating: "qui nous motive"
|
||||
not_tedious: "non pas fastidieux."
|
||||
gaming_is_good: "Des études suggèrent que jouer est bon pour le cerveau des enfants. (C'est vrai!)"
|
||||
game_based: "Quand les systèmes d'apprentissage basés sur le jeu sont"
|
||||
compared: "comparés"
|
||||
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: "à performer à un niveau supérieur d'accomplissement"
|
||||
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: "Un vrai jeu, joué en programmant pour de vrai."
|
||||
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 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: "Débutez avec vos étudiants aujourd'hui!"
|
||||
request_demo_subtitle: "Demandez une démonstration et permettez à vos étudiants de démarrer en moins d'une heure."
|
||||
get_started_title: "Mettez en place votre classe aujourd'hui"
|
||||
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: "Demandez une Démonstration"
|
||||
setup_a_class: "Mettre en place une classe"
|
||||
have_an_account: "Avez-vous un compte?"
|
||||
logged_in_as: "Vous êtes présentement enregistré en tant que"
|
||||
view_my_classes: "Voir Mes Classes"
|
||||
computer_science: "Des cours d'informatique pour tous âges"
|
||||
show_me_lesson_time: "Montrez-moi des estimés de temps de cours pour:"
|
||||
curriculum: "Total des heures du curriculum:"
|
||||
ffa: "Gratuis pour tous les étudiants"
|
||||
lesson_time: "Temps de cours:"
|
||||
coming_soon: "Bientôt disponible!"
|
||||
courses_available_in: "Les cours sont disponibles en JavaScript, Python et Java (bientôt disponible!)"
|
||||
boast: "Comprend des énigmes assez complexes pour fasciner autant les joueurs que les programmeurs."
|
||||
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: "Tous ce dont vous avez besoin pour enseigner l'informaique dans votre classe aujourd'hui, sans expérience préalable en informatique."
|
||||
teachers: "Enseignants!"
|
||||
teachers_and_educators: "Enseignants et éducateurs"
|
||||
class_in_box: "Apprenez comment notre plateforme classe-tout-inclus s'adapte à votre curriculum."
|
||||
# get_started: "Get Started"
|
||||
# students: "Students:"
|
||||
# join_class: "Join Class"
|
||||
# role: "Your role:"
|
||||
# student_count: "Number of students:"
|
||||
# start_playing_for_free: "Start Playing for Free!"
|
||||
# students_and_players: "Students & Players"
|
||||
# goto_classes: "Go to My Classes"
|
||||
# view_profile: "View My Profile"
|
||||
# view_progress: "View Progress"
|
||||
# check_out_wiki: "Check out our new Educator Wiki"
|
||||
# want_coco: "Want CodeCombat at your school?"
|
||||
# form_select_role: "Select primary role"
|
||||
# form_select_range: "Select class size"
|
||||
students: "Étudiants:"
|
||||
join_class: "Joindre une classe"
|
||||
role: "Votre rôle:"
|
||||
student_count: "Nombre d'étudiants:"
|
||||
start_playing_for_free: "Commencez à jouer gratuitement!"
|
||||
students_and_players: "Étudiants et joueurs"
|
||||
goto_classes: "Aller à Mes Classes"
|
||||
view_profile: "Voir Mon Profil"
|
||||
view_progress: "Voir Progrès"
|
||||
check_out_wiki: "Visionner notre nouveau Wiki pour Éducateurs"
|
||||
want_coco: "Voulez-vous CodeCombat à votre école?"
|
||||
form_select_role: "Sélectionnez votre rôle principale"
|
||||
form_select_range: "Sélectionnez la taille de votre classe"
|
||||
|
||||
nav:
|
||||
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"
|
||||
forum: "Forum"
|
||||
account: "Compte"
|
||||
# my_account: "My Account"
|
||||
my_account: "Mon compte"
|
||||
profile: "Profil"
|
||||
stats: "Stats"
|
||||
code: "Code"
|
||||
|
@ -112,24 +112,24 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
|||
about: "À propos"
|
||||
contact: "Contact"
|
||||
twitter_follow: "Suivre"
|
||||
# students: "Students"
|
||||
students: "Étudiants"
|
||||
teachers: "Enseignants"
|
||||
careers: "Emplois"
|
||||
# facebook: "Facebook"
|
||||
# twitter: "Twitter"
|
||||
# create_a_class: "Create a Class"
|
||||
# other: "Other"
|
||||
# learn_to_code: "Learn to Code!"
|
||||
# toggle_nav: "Toggle navigation"
|
||||
# jobs: "Jobs"
|
||||
# schools: "Schools"
|
||||
# educator_wiki: "Educator Wiki"
|
||||
# get_involved: "Get Involved"
|
||||
# open_source: "Open source (GitHub)"
|
||||
# support: "Support"
|
||||
# faqs: "FAQs"
|
||||
# help_pref: "Need help? Email"
|
||||
# help_suff: "and we'll get in touch!"
|
||||
facebook: "Facebook"
|
||||
twitter: "Twitter"
|
||||
create_a_class: "Créer une classe"
|
||||
other: "Autre"
|
||||
learn_to_code: "Apprenez à programmer!"
|
||||
toggle_nav: "Basculer la navigation"
|
||||
jobs: "Emplois"
|
||||
schools: "Écoles"
|
||||
educator_wiki: "Wiki pour les éducateurs"
|
||||
get_involved: "Devenez impliqué"
|
||||
open_source: "Code libre (GitHub)"
|
||||
support: "Support"
|
||||
faqs: "FAQs"
|
||||
help_pref: "Besoin d'aide? Email"
|
||||
help_suff: "et nous entrerons en contact!"
|
||||
|
||||
modal:
|
||||
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_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.)
|
||||
# else: "else"
|
||||
# elif: "else if"
|
||||
# while: "while"
|
||||
# loop: "loop"
|
||||
# for: "for"
|
||||
# break: "break"
|
||||
# continue: "continue"
|
||||
# pass: "pass"
|
||||
# return: "return"
|
||||
# then: "then"
|
||||
# do: "do"
|
||||
# end: "end"
|
||||
# function: "function"
|
||||
# def: "define"
|
||||
# var: "variable"
|
||||
# self: "self"
|
||||
# hero: "hero"
|
||||
# this: "this"
|
||||
# or: "or"
|
||||
# "||": "or"
|
||||
# and: "and"
|
||||
# "&&": "and"
|
||||
# not: "not"
|
||||
# "!": "not"
|
||||
# "=": "assign"
|
||||
# "==": "equals"
|
||||
# "===": "strictly equals"
|
||||
# "!=": "does not equal"
|
||||
# "!==": "does not strictly equal"
|
||||
# ">": "is greater than"
|
||||
# ">=": "is greater than or equal"
|
||||
# "<": "is less than"
|
||||
# "<=": "is less than or equal"
|
||||
# "*": "multiplied by"
|
||||
# "/": "divided by"
|
||||
# "+": "plus"
|
||||
# "-": "minus"
|
||||
# "+=": "add and assign"
|
||||
# "-=": "subtract and assign"
|
||||
# True: "True"
|
||||
# true: "true"
|
||||
# False: "False"
|
||||
# false: "false"
|
||||
# undefined: "undefined"
|
||||
# null: "null"
|
||||
# nil: "nil"
|
||||
# None: "None"
|
||||
else: "Sinon"
|
||||
elif: "et sinon"
|
||||
while: "tant que"
|
||||
loop: "boucle"
|
||||
for: "pour"
|
||||
break: "break"
|
||||
continue: "continue"
|
||||
pass: "passe"
|
||||
return: "retourne"
|
||||
then: "alors"
|
||||
do: "fait"
|
||||
end: "fin"
|
||||
function: "fonction"
|
||||
def: "definit"
|
||||
var: "variable"
|
||||
self: "soi-même"
|
||||
hero: "héros"
|
||||
this: "ceci"
|
||||
or: "or"
|
||||
"||": "ou"
|
||||
and: "et"
|
||||
"&&": "et"
|
||||
not: "n'est pas"
|
||||
"!": "n'est pas"
|
||||
"=": "assigner"
|
||||
"==": "équivalent à"
|
||||
"===": "strictement équivalent à"
|
||||
"!=": "n'est pas équivalent à"
|
||||
"!==": "n'est pas strictement équivalent à"
|
||||
">": "est plus grand que"
|
||||
">=": "est plus grand que ou équivalent à"
|
||||
"<": "is less than"
|
||||
"<=": "est plus petit ou équivalent à"
|
||||
"*": "multiplié par"
|
||||
"/": "divisé par"
|
||||
"+": "plus"
|
||||
"-": "moins"
|
||||
"+=": "ajoute et assigne"
|
||||
"-=": "soustrait et assigne"
|
||||
True: "Vrai"
|
||||
true: "vrai"
|
||||
False: "Faux"
|
||||
false: "faux"
|
||||
undefined: "non défini"
|
||||
null: "nul"
|
||||
nil: "nil"
|
||||
None: "Aucune valeur"
|
||||
|
||||
share_progress_modal:
|
||||
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"
|
||||
optional: "facultatif"
|
||||
school_name_placeholder: "Exemple : Lycée Champollion, Figeac"
|
||||
# or_sign_up_with: "or sign up with"
|
||||
# connected_gplus_header: "You've successfully connected with Google+!"
|
||||
# connected_gplus_p: "Finish signing up so you can log in with your Google+ account."
|
||||
# gplus_exists: "You already have an account associated with Google+!"
|
||||
# connected_facebook_header: "You've successfully connected with Facebook!"
|
||||
# connected_facebook_p: "Finish signing up so you can log in with your Facebook account."
|
||||
# facebook_exists: "You already have an account associated with Facebook!"
|
||||
# hey_students: "Students, enter the class code from your teacher."
|
||||
# birthday: "Birthday"
|
||||
or_sign_up_with: "ou abonnez-vous avec"
|
||||
connected_gplus_header: "Vous avez réussi à vous connecter avec votre compte Google+!"
|
||||
connected_gplus_p: "Finissez de vous abonnez pour pouvoir vous connecter avec votre compte Google+."
|
||||
gplus_exists: "Vous avez déjà un compte associé à Google+!"
|
||||
connected_facebook_header: "Vous avez réussi à vous connecter avec votre compte Facebook!"
|
||||
connected_facebook_p: "Finissez de vous abonnez pour pouvoir vous connecter avec votre compte Facebook."
|
||||
facebook_exists: "Vous avez réussi à vous connecter avec votre compte Facebook!"
|
||||
hey_students: "Étudiants, entrez le code de cours de votre enseignant."
|
||||
birthday: "Anniversaire"
|
||||
|
||||
recover:
|
||||
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_changes: "Soumettre des Changements"
|
||||
save_changes: "Sauvegarder les modifications"
|
||||
# required_field: "Required field"
|
||||
required_field: "Champ requis"
|
||||
|
||||
general:
|
||||
and: "et"
|
||||
|
@ -341,7 +341,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
|||
subject: "Sujet"
|
||||
email: "E-mail"
|
||||
password: "Mot de passe"
|
||||
# confirm_password: "Confirm Password"
|
||||
confirm_password: "Confirmez votre mot de passe"
|
||||
message: "Message"
|
||||
code: "Code"
|
||||
ladder: "Companion"
|
||||
|
@ -360,9 +360,9 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
|||
warrior: "Guerrier"
|
||||
ranger: "Ranger"
|
||||
wizard: "Magicien"
|
||||
# first_name: "First Name"
|
||||
# last_name: "Last Name"
|
||||
# username: "Username"
|
||||
first_name: "Prénom"
|
||||
last_name: "Nom de famille"
|
||||
username: "Nom d'utilisateur"
|
||||
|
||||
units:
|
||||
second: "seconde"
|
||||
|
@ -381,7 +381,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
|||
years: "années"
|
||||
|
||||
play_level:
|
||||
# level_complete: "Level Complete"
|
||||
level_complete: "Niveau complété"
|
||||
completed_level: "Niveau terminé:"
|
||||
course: "Cours:"
|
||||
done: "Fait"
|
||||
|
@ -425,7 +425,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
|||
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_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"
|
||||
tome_cast_button_run: "Exécuter"
|
||||
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_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_compiler_ignores_comments: "Sometimes I think that the compiler ignores my comments."
|
||||
# tip_understand_recursion: "The only way to understand recursion is to understand recursion."
|
||||
# tip_life_and_polymorphism: "Open Source is like a totally polymorphic heterogeneous structure: All types are welcome."
|
||||
# tip_mistakes_proof_of_trying: "Mistakes in your code are just proof that you are trying."
|
||||
# tip_adding_orgres: "Rounding up ogres."
|
||||
# tip_sharpening_swords: "Sharpening the swords."
|
||||
# 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_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_compiler_ignores_comments: "Des fois, je pense que le compilateur ignore mes commentaires."
|
||||
tip_understand_recursion: "La seule manière de comprendre la récursion est de comprendre la récursion."
|
||||
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: "Les erreurs dans votre code sont la preuve que vous essayez."
|
||||
tip_adding_orgres: "Rassembler les ogres."
|
||||
tip_sharpening_swords: "Aiguiser les épées."
|
||||
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: "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_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_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"
|
||||
success: "Paiement accepté, merci !"
|
||||
|
||||
# account_prepaid:
|
||||
# purchase_code: "Purchase a Subscription Code"
|
||||
# purchase_code1: "Subscription Codes can be redeemed to add premium subscription time to one or more CodeCombat accounts."
|
||||
account_prepaid:
|
||||
purchase_code: "Acheter un code d'abonnement"
|
||||
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_code3: "Subscription Code months will be added to the end of any existing subscription on the account."
|
||||
# users: "Users"
|
||||
# months: "Months"
|
||||
# purchase_total: "Total"
|
||||
users: "Utilisateurs"
|
||||
months: "Mois"
|
||||
purchase_total: "Total"
|
||||
# purchase_button: "Submit Purchase"
|
||||
# your_codes: "Your Codes"
|
||||
your_codes: "Vos codes"
|
||||
# redeem_codes: "Redeem a Subscription Code"
|
||||
# prepaid_code: "Prepaid Code"
|
||||
# lookup_code: "Lookup prepaid code"
|
||||
# apply_account: "Apply to your account"
|
||||
# copy_link: "You can copy the code's link and send it to someone."
|
||||
# quantity: "Quantity"
|
||||
quantity: "Quantité"
|
||||
# redeemed: "Redeemed"
|
||||
# no_codes: "No codes yet!"
|
||||
# you_can1: "You can"
|
||||
# you_can2: "purchase a prepaid code"
|
||||
# you_can3: "that can be applied to your own account or given to others."
|
||||
no_codes: "Pas de code soumis"
|
||||
you_can1: "Vous pouvez"
|
||||
you_can2: "achetez un code pré-payé"
|
||||
you_can3: "qui pourra être appliqué à votre compte ou donné à un autre."
|
||||
|
||||
# coppa_deny:
|
||||
# text1: "Can’t wait to learn programming?"
|
||||
|
@ -1869,19 +1869,19 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
|
|||
license: "Licence"
|
||||
oreilly: "ebook de votre choix"
|
||||
|
||||
# calendar:
|
||||
# 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"
|
||||
calendar:
|
||||
year: "Année"
|
||||
day: "Jour"
|
||||
month: "Mois"
|
||||
january: "Janvier"
|
||||
february: "Février"
|
||||
march: "Mars"
|
||||
april: "Avril"
|
||||
may: "Mai"
|
||||
june: "Juin"
|
||||
july: "Juillet"
|
||||
august: "Août"
|
||||
september: "Septembre"
|
||||
october: "Octobre"
|
||||
november: "Novembre"
|
||||
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
|
||||
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
|
||||
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_suffix: "Je kan toch proberen, maar het zal waarschijnlijk niet werken!"
|
||||
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 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."
|
||||
campaign: "Verhaallijn"
|
||||
for_beginners: "Voor Beginners"
|
||||
|
@ -24,25 +24,25 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
|||
im_a_teacher: "Ik ben een leraar"
|
||||
im_a_student: "Ik ben een leerling"
|
||||
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}
|
||||
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"
|
||||
real_code: "Echte, getypte code"
|
||||
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"
|
||||
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."
|
||||
accessible_to: "Bereikbaar voor"
|
||||
accessible_to: "Toegankelijk voor"
|
||||
everyone: "iedereen"
|
||||
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."
|
||||
wanted_to_do: " Ik wilde altijd al leren programmeren, maar op school was hier nooit aandacht voor."
|
||||
why_games: "Waarom is spelenderwijs leren belangrijk?"
|
||||
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"
|
||||
struggle: "productiviteit-strijd"
|
||||
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."
|
||||
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_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_subtitle: "Maak een klas aan, voeg je leerlingen toe, en monitor hun vooruitgang."
|
||||
request_demo: "Vraag een demo aan"
|
||||
|
@ -74,7 +74,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
|||
coming_soon: "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."
|
||||
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."
|
||||
teachers: "Docenten!"
|
||||
teachers_and_educators: "Docenten & Mentoren"
|
||||
|
@ -92,7 +92,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
|||
check_out_wiki: "Bekijk onze nieuwe leraren Wiki"
|
||||
want_coco: "Wil je CodeCombat op jouw school?"
|
||||
form_select_role: "Selecteer je rol"
|
||||
form_select_range: "Selecteer klassengrootte"
|
||||
form_select_range: "Selecteer klasomvang"
|
||||
|
||||
nav:
|
||||
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"
|
||||
"+": "plus"
|
||||
"-": "min"
|
||||
# "+=": "add and assign"
|
||||
# "-=": "subtract and assign"
|
||||
"+=": "tel op en wijs toe"
|
||||
"-=": "trek af en wijs toe"
|
||||
True: "Waar"
|
||||
true: "waar"
|
||||
False: "onwaar"
|
||||
false: "onwaar"
|
||||
undefined: "ongedefinieerd"
|
||||
# null: "null"
|
||||
# nil: "nil"
|
||||
null: "nul"
|
||||
nil: "nihil"
|
||||
None: "Geen"
|
||||
|
||||
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."
|
||||
form_blurb: "Vul het e-mailadres van je ouders hieronder in en we zullen het ze laten zien!"
|
||||
form_label: "E-mailadres"
|
||||
|
@ -472,19 +472,19 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
|||
tip_reticulating: "Paden aan het verknopen."
|
||||
tip_harry: "Je bent een tovenaar, "
|
||||
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_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_patience: "Geduld moet je hebben, jonge Padawan. - Yoda"
|
||||
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_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_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_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_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"
|
||||
|
@ -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."
|
||||
|
||||
teachers_quote:
|
||||
name: "Offerte Formulier" # {change}
|
||||
title: "Offerte aanvragen" # {change}
|
||||
subtitle: "Haal CodeCombat jouw klaslokaal, club, school of wijk in!"
|
||||
email_exists: "Er bestaat al een gebruiker met dit email adres."
|
||||
name: "Demo Formulier"
|
||||
title: "Demo aanvragen"
|
||||
subtitle: "Gebruik CodeCombat voor jouw klas of programmeerclub!"
|
||||
email_exists: "Er bestaat al een gebruiker met dit emailadres."
|
||||
phone_number: "Telefoonnummer"
|
||||
phone_number_help: "Waar kunnen we je bereiken tijdens de werkdag?"
|
||||
primary_role_label: "Uw Primaire Rol"
|
||||
role_default: "Selecteer Rol"
|
||||
primary_role_default: "Selecteer Primaire Rol"
|
||||
purchaser_role_default: "Selecteer Aanschaf Rol"
|
||||
phone_number_help: "Waarop kunnen we je bereiken tijdens kantooruren?"
|
||||
primary_role_label: "Uw primaire rol"
|
||||
role_default: "Selecteer primaire rol"
|
||||
primary_role_default: "Selecteer rol"
|
||||
purchaser_role_default: "Selecteer rol in besluitvorming"
|
||||
tech_coordinator: "IT coördinator"
|
||||
advisor: "Adviseur"
|
||||
principal: "Schoolhoofd"
|
||||
superintendent: "Leidinggevende"
|
||||
parent: "Ouder/verzorger"
|
||||
purchaser_role_label: "Uw aanschaf Rol"
|
||||
purchaser_role_label: "Uw rol in besluitvorming"
|
||||
influence_advocate: "Promoten"
|
||||
evaluate_recommend: "Evalueren/Aanbevelen"
|
||||
approve_funds: "Budget toewijzen"
|
||||
no_purchaser_role: "Geen rol in aanschaf keuze"
|
||||
no_purchaser_role: "Geen rol in besluitvorming"
|
||||
organization_label: "Schoolnaam"
|
||||
city: "Stad"
|
||||
state: "Provincie"
|
||||
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"
|
||||
education_level_label: "Opleidingsniveau van de leerlingen"
|
||||
education_level_help: "Kies hoeveel van toepassing is."
|
||||
education_level_label: "Opleidingsniveau van leerlingen"
|
||||
education_level_help: "Selecteer toepasbare niveau(s)."
|
||||
elementary_school: "Basisschool"
|
||||
high_school: "Middelbare school"
|
||||
please_explain: "(licht a.u.b. toe)"
|
||||
middle_school: "Brugklas"
|
||||
high_school: "Middelbare school (bovenbouw)"
|
||||
please_explain: "(licht toe a.u.b.)"
|
||||
middle_school: "Middelbare school (onderbouw)"
|
||||
college_plus: "Hoger Onderwijs"
|
||||
anything_else: "Is er verder nog iets dat we moeten weten?"
|
||||
thanks_header: "Bedankt voor het aanvragen van een citaat!" # {change}
|
||||
thanks_sub_header: "Bedankt voor je interesse in CodeCombat voor jouw school."
|
||||
thanks_header: "Bedankt voor je demo-aanvraag!"
|
||||
thanks_sub_header: "Bedankt voor je interesse in CodeCombat."
|
||||
thanks_p: "Wij zullen spoedig contact met u opnemen. Vragen? Mail ons:" # {change}
|
||||
# back_to_classes: "Back to Classes"
|
||||
finish_signup: "Voltooi aanmaken van jouw docenten-account:"
|
||||
back_to_classes: "Terug naar Klassen"
|
||||
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"
|
||||
signup_with: "Schrijf je in 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."
|
||||
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."
|
||||
create_account: "Maak 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 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 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>!"
|
||||
convert_account_title: "Verander in een docenten-account"
|
||||
not: "niet"
|
||||
|
@ -871,7 +871,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
|||
versions:
|
||||
save_version_title: "Nieuwe versie opslaan"
|
||||
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_url: "CLA"
|
||||
cla_suffix: "."
|
||||
|
@ -1069,10 +1069,10 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
|||
completed: "voltooid:"
|
||||
invite_students: "Nodig leerlingen uit voor deze klas."
|
||||
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:"
|
||||
capacity_used: "Cursus stoelen gebruikt:"
|
||||
enter_emails: "Voer e-mailadressen van leerlingen in om uit te nodigen, één per regel"
|
||||
capacity_used: "Cursusplekken gebruikt:"
|
||||
enter_emails: "Voer e-mailadressen van leerlingen in om hen uit te nodigen, één per regel"
|
||||
send_invites: "Verstuur uitnodigingen"
|
||||
creating_class: "Aanmaken klas..."
|
||||
purchasing_course: "Aanschaffen cursus..."
|
||||
|
@ -1080,7 +1080,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
|||
buy_course1: "Koop deze cursus"
|
||||
select_all_courses: "Selecteer 'Alle cursussen' voor 50% korting!"
|
||||
all_courses: "Alle cursussen"
|
||||
number_programming_students: "Aantal informatica leerlingen"
|
||||
number_programming_students: "Aantal doelgroepleerlingen"
|
||||
number_total_students: "Totaal aan leerlingen op school"
|
||||
enter_number_students: "Voer het aantal leerlingen in dat je voor de klas nodig hebt."
|
||||
name_class: "Geef je klas een naam"
|
||||
|
@ -1089,25 +1089,25 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
|||
purchasing_for: "U koopt een licentie voor"
|
||||
creating_for: "U maakt een klas voor"
|
||||
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!"
|
||||
get_access: "Individueel toegang krijgen voor evaluatiedoeleinden."
|
||||
questions: "Vragen?"
|
||||
teachers_click: "Leerkrachten klik hier"
|
||||
students_click: "Leerlingen klik hier"
|
||||
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"
|
||||
no_experience: "Geen programmeerervaring nodig"
|
||||
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"
|
||||
more_info: "voor meer informatie."
|
||||
choose_course: "Kies uw cursus:"
|
||||
enter_code: "voer een ontgrendelcode in" # {change}
|
||||
enter_code1: "Voer ontgrendelcode in"
|
||||
enroll: "Inschrijven"
|
||||
pick_from_classes: "Kies uit je huidige klas"
|
||||
pick_from_classes: "Kies uit je huidige klassen"
|
||||
enter: "Treed toe"
|
||||
or: "Of"
|
||||
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."
|
||||
additional_resources: "Extra bronnen"
|
||||
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_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_suff: "Om twee gratis inschrijvingen te krijgen voor onze overige betaalde cursussen."
|
||||
additional_resources_3_pref: "Bezoek onze"
|
||||
|
@ -1601,7 +1601,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
|||
tutorial_skip: "Sla Tutorial over"
|
||||
tutorial_not_sure: "Niet zeker wat er aan de hand is?"
|
||||
tutorial_play_first: "Speel eerst de Tutorial."
|
||||
simple_ai: "Simpele AI" # {change}
|
||||
simple_ai: "Simpele K.I."
|
||||
warmup: "Opwarming"
|
||||
friends_playing: "Spelende Vrienden"
|
||||
log_in_for_friends: "Log in om met je vrienden te spelen!"
|
||||
|
@ -1623,8 +1623,8 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
|||
rules: "Regels"
|
||||
winners: "Winnaars"
|
||||
league: "Competitie"
|
||||
red_ai: "KI rood" # "Red AI Wins", at end of multiplayer match playback
|
||||
blue_ai: "KI blauw" # {change}
|
||||
red_ai: "K.I. rood" # "Red AI Wins", at end of multiplayer match playback
|
||||
blue_ai: "K.I. blauw"
|
||||
wins: "Wint" # At end of multiplayer match playback
|
||||
humans: "Rood" # Ladder page display team name
|
||||
ogres: "Blauw"
|
||||
|
@ -1698,7 +1698,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
|
|||
months: "Maanden"
|
||||
purchase_total: "Totaal"
|
||||
purchase_button: "Verzend betaling"
|
||||
your_codes: "Je codes:" # {change}
|
||||
your_codes: "Jouw codes:"
|
||||
redeem_codes: "Prepaidcode inwisselen"
|
||||
prepaid_code: "Prepaidcode"
|
||||
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_description: "Reliquias de uma era mais civilizada.Nenhuma simulação roda nessa antiguidade ,arenas multijogador sem heróis."
|
||||
|
||||
# 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.)
|
||||
# else: "else"
|
||||
# elif: "else if"
|
||||
# while: "while"
|
||||
# loop: "loop"
|
||||
# for: "for"
|
||||
# break: "break"
|
||||
# continue: "continue"
|
||||
# pass: "pass"
|
||||
# return: "return"
|
||||
# then: "then"
|
||||
# do: "do"
|
||||
# end: "end"
|
||||
# function: "function"
|
||||
# def: "define"
|
||||
# var: "variable"
|
||||
# self: "self"
|
||||
# hero: "hero"
|
||||
# this: "this"
|
||||
# or: "or"
|
||||
# "||": "or"
|
||||
# and: "and"
|
||||
# "&&": "and"
|
||||
# not: "not"
|
||||
# "!": "not"
|
||||
# "=": "assign"
|
||||
# "==": "equals"
|
||||
# "===": "strictly equals"
|
||||
# "!=": "does not equal"
|
||||
# "!==": "does not strictly equal"
|
||||
# ">": "is greater than"
|
||||
# ">=": "is greater than or equal"
|
||||
# "<": "is less than"
|
||||
# "<=": "is less than or equal"
|
||||
# "*": "multiplied by"
|
||||
# "/": "divided by"
|
||||
# "+": "plus"
|
||||
# "-": "minus"
|
||||
# "+=": "add and assign"
|
||||
# "-=": "subtract and assign"
|
||||
# True: "True"
|
||||
# true: "true"
|
||||
# False: "False"
|
||||
# false: "false"
|
||||
# undefined: "undefined"
|
||||
# null: "null"
|
||||
# nil: "nil"
|
||||
# None: "None"
|
||||
code:
|
||||
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: "senão"
|
||||
elif: "senão se"
|
||||
while: "enquanto"
|
||||
loop: "repetir"
|
||||
for: "para"
|
||||
break: "parar"
|
||||
continue: "continuar"
|
||||
pass: "passar"
|
||||
return: "devolver"
|
||||
then: "então"
|
||||
do: "fazer"
|
||||
end: "fim"
|
||||
function: "função"
|
||||
def: "definir"
|
||||
var: "variável"
|
||||
self: "próprio"
|
||||
hero: "herói"
|
||||
this: "isto"
|
||||
or: "ou"
|
||||
"||": "ou"
|
||||
and: "e"
|
||||
"&&": "e"
|
||||
not: "não"
|
||||
"!": "não"
|
||||
"=": "atribuir"
|
||||
"==": "é igual a"
|
||||
"===": "é estritamente igual a"
|
||||
"!=": "não é igual a"
|
||||
"!==": "não é estritamente igual a"
|
||||
">": "é maior do que"
|
||||
">=": "é maior do que ou igual a"
|
||||
"<": "é menor do que"
|
||||
"<=": "é menor do que ou igual a"
|
||||
"*": "multiplicado por"
|
||||
"/": "dividido por"
|
||||
"+": "mais"
|
||||
"-": "menos"
|
||||
"+=": "adicionar e atribuir"
|
||||
"-=": "subtrair e atribuir"
|
||||
True: "Verdadeiro"
|
||||
true: "verdadeiro"
|
||||
False: "Falso"
|
||||
false: "falso"
|
||||
undefined: "não definido"
|
||||
null: "nulo"
|
||||
nil: "nada"
|
||||
None: "Nenhum"
|
||||
|
||||
share_progress_modal:
|
||||
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"
|
||||
elif: "senão se"
|
||||
while: "enquanto"
|
||||
loop: "circular"
|
||||
loop: "repetir"
|
||||
for: "para"
|
||||
break: "parar"
|
||||
continue: "continuar"
|
||||
|
|
|
@ -37,9 +37,9 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
|||
teaching_computer_science: "Подучавање компјутерских наука не захтева скупу димплому, јер ми пружамо алатке да подржимо едукаторе из свих позадина."
|
||||
accessible_to: "Доступно"
|
||||
everyone: "свима"
|
||||
democratizing: "Демократизација процеса учења кодирања је у средишту наше филозофије. Свако би требало да има прилику да научи кодирање"
|
||||
democratizing: "Демократизација процеса учења кодирања је у средишту наше филозофије. Свако би требало да има прилику да научи кодирање."
|
||||
forgot_learning: "Мислим да су већ заборавили да су заправо учили нешто."
|
||||
wanted_to_do: " Кодирање је нешто што сам одувек желео да радим, и никад нисам мислио да ћу моћи да га научим у школи."
|
||||
wanted_to_do: " Кодирање је нешто што сам одувек желео да радим и никад нисам мислио да ћу моћи то да научим у школи."
|
||||
why_games: "Зашто је учење кроз игре важно?"
|
||||
games_reward: "Игре награђују продуктивну борбу."
|
||||
encourage: "Гејминг је медиј који подстиче интеракцију, откривање и учење путем покушаја и грешке. Добра игра изазива играча да савлада вештине током времена, што је исти есенцијални процес кроз који ученици пролазе док уче."
|
||||
|
@ -297,7 +297,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
|||
save: "Сачувај"
|
||||
publish: "Објави"
|
||||
create: "Направи"
|
||||
# fork: "Fork"
|
||||
fork: "Форкуј"
|
||||
play: "Играј" # When used as an action verb, like "Play next level"
|
||||
retry: "Покушај поново"
|
||||
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)
|
||||
restricted_to_certain_heroes: "Само одређени хероји могу да играју овај ниво."
|
||||
|
||||
# skill_docs:
|
||||
# function: "function" # skill types
|
||||
# method: "method"
|
||||
# snippet: "snippet"
|
||||
# number: "number"
|
||||
# array: "array"
|
||||
# object: "object"
|
||||
# string: "string"
|
||||
skill_docs:
|
||||
function: "функција" # skill types
|
||||
method: "метод"
|
||||
snippet: "исечак"
|
||||
number: "број"
|
||||
array: "низ"
|
||||
object: "објекат"
|
||||
string: "стринг"
|
||||
# writable: "writable" # Hover over "attack" in Your Skills while playing a level to see most of this
|
||||
# read_only: "read-only"
|
||||
# action: "Action"
|
||||
# spell: "Spell"
|
||||
# action_name: "name"
|
||||
# action_cooldown: "Takes"
|
||||
# action_specific_cooldown: "Cooldown"
|
||||
# action_damage: "Damage"
|
||||
# action_range: "Range"
|
||||
# action_radius: "Radius"
|
||||
# action_duration: "Duration"
|
||||
# example: "Example"
|
||||
# ex: "ex" # Abbreviation of "example"
|
||||
# current_value: "Current Value"
|
||||
# default_value: "Default value"
|
||||
# parameters: "Parameters"
|
||||
# returns: "Returns"
|
||||
# granted_by: "Granted by"
|
||||
action: "Aкција"
|
||||
spell: "Магија"
|
||||
action_name: "име"
|
||||
action_cooldown: "Потребно"
|
||||
action_specific_cooldown: "Хлађење"
|
||||
action_damage: "Штета"
|
||||
action_range: "Домет"
|
||||
action_radius: "Опсег"
|
||||
action_duration: "Трајање"
|
||||
example: "Пример"
|
||||
ex: "нпр" # Abbreviation of "example"
|
||||
current_value: "Тренутна вредност"
|
||||
default_value: "Подразумевана вредност"
|
||||
parameters: "Параметри"
|
||||
returns: "Враћа"
|
||||
granted_by: "Додељено од"
|
||||
|
||||
save_load:
|
||||
granularity_saved_games: "Сачувано"
|
||||
|
@ -732,7 +732,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
|||
story_link: "Прича"
|
||||
press_link: "Прес"
|
||||
mission_title: "Наша мисија: да учинимо програмирање доступним сваком ученику на планети."
|
||||
mission_description_1: "<strong>Програмирање је магично</strong>. То је могућност да створиш ствари из чисте имагинације. Ми смо покренули CodeCombat да бисмо дали ученицима осећај чаробњачке моћи на дохват руке користећи<strong>куцани код</strong>."
|
||||
mission_description_1: "<strong>Програмирање је магично</strong>. То је могућност да створиш ствари из чисте имагинације. Ми смо покренули CodeCombat да бисмо дали ученицима осећај чаробњачке моћи на дохват руке користећи <strong>куцани код</strong>."
|
||||
mission_description_2: "Како се испоставља, то им омогућава да такође уче брже. МНОГО брже. То је као конверзација уместо коришћења упутства. Желимо да донесему ту конверзацију у сваку школу и <strong>сваком ученику</strong>, јер би свако требало да добије шансу да научи магију програмирања."
|
||||
team_title: "Упознај CodeCombat тим"
|
||||
team_values: "Ми ценимо отворен дијалог пун поштовања, где најбоља идеја побеђује. Наше одлуке су засноване на истраживању потрошача и наш процес је фокусиран на достављање опипљивих резултата за њих. Свако је практичан, од нашег генералног директора до наших Github сарадника, јер ми ценимо раст и учење у нашем тиму."
|
||||
|
@ -768,7 +768,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
|||
number_contributors: "Преко 450 сарадника је дало своју подршку и време овом пројекту."
|
||||
story_title: "Наша прича до сад"
|
||||
story_subtitle: "Од 2013, CodeCombat је израстао из обичних скупова скица у праву успешну игру."
|
||||
story_statistic_1a: "Више од 5 000 000"
|
||||
story_statistic_1a: "Више од 5.000.000"
|
||||
story_statistic_1b: "играча укупно"
|
||||
story_statistic_1c: "је започело њихово програмерско путовање кроз CodeCombat"
|
||||
story_statistic_2a: "Преведени смо на преко 50 језика — наши играчи долазе из"
|
||||
|
@ -784,7 +784,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
|||
jobs_benefits: "Бенефиције за запослене"
|
||||
jobs_benefit_4: "Неограничен одмор"
|
||||
jobs_benefit_5: "Професионални развој и континуирана подршка образовања - бесплатне књиге и игре!"
|
||||
# jobs_benefit_6: "Медицинско (gold), зубно, очно"
|
||||
jobs_benefit_6: "Медицинско (gold), дентално, очно осигурање"
|
||||
jobs_benefit_7: "Sit-stand радни столови за свакога"
|
||||
# jobs_benefit_9: "10-year option exercise window"
|
||||
jobs_benefit_10: "Породиљско одсуство: 10 плаћених недеља, наредних 6 недеља 55% плате"
|
||||
|
@ -860,12 +860,12 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
|||
finish_signup_p: "Направи налог да оснујеш разред, додаш своје ученике и пратиш њихов напредак док уче компјутерске науке."
|
||||
signup_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."
|
||||
# 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."
|
||||
conversion_warning: "УПОЗОРЕЊЕ: Твој тренутни налог је <em>Студентски Налог</em>. Након што пошаљеш овај формулар, твој налог ће бити надограђен у Учитељски Налог."
|
||||
learn_more_modal: "Учитељски налози на CodeCombat-у имају могућност посматрања напретка ученика, додељивања уписа и управљања учионицама. Учитељски налози не могу бити део учионице - ако си тренутно уписан у разред преко овог налога, нећеш више моћи да му приступиш кад ажурираш у Учитељски Налог."
|
||||
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>!"
|
||||
# convert_account_title: "Update to Teacher Account"
|
||||
# not: "Not"
|
||||
create_account_subtitle: "Добиј приступ алатима само за учитеље за коришћење CodeCombat-а у учионици. <strong>Подеси разред</strong>, додај своје ученике, и <strong>посматрај њихов напредак</strong>!"
|
||||
convert_account_title: "Ажурирај у Учитељски Налог"
|
||||
not: "Није"
|
||||
setup_a_class: "Подеси разред"
|
||||
|
||||
versions:
|
||||
|
@ -880,18 +880,18 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
|||
|
||||
contact:
|
||||
contact_us: "Контактирај CodeCombat"
|
||||
welcome: "Драго нам је што нас контактираш! Искористи ову форму да нам пошаљеш мејл. "
|
||||
welcome: "Драго нам је што нас контактираш! Искористи овај формулар да нам пошаљеш мејл. "
|
||||
forum_prefix: "За било шта јавно, посети "
|
||||
forum_page: "наш форум."
|
||||
# forum_suffix: " instead."
|
||||
# faq_prefix: "There's also a"
|
||||
# faq: "FAQ"
|
||||
# subscribe_prefix: "If you need help figuring out a level, please"
|
||||
# subscribe: "buy a CodeCombat subscription"
|
||||
# subscribe_suffix: "and we'll be happy to help you with your code."
|
||||
# subscriber_support: "Since you're a CodeCombat subscriber, your email will get our priority support."
|
||||
# screenshot_included: "Screenshot included."
|
||||
# where_reply: "Where should we reply?"
|
||||
forum_page: "наш форум"
|
||||
forum_suffix: " уместо тога."
|
||||
faq_prefix: "Такође, ту је"
|
||||
faq: "FAQ"
|
||||
subscribe_prefix: "Ако ти треба помоћ да разумеш ниво, молимо да"
|
||||
subscribe: "купиш CodeCombat претплату"
|
||||
subscribe_suffix: "и радо ћемо ти помоћи у твом коду."
|
||||
subscriber_support: "Пошто си CodeCombat претплатник, твој мејл ће имати приоритет у нашој подршци."
|
||||
screenshot_included: "Снимак екрана укључен."
|
||||
where_reply: "Где треба да одговоримо?"
|
||||
send: "Пошаљи повратну информацију"
|
||||
|
||||
account_settings:
|
||||
|
@ -910,24 +910,24 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
|||
# god_mode: "God Mode"
|
||||
password_tab: "Шифра"
|
||||
emails_tab: "Мејлови"
|
||||
# admin: "Admin"
|
||||
admin: "Администратор"
|
||||
manage_subscription: "Кликни овде да би управљао својом претплатом."
|
||||
new_password: "Нова Шифра"
|
||||
new_password_verify: "Потврди"
|
||||
# type_in_email: "Type in your email to confirm account deletion."
|
||||
# type_in_email_progress: "Type in your email to confirm deleting your progress."
|
||||
# type_in_password: "Also, type in your password."
|
||||
type_in_email: "Упиши свој мејл да потврдиш брисање налога."
|
||||
type_in_email_progress: "Упиши свој мејл да потврдиш брисање свог напретка."
|
||||
type_in_password: "Такође, упиши своју шифру."
|
||||
email_subscriptions: "Мејл претплате"
|
||||
# email_subscriptions_none: "No Email Subscriptions."
|
||||
email_subscriptions_none: "Без мејл претплата."
|
||||
email_announcements: "Обавештења"
|
||||
email_announcements_description: "Прими мејл за најновије вести и достигнућа на CodeCombat-у"
|
||||
# email_notifications: "Notifications"
|
||||
# email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity."
|
||||
# email_any_notes: "Any Notifications"
|
||||
# email_any_notes_description: "Disable to stop all activity notification emails."
|
||||
email_notifications: "Обавештења"
|
||||
email_notifications_summary: "Контроле за персонализована, аутоматска мејл обавештења вазана за твоју CodeCombat активност."
|
||||
email_any_notes: "Сва обавештења"
|
||||
email_any_notes_description: "Онемогући да би прекинуо сва мејл обавештења о активности."
|
||||
email_news: "Вести"
|
||||
email_recruit_notes: "Пословне могућности"
|
||||
# email_recruit_notes_description: "If you play really well, we may contact you about getting you a (better) job."
|
||||
email_recruit_notes_description: "Ако играш јако добро, можда ћемо те контактирати о томе да добијеш (бољи) посао."
|
||||
contributor_emails: "Мејлови реда сарадника"
|
||||
contribute_prefix: "Тражимо људе који би нам се придружили! Погледај "
|
||||
contribute_page: "страницу за сарадњу"
|
||||
|
@ -938,15 +938,15 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
|||
password_mismatch: "Шифре се не слажу."
|
||||
password_repeat: "Понови своју шифру."
|
||||
|
||||
# keyboard_shortcuts:
|
||||
# keyboard_shortcuts: "Keyboard Shortcuts"
|
||||
# space: "Space"
|
||||
# enter: "Enter"
|
||||
# press_enter: "press enter"
|
||||
# escape: "Escape"
|
||||
# shift: "Shift"
|
||||
# run_code: "Run current code."
|
||||
# run_real_time: "Run in real time."
|
||||
keyboard_shortcuts:
|
||||
keyboard_shortcuts: "Пречице за тастатуру"
|
||||
space: "Space"
|
||||
enter: "Enter"
|
||||
press_enter: "притисни enter"
|
||||
escape: "Escape"
|
||||
shift: "Shift"
|
||||
run_code: "Покрени тренутни код."
|
||||
run_real_time: "Покрени у реалном времену."
|
||||
# continue_script: "Continue past current script."
|
||||
# skip_scripts: "Skip past all skippable scripts."
|
||||
# toggle_playback: "Toggle play/pause."
|
||||
|
@ -959,142 +959,142 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
|||
# beautify: "Beautify your code by standardizing its formatting."
|
||||
# maximize_editor: "Maximize/minimize code editor."
|
||||
|
||||
# community:
|
||||
# main_title: "CodeCombat Community"
|
||||
# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!"
|
||||
# level_editor_prefix: "Use the 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!"
|
||||
# thang_editor_prefix: "We call units within the game 'thangs'. Use the"
|
||||
# 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."
|
||||
# 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_suffix: "and help CodeCombat players get the most out of their playtime."
|
||||
# find_us: "Find us on these sites"
|
||||
# social_github: "Check out all our code on GitHub"
|
||||
# social_blog: "Read the CodeCombat blog on Sett"
|
||||
# social_discource: "Join the discussion on our Discourse forum"
|
||||
# social_facebook: "Like CodeCombat on Facebook"
|
||||
# social_twitter: "Follow CodeCombat on Twitter"
|
||||
# social_gplus: "Join CodeCombat on Google+"
|
||||
# social_slack: "Chat with us in the public CodeCombat Slack channel"
|
||||
# contribute_to_the_project: "Contribute to the project"
|
||||
community:
|
||||
main_title: "CodeCombat Заједница"
|
||||
introduction: "Погледај испод како можеш да се укључиш и одлучи шта звучи најзанимљивије. Радујемо се прилици да радимо са тобом!"
|
||||
level_editor_prefix: "Користи CodeCombat"
|
||||
level_editor_suffix: "да правиш и уређујеш нивое. Корисници су направили нивое за њихове разреде, пријатеље, хакатоне, ученике и браћу и сестре. Ако прављење новог нивоа звучи застрашујуће, можеш да почнеш форковањем једног од наших!"
|
||||
thang_editor_prefix: "Ми зовемо јединице у игри 'thangs'. Користи"
|
||||
thang_editor_suffix: "да модификујеш CodeCombat изворне илустрације. Дозволи јединицама да бацају пројектиле, измени дирекцију анимације, промени хит поене јединице или отпреми сопствене векторске спрајтове."
|
||||
article_editor_prefix: "Видиш грешку у неком од наших докумената? Желиш да направиш инструкције за сопствене креације? Погледај"
|
||||
article_editor_suffix: "и помози CodeCombat играчима да добију највише од свог играња."
|
||||
find_us: "Нађи нас на овим сајтовима"
|
||||
social_github: "Погледај цео наш код на GitHub-у"
|
||||
social_blog: "Читај CodeCombat блог на Sett-у"
|
||||
social_discource: "Придружи се дискусији на нашем Discourse форуму"
|
||||
social_facebook: "Лајкуј CodeCombat на Фејсбуку"
|
||||
social_twitter: "Запрати CodeCombat на Твитеру"
|
||||
social_gplus: "Придружи се CodeCombat-у на Гугл+"
|
||||
social_slack: "Ћаскај са нама на јавном CodeCombat Slack каналу"
|
||||
contribute_to_the_project: "Допринеси пројекту"
|
||||
|
||||
# clans:
|
||||
# clan: "Clan"
|
||||
# clans: "Clans"
|
||||
# new_name: "New clan name"
|
||||
# new_description: "New clan description"
|
||||
# make_private: "Make clan private"
|
||||
# subs_only: "subscribers only"
|
||||
# create_clan: "Create New Clan"
|
||||
# private_preview: "Preview"
|
||||
# private_clans: "Private Clans"
|
||||
# public_clans: "Public Clans"
|
||||
# my_clans: "My Clans"
|
||||
# clan_name: "Clan Name"
|
||||
# name: "Name"
|
||||
# chieftain: "Chieftain"
|
||||
# type: "Type"
|
||||
# edit_clan_name: "Edit Clan Name"
|
||||
# edit_clan_description: "Edit Clan Description"
|
||||
# edit_name: "edit name"
|
||||
# edit_description: "edit description"
|
||||
# private: "(private)"
|
||||
# summary: "Summary"
|
||||
# average_level: "Average Level"
|
||||
# average_achievements: "Average Achievements"
|
||||
# delete_clan: "Delete Clan"
|
||||
# leave_clan: "Leave Clan"
|
||||
# join_clan: "Join Clan"
|
||||
# invite_1: "Invite:"
|
||||
# invite_2: "*Invite players to this Clan by sending them this link."
|
||||
# members: "Members"
|
||||
# progress: "Progress"
|
||||
# not_started_1: "not started"
|
||||
# started_1: "started"
|
||||
# complete_1: "complete"
|
||||
# exp_levels: "Expand levels"
|
||||
# rem_hero: "Remove Hero"
|
||||
# status: "Status"
|
||||
# complete_2: "Complete"
|
||||
# started_2: "Started"
|
||||
# not_started_2: "Not Started"
|
||||
# view_solution: "Click to view solution."
|
||||
# view_attempt: "Click to view attempt."
|
||||
# latest_achievement: "Latest Achievement"
|
||||
# playtime: "Playtime"
|
||||
# last_played: "Last played"
|
||||
# leagues_explanation: "Play in a league against other clan members in these multiplayer arena instances."
|
||||
# track_concepts1: "Track concepts"
|
||||
# track_concepts2a: "learned by each student"
|
||||
# track_concepts2b: "learned by each member"
|
||||
# track_concepts3a: "Track levels completed for each student"
|
||||
# track_concepts3b: "Track levels completed for each member"
|
||||
# track_concepts4a: "See your students'"
|
||||
# track_concepts4b: "See your members'"
|
||||
# track_concepts5: "solutions"
|
||||
# track_concepts6a: "Sort students by name or progress"
|
||||
# track_concepts6b: "Sort members by name or progress"
|
||||
# track_concepts7: "Requires invitation"
|
||||
# track_concepts8: "to join"
|
||||
# private_require_sub: "Private clans require a subscription to create or join."
|
||||
clans:
|
||||
clan: "Клан"
|
||||
clans: "Кланови"
|
||||
new_name: "Име новог клана"
|
||||
new_description: "Опис новог клана"
|
||||
make_private: "Направи клан приватним"
|
||||
subs_only: "само за претплатнике"
|
||||
create_clan: "Направи нови клан"
|
||||
private_preview: "Приказ"
|
||||
private_clans: "Приватни кланови"
|
||||
public_clans: "Јавни кланови"
|
||||
my_clans: "Моји кланови"
|
||||
clan_name: "Име клана"
|
||||
name: "Име"
|
||||
chieftain: "Поглавица"
|
||||
type: "Врста"
|
||||
edit_clan_name: "Измени име клана"
|
||||
edit_clan_description: "Измени опис клана"
|
||||
edit_name: "измени име"
|
||||
edit_description: "измени опис"
|
||||
private: "(приватан)"
|
||||
summary: "Преглед"
|
||||
average_level: "Просечни ниво"
|
||||
average_achievements: "Просечна достигнућа"
|
||||
delete_clan: "Избриши клан"
|
||||
leave_clan: "Напусти клан"
|
||||
join_clan: "Придружи се клану"
|
||||
invite_1: "Позови:"
|
||||
invite_2: "*Позови играче у овај Клан тако што ћеш им послати овај линк."
|
||||
members: "Чланови"
|
||||
progress: "Напредак"
|
||||
not_started_1: "није започето"
|
||||
started_1: "започето"
|
||||
complete_1: "заврши"
|
||||
exp_levels: "Прошири нивое"
|
||||
rem_hero: "Уклони Хероја"
|
||||
status: "Статус"
|
||||
complete_2: "Заврши"
|
||||
started_2: "Започето"
|
||||
not_started_2: "Није започето"
|
||||
view_solution: "Кликни да видиш решење."
|
||||
view_attempt: "Кликни да видиш покушај."
|
||||
latest_achievement: "Последње достигнуће"
|
||||
playtime: "Време игања"
|
||||
last_played: "Последњи пут играно"
|
||||
leagues_explanation: "Играј у лиги против других чланова клана у овим мултиплејер инстанцама арене."
|
||||
track_concepts1: "Прати концепте"
|
||||
track_concepts2a: "научене од сваког ученика"
|
||||
track_concepts2b: "научене од сваког члана"
|
||||
track_concepts3a: "Прати завршене нивое за сваког ученика"
|
||||
track_concepts3b: "Прати завршене нивое за сваког члана"
|
||||
track_concepts4a: "Види од својих ученика"
|
||||
track_concepts4b: "Види од својих чланова"
|
||||
track_concepts5: "решења"
|
||||
track_concepts6a: "Сортирај ученике према имену или напретку"
|
||||
track_concepts6b: "Сортирај чланове према имену или напретку"
|
||||
track_concepts7: "Захтева позив"
|
||||
track_concepts8: "за придруживање"
|
||||
private_require_sub: "Приватни кланови захтевају претплату да би могао да их направиш или да им се придружиш."
|
||||
|
||||
# courses:
|
||||
# course: "Course"
|
||||
# courses: "courses"
|
||||
# create_new_class: "Create New Class"
|
||||
# not_enrolled: "You are not enrolled in this course."
|
||||
# visit_pref: "Please visit the"
|
||||
# visit_suf: "page to enroll."
|
||||
# select_class: "Select one of your classes"
|
||||
# unnamed: "*unnamed*"
|
||||
# select: "Select"
|
||||
# unnamed_class: "Unnamed Class"
|
||||
# edit_settings: "edit class settings"
|
||||
# edit_settings1: "Edit Class Settings"
|
||||
# progress: "Class Progress"
|
||||
# add_students: "Add Students"
|
||||
# stats: "Statistics"
|
||||
# total_students: "Total students:"
|
||||
# average_time: "Average level play time:"
|
||||
# total_time: "Total play time:"
|
||||
# average_levels: "Average levels completed:"
|
||||
# total_levels: "Total levels completed:"
|
||||
# furthest_level: "Furthest level completed:"
|
||||
# students: "Students"
|
||||
# students1: "students"
|
||||
# concepts: "Concepts"
|
||||
# levels: "levels"
|
||||
# played: "Played"
|
||||
# play_time: "Play time:"
|
||||
# completed: "Completed:"
|
||||
# invite_students: "Invite students to join this class."
|
||||
# invite_link_header: "Link to join 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:"
|
||||
courses:
|
||||
course: "Курс"
|
||||
courses: "курсеви"
|
||||
create_new_class: "Направи нови разред"
|
||||
not_enrolled: "Ниси уписан на овај курс."
|
||||
visit_pref: "Молимо да посетиш"
|
||||
visit_suf: "страницу да би се уписао."
|
||||
select_class: "Изабери један од својих разреда"
|
||||
unnamed: "*неименован*"
|
||||
select: "Изабери"
|
||||
unnamed_class: "Неименован разред"
|
||||
edit_settings: "измени подешавања разреда"
|
||||
edit_settings1: "Измени подешавања разреда"
|
||||
progress: "Напредак разреда"
|
||||
add_students: "Додај ученике"
|
||||
stats: "Статистика"
|
||||
total_students: "Укупно ученика:"
|
||||
average_time: "Просечно време играња нивоа:"
|
||||
total_time: "Укупно време играња:"
|
||||
average_levels: "Просечан број завршених нивоа:"
|
||||
total_levels: "Укупно завршених нивоа:"
|
||||
furthest_level: "Најдаљи завршен ниво:"
|
||||
students: "Ученици"
|
||||
students1: "ученици"
|
||||
concepts: "Концепти"
|
||||
levels: "нивои"
|
||||
played: "Одиграно"
|
||||
play_time: "Време играња:"
|
||||
completed: "Завршено:"
|
||||
invite_students: "Позови ученике да се придруже овом разреду."
|
||||
invite_link_header: "Линк за придруживање курсу"
|
||||
invite_link_p_1: "Дај овај линк ученицима за које желиш да се придруже курсу."
|
||||
invite_link_p_2: "Или дај нама да им директно пошаљемо мејл:"
|
||||
# capacity_used: "Course slots used:"
|
||||
# enter_emails: "Enter student emails to invite, one per line"
|
||||
# send_invites: "Send Invites"
|
||||
# creating_class: "Creating class..."
|
||||
# purchasing_course: "Purchasing course..."
|
||||
# buy_course: "Buy Course"
|
||||
# buy_course1: "Buy this course"
|
||||
# select_all_courses: "Select 'All Courses' for a 50% discount!"
|
||||
# all_courses: "All Courses"
|
||||
# number_programming_students: "Number of Programming Students"
|
||||
# number_total_students: "Total Students in School/District"
|
||||
# enter_number_students: "Enter the number of students you need for this class."
|
||||
# name_class: "Name your class"
|
||||
enter_emails: "Упиши мејлове ученика, један по линији"
|
||||
send_invites: "Пошаљи позиве"
|
||||
creating_class: "Креирање разреда..."
|
||||
purchasing_course: "Куповина курса..."
|
||||
buy_course: "Купи курс"
|
||||
buy_course1: "Купи овај курс"
|
||||
select_all_courses: "Изабери 'Сви курсеви' за 50% попуста!"
|
||||
all_courses: "Сви курсеви"
|
||||
number_programming_students: "Број ученика који програмирају"
|
||||
number_total_students: "Укупан број ученика у школи/округу"
|
||||
enter_number_students: "Унеси број ученика који ти треба за овај разред."
|
||||
name_class: "Именуј свој разред"
|
||||
# displayed_course_page: "This will be displayed on the course page for you and your students. It can be changed later."
|
||||
# buy: "Buy"
|
||||
# purchasing_for: "You are purchasing a license for"
|
||||
# creating_for: "You are creating a class for"
|
||||
# for: "for" # Like in 'for 30 students'
|
||||
buy: "Купи"
|
||||
purchasing_for: "Купујеш лиценцу за"
|
||||
creating_for: "Правиш разред за"
|
||||
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."
|
||||
# free_trial: "Free trial for teachers!"
|
||||
free_trial: "Бесплатна пробна верзија за учитеље!"
|
||||
# get_access: "to get individual access to all courses for evalutaion purposes."
|
||||
# questions: "Questions?"
|
||||
# teachers_click: "Teachers Click Here"
|
||||
# students_click: "Students Click Here"
|
||||
questions: "Питања?"
|
||||
teachers_click: "Учитељи кликните овде"
|
||||
students_click: "Ученици кликните овде"
|
||||
# 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."
|
||||
# more_in_less: "Learn more in less time"
|
||||
|
@ -1488,12 +1488,12 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
|||
# add_system_title: "Add Systems to Level"
|
||||
# done_adding: "Done Adding"
|
||||
|
||||
# article:
|
||||
# edit_btn_preview: "Preview"
|
||||
# edit_article_title: "Edit Article"
|
||||
article:
|
||||
edit_btn_preview: "Приказ"
|
||||
edit_article_title: "Измени Чланак"
|
||||
|
||||
# polls:
|
||||
# priority: "Priority"
|
||||
polls:
|
||||
priority: "Приоритет"
|
||||
|
||||
# contribute:
|
||||
# page_title: "Contributing"
|
||||
|
@ -1629,33 +1629,33 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
|||
# humans: "Red" # Ladder page display team name
|
||||
# ogres: "Blue"
|
||||
|
||||
# user:
|
||||
# stats: "Stats"
|
||||
# singleplayer_title: "Singleplayer Levels"
|
||||
# multiplayer_title: "Multiplayer Levels"
|
||||
# achievements_title: "Achievements"
|
||||
# last_played: "Last Played"
|
||||
# status: "Status"
|
||||
# status_completed: "Completed"
|
||||
# status_unfinished: "Unfinished"
|
||||
user:
|
||||
stats: "Статистика"
|
||||
singleplayer_title: "Нивои за једног играча"
|
||||
multiplayer_title: "Нивои за више играча"
|
||||
achievements_title: "Достигнућа"
|
||||
last_played: "Последњи игран"
|
||||
status: "Статус"
|
||||
status_completed: "Завршен"
|
||||
status_unfinished: "Незавршен"
|
||||
# no_singleplayer: "No Singleplayer games played yet."
|
||||
# no_multiplayer: "No Multiplayer games played yet."
|
||||
# no_achievements: "No Achievements earned yet."
|
||||
# favorite_prefix: "Favorite language is "
|
||||
# favorite_postfix: "."
|
||||
# not_member_of_clans: "Not a member of any clans yet."
|
||||
no_achievements: "Још увек нема стечених достигнућа."
|
||||
favorite_prefix: "Омиљени језик је "
|
||||
favorite_postfix: "."
|
||||
not_member_of_clans: "Ниси члан ниједног клана још увек."
|
||||
|
||||
# achievements:
|
||||
# last_earned: "Last Earned"
|
||||
# amount_achieved: "Amount"
|
||||
# achievement: "Achievement"
|
||||
# current_xp_prefix: ""
|
||||
# current_xp_postfix: " in total"
|
||||
# new_xp_prefix: ""
|
||||
# new_xp_postfix: " earned"
|
||||
# left_xp_prefix: ""
|
||||
# left_xp_infix: " until level "
|
||||
# left_xp_postfix: ""
|
||||
achievements:
|
||||
last_earned: "Последње стечено"
|
||||
amount_achieved: "Количина"
|
||||
achievement: "Достигнуће"
|
||||
current_xp_prefix: ""
|
||||
current_xp_postfix: " укупно"
|
||||
new_xp_prefix: ""
|
||||
new_xp_postfix: " стечено"
|
||||
left_xp_prefix: ""
|
||||
left_xp_infix: " до нивоа "
|
||||
left_xp_postfix: ""
|
||||
|
||||
account:
|
||||
payments: "Уплате"
|
||||
|
@ -1711,10 +1711,10 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
|||
# you_can2: "purchase a prepaid code"
|
||||
# you_can3: "that can be applied to your own account or given to others."
|
||||
|
||||
# coppa_deny:
|
||||
# text1: "Can’t wait to learn programming?"
|
||||
# text2: "Ask your parents to create an account for you!"
|
||||
# close: "Close Window"
|
||||
coppa_deny:
|
||||
text1: "Не можеш да дочекаш да научиш програмирање?"
|
||||
text2: "Питај своје родитеље да направе налог за тебе!"
|
||||
close: "Затвори прозор"
|
||||
|
||||
# loading_error:
|
||||
# could_not_load: "Error loading from server"
|
||||
|
@ -1747,50 +1747,50 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
|||
hero: "Херој"
|
||||
campaigns: "Кампање"
|
||||
|
||||
# concepts:
|
||||
# advanced_strings: "Advanced Strings"
|
||||
# algorithms: "Algorithms"
|
||||
# arguments: "Arguments"
|
||||
# arithmetic: "Arithmetic"
|
||||
# arrays: "Arrays"
|
||||
# basic_syntax: "Basic Syntax"
|
||||
# boolean_logic: "Boolean Logic"
|
||||
# break_statements: "Break Statements"
|
||||
# classes: "Classes"
|
||||
# continue_statements: "Continue Statements"
|
||||
# for_loops: "For Loops"
|
||||
# functions: "Functions"
|
||||
# graphics: "Graphics"
|
||||
# if_statements: "If Statements"
|
||||
# input_handling: "Input Handling"
|
||||
# math_operations: "Math Operations"
|
||||
# object_literals: "Object Literals"
|
||||
# parameters: "Parameters"
|
||||
# strings: "Strings"
|
||||
# variables: "Variables"
|
||||
# vectors: "Vectors"
|
||||
# while_loops: "While Loops"
|
||||
# recursion: "Recursion"
|
||||
concepts:
|
||||
advanced_strings: "Напредни стрингови"
|
||||
algorithms: "Алгоритми"
|
||||
arguments: "Аргументи"
|
||||
arithmetic: "Аритметика"
|
||||
arrays: "Низови"
|
||||
basic_syntax: "Основна синтакса"
|
||||
boolean_logic: "Булова логика"
|
||||
break_statements: "Break искази"
|
||||
classes: "Класе"
|
||||
continue_statements: "Continue искази"
|
||||
for_loops: "For петље"
|
||||
functions: "Функције"
|
||||
graphics: "Графика"
|
||||
if_statements: "If искази"
|
||||
input_handling: "Руковање инпутом"
|
||||
math_operations: "Математичке операције"
|
||||
object_literals: "Објекат литерали"
|
||||
parameters: "Параметри"
|
||||
strings: "Стрингови"
|
||||
variables: "Променљиве"
|
||||
vectors: "Вектори"
|
||||
while_loops: "While петље"
|
||||
recursion: "Рекурзије"
|
||||
|
||||
# delta:
|
||||
# added: "Added"
|
||||
# modified: "Modified"
|
||||
# not_modified: "Not Modified"
|
||||
# deleted: "Deleted"
|
||||
# moved_index: "Moved Index"
|
||||
delta:
|
||||
added: "Додато"
|
||||
modified: "Измењено"
|
||||
not_modified: "Није измењено"
|
||||
deleted: "Избрисано"
|
||||
moved_index: "Померен индекс"
|
||||
# text_diff: "Text Diff"
|
||||
# merge_conflict_with: "MERGE CONFLICT WITH"
|
||||
# no_changes: "No Changes"
|
||||
|
||||
multiplayer:
|
||||
multiplayer_title: "Подешавање мода за више играча" # We'll be changing this around significantly soon. Until then, it's not important to translate.
|
||||
# multiplayer_toggle: "Enable multiplayer"
|
||||
# multiplayer_toggle_description: "Allow others to join your game."
|
||||
multiplayer_toggle: "Омогући мултиплејер"
|
||||
multiplayer_toggle_description: "Дозволи другима да се придруже твојој игри."
|
||||
multiplayer_link_description: "Дај овај линк онима које желиш да ти се придруже."
|
||||
multiplayer_hint_label: "Мала помоћ"
|
||||
multiplayer_hint: " Кликни на линк да обележиш све, затим притисни Apple-C или Ctrl-C да копираш линк."
|
||||
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:
|
||||
# page_title: "Legal"
|
||||
|
@ -1873,15 +1873,15 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
|
|||
year: "Година"
|
||||
day: "Дан"
|
||||
month: "Месец"
|
||||
january: "Јануар"
|
||||
february: "Фебруар"
|
||||
march: "Март"
|
||||
april: "Април"
|
||||
may: "Мај"
|
||||
june: "Јун"
|
||||
july: "Јул"
|
||||
august: "Август"
|
||||
september: "Септембар"
|
||||
october: "Октобар"
|
||||
november: "Новембар"
|
||||
december: "Децембар"
|
||||
january: "јануар"
|
||||
february: "фебруар"
|
||||
march: "март"
|
||||
april: "април"
|
||||
may: "мај"
|
||||
june: "јун"
|
||||
july: "јул"
|
||||
august: "август"
|
||||
september: "септембар"
|
||||
october: "октобар"
|
||||
november: "новембар"
|
||||
december: "децембар"
|
||||
|
|
|
@ -38,10 +38,10 @@ module.exports = nativeDescription: "Українська", englishDescription:
|
|||
accessible_to: "Доступно" # Accessible to
|
||||
everyone: "кожному" # everyone
|
||||
democratizing: "Навчання, доступне кожному, — наша головна мета. Кожен повинен мати можливість навчитись програмувати." # Democratizing the process of learning coding is at the core of our philosophy. Everyone should be able to learn to code.
|
||||
# forgot_learning: "I think they actually forgot that they were actually learning something."
|
||||
# wanted_to_do: " Coding is something I've always wanted to do, and I never thought I would be able to learn it in school."
|
||||
# why_games: "Why is learning through games important?"
|
||||
# games_reward: "Games reward the productive struggle."
|
||||
forgot_learning: "Таке враження, що, граючи, вони забули, що це навчання."
|
||||
wanted_to_do: " Програмування — те, чим я завжди хотів займатись, ніколи не думав, що буду вчити це в школі."
|
||||
why_games: "Чому навчання через гру важливе?"
|
||||
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.
|
||||
# excel: "Games excel at rewarding"
|
||||
# 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"
|
||||
|
||||
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:"
|
||||
learn_to_code: "Học lập trình:"
|
||||
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_student: "Tôi là Học viên"
|
||||
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."
|
||||
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."
|
||||
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."
|
||||
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"
|
||||
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>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 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ập nhật kết quả ngay lập tức"
|
||||
designed_with: "Được thiết kế để dạy học"
|
||||
real_code: "Thực tế, tự viết code"
|
||||
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."
|
||||
educator_resources: "Xây dựng bài giảng"
|
||||
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"
|
||||
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."
|
||||
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?"
|
||||
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ũ"
|
||||
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"
|
||||
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!)"
|
||||
|
@ -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”."
|
||||
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."
|
||||
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_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"
|
||||
|
@ -73,7 +73,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
|||
lesson_time: "Thời gian học:"
|
||||
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!)"
|
||||
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."
|
||||
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!"
|
||||
|
@ -84,7 +84,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
|||
join_class: "Tham gia Lớp học"
|
||||
role: "Vai trò của bạ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"
|
||||
goto_classes: "Tới Lớp học của tôi" # {change}
|
||||
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ý"
|
||||
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."
|
||||
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ố"
|
||||
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ỹ)"
|
||||
|
@ -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_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_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_blurb: "Người truyền cảm hứng"
|
||||
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"
|
||||
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_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:"
|
||||
# back_to_classes: "Back to Classes"
|
||||
# finish_signup: "Finish creating your teacher account:"
|
||||
back_to_classes: "Quay lại Lớp học"
|
||||
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."
|
||||
signup_with: "Đăng ký bằng:"
|
||||
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>!"
|
||||
convert_account_title: "Năng cấp lên tài khoản Giáo Viên"
|
||||
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:
|
||||
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_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_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity."
|
||||
# email_any_notes: "Any Notifications"
|
||||
# email_any_notes_description: "Disable to stop all activity notification emails."
|
||||
# email_news: "News"
|
||||
email_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: "Bất kỳ thông báo nào"
|
||||
email_any_notes_description: "Vô hiệu hóa để ngừng mọi thông báo qua email."
|
||||
email_news: "Tin tức"
|
||||
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."
|
||||
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_pathfinding: "Toggle pathfinding overlay."
|
||||
# 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:
|
||||
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ả"
|
||||
private: "(kín)"
|
||||
summary: "Tóm tắt"
|
||||
average_level: "Cấp độ trng bình"
|
||||
# average_achievements: "Average Achievements"
|
||||
average_level: "Cấp độ trung bình"
|
||||
average_achievements: "Thành tựu trung bình"
|
||||
delete_clan: "Xóa Clan"
|
||||
leave_clan: "Rời Clan"
|
||||
join_clan: "Tham gia Clan"
|
||||
|
@ -1013,29 +1013,29 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
|||
started_1: "đã bắt đầu"
|
||||
complete_1: "hoàn thành"
|
||||
# exp_levels: "Expand levels"
|
||||
# rem_hero: "Remove Hero"
|
||||
# status: "Status"
|
||||
rem_hero: "Xóa Tướng"
|
||||
status: "Trạng thái"
|
||||
complete_2: "Hoàn thành"
|
||||
started_2: "Đã bắt đầu"
|
||||
not_started_2: "Chưa bắt đầu"
|
||||
view_solution: "Click để xem lời giải."
|
||||
# view_attempt: "Click to view attempt."
|
||||
# latest_achievement: "Latest Achievement"
|
||||
view_attempt: "Click để xem thử."
|
||||
latest_achievement: "Thành tựu mới nhất"
|
||||
playtime: "Thời gian chơi"
|
||||
last_played: "Lần chơi cuối"
|
||||
# leagues_explanation: "Play in a league against other clan members in these multiplayer arena instances."
|
||||
# track_concepts1: "Track concepts"
|
||||
# track_concepts2a: "learned by each student"
|
||||
# track_concepts2b: "learned by each member"
|
||||
# track_concepts3a: "Track levels completed for each student"
|
||||
# track_concepts3b: "Track levels completed for each member"
|
||||
track_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: "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_concepts4b: "Xem các thành viên của bạn'"
|
||||
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_concepts6b: "Sắp xếp thành viên theo tên hoặc tiến trình"
|
||||
# track_concepts7: "Requires invitation"
|
||||
# track_concepts8: "to join"
|
||||
track_concepts7: "Yêu cầu lời mời"
|
||||
track_concepts8: "để tham gia"
|
||||
private_require_sub: "Các Clan kín cần mua subscription để tạo hoặc tham gia."
|
||||
|
||||
courses:
|
||||
|
@ -1047,7 +1047,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
|||
visit_suf: "để tham gia."
|
||||
select_class: "Chọn một trong các lớp học của bạn"
|
||||
unnamed: "*unnamed*"
|
||||
# select: "Select"
|
||||
select: "Lựa chọ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_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"
|
||||
stats: "Thống kê"
|
||||
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:"
|
||||
average_levels: "Lượng cấp độ trung bình đã hoàn thành:"
|
||||
total_levels: "Tổng số cấp độ đã hoàn thành"
|
||||
# furthest_level: "Furthest level completed:"
|
||||
# students: "Students"
|
||||
# students1: "students"
|
||||
# concepts: "Concepts"
|
||||
# levels: "levels"
|
||||
# played: "Played"
|
||||
# play_time: "Play time:"
|
||||
# completed: "Completed:"
|
||||
# invite_students: "Invite students to join this class."
|
||||
# invite_link_header: "Link to join course"
|
||||
furthest_level: "Màn chơi xa nhất đã hoàn thành:"
|
||||
students: "Học viên"
|
||||
students1: "học viên"
|
||||
concepts: "Các khái niệm"
|
||||
levels: "màn chơi"
|
||||
played: "Đã chơi"
|
||||
play_time: "Thời gian chơi:"
|
||||
completed: "Đã hoàn thành:"
|
||||
invite_students: "Mời các học viên tham gia lớp học này."
|
||||
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_2: "Or have us email them directly:"
|
||||
# capacity_used: "Course slots used:"
|
||||
# enter_emails: "Enter student emails to invite, one per line"
|
||||
capacity_used: "Số chỗ đã đăng ký:"
|
||||
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"
|
||||
creating_class: "Đang tạo lớp..."
|
||||
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"
|
||||
# displayed_course_page: "This will be displayed on the course page for you and your students. It can be changed later."
|
||||
buy: "Mua"
|
||||
# purchasing_for: "You are purchasing a license for"
|
||||
# creating_for: "You are creating a class for"
|
||||
# for: "for" # Like in 'for 30 students'
|
||||
purchasing_for: "Bạn đang muc giấy phép cho"
|
||||
creating_for: "Bạn đang tạo một lớp cho"
|
||||
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."
|
||||
# free_trial: "Free trial for teachers!"
|
||||
# get_access: "to get individual access to all courses for evalutaion purposes."
|
||||
# questions: "Questions?"
|
||||
# teachers_click: "Teachers Click Here"
|
||||
# students_click: "Students Click Here"
|
||||
questions: "Có câu hỏi?"
|
||||
teachers_click: "Giáo viên click vào đây"
|
||||
students_click: "Học viên click vào đây"
|
||||
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."
|
||||
# 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_assigned: "students assigned"
|
||||
# length: "Length:"
|
||||
title: "Tiêu đề" # Flat style redesign
|
||||
# subtitle: "Review course guidelines, solutions, and levels"
|
||||
# changelog: "View latest changes to course levels."
|
||||
# select_language: "Select language"
|
||||
# select_level: "Select level"
|
||||
# play_level: "Play Level"
|
||||
# concepts_covered: "Concepts covered"
|
||||
# print_guide: "Print Guide (PDF)"
|
||||
# view_guide_online: "View Guide Online (PDF)"
|
||||
# last_updated: "Last updated:"
|
||||
title: "Các khóa học" # Flat style redesign
|
||||
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: "Xem những thay đổi mới nhất về các khóa học."
|
||||
select_language: "Chọn ngôn ngữ"
|
||||
select_level: "Chọn màn chơi"
|
||||
play_level: "Chơi Màn Chơi"
|
||||
concepts_covered: "Bao gồm các khái niệm"
|
||||
print_guide: "In Hướng Dẫn (PDF)"
|
||||
view_guide_online: "Xem Hướng Dẫn Online (PDF)"
|
||||
last_updated: "Cập nhật lần cuối:"
|
||||
# grants_lifetime_access: "Grants access to all Courses."
|
||||
# enrollment_credits_available: "Enrollment Credits Available:"
|
||||
description: "Mô tả" # ClassroomSettingsModal
|
||||
|
@ -1292,7 +1292,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
|
|||
student_age_range_to: "tới"
|
||||
create_class: "Tạo 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_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"
|
||||
# achievement_title: "Achievement Editor"
|
||||
# poll_title: "Poll Editor"
|
||||
# back: "Back"
|
||||
back: "Quay lại"
|
||||
# revert: "Revert"
|
||||
# revert_models: "Revert Models"
|
||||
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"
|
||||
small: "Bé"
|
||||
large: "Lớn"
|
||||
# fork_title: "Fork New Version"
|
||||
# fork_creating: "Creating Fork..."
|
||||
fork_title: "Fork phiên bản mới"
|
||||
fork_creating: "Đang tạo Fork..."
|
||||
# generate_terrain: "Generate Terrain"
|
||||
more: "Thêm"
|
||||
wiki: "Wiki"
|
||||
|
|
|
@ -279,8 +279,8 @@ module.exports = nativeDescription: "繁體中文", englishDescription: "Chinese
|
|||
recovery_sent: "密碼重置的信件已寄出"
|
||||
|
||||
items:
|
||||
primary: "主要武器"
|
||||
secondary: "次要武器"
|
||||
primary: "主手裝備"
|
||||
secondary: "副手裝備"
|
||||
armor: "裝甲"
|
||||
accessories: "飾品"
|
||||
misc: "輔助"
|
||||
|
@ -344,10 +344,10 @@ module.exports = nativeDescription: "繁體中文", englishDescription: "Chinese
|
|||
confirm_password: "確認密碼"
|
||||
message: "訊息"
|
||||
code: "程式碼"
|
||||
ladder: "升級比賽"
|
||||
when: "當"
|
||||
ladder: "天梯"
|
||||
when: "何時"
|
||||
opponent: "對手"
|
||||
rank: "階級"
|
||||
rank: "排名"
|
||||
score: "分數"
|
||||
win: "獲勝"
|
||||
loss: "失敗"
|
||||
|
@ -472,7 +472,7 @@ module.exports = nativeDescription: "繁體中文", englishDescription: "Chinese
|
|||
tip_reticulating: "網格狀鋸齒(指卡頓現象)"
|
||||
tip_harry: "巫師,"
|
||||
tip_great_responsibility: "隨著擁有強大的編程技巧,除錯的責任將越大。"
|
||||
tip_munchkin: "如果您不吃掉您的蔬菜,那小矮人將在您沉睡時找到您。"
|
||||
tip_munchkin: "如果您不吃掉您的蔬菜,那些矮人將在您睡覺時找到您。"
|
||||
tip_binary: "只有2種人在這世上:那些懂2進位的,和那些不懂的。"
|
||||
tip_commitment_yoda: "一個程式員必須擁有強烈的責任感和一顆認真的心。 ~ 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_mistakes_proof_of_trying: "程式碼中的錯誤證明了你曾經嘗試過。"#"Mistakes in your code are just proof that you are trying."
|
||||
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_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"
|
||||
|
@ -725,37 +725,37 @@ module.exports = nativeDescription: "繁體中文", englishDescription: "Chinese
|
|||
editor_config_behaviors_description: "自動填入小括號、大括號以及引號。"
|
||||
|
||||
about:
|
||||
# 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."
|
||||
# mission_link: "Mission"
|
||||
# team_link: "Team"
|
||||
# story_link: "Story"
|
||||
# press_link: "Press"
|
||||
# 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_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."
|
||||
# team_title: "Meet the CodeCombat team"
|
||||
# team_values: "We value open and respectful dialog, where the best idea wins. Our decisions are grounded in customer research and our process is focused on delivering tangible results for them. Everyone is hands-on, from our CEO to our Github contributors, because we value growth and learning in our team."
|
||||
main_title: "如果您想要學編程,你需要寫(一大堆)程式碼。"#"If you want to learn to program, you need to write (a lot of) code."
|
||||
main_description: "在CodeCombat中,我們的職責是確保您笑著玩遊戲。" #"At CodeCombat, our job is to make sure you're doing that with a smile on your face."
|
||||
mission_link: "任務"#"Mission"
|
||||
team_link: "隊伍"#"Team"
|
||||
story_link: "故事"#"Story"
|
||||
press_link: "按"#"Press"
|
||||
mission_title: "我們的任務為:讓世上每個學生都有機會能學會編程。" #"Our mission: make programming accessible to every student on Earth."
|
||||
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: "它的出現也讓使用者學得更快,就像是與它對話而不是閱讀手冊一般。我們想將這種對話帶給每一個學校以及<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: "認識CodeCombat團隊。"#"Meet the CodeCombat 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_blurb: "亢奮的Guru"
|
||||
nick_blurb: "亢奮的咕嚕"
|
||||
matt_title: "共同創辦人" # {change}
|
||||
cat_title: "首席開卡設計師" # {change}
|
||||
cat_blurb: "氣宗"
|
||||
scott_title: "共同創辦人" # {change}
|
||||
scott_blurb: "理性至上"
|
||||
# maka_title: "Customer Advocate"
|
||||
maka_title: "客戶代言人" #"Customer Advocate"
|
||||
maka_blurb: "說書人"
|
||||
rob_title: "編譯工程師" # {change}
|
||||
rob_blurb: "編寫一些的程式碼"
|
||||
josh_c_title: "遊戲設計師"
|
||||
josh_c_blurb: "設計遊戲"
|
||||
# robin_title: "UX Design & Research"
|
||||
# robin_blurb: "Scaffolding"
|
||||
robin_title: "使用者體驗研究與設計"#"UX Design & Research"
|
||||
robin_blurb: "鷹架"#"Scaffolding"
|
||||
josh_title: "遊戲設計師"
|
||||
josh_blurb: "地面是熔岩"
|
||||
# phoenix_title: "Software Engineer"
|
||||
# nolan_title: "Territory Manager"
|
||||
# elliot_title: "Partnership Manager"
|
||||
phoenix_title: "軟體工程師"#"Software Engineer"
|
||||
nolan_title: "區域經理"#"Territory Manager"
|
||||
elliot_title: "合作經裡"#"Partnership Manager"
|
||||
retrostyle_title: "插畫師"
|
||||
retrostyle_blurb: "復古風格的遊戲"
|
||||
jose_title: "音樂"
|
||||
|
@ -1566,41 +1566,41 @@ module.exports = nativeDescription: "繁體中文", englishDescription: "Chinese
|
|||
|
||||
ladder:
|
||||
please_login: "在參與對戰前請先登入。"
|
||||
my_matches: "我的對手"
|
||||
my_matches: "我的對戰"
|
||||
simulate: "模擬"
|
||||
simulation_explanation: "通過模擬遊戲,您可以使您的遊戲更快得到評分!"
|
||||
simulation_explanation: "通過模擬遊戲,您可以使您的遊戲更快得到評定排名!"
|
||||
simulation_explanation_leagues: "你主要會為你的部落或者課程的同伴幫忙模擬遊戲。"
|
||||
simulate_games: "模擬遊戲!"
|
||||
games_simulated_by: "您模擬過的次數:"
|
||||
games_simulated_for: "替您模擬的次數:"
|
||||
games_in_queue: "遊戲正在列隊中:"
|
||||
games_simulated: "遊戲已模擬"
|
||||
games_simulated: "遊戲模擬次數"
|
||||
games_played: "玩過的遊戲"
|
||||
ratio: "通過率"
|
||||
ratio: "比率"
|
||||
leaderboard: "排行榜"
|
||||
battle_as: "我要扮演 "
|
||||
summary_your: "您的 "
|
||||
summary_matches: "對手 - "
|
||||
summary_wins: " 勝利,"
|
||||
summary_losses: " 失敗"
|
||||
rank_no_code: "沒有新程式碼可評分"
|
||||
rank_my_game: "對我的遊戲評分!"
|
||||
rank_no_code: "沒有新程式碼可評定排名"
|
||||
rank_my_game: "對我的遊戲評定排名!"
|
||||
rank_submitting: "上傳中…"
|
||||
rank_submitted: "已上傳以求評分"
|
||||
rank_failed: "評分失敗"
|
||||
rank_being_ranked: "已評分"
|
||||
rank_submitted: "已上傳以求評定排名"
|
||||
rank_failed: "評定失敗"
|
||||
rank_being_ranked: "已評定"
|
||||
rank_last_submitted: "已上傳 "
|
||||
help_simulate: "幫我們模擬遊戲?"
|
||||
code_being_simulated: "您的新程式碼正在被其他人模擬評分中。分數將隨每次新的配對而更新。"
|
||||
code_being_simulated: "您的新程式碼正在被其他人模擬評定中。分數將隨每次新的配對而更新。"
|
||||
no_ranked_matches_pre: "對這個隊伍尚未有評分過的配對!"
|
||||
no_ranked_matches_post: " 在別人的戰場上扮演對手並且回到這使您的程式碼接受評分。"
|
||||
no_ranked_matches_post: " 在別人的戰場上扮演對手並且回到這使您的程式碼接受評定排名。"
|
||||
choose_opponent: "選擇對手"
|
||||
select_your_language: "選擇您的語言!"
|
||||
tutorial_play: "教學"
|
||||
tutorial_recommended: "如果您尚未玩過,建議先嘗試教學"
|
||||
tutorial_skip: "略過教學"
|
||||
tutorial_not_sure: "不確定發生啥事?"
|
||||
tutorial_play_first: "先嘗試教學"
|
||||
tutorial_play_first: "先試試教學"
|
||||
simple_ai: "簡單人工智慧" # {change}
|
||||
warmup: "熱身"
|
||||
friends_playing: "與朋友連線"
|
||||
|
@ -1609,7 +1609,7 @@ module.exports = nativeDescription: "繁體中文", englishDescription: "Chinese
|
|||
invite_friends_to_battle: "邀請您的朋友加入此戰鬥!"
|
||||
fight: "戰鬥!"
|
||||
watch_victory: "觀看您的勝利"
|
||||
defeat_the: "擊敗"
|
||||
defeat_the: "敗於"
|
||||
watch_battle: "觀看戰役"
|
||||
tournament_started: ",錦標賽已開始"
|
||||
tournament_ends: "錦標賽結束"
|
||||
|
|
|
@ -8,7 +8,6 @@ module.exports = class Campaign extends CocoModel
|
|||
@className: 'Campaign'
|
||||
@schema: schema
|
||||
urlRoot: '/db/campaign'
|
||||
saveBackups: true
|
||||
@denormalizedLevelProperties: _.keys(_.omit(schema.properties.levels.additionalProperties.properties, ['unlocks', 'position', 'rewards']))
|
||||
@denormalizedCampaignProperties: ['name', 'i18n', 'slug']
|
||||
|
||||
|
|
|
@ -121,3 +121,10 @@ module.exports = class Classroom extends CocoModel
|
|||
url: _.result(courseInstance, 'url') + '/classroom'
|
||||
})
|
||||
@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()
|
||||
|
||||
@pollAchievements: ->
|
||||
return if application.testing
|
||||
|
||||
CocoCollection = require 'collections/CocoCollection'
|
||||
EarnedAchievement = require 'models/EarnedAchievement'
|
||||
|
|
|
@ -58,12 +58,14 @@ module.exports = class Level extends CocoModel
|
|||
|
||||
denormalize: (supermodel, session, otherSession) ->
|
||||
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
|
||||
@denormalizeThang(levelThang, supermodel, session, otherSession)
|
||||
@denormalizeThang(levelThang, supermodel, session, otherSession, thangTypesByOriginal)
|
||||
o
|
||||
|
||||
denormalizeThang: (levelThang, supermodel, session, otherSession) ->
|
||||
denormalizeThang: (levelThang, supermodel, session, otherSession, thangTypesByOriginal) ->
|
||||
levelThang.components ?= []
|
||||
isHero = /Hero Placeholder/.test(levelThang.id) and @get('type', true) in ['hero', 'hero-ladder', 'hero-coop']
|
||||
if isHero and otherSession
|
||||
|
@ -79,7 +81,7 @@ module.exports = class Level extends CocoModel
|
|||
if isHero
|
||||
placeholders = {}
|
||||
placeholdersUsed = {}
|
||||
placeholderThangType = supermodel.getModelByOriginal(ThangType, levelThang.thangType)
|
||||
placeholderThangType = thangTypesByOriginal[levelThang.thangType]
|
||||
unless placeholderThangType
|
||||
console.error "Couldn't find placeholder ThangType for the hero!"
|
||||
isHero = false
|
||||
|
@ -92,7 +94,7 @@ module.exports = class Level extends CocoModel
|
|||
heroThangType = session?.get('heroConfig')?.thangType
|
||||
levelThang.thangType = heroThangType if heroThangType
|
||||
|
||||
thangType = supermodel.getModelByOriginal(ThangType, levelThang.thangType, (m) -> m.get('components')?)
|
||||
thangType = thangTypesByOriginal[levelThang.thangType]
|
||||
|
||||
configs = {}
|
||||
for thangComponent in levelThang.components
|
||||
|
@ -143,6 +145,11 @@ module.exports = class Level extends CocoModel
|
|||
for original, placeholderComponent of placeholders when not placeholdersUsed[original]
|
||||
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) ->
|
||||
[sorted, originalsSeen] = [[], {}]
|
||||
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.
|
||||
# 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 ? []
|
||||
originalsToThangComponents = _.indexBy thang.components, 'original'
|
||||
sorted = []
|
||||
visit = (c, namesToIgnore) ->
|
||||
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
|
||||
return unless lc
|
||||
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
|
||||
else
|
||||
for d in lc.dependencies or []
|
||||
c2 = _.find thang.components, {original: d.original}
|
||||
c2 = originalsToThangComponents[d.original]
|
||||
unless c2
|
||||
dependent = _.find levelComponents, {original: d.original}
|
||||
dependent = originalsToComponents[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
|
||||
visit c2 if c2
|
||||
if lc.name is 'Collides'
|
||||
if allied = _.find levelComponents, {name: 'Allied'}
|
||||
allied = _.find(thang.components, {original: allied.original})
|
||||
visit allied if allied
|
||||
if lc.name is 'Moves'
|
||||
if acts = _.find levelComponents, {name: 'Acts'}
|
||||
acts = _.find(thang.components, {original: acts.original})
|
||||
visit acts if acts
|
||||
if lc.name is 'Collides' and alliedComponent
|
||||
if allied = originalsToThangComponents[alliedComponent.original]
|
||||
visit allied
|
||||
if lc.name is 'Moves' and actsComponent
|
||||
if acts = originalsToThangComponents[actsComponent.original]
|
||||
visit acts
|
||||
#console.log thang.id, 'sorted comps adding', lc.name
|
||||
sorted.push c
|
||||
for comp in thang.components
|
||||
|
@ -258,3 +268,14 @@ module.exports = class Level extends CocoModel
|
|||
else
|
||||
options.url = "/db/course/#{courseID}/levels/#{levelOriginalID}/next"
|
||||
@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'
|
||||
raider: '55527eb0b8abf4ba1fe9a107'
|
||||
goliath: '55e1a6e876cb0948c96af9f8'
|
||||
guardian: ''
|
||||
guardian: '566a058620de41290036a745'
|
||||
ninja: '52fc0ed77e01835453bd8f6c'
|
||||
'forest-archer': '5466d4f2417c8b48a9811e87'
|
||||
trapper: '5466d449417c8b48a9811e83'
|
||||
pixie: ''
|
||||
assassin: ''
|
||||
assassin: '566a2202e132c81f00f38c81'
|
||||
librarian: '52fbf74b7e01835453bd8d8e'
|
||||
'potion-master': '52e9adf7427172ae56002172'
|
||||
sorcerer: '52fd1524c7e6cf99160e7bc9'
|
||||
|
@ -239,6 +239,27 @@ module.exports = class ThangType extends CocoModel
|
|||
portraitOnly = !!options.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) ->
|
||||
src = @getPortraitSource(spriteOptionsOrKey, size)
|
||||
return null unless src
|
||||
|
|
|
@ -25,7 +25,7 @@ module.exports = class User extends CocoModel
|
|||
return name if name
|
||||
[emailName, emailDomain] = @get('email')?.split('@') or []
|
||||
return emailName if emailName
|
||||
return 'Anoner'
|
||||
return 'Anonymous'
|
||||
|
||||
getPhotoURL: (size=80, useJobProfilePhoto=false, useEmployerPageAvatar=false) ->
|
||||
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()
|
||||
@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.
|
||||
# ... 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.
|
||||
|
@ -194,6 +179,18 @@ module.exports = class User extends CocoModel
|
|||
application.tracker.identify fourthLevelGroup: @fourthLevelGroup unless me.isAdmin()
|
||||
@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)->
|
||||
# A/B Testing video tutorial styles
|
||||
# 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()
|
||||
@fetch(options)
|
||||
|
||||
loginPasswordUser: (usernameOrEmail, password, options={}) ->
|
||||
options.url = '/auth/login'
|
||||
options.type = 'POST'
|
||||
options.data ?= {}
|
||||
_.extend(options.data, { username: usernameOrEmail, password })
|
||||
@fetch(options)
|
||||
|
||||
makeCoursePrepaid: ->
|
||||
coursePrepaid = @get('coursePrepaid')
|
||||
return null unless coursePrepaid
|
||||
|
|
|
@ -61,7 +61,7 @@ _.extend CampaignSchema.properties, {
|
|||
i18n: { type: 'object', format: 'hidden' }
|
||||
requiresSubscription: { 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' }
|
||||
original: { type: 'string', format: 'hidden' }
|
||||
adventurer: { type: 'boolean' }
|
||||
|
|
|
@ -276,9 +276,23 @@ c.extendNamedProperties LevelSchema # let's have the name be the first property
|
|||
_.extend LevelSchema.properties,
|
||||
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.' }
|
||||
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
|
||||
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'})
|
||||
nextLevel: {
|
||||
type: 'object',
|
||||
|
@ -299,7 +313,7 @@ _.extend LevelSchema.properties,
|
|||
icon: {type: 'string', format: 'image-file', title: 'Icon'}
|
||||
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
|
||||
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
|
||||
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'}
|
||||
|
|
|
@ -10,7 +10,7 @@ class AttacksSelf extends Component
|
|||
systems = [
|
||||
'action', 'ai', 'alliance', 'collision', 'combat', 'display', 'event', 'existence', 'hearing',
|
||||
'inventory', 'movement', 'programming', 'targeting', 'ui', 'vision', 'misc', 'physics', 'effect',
|
||||
'magic'
|
||||
'magic', 'game'
|
||||
]
|
||||
|
||||
PropertyDocumentationSchema = c.object {
|
||||
|
|
|
@ -18,21 +18,6 @@ class Jitter extends System
|
|||
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 {
|
||||
title: 'System Dependency'
|
||||
description: 'A System upon which this System depends.'
|
||||
|
@ -50,14 +35,14 @@ DependencySchema = c.object {
|
|||
LevelSystemSchema = c.object {
|
||||
title: 'System'
|
||||
description: 'A System which can affect Level behavior.'
|
||||
required: ['name', 'description', 'code', 'dependencies', 'propertyDocumentation', 'codeLanguage']
|
||||
required: ['name', 'code']
|
||||
default:
|
||||
name: 'JitterSystem'
|
||||
description: 'This System makes all idle, movable Thangs jitter around.'
|
||||
code: jitterSystemCode
|
||||
codeLanguage: 'coffeescript'
|
||||
dependencies: [] # TODO: should depend on something by default
|
||||
propertyDocumentation: []
|
||||
configSchema: {}
|
||||
}
|
||||
c.extendNamedProperties LevelSystemSchema # let's have the name be the first property
|
||||
LevelSystemSchema.properties.name.pattern = c.classNamePattern
|
||||
|
@ -83,7 +68,6 @@ _.extend LevelSystemSchema.properties,
|
|||
type: 'string'
|
||||
format: 'hidden'
|
||||
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}}
|
||||
official:
|
||||
type: 'boolean'
|
||||
|
|
|
@ -6,7 +6,7 @@ UserSchema = c.object
|
|||
default:
|
||||
visa: 'Authorized to work in the US'
|
||||
music: true
|
||||
name: 'Anoner'
|
||||
name: 'Anonymous'
|
||||
autocastDelay: 5000
|
||||
emails: {}
|
||||
permissions: []
|
||||
|
@ -121,7 +121,7 @@ _.extend UserSchema.properties,
|
|||
|
||||
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']}
|
||||
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' }
|
||||
indentGuides: {type: 'boolean' }
|
||||
behaviors: {type: 'boolean' }
|
||||
|
@ -337,7 +337,7 @@ _.extend UserSchema.properties,
|
|||
}
|
||||
}
|
||||
enrollmentRequestSent: { type: 'boolean' }
|
||||
|
||||
|
||||
schoolName: {type: 'string'}
|
||||
role: {type: 'string', enum: ["God", "advisor", "parent", "principal", "student", "superintendent", "teacher", "technology coordinator"]}
|
||||
birthday: c.stringDate({title: "Birthday"})
|
||||
|
|
|
@ -41,3 +41,22 @@
|
|||
#join-class-form
|
||||
.alert, .progress
|
||||
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
|
|
@ -104,6 +104,12 @@
|
|||
vertical-align: bottom
|
||||
td
|
||||
height: 66px
|
||||
|
||||
.select-all
|
||||
padding-top: 5px
|
||||
|
||||
.checkbox-flat
|
||||
margin-top: 3px
|
||||
|
||||
.enroll-student-button
|
||||
margin-left: 33%
|
||||
|
|
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
|
||||
|
||||
#login-button
|
||||
#login-btn
|
||||
position: absolute
|
||||
top: 186px
|
||||
height: 70px
|
||||
|
|
|
@ -204,6 +204,7 @@ $gameControlMargin: 30px
|
|||
|
||||
.tooltip
|
||||
z-index: 2
|
||||
pointer-events: none
|
||||
|
||||
.tooltip-arrow
|
||||
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
|
||||
text-transform: none
|
||||
|
||||
.subscription-required, .course-membership-required
|
||||
.subscription-required, .course-membership-required, .could-not-load
|
||||
display: none
|
||||
margin-top: -160px
|
||||
color: black
|
||||
|
|
|
@ -78,9 +78,6 @@
|
|||
@include flex-column()
|
||||
@include flex-align-content-start()
|
||||
|
||||
&.no-help
|
||||
margin-top: 3%
|
||||
|
||||
.property-entry-item-group
|
||||
display: inline-block
|
||||
min-height: 38px
|
|
@ -29,7 +29,7 @@
|
|||
|
||||
span.code-background
|
||||
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
|
||||
display: none
|
||||
|
|
|
@ -85,27 +85,18 @@
|
|||
.glyphicon-fullscreen
|
||||
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
|
||||
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)
|
||||
cursor: pointer
|
||||
@include opacity(0.90)
|
||||
|
|
|
@ -264,6 +264,13 @@ $level-resize-transition-time: 0.5s
|
|||
width: 100%
|
||||
height: 90px
|
||||
text-align: center
|
||||
|
||||
.hints-view
|
||||
position: absolute
|
||||
top: 10px
|
||||
bottom: 10px
|
||||
right: 45%
|
||||
z-index: 1000000
|
||||
|
||||
html.fullscreen-editor
|
||||
#level-view
|
|
@ -444,7 +444,7 @@ body[lang='ru'], body[lang='uk'], body[lang='bg'], body[lang^='mk'], body[lang='
|
|||
#footer
|
||||
background-image: url("/images/pages/home/footer_background.png")
|
||||
height: 229px
|
||||
margin: -22px auto 0
|
||||
margin: 65px auto 0
|
||||
color: white
|
||||
|
||||
@media (max-width: $screen-sm-min)
|
||||
|
|
|
@ -7,3 +7,7 @@
|
|||
font-family: Arial, Geneva, sans-serif
|
||||
padding: 20px
|
||||
font-weight: bold
|
||||
|
||||
.alert-report
|
||||
font-size: 20px
|
||||
|
|
@ -139,6 +139,13 @@ block content
|
|||
small(data-i18n="about.elliot_title")
|
||||
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
|
||||
li
|
||||
a(href="http://floor.is/lava/" rel="external")
|
||||
|
|
|
@ -18,7 +18,7 @@ mixin accountLinks
|
|||
.style-flat
|
||||
block header
|
||||
nav#main-nav.navbar.navbar-default
|
||||
.container-fluid
|
||||
.container-fluid.container
|
||||
.row
|
||||
.col-lg-12
|
||||
.navbar-header
|
||||
|
@ -81,8 +81,6 @@ mixin accountLinks
|
|||
p If this is showing, you dun goofed
|
||||
|
||||
block footer
|
||||
#character-lineup.text-center.m-t-3
|
||||
img(src="/images/pages/home/character_lineup.png")
|
||||
.container-fluid
|
||||
#footer.small
|
||||
.container
|
||||
|
|
|
@ -123,7 +123,7 @@ block content
|
|||
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])
|
||||
div
|
||||
a(href="/user/#{member.id}")= member.get('name') || 'Anoner'
|
||||
a(href="/user/#{member.id}")= member.get('name') || 'Anonymous'
|
||||
div Level #{member.level()}
|
||||
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
|
||||
|
@ -220,7 +220,7 @@ block content
|
|||
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])
|
||||
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.achievements-cell
|
||||
if memberAchievementsMap && memberAchievementsMap[member.id]
|
||||
|
|
|
@ -45,7 +45,7 @@ block content
|
|||
if view.idNameMap && view.idNameMap[clan.get('ownerID')]
|
||||
a(href="/user/#{clan.get('ownerID')}")= view.idNameMap[clan.get('ownerID')]
|
||||
else
|
||||
a(href="/user/#{clan.get('ownerID')}") Anoner
|
||||
a(href="/user/#{clan.get('ownerID')}") Anonymous
|
||||
td
|
||||
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
|
||||
|
@ -75,7 +75,7 @@ block content
|
|||
if view.idNameMap && view.idNameMap[clan.get('ownerID')]
|
||||
a(href="/user/#{clan.get('ownerID')}")= view.idNameMap[clan.get('ownerID')]
|
||||
else
|
||||
a(href="/user/#{clan.get('ownerID')}") Anoner
|
||||
a(href="/user/#{clan.get('ownerID')}") Anonymous
|
||||
td= clan.get('type')
|
||||
td
|
||||
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
|
||||
block content
|
||||
.clearfix
|
||||
if user && viewName
|
||||
if view.userData && view.viewName
|
||||
ol.breadcrumb
|
||||
li
|
||||
a(href="/user/#{user.getSlugOrID()}") #{user.displayName()}
|
||||
a(href="/user/#{view.userData.getSlugOrID()}") #{view.userData.displayName()}
|
||||
li.active
|
||||
| #{viewName}
|
||||
if !user || user.loading
|
||||
| #{view.viewName}
|
||||
if !view.userData || view.userData.loading
|
||||
| LOADING
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
.row
|
||||
for contributor in contributors
|
||||
.col-xs-6.col-md-3
|
||||
.thumbnail
|
||||
- var src = "/images/pages/contribute/" + contributorClassName + ".png";
|
||||
- if(contributor.avatar)
|
||||
- src = src.replace(contributorClassName, contributorClassName + "/" + contributor.avatar + "_small");
|
||||
- if(contributor.id)
|
||||
- src = "/db/user/" + contributor.id + "/avatar?s=100&fallback=" + src;
|
||||
a(href=contributor.github ? "https://github.com/codecombat/codecombat/commits?author=" + contributor.github : null, class=contributor.github ? 'has-github' : '')
|
||||
img.img-responsive(src=src, alt=contributor.name)
|
||||
.caption
|
||||
h4= contributor.name
|
||||
if contributors
|
||||
for contributor in contributors
|
||||
.col-xs-6.col-md-3
|
||||
.thumbnail
|
||||
- var src = "/images/pages/contribute/" + contributorClassName + ".png";
|
||||
- if(contributor.avatar)
|
||||
- src = src.replace(contributorClassName, contributorClassName + "/" + contributor.avatar + "_small");
|
||||
- if(contributor.id)
|
||||
- src = "/db/user/" + contributor.id + "/avatar?s=100&fallback=" + src;
|
||||
a(href=contributor.github ? "https://github.com/codecombat/codecombat/commits?author=" + contributor.github : null, class=contributor.github ? 'has-github' : '')
|
||||
img.img-responsive(src=src, alt=contributor.name)
|
||||
.caption
|
||||
h4= contributor.name
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
img(src="/images/pages/modal/auth/login-background.png", draggable="false").auth-modal-background
|
||||
h1(data-i18n="login.log_in")
|
||||
|
||||
div#close-modal
|
||||
#close-modal
|
||||
span.glyphicon.glyphicon-remove
|
||||
|
||||
.auth-form-content
|
||||
|
@ -11,24 +11,40 @@
|
|||
if showRequiredError
|
||||
.alert.alert-success
|
||||
span(data-i18n="signup.required")
|
||||
|
||||
#unknown-error-alert.alert.alert-danger.hide(data-i18n="loading_error.unknown")
|
||||
|
||||
form.form
|
||||
.form-group
|
||||
label.control-label(for="email")
|
||||
span(data-i18n="general.email")
|
||||
label.control-label(for="username-or-email-input")
|
||||
span(data-i18n="login.email_or_username")
|
||||
| :
|
||||
.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
|
||||
div#recover-account-wrapper
|
||||
a(data-toggle="coco-modal", data-target="core/RecoverModal", data-i18n="login.forgot_password")#link-to-recover
|
||||
#recover-account-wrapper
|
||||
a#link-to-recover(
|
||||
data-toggle="coco-modal"
|
||||
data-target="core/RecoverModal"
|
||||
data-i18n="login.forgot_password"
|
||||
)
|
||||
label.control-label(for="password")
|
||||
span(data-i18n="general.password")
|
||||
| :
|
||||
.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
|
||||
h3(data-i18n="login.logging_in")
|
||||
|
@ -39,10 +55,10 @@
|
|||
// btn.btn.btn-sm.github-login-button#github-login-button
|
||||
// img(src="/images/pages/modal/auth/github_icon.png")
|
||||
// | 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")
|
||||
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")
|
||||
span.sign-in-blurb(data-i18n="login.sign_in_with_gplus")
|
||||
.gplus-login-wrapper
|
|
@ -33,10 +33,10 @@
|
|||
.col-md-6
|
||||
.auth-network-logins.text-center
|
||||
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")
|
||||
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")
|
||||
span.sign-in-blurb(data-i18n="login.sign_in_with_gplus")
|
||||
.gplus-login-wrapper
|
||||
|
|
|
@ -2,7 +2,7 @@ extends /templates/base
|
|||
|
||||
block content
|
||||
|
||||
if !me.isAnonymous() && (me.isTeacher() || view.ownedClassrooms.size())
|
||||
if !me.isAnonymous() && me.isTeacher()
|
||||
.alert.alert-danger.text-center
|
||||
// DNT: Temporary
|
||||
h3 ATTENTION TEACHERS:
|
||||
|
|
|
@ -2,7 +2,7 @@ extends /templates/base
|
|||
|
||||
block content
|
||||
|
||||
if me.isTeacher() || view.ownedClassrooms.size()
|
||||
if me.isTeacher()
|
||||
.alert.alert-danger.text-center
|
||||
// DNT: Temporary
|
||||
h3 ATTENTION TEACHERS:
|
||||
|
|
|
@ -4,7 +4,7 @@ block content
|
|||
.container
|
||||
.row.m-y-3
|
||||
.col-xs-12
|
||||
if me.isTeacher() || view.ownedClassrooms.size()
|
||||
if me.isTeacher()
|
||||
.alert.alert-danger.text-center
|
||||
// DNT: Temporary
|
||||
h3 ATTENTION TEACHERS:
|
||||
|
@ -39,6 +39,18 @@ block content
|
|||
|
||||
.text-center
|
||||
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()
|
||||
h3.text-uppercase(data-i18n="courses.my_classes")
|
||||
|
@ -55,7 +67,7 @@ block content
|
|||
h5
|
||||
span.spr= classroom.get('name')
|
||||
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});
|
||||
for courseInstance in courseInstances
|
||||
|
@ -65,7 +77,7 @@ block content
|
|||
h6
|
||||
span.spr= course.get('name')
|
||||
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)
|
||||
.clearfix
|
||||
|
||||
|
@ -100,19 +112,19 @@ mixin course-instance-body(courseInstance, classroom)
|
|||
- var arenaLevel = stats.levels.arena;
|
||||
if arenaLevel
|
||||
- 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")
|
||||
else
|
||||
a.btn.btn-default.btn-lg.m-b-1(disabled=true, data-i18n="courses.course_complete")
|
||||
else if stats.levels.next != stats.levels.first
|
||||
- var next = stats.levels.next;
|
||||
- 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")
|
||||
else
|
||||
- var firstLevel = stats.levels.first;
|
||||
- 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")
|
||||
|
||||
div
|
||||
|
|
|
@ -5,19 +5,21 @@ block page_nav
|
|||
|
||||
block content
|
||||
if me.isAnonymous() || (!me.isTeacher() && !view.classrooms.size())
|
||||
.access-restricted.container.text-center.m-y-3
|
||||
h5(data-i18n='teacher.access_restricted')
|
||||
p(data-i18n='teacher.teacher_account_required')
|
||||
if me.isAnonymous()
|
||||
.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')
|
||||
else
|
||||
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")
|
||||
.container
|
||||
.access-restricted.container.text-center.m-y-3
|
||||
h5(data-i18n='teacher.access_restricted')
|
||||
p(data-i18n='teacher.teacher_account_required')
|
||||
if me.isAnonymous()
|
||||
.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')
|
||||
else
|
||||
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")
|
||||
|
||||
.teacher-account-blurb.text-center.col-xs-6.col-xs-offset-3.m-y-3
|
||||
h5(data-i18n='teacher.what_is_a_teacher_account')
|
||||
p(data-i18n='teacher.teacher_account_explanation')
|
||||
.container
|
||||
.teacher-account-blurb.text-center.col-xs-6.col-xs-offset-3.m-y-3
|
||||
h5(data-i18n='teacher.what_is_a_teacher_account')
|
||||
p(data-i18n='teacher.teacher_account_explanation')
|
||||
|
||||
else
|
||||
if !me.isTeacher()
|
||||
|
|
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
|
||||
h1.modal-title(data-i18n="courses.remove_student1")
|
||||
span.glyphicon.glyphicon-warning-sign.text-danger
|
||||
p= view.user.get('name', true) + ' - ' + view.user.get('email')
|
||||
h2(data-i18n="courses.are_you_sure")
|
||||
|
||||
block modal-body-content
|
||||
|
|
|
@ -3,10 +3,21 @@ extends /templates/base-flat
|
|||
block content
|
||||
.access-restricted.container.text-center.m-y-3
|
||||
h5(data-i18n='teacher.access_restricted')
|
||||
p(data-i18n='courses.teacher_account_restricted')
|
||||
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")
|
||||
if me.isTeacher()
|
||||
p(data-i18n='courses.teacher_account_restricted')
|
||||
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")
|
||||
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")
|
||||
|
||||
.teacher-account-blurb.text-center.col-xs-6.col-xs-offset-3.m-y-3
|
||||
h5(data-i18n='teacher.what_is_a_teacher_account')
|
||||
p(data-i18n='teacher.teacher_account_explanation')
|
||||
if me.isTeacher()
|
||||
.container
|
||||
.teacher-account-blurb.text-center.col-xs-6.col-xs-offset-3.m-y-3
|
||||
h5(data-i18n='teacher.what_is_a_teacher_account')
|
||||
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,28 +108,36 @@ block content
|
|||
+copyCodes
|
||||
+addStudentsButton
|
||||
|
||||
ul.nav.nav-tabs.m-t-5(role='tablist')
|
||||
- var activeTab = state.get('activeTab');
|
||||
li(class=(activeTab === "#students-tab" ? 'active' : ''))
|
||||
a.students-tab-btn(href='#students-tab')
|
||||
.small-details.text-center(data-i18n='teacher.students')
|
||||
.tab-spacer
|
||||
li(class=(activeTab === "#course-progress-tab" ? 'active' : ''))
|
||||
a.course-progress-tab-btn(href='#course-progress-tab')
|
||||
.small-details.text-center(data-i18n='teacher.course_progress')
|
||||
.tab-spacer
|
||||
li(class=(activeTab === "#enrollment-status-tab" ? 'active' : ''))
|
||||
a.course-progress-tab-btn(href='#enrollment-status-tab')
|
||||
.small-details.text-center(data-i18n='teacher.enrollment_status')
|
||||
.tab-filler
|
||||
if view.students.length > 0
|
||||
ul.nav.nav-tabs.m-t-5(role='tablist')
|
||||
- var activeTab = state.get('activeTab');
|
||||
li(class=(activeTab === "#students-tab" ? 'active' : ''))
|
||||
a.students-tab-btn(href='#students-tab')
|
||||
.small-details.text-center(data-i18n='teacher.students')
|
||||
.tab-spacer
|
||||
li(class=(activeTab === "#course-progress-tab" ? 'active' : ''))
|
||||
a.course-progress-tab-btn(href='#course-progress-tab')
|
||||
.small-details.text-center(data-i18n='teacher.course_progress')
|
||||
.tab-spacer
|
||||
li(class=(activeTab === "#enrollment-status-tab" ? 'active' : ''))
|
||||
a.course-progress-tab-btn(href='#enrollment-status-tab')
|
||||
.small-details.text-center(data-i18n='teacher.enrollment_status')
|
||||
.tab-filler
|
||||
|
||||
.tab-content
|
||||
if activeTab === '#students-tab'
|
||||
+studentsTab
|
||||
else if activeTab === '#course-progress-tab'
|
||||
+courseProgressTab
|
||||
else
|
||||
+enrollmentStatusTab
|
||||
.tab-content
|
||||
if activeTab === '#students-tab'
|
||||
+studentsTab
|
||||
else if activeTab === '#course-progress-tab'
|
||||
+courseProgressTab
|
||||
else
|
||||
+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
|
||||
.breadcrumbs
|
||||
|
@ -171,8 +179,8 @@ mixin studentsTab
|
|||
+bulkAssignControls
|
||||
table.students-table
|
||||
thead
|
||||
th.checkbox-col.select-all
|
||||
span Select All
|
||||
th.checkbox-col.select-all.small.text-center
|
||||
span(data-i18n="teacher.select_all")
|
||||
.checkbox-flat
|
||||
input(type='checkbox' id='checkbox-all-students')
|
||||
label.checkmark(for='checkbox-all-students')
|
||||
|
@ -236,7 +244,7 @@ mixin studentRow(student)
|
|||
div(data-i18n='teacher.remove')
|
||||
|
||||
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')
|
||||
|
||||
mixin courseProgressTab
|
||||
|
@ -286,7 +294,7 @@ mixin courseProgressTab
|
|||
span(data-i18n='TODO')
|
||||
| Assign Course
|
||||
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')
|
||||
| Enroll Student
|
||||
|
||||
|
@ -313,7 +321,7 @@ mixin studentLevelsRow(student)
|
|||
- var levels = view.classroom.getLevels({courseID: course.id, withoutLadderLevels: true}).models
|
||||
each level, index in levels
|
||||
- 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)
|
||||
//- TODO: Refactor with TeacherClassesView jade
|
||||
|
@ -334,7 +342,7 @@ mixin studentLevelProgressDot(progress, level, levelNumber)
|
|||
//- TODO: Refactor with TeacherClassesView jade
|
||||
- dotClass = progress.completed ? 'forest' : (progress.started ? 'gold' : '');
|
||||
- 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))
|
||||
+progressDotLabel(levelNumber)
|
||||
|
||||
|
@ -418,4 +426,4 @@ mixin enrollmentStatusTab
|
|||
strong(class= status === 'expired' ? 'text-danger' : '')= view.studentStatusString(student)
|
||||
td.enroll-col
|
||||
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,15 +10,16 @@ block content
|
|||
p(data-i18n='teacher.teacher_account_required')
|
||||
if me.isAnonymous()
|
||||
.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
|
||||
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")
|
||||
|
||||
.teacher-account-blurb.text-center.col-xs-6.col-xs-offset-3.m-y-3
|
||||
h5(data-i18n='teacher.what_is_a_teacher_account')
|
||||
p(data-i18n='teacher.teacher_account_explanation')
|
||||
|
||||
|
||||
.container
|
||||
.teacher-account-blurb.text-center.col-xs-6.col-xs-offset-3.m-y-3
|
||||
h5(data-i18n='teacher.what_is_a_teacher_account')
|
||||
p(data-i18n='teacher.teacher_account_explanation')
|
||||
|
||||
else
|
||||
if !me.isTeacher()
|
||||
.alert.alert-danger.text-center
|
||||
|
@ -27,30 +28,30 @@ block content
|
|||
h3 ATTENTION: Please upgrade your account to a Teacher Account.
|
||||
p
|
||||
| We are transitioning to a new improved classroom management system for instructors.
|
||||
| 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
|
||||
|
||||
| Please convert your account to ensure you retain access to your classrooms.
|
||||
button.btn.btn-primary.btn-lg.update-teacher-btn(data-event-action="Teachers Classes Convert Teacher Account Temp") Upgrade to teacher account
|
||||
|
||||
.container
|
||||
h3(data-i18n='teacher.current_classes')
|
||||
|
||||
|
||||
.classes.container
|
||||
// Loop each class
|
||||
each classroom in view.classrooms.models
|
||||
unless classroom.get('archived')
|
||||
+classRow(classroom)
|
||||
|
||||
|
||||
+createClassButton
|
||||
|
||||
|
||||
- var archivedClassrooms = view.classrooms.where({archived: true});
|
||||
if _.size(archivedClassrooms)
|
||||
.container
|
||||
h3(data-i18n='teacher.archived_classes')
|
||||
p(data-i18n='teacher.archived_classes_blurb')
|
||||
|
||||
|
||||
.classes.container
|
||||
each classroom in archivedClassrooms
|
||||
+archivedClassRow(classroom)
|
||||
|
||||
|
||||
mixin classRow(classroom)
|
||||
.class.row
|
||||
.col-xs-6
|
||||
|
@ -67,9 +68,9 @@ mixin classRow(classroom)
|
|||
span
|
||||
= classroom.get('members').length
|
||||
.class-links
|
||||
a.text-h6(data-i18n='teacher.view_class' href=('/teachers/classes/' + classroom.id))
|
||||
a.edit-classroom.text-h6(data-i18n='teacher.edit_class_settings' data-classroom-id=classroom.id)
|
||||
a.archive-classroom.text-h6(data-i18n='teacher.archive_class' data-classroom-id=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 data-event-action="Teachers Classes Edit Class Started")
|
||||
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
|
||||
if classroom.get('members').length == 0
|
||||
|
@ -77,9 +78,10 @@ mixin classRow(classroom)
|
|||
else
|
||||
each trimCourse, index in classroom.get('courses') || []
|
||||
- var course = view.courses.get(trimCourse._id);
|
||||
+progressDot(classroom, course, index)
|
||||
if view.courseInstances.findWhere({ classroomID: classroom.id, courseID: course.id })
|
||||
+progressDot(classroom, course, index)
|
||||
.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)
|
||||
|
@ -90,7 +92,7 @@ mixin addStudentsButton(classroom)
|
|||
a.add-students-btn.btn.btn-lg.btn-primary(data-classroom-id=classroom.id )
|
||||
span(data-i18n='teacher.add_students')
|
||||
| Add Students
|
||||
|
||||
|
||||
mixin createClassButton
|
||||
.create-class
|
||||
.text-center
|
||||
|
@ -109,7 +111,7 @@ mixin progressDot(classroom, course, index)
|
|||
- complete = courseInstance.numCompleted
|
||||
- started = courseInstance.started
|
||||
- dotClass = complete === total ? 'forest' : started ? 'gold' : '';
|
||||
- var progressDotContext = {total: total, complete: complete};
|
||||
- var progressDotContext = {total: total, complete: complete};
|
||||
.progress-dot(class=dotClass, data-title=view.progressDotTemplate(progressDotContext))
|
||||
+progressDotLabel(index)
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@ block content
|
|||
span.spr
|
||||
| .
|
||||
span
|
||||
= level.get('name')
|
||||
= level.get('name').replace('Course: ', '')
|
||||
a.play-level-button.btn.btn-lg.btn-primary
|
||||
span(data-i18n="courses.play_level")
|
||||
.clearfix
|
||||
|
@ -86,10 +86,10 @@ mixin course-info(course)
|
|||
if view.guideLinks[course.id]
|
||||
//- a.btn.btn-primary(href=view.guideLinks[course.id] class=(me.isTeacher() ? '': 'disabled'))
|
||||
//- 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")
|
||||
| — 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")
|
||||
| — JavaScript
|
||||
else
|
||||
|
|
|
@ -11,7 +11,7 @@ ul.user-feedback-list.list-group
|
|||
em= moment(new Date(feedback.created)).fromNow()
|
||||
span.spl.spr -
|
||||
a(href="/user/#{feedback.creator}")
|
||||
strong= feedback.creatorName || 'Anoner'
|
||||
strong= feedback.creatorName || 'Anonymous'
|
||||
if feedback.review
|
||||
span.spr :
|
||||
span= feedback.review
|
||||
|
|
|
@ -2,80 +2,101 @@ extends /templates/base-flat
|
|||
|
||||
block content
|
||||
.container
|
||||
div.row(style="margin-top: 20px")
|
||||
div.row.verifier-row
|
||||
div.col-sm-3
|
||||
p.alert.alert-success(style="padding: 5px")
|
||||
p.alert.alert-success
|
||||
| Passed: #{view.passed}
|
||||
div.col-sm-3
|
||||
p.alert.alert-warning(style="padding: 5px")
|
||||
p.alert.alert-warning
|
||||
| Test Problem: #{view.problem}
|
||||
div.col-sm-3
|
||||
p.alert.alert-danger(style="padding: 5px")
|
||||
p.alert.alert-danger
|
||||
| Failed: #{view.failed}
|
||||
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}
|
||||
|
||||
if view.levelIDs
|
||||
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*view.passed/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-success(role="progressbar" style="width: #{100*(1 - view.levelsToLoad/view.initialLevelsToLoad)}%")
|
||||
|
||||
if view.tests
|
||||
if view.levelIDs
|
||||
.progress
|
||||
.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-danger(role="progressbar" style="width: #{100*view.failed/view.testCount}%")
|
||||
|
||||
each test, id in view.tests
|
||||
- if (test.state == 'no-solution')
|
||||
- continue;
|
||||
if test.level
|
||||
.pull-right
|
||||
- var last = test.level.get('slug') + view.linksQueryString
|
||||
a.btn.btn-primary(href="/editor/verifier/" + last) Focus
|
||||
a.btn.btn-success(href="/play/level/" + last) Play
|
||||
a.btn.btn-warning(href="/editor/level/" + last) Edit
|
||||
a.btn.btn-default(data-target='#verifier-test-' + id, data-toggle="collapse") Toggle
|
||||
each test, id in view.tests
|
||||
- if (test.state == 'no-solution')
|
||||
- continue;
|
||||
if test.level
|
||||
.pull-right
|
||||
- var last = test.level.get('slug') + view.linksQueryString
|
||||
a.btn.btn-primary(href="/editor/verifier/" + last) Focus
|
||||
a.btn.btn-success(href="/play/level/" + last) Play
|
||||
a.btn.btn-warning(href="/editor/level/" + last) Edit
|
||||
a.btn.btn-default(data-target='#verifier-test-' + id, data-toggle="collapse") Toggle
|
||||
|
||||
if !test.goals
|
||||
h2(style='color: orange')= test.level.get('name')
|
||||
small= ' in ' + test.language + ''
|
||||
else if test.isSuccessful()
|
||||
h2(style='color: green')= test.level.get('name')
|
||||
small= ' in ' + test.language + ''
|
||||
else
|
||||
h2(style='color: red')= test.level.get('name')
|
||||
small= ' in ' + test.language + ''
|
||||
if !test.goals
|
||||
h2.test-running= test.level.get('name')
|
||||
small= ' in ' + test.language + ''
|
||||
else if test.isSuccessful()
|
||||
h2.test-success= test.level.get('name')
|
||||
small= ' in ' + test.language + ''
|
||||
else
|
||||
h2.test-failed= test.level.get('name')
|
||||
small= ' in ' + test.language + ''
|
||||
|
||||
div.row(class=(test.isSuccessful() && id > 1 ? 'collapse' : 'collapse in'), id='verifier-test-' + id)
|
||||
div.col-xs-8
|
||||
if test.solution
|
||||
pre #{test.solution.source}
|
||||
else
|
||||
h4 Error Loading Test
|
||||
pre #{test.error}
|
||||
div.col-xs-4.well
|
||||
if test.goals
|
||||
if test.frames == test.solution.frameCount
|
||||
div(style='color: green') ✓ Frames: #{test.frames}
|
||||
div.row(class=(test.isSuccessful() && id > 1 ? 'collapse' : 'collapse in'), id='verifier-test-' + id)
|
||||
div.col-xs-8
|
||||
if test.solution
|
||||
pre #{test.solution.source}
|
||||
else
|
||||
div(style='color: red') ✘ Frames: #{test.frames} vs #{test.solution.frameCount}
|
||||
|
||||
each v,k in test.goals || []
|
||||
if !test.solution.goals
|
||||
div(style='color: orange') ? #{k} (#{v.status})
|
||||
else if v.status == test.solution.goals[k]
|
||||
div(style='color: green') ✓ #{k} (#{v.status})
|
||||
h4 Error Loading Test
|
||||
pre #{test.error}
|
||||
div.col-xs-4.well
|
||||
if test.goals
|
||||
if test.frames == test.solution.frameCount
|
||||
div.test-success ✓ Frames: #{test.frames}
|
||||
else
|
||||
div(style='color: red') ✘ #{k} (#{v.status} vs #{test.solution.goals[k]})
|
||||
else
|
||||
h3 Pending....
|
||||
div.test-failed ✘ Frames: #{test.frames} vs #{test.solution.frameCount}
|
||||
|
||||
if test.error
|
||||
pre(style="color: red") #{test.error}
|
||||
|
||||
if test.userCodeProblems.length
|
||||
h4(style="color: red") User Code Problems
|
||||
pre(style="color: red") #{JSON.stringify(test.userCodeProblems, null, 2)}
|
||||
each v,k in test.goals || []
|
||||
if !test.solution.goals
|
||||
div.test-running ? #{k} (#{v.status})
|
||||
else if v.status == test.solution.goals[k]
|
||||
div.test-success ✓ #{k} (#{v.status})
|
||||
else
|
||||
div.test-failed ✘ #{k} (#{v.status} vs #{test.solution.goals[k]})
|
||||
else
|
||||
h3 Pending....
|
||||
|
||||
else
|
||||
h1 Loading Level...
|
||||
if test.error
|
||||
pre.test-faile #{test.error}
|
||||
|
||||
// TODO: show last frame hash
|
||||
if test.userCodeProblems.length
|
||||
h4.test-failed User Code Problems
|
||||
pre.test-failed #{JSON.stringify(test.userCodeProblems, null, 2)}
|
||||
|
||||
else
|
||||
h1 Loading Level...
|
||||
|
||||
// TODO: show last frame hash
|
||||
|
|
|
@ -3,98 +3,38 @@ extends /templates/base-flat
|
|||
mixin box
|
||||
.well.text-center
|
||||
if me.isAnonymous() == true
|
||||
if ['home-legacy','home-legacy-left'].indexOf(view.variation) != -1
|
||||
h6#classroom-edition-header(data-i18n="new_home.classroom_edition")
|
||||
div
|
||||
button.teacher-btn.btn.btn-primary.btn-lg.btn-block(data-i18n="new_home.im_a_teacher")
|
||||
div
|
||||
a.btn.btn-forest.btn-lg.btn-block(href="/courses", data-i18n="new_home.im_a_student")
|
||||
h6#learn-to-code-header(data-i18n="new_home.learn_to_code")
|
||||
a.btn.btn-gold.btn-lg.btn-block.play-btn(href=view.playURL, 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")
|
||||
h6#classroom-edition-header(data-i18n="new_home.classroom_edition")
|
||||
div
|
||||
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
|
||||
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")
|
||||
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")
|
||||
|
||||
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
|
||||
h6#classroom-edition-header(data-i18n="new_home.logged_in_as")
|
||||
p.small #{me.get("email")}
|
||||
if me.isTeacher()
|
||||
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
|
||||
if view.isTeacherWithDemo
|
||||
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
|
||||
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()
|
||||
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
|
||||
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
|
||||
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
|
||||
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
|
||||
|
@ -113,24 +53,16 @@ block content
|
|||
.container
|
||||
.row.hidden-xs.top-spacer(style="height: 160px")
|
||||
.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
|
||||
h1(data-i18n="new_home.slogan")
|
||||
.col-lg-3.col-lg-offset-2.col-md-4
|
||||
+box
|
||||
.col-lg-7.col-md-8
|
||||
h1(data-i18n="new_home.slogan")
|
||||
.col-lg-3.col-lg-offset-2.col-md-4
|
||||
+box
|
||||
.row.hidden-lg.hidden-md
|
||||
.col-lg-7.col-md-8
|
||||
h1(data-i18n="new_home.slogan")
|
||||
.col
|
||||
div(style="margin: auto; max-width: 300px")
|
||||
+box
|
||||
|
||||
.row#learn-more-row
|
||||
.col-xs-12.text-center
|
||||
a#learn-more-link
|
||||
|
@ -281,11 +213,11 @@ block content
|
|||
if view.isTeacherWithDemo
|
||||
h4(data-i18n="new_home.get_started_subtitle")
|
||||
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
|
||||
h4(data-i18n="new_home.request_demo_subtitle")
|
||||
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()
|
||||
.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")
|
||||
if view.isTeacherWithDemo
|
||||
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
|
||||
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()
|
||||
.have-an-account
|
||||
span.spr(data-i18n="new_home.have_an_account")
|
||||
|
|
|
@ -1,16 +1,21 @@
|
|||
- var league = view.options.league
|
||||
.row
|
||||
for team, teamIndex in teams
|
||||
for team, teamIndex in view.teams
|
||||
div.column.col-md-6
|
||||
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)
|
||||
- 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
|
||||
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}")
|
||||
span= team.displayName
|
||||
span.spl(data-i18n="ladder.leaderboard") Leaderboard
|
||||
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.name").name-col-cell Name
|
||||
th(data-i18n="general.when") When
|
||||
|
@ -18,23 +23,20 @@
|
|||
th.iconic-cell
|
||||
.glyphicon.glyphicon-eye-open
|
||||
|
||||
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);
|
||||
tbody
|
||||
for session, rank in topSessions
|
||||
- var myRow = session.get('creator') == me.id
|
||||
- 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)
|
||||
td.code-language-cell(style="background-image: url(/images/common/code_languages/" + session.get('submittedCodeLanguage') + "_icon.png)" title=capitalize(session.get('submittedCodeLanguage')))
|
||||
if level.get('type', true) == 'hero-ladder'
|
||||
td.code-language-cell(style="background-image: url(/images/common/code_languages/" + session.get('submittedCodeLanguage') + "_icon.png)" title=view.capitalize(session.get('submittedCodeLanguage')))
|
||||
if levelType == 'hero-ladder'
|
||||
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.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.age-cell= moment(session.get('submitDate')).fromNow().replace('a few ', '')
|
||||
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!
|
||||
td.spectate-cell.iconic-cell
|
||||
.glyphicon.glyphicon-eye-open
|
||||
|
@ -47,14 +49,14 @@
|
|||
- 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)
|
||||
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.rank-cell= session.rank
|
||||
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.age-cell= moment(session.get('submitDate')).fromNow().replace('a few ', '')
|
||||
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!
|
||||
td.spectate-cell.iconic-cell
|
||||
.glyphicon.glyphicon-eye-open
|
||||
|
@ -77,8 +79,8 @@
|
|||
if !onGPlus
|
||||
button.btn.btn-sm.connect-google-plus(data-i18n="community.gplus") Google+
|
||||
|
||||
if friends.length
|
||||
for friend in friends
|
||||
if view.friends
|
||||
for friend in view.friends
|
||||
p.friend-entry
|
||||
img(src=friend.imageSource).img-thumbnail
|
||||
span= friend.creatorName + ' (' + friend.name + ')'
|
||||
|
@ -87,7 +89,7 @@
|
|||
span :
|
||||
span= friend.team
|
||||
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!
|
||||
|
||||
else if onFacebook || onGPlus
|
||||
|
|
|
@ -4,10 +4,10 @@ block content
|
|||
|
||||
div#ladder-top
|
||||
|
||||
if leagueType == 'course' && view.course.id
|
||||
if view.leagueType === 'course' && view.course
|
||||
#course-header
|
||||
#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.spl Levels
|
||||
|
||||
|
@ -15,22 +15,21 @@ block content
|
|||
span#course-name
|
||||
span= view.course.get('name')
|
||||
span.spl - Arena
|
||||
|
||||
|
||||
div#level-column
|
||||
if levelDescription
|
||||
div!= levelDescription
|
||||
if view.levelDescription
|
||||
div!= view.levelDescription
|
||||
|
||||
if leagueType === 'clan'
|
||||
if view.leagueType === 'clan'
|
||||
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
|
||||
|
||||
if level.get('name') == 'Greed'
|
||||
if view.level.get('name') == 'Greed'
|
||||
.tournament-blurb
|
||||
h2
|
||||
span(data-i18n="ladder.tournament_ended") Tournament ended
|
||||
| #{tournamentTimeLeft}
|
||||
| #{view.tournamentTimeLeft}
|
||||
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
|
||||
|
|
||||
|
@ -63,11 +62,11 @@ block content
|
|||
a(href="http://aws.amazon.com/")
|
||||
img(src=base + "aws.png")
|
||||
|
||||
if level.get('name') == 'Criss-Cross'
|
||||
if view.level.get('name') == 'Criss-Cross'
|
||||
.tournament-blurb
|
||||
h2
|
||||
span(data-i18n="ladder.tournament_ended") Tournament ended
|
||||
| #{tournamentTimeLeft}
|
||||
| #{view.tournamentTimeLeft}
|
||||
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
|
||||
|
|
||||
|
@ -86,13 +85,13 @@ block content
|
|||
a(href="http://discourse.codecombat.com/") the forum
|
||||
| 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
|
||||
h2
|
||||
span(data-i18n="ladder.tournament_ended") Tournament ended
|
||||
| #{tournamentTimeLeft}
|
||||
| #{view.tournamentTimeLeft}
|
||||
//span(data-i18n="ladder.tournament_started") , started
|
||||
//| #{tournamentTimeElapsed}
|
||||
//| #{view.tournamentTimeElapsed}
|
||||
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
|
||||
|
|
||||
|
@ -109,14 +108,14 @@ block content
|
|||
a(href="http://discourse.codecombat.com/") the forum
|
||||
| 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
|
||||
h2
|
||||
//span(data-i18n="ladder.tournament_ends") Tournament ends
|
||||
span(data-i18n="ladder.tournament_ended") Tournament ended
|
||||
| #{tournamentTimeLeft}
|
||||
| #{view.tournamentTimeLeft}
|
||||
span(data-i18n="ladder.tournament_started") , started
|
||||
| #{tournamentTimeElapsed}
|
||||
| #{view.tournamentTimeElapsed}
|
||||
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
|
||||
|
|
||||
|
@ -135,17 +134,18 @@ block content
|
|||
|
||||
div#columns.row
|
||||
div.column.col-md-2
|
||||
for team in teams
|
||||
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)
|
||||
span(data-i18n="play.play_as") Play As
|
||||
|
|
||||
span= team.displayName
|
||||
if view.teams
|
||||
for team in view.teams
|
||||
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)
|
||||
span(data-i18n="play.play_as") Play As
|
||||
|
|
||||
span= team.displayName
|
||||
div.column.col-md-2
|
||||
|
||||
if leagueType !== 'course'
|
||||
if view.leagueType !== 'course'
|
||||
.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
|
||||
|
||||
ul.nav.nav-pills
|
||||
|
@ -154,16 +154,16 @@ block content
|
|||
if !me.get('anonymous')
|
||||
li
|
||||
a(href="#my-matches", data-toggle="tab", data-i18n="ladder.my_matches") My Matches
|
||||
if leagueType !== 'course'
|
||||
if view.leagueType !== 'course'
|
||||
li
|
||||
a(href="#simulate", data-toggle="tab", data-i18n="ladder.simulate") Simulate
|
||||
if level.get('name') == 'Greed'
|
||||
if view.level.get('name') == 'Greed'
|
||||
li
|
||||
a(href="#prizes", data-toggle="tab", data-i18n="ladder_prizes.prizes") Prizes
|
||||
if level.get('name') == 'Greed'
|
||||
if view.level.get('name') == 'Greed'
|
||||
li
|
||||
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
|
||||
a(href="#winners", data-toggle="tab", data-i18n="ladder.winners") Winners
|
||||
|
||||
|
@ -174,7 +174,7 @@ block content
|
|||
#my-matches-tab-view
|
||||
.tab-pane.well#simulate
|
||||
#simulate-tab-view
|
||||
if level.get('name') == 'Greed'
|
||||
if view.level.get('name') == 'Greed'
|
||||
.tab-pane.well#prizes
|
||||
h1(data-i18n="ladder_prizes.title") Tournament Prizes
|
||||
p
|
||||
|
@ -740,7 +740,7 @@ block content
|
|||
| - $50
|
||||
td $50
|
||||
|
||||
if level.get('name') == 'Greed'
|
||||
if view.level.get('name') == 'Greed'
|
||||
.tab-pane.well#rules
|
||||
h1(data-i18n="ladder.tournament_rules") Tournament Rules
|
||||
h2 General
|
||||
|
@ -802,7 +802,7 @@ block content
|
|||
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
|
||||
h1(data-i18n="ladder.winners") Winners
|
||||
|
||||
|
@ -810,71 +810,71 @@ block content
|
|||
thead
|
||||
tr
|
||||
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 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
|
||||
else
|
||||
th Human score
|
||||
if level.get('name') == 'Zero Sum'
|
||||
if view.level.get('name') == 'Zero Sum'
|
||||
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 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
|
||||
else
|
||||
th Ogre score
|
||||
th(data-i18n="play.spectate") Spectate
|
||||
tbody
|
||||
each human, index in winners.humans
|
||||
- var ogre = winners.ogres[index]
|
||||
each human, index in view.winners.humans
|
||||
- var ogre = view.winners.ogres[index]
|
||||
tr
|
||||
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= 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
|
||||
span.win= human.wins
|
||||
| -
|
||||
span.loss= human.losses
|
||||
| -
|
||||
if level.get('name') == 'Greed'
|
||||
if view.level.get('name') == 'Greed'
|
||||
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
|
||||
else
|
||||
td
|
||||
span= Math.round(100 * human.score)
|
||||
if ogre
|
||||
if level.get('name') == 'Zero Sum'
|
||||
if view.level.get('name') == 'Zero Sum'
|
||||
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= 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
|
||||
span.win= ogre.wins
|
||||
| -
|
||||
span.loss= ogre.losses
|
||||
| -
|
||||
if level.get('name') == 'Greed'
|
||||
if view.level.get('name') == 'Greed'
|
||||
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)
|
||||
else
|
||||
td
|
||||
span= Math.round(100 * ogre.score)
|
||||
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
|
||||
td
|
||||
td
|
||||
td
|
||||
|
||||
if level.get('name') == 'Ace of Coders'
|
||||
if view.level.get('name') == 'Ace of Coders'
|
||||
.tab-pane.well#winners
|
||||
h1(data-i18n="ladder.winners") Winners
|
||||
|
||||
|
@ -888,7 +888,7 @@ block content
|
|||
th Losses
|
||||
th(data-i18n="play.spectate") Spectate
|
||||
tbody
|
||||
each player in winners.humans
|
||||
each player in view.winners.humans
|
||||
tr
|
||||
td= player.rank
|
||||
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
|
||||
td
|
||||
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
|
||||
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!
|
||||
.form-group.select-group
|
||||
select#tome-language(name="language")
|
||||
for option in languages
|
||||
option(value=option.id selected=(language === option.id))= option.name
|
||||
for option in view.languages
|
||||
option(value=option.id selected=(view.language === option.id))= option.name
|
||||
|
||||
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
|
||||
strong(data-i18n="ladder.tutorial_play") Play Tutorial
|
||||
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
|
||||
|
||||
div#normal-view
|
||||
if tutorialLevelExists
|
||||
if view.tutorialLevelExists
|
||||
p.tutorial-suggestion
|
||||
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/#{levelID}?team=#{teamID}" + (league ? "&league=" + league.id : ""))
|
||||
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/#{view.levelID}?team=#{view.team}" + (view.options.league ? "&league=" + view.options.league.id : ""))
|
||||
div.play-option
|
||||
img(src=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=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=view.myPortrait).my-icon.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=view.genericPortrait).opponent-icon
|
||||
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
|
||||
span= myName
|
||||
span= view.myName
|
||||
div.opponent-name.name-label
|
||||
span(data-i18n="ladder.simple_ai")
|
||||
//span.code-language(style="background-image: url(/images/common/code_languages/javascript_small.png)")
|
||||
div.difficulty
|
||||
span(data-i18n="ladder.warmup") Warmup
|
||||
|
||||
if challengers.easy
|
||||
a(href="/play/level/#{levelID}?team=#{teamID}&opponent=#{challengers.easy.sessionID}" + (league ? "&league=" + league.id : ""))
|
||||
if view.challengers && view.challengers.easy
|
||||
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
|
||||
img(src=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=challengers.easy.opponentImageSource||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=view.myPortrait).my-icon.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=view.challengers.easy.opponentImageSource||view.genericPortrait).opponent-icon
|
||||
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
|
||||
span= myName
|
||||
span= view.myName
|
||||
div.opponent-name.name-label
|
||||
span= challengers.easy.opponentName
|
||||
if challengers.easy.codeLanguage
|
||||
span.code-language(style="background-image: url(/images/common/code_languages/" + challengers.easy.codeLanguage + "_small.png)")
|
||||
span= view.challengers.easy.opponentName
|
||||
if view.challengers.easy.codeLanguage
|
||||
span.code-language(style="background-image: url(/images/common/code_languages/#{view.challengers.easy.codeLanguage}_small.png)")
|
||||
div.difficulty
|
||||
span(data-i18n="general.easy") Easy
|
||||
|
||||
if challengers.medium
|
||||
a(href="/play/level/#{levelID}?team=#{teamID}&opponent=#{challengers.medium.sessionID}" + (league ? "&league=" + league.id : ""))
|
||||
if view.challengers && view.challengers.medium
|
||||
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
|
||||
img(src=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=challengers.medium.opponentImageSource||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=view.myPortrait).my-icon.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=view.challengers.medium.opponentImageSource||view.genericPortrait).opponent-icon
|
||||
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
|
||||
span= myName
|
||||
span= view.myName
|
||||
div.opponent-name.name-label
|
||||
span= challengers.medium.opponentName
|
||||
if challengers.medium.codeLanguage
|
||||
span.code-language(style="background-image: url(/images/common/code_languages/" + challengers.medium.codeLanguage + "_small.png)")
|
||||
span= view.challengers.medium.opponentName
|
||||
if view.challengers.medium.codeLanguage
|
||||
span.code-language(style="background-image: url(/images/common/code_languages/#{view.challengers.medium.codeLanguage}_small.png)")
|
||||
div.difficulty
|
||||
span(data-i18n="general.medium") Medium
|
||||
|
||||
if challengers.hard
|
||||
a(href="/play/level/#{levelID}?team=#{teamID}&opponent=#{challengers.hard.sessionID}" + (league ? "&league=" + league.id : ""))
|
||||
if view.challengers && view.challengers.hard
|
||||
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
|
||||
img(src=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=challengers.hard.opponentImageSource||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=view.myPortrait).my-icon.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=view.challengers.hard.opponentImageSource||view.genericPortrait).opponent-icon
|
||||
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
|
||||
span= myName
|
||||
span= view.myName
|
||||
div.opponent-name.name-label
|
||||
span= challengers.hard.opponentName
|
||||
if challengers.hard.codeLanguage
|
||||
span.code-language(style="background-image: url(/images/common/code_languages/" + challengers.hard.codeLanguage + "_small.png)")
|
||||
span= view.challengers.hard.opponentName
|
||||
if view.challengers.hard.codeLanguage
|
||||
span.code-language(style="background-image: url(/images/common/code_languages/#{view.challengers.hard.codeLanguage}_small.png)")
|
||||
div.difficulty
|
||||
span(data-i18n="general.hard") Hard
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ for player in view.players
|
|||
.player-gold
|
||||
.gold-icon
|
||||
.gold-value
|
||||
.player-name= player.name || 'Anoner'
|
||||
.player-name= player.name || 'Anonymous'
|
||||
.player-health
|
||||
.health-icon
|
||||
.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
|
||||
.rim
|
||||
|
||||
.could-not-load
|
||||
span(data-i18n="loading_error.could_not_load") Error loading from server
|
||||
|
||||
.subscription-required
|
||||
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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
.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
|
||||
.well.well-sm.well-parchment
|
||||
h1(data-i18n="play_level.victory_new_item")
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
.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
|
||||
.well.well-sm.well-parchment
|
||||
h1(data-i18n='play_level.level_complete')
|
||||
|
@ -36,9 +36,9 @@
|
|||
h3.text-uppercase
|
||||
span(data-i18n='play_level.next_level')
|
||||
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
|
||||
.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,22 +9,22 @@ if includeSpellList
|
|||
|
||||
.thang-avatar-placeholder
|
||||
|
||||
.method-name-area
|
||||
.method-label(data-i18n="play_level.tome_current_method") Current Method
|
||||
.method-signature #{methodSignature}
|
||||
|
||||
.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")
|
||||
.glyphicon.glyphicon-repeat
|
||||
span.spl(data-i18n="play_level.reload") Reload
|
||||
|
||||
|
||||
if me.level() >= 15
|
||||
.btn.btn-small.btn-illustrated.fullscreen-code(title=maximizeShortcutVerbose)
|
||||
.glyphicon.glyphicon-fullscreen
|
||||
.glyphicon.glyphicon-resize-small
|
||||
|
||||
|
||||
if codeLanguage === 'javascript' && me.level() >= 15
|
||||
.btn.btn-small.btn-illustrated.beautify-code(title=beautifyShortcutVerbose)
|
||||
.glyphicon.glyphicon-magnet
|
||||
|
||||
.clearfix
|
||||
if view.hintsState && view.hintsState.get('total') > 0
|
||||
.btn.btn-small.btn-illustrated.hints-button
|
||||
span(data-i18n="play_level.hints")
|
||||
|
||||
.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
|
||||
|
||||
.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
|
||||
label(for="option-live-completion")
|
||||
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
|
||||
|
||||
.hints-view.hide
|
||||
|
||||
#level-footer-shadow
|
||||
#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
|
||||
.small-details.nowrap
|
||||
span= levelNumber
|
||||
|
@ -7,6 +14,7 @@ if completed
|
|||
span.spr(data-i18n='teacher.completed')
|
||||
| Completed
|
||||
span= new Date(dateFirstCompleted).toLocaleString()
|
||||
+timePlayed
|
||||
//- .small-details
|
||||
//- i(data-i18n='teacher.click_to_view_solution')
|
||||
//- | click to view solution
|
||||
|
@ -19,6 +27,7 @@ else if started
|
|||
span.spr(data-i18n='teacher.last_played')
|
||||
| Last played
|
||||
span= new Date(lastPlayed).toLocaleString()
|
||||
+timePlayed
|
||||
//- .small-details
|
||||
//- i(data-i18n='teacher.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")
|
||||
button#logout-button.btn.btn-lg.btn-primary-alt(data-i18n="login.log_out")
|
||||
|
||||
.teacher-account-blurb.text-center.col-xs-6.col-xs-offset-3.m-y-3
|
||||
h5(data-i18n='teacher.what_is_a_teacher_account')
|
||||
p(data-i18n='teacher.teacher_account_explanation')
|
||||
.container
|
||||
.teacher-account-blurb.text-center.col-xs-6.col-xs-offset-3.m-y-3
|
||||
h5(data-i18n='teacher.what_is_a_teacher_account')
|
||||
p(data-i18n='teacher.teacher_account_explanation')
|
||||
|
|
|
@ -11,6 +11,20 @@ ol.breadcrumb
|
|||
.container-fluid
|
||||
.row
|
||||
.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
|
||||
#testing-area
|
||||
|
||||
|
|
|
@ -9,24 +9,25 @@ block append content
|
|||
a(href="/account", data-i18n="nav.account")
|
||||
li.active(data-i18n="nav.profile")
|
||||
|
||||
if user
|
||||
if view.user
|
||||
- var playerLevel = view.user.level()
|
||||
- var emails = view.user.getEnabledEmails()
|
||||
.vertical-buffer
|
||||
.row
|
||||
.left-column
|
||||
.profile-wrapper
|
||||
img.picture(src="#{user.getPhotoURL(150)}" alt="")
|
||||
img.picture(src="#{view.user.getPhotoURL(150)}" alt="")
|
||||
div.profile-info
|
||||
h3.name= user.get('name')
|
||||
if favoriteLanguage
|
||||
h3.name= view.user.get('name')
|
||||
if view.favoriteLanguage
|
||||
div.extra-info
|
||||
span(data-i18n="user.favorite_prefix") Favorite language is
|
||||
strong.favorite-language= favoriteLanguage
|
||||
span(data-i18n="user.favorite_postfix") .
|
||||
strong.favorite-language= view.favoriteLanguage
|
||||
span(data-i18n="user.favorite_postfix") .
|
||||
if playerLevel
|
||||
div.extra-info
|
||||
span.spr(data-i18n="general.player_level") Level
|
||||
strong= playerLevel
|
||||
- var emails = user.getEnabledEmails()
|
||||
strong= playerLevel
|
||||
// TODO: fix this, use some other method for finding contributor classes other than email settings, since they're private... Maybe achievements?
|
||||
if emails
|
||||
ul.contributor-categories
|
||||
|
@ -64,24 +65,24 @@ block append content
|
|||
.panel.panel-default
|
||||
.panel-heading
|
||||
h3.panel-title(data-i18n="clans.clans") Clans
|
||||
if (!clans)
|
||||
if (!view.clanModels)
|
||||
.panel-body
|
||||
p(data-i18n="common.loading")
|
||||
else if (clans.length)
|
||||
else if (view.clanModels.length)
|
||||
table.table
|
||||
tr
|
||||
th.col-xs-4(data-i18n="clans.name") Name
|
||||
th.col-xs-4(data-i18n="clans.chieftain") Chieftain
|
||||
th.col-xs-4(data-i18n="play.heroes") Heroes
|
||||
each clan in clans
|
||||
each clan in view.clanModels
|
||||
tr
|
||||
td
|
||||
a(href="/clans/#{clan.id}")= clan.get('name')
|
||||
td
|
||||
if idNameMap && idNameMap[clan.get('ownerID')]
|
||||
a(href="/user/#{clan.get('ownerID')}")= idNameMap[clan.get('ownerID')]
|
||||
if view.idNameMap && view.idNameMap[clan.get('ownerID')]
|
||||
a(href="/user/#{clan.get('ownerID')}")= view.idNameMap[clan.get('ownerID')]
|
||||
else
|
||||
a(href="/user/#{clan.get('ownerID')}") Anoner
|
||||
a(href="/user/#{clan.get('ownerID')}") Anonymous
|
||||
td= clan.get('members').length
|
||||
else
|
||||
.panel-body
|
||||
|
@ -90,17 +91,17 @@ block append content
|
|||
.panel.panel-default
|
||||
.panel-heading
|
||||
h3.panel-title(data-i18n="user.singleplayer_title") Singleplayer Levels
|
||||
if (!singlePlayerSessions)
|
||||
if (!view.singlePlayerSessions)
|
||||
.panel-body
|
||||
p(data-i18n="common.loading") Loading...
|
||||
else if (singlePlayerSessions.length)
|
||||
else if (view.singlePlayerSessions.length)
|
||||
table.table
|
||||
tr
|
||||
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.status") Status
|
||||
- var count = 0
|
||||
each session, index in singlePlayerSessions
|
||||
each session, index in view.singlePlayerSessions
|
||||
if session.get('levelName')
|
||||
tr(class=count > 4 ? 'hide' : '')
|
||||
- count++;
|
||||
|
@ -120,16 +121,16 @@ block append content
|
|||
.panel.panel-default
|
||||
.panel-heading
|
||||
h3.panel-title(data-i18n="user.multiplayer_title") Multiplayer Levels
|
||||
if (!multiPlayerSessions)
|
||||
if (!view.multiPlayerSessions)
|
||||
.panel-body
|
||||
p(data-i18n="common.loading") Loading...
|
||||
else if (multiPlayerSessions.length)
|
||||
else if (view.multiPlayerSessions.length)
|
||||
table.table
|
||||
tr
|
||||
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="general.score") Score
|
||||
each session, index in multiPlayerSessions
|
||||
each session, index in view.multiPlayerSessions
|
||||
tr(class=index > 4 ? 'hide' : '')
|
||||
td
|
||||
- var posturl = ''
|
||||
|
@ -140,7 +141,7 @@ block append content
|
|||
td= parseInt(session.get('totalScore') * 100)
|
||||
else
|
||||
td(data-i18n="user.status_unfinished") Unfinished
|
||||
if multiPlayerSessions.length > 4
|
||||
if view.multiPlayerSessions.length > 4
|
||||
.panel-footer
|
||||
button.btn.btn-info.btn-sm.more-button(data-i18n="editor.more")
|
||||
else
|
||||
|
@ -149,10 +150,10 @@ block append content
|
|||
.panel.panel-default
|
||||
.panel-heading
|
||||
h3.panel-title(data-i18n="user.achievements_title") Achievements
|
||||
if ! earnedAchievements
|
||||
if ! view.earnedAchievements
|
||||
.panel-body
|
||||
p(data-i18n="common.loading") Loading...
|
||||
else if ! earnedAchievements.length
|
||||
else if ! view.earnedAchievements.length
|
||||
.panel-body
|
||||
p(data-i18n="user.no_achievements") No achievements earned so far.
|
||||
else
|
||||
|
@ -161,7 +162,7 @@ block append content
|
|||
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.amount_achieved") Amount
|
||||
each achievement, index in earnedAchievements.models
|
||||
each achievement, index in view.earnedAchievements.models
|
||||
tr(class=index > 4 ? 'hide' : '')
|
||||
td= achievement.get('achievementName')
|
||||
td= moment(achievement.get('changed')).format("MMMM Do YYYY")
|
||||
|
@ -169,6 +170,6 @@ block append content
|
|||
td= achievement.get('achievedAmount')
|
||||
else
|
||||
td
|
||||
if earnedAchievements.length > 4
|
||||
if view.earnedAchievements.length > 4
|
||||
.panel-footer
|
||||
button.btn.btn-info.btn-sm.more-button(data-i18n="editor.more")
|
||||
|
|
|
@ -8,12 +8,7 @@ module.exports = class AboutView extends RootView
|
|||
logoutRedirectURL: false
|
||||
|
||||
events:
|
||||
'click #mission-link': 'onClickMissionLink'
|
||||
'click #team-link': 'onClickTeamLink'
|
||||
'click #community-link': 'onClickCommunityLink'
|
||||
'click #story-link': 'onClickStoryLink'
|
||||
'click #jobs-link': 'onClickJobsLink'
|
||||
'click #contact-link': 'onClickContactLink'
|
||||
'click #fixed-nav a': 'onClickFixedNavLink'
|
||||
'click .screen-thumbnail': 'onClickScreenThumbnail'
|
||||
'click #carousel-left': 'onLeftPressed'
|
||||
'click #carousel-right': 'onRightPressed'
|
||||
|
@ -23,6 +18,8 @@ module.exports = class AboutView extends RootView
|
|||
'left': 'onLeftPressed'
|
||||
'esc': 'onEscapePressed'
|
||||
|
||||
getTitle: -> return $.i18n.t('nav.about')
|
||||
|
||||
afterRender: ->
|
||||
super(arguments...)
|
||||
@$('#fixed-nav').affix({
|
||||
|
@ -42,29 +39,21 @@ module.exports = class AboutView extends RootView
|
|||
keyboard: false
|
||||
})
|
||||
|
||||
onClickMissionLink: (event) ->
|
||||
event.preventDefault()
|
||||
@scrollToLink('#mission')
|
||||
afterInsert: ->
|
||||
# scroll to the current hash, once everything in the browser is set up
|
||||
f = =>
|
||||
return if @destroyed
|
||||
link = $(document.location.hash)
|
||||
if link.length
|
||||
@scrollToLink(document.location.hash, 0)
|
||||
_.delay(f, 100)
|
||||
|
||||
onClickTeamLink: (event) ->
|
||||
event.preventDefault()
|
||||
@scrollToLink('#team')
|
||||
|
||||
onClickCommunityLink: (event) ->
|
||||
event.preventDefault()
|
||||
@scrollToLink('#community')
|
||||
|
||||
onClickStoryLink: (event) ->
|
||||
event.preventDefault()
|
||||
@scrollToLink('#story')
|
||||
|
||||
onClickJobsLink: (event) ->
|
||||
event.preventDefault()
|
||||
@scrollToLink('#jobs')
|
||||
|
||||
onClickContactLink: (event) ->
|
||||
event.preventDefault()
|
||||
@scrollToLink('#contact')
|
||||
onClickFixedNavLink: (event) ->
|
||||
event.preventDefault() # prevent default page scroll
|
||||
link = $(event.target).closest('a')
|
||||
target = link.attr('href')
|
||||
history.replaceState(null, null, "about#{target}") # update hash without triggering page scroll
|
||||
@scrollToLink(target)
|
||||
|
||||
onRightPressed: (event) ->
|
||||
# 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