Merge pull request #3 from codecombat/master

update
This commit is contained in:
Darredevil 2014-04-05 01:36:15 +03:00
commit a10f5971f6
125 changed files with 2011 additions and 755 deletions

View file

@ -5,10 +5,12 @@ locale = require 'locale/locale'
Tracker = require 'lib/Tracker'
CocoView = require 'views/kinds/CocoView'
# Prevent Ctrl/Cmd + [ / ], P, S
ctrlDefaultPrevented = [219, 221, 80, 83]
preventBackspace = (event) ->
if event.keyCode is 8 and not elementAcceptsKeystrokes(event.srcElement or event.target)
event.preventDefault()
else if (key.ctrl or key.command) and not key.alt and event.keyCode in [219, 221] # prevent Ctrl/Cmd + [ / ]
else if (key.ctrl or key.command) and not key.alt and event.keyCode in ctrlDefaultPrevented
event.preventDefault()
elementAcceptsKeystrokes = (el) ->

View file

@ -35,6 +35,11 @@
<!--[if IE 9]> <script src="/javascripts/vendor_with_box2d.js"></script> <![endif]-->
<!--[if !IE]><!--> <script src="/javascripts/vendor.js"></script> <!--<![endif]-->
<script src="/javascripts/app.js"></script> <!-- it's all Backbone! -->
<script>
window.userObject = "userObjectTag";
</script>
<script>require('initialize');</script>

View file

@ -1,5 +1,4 @@
app = require 'application'
auth = require 'lib/auth'
init = ->
app.initialize()
@ -10,15 +9,8 @@ init = ->
treemaExt.setup()
filepicker.setKey('AvlkNoldcTOU4PvKi2Xm7z')
$ ->
# Make sure we're "logged in" first.
if auth.me.id
init()
else
Backbone.Mediator.subscribeOnce 'me:synced', init
$ -> init()
window.init = init
handleNormalUrls = ->
# http://artsy.github.com/blog/2012/06/25/replacing-hashbang-routes-with-pushstate/
$(document).on "click", "a[href^='/']", (event) ->

View file

@ -1,5 +1,5 @@
CocoClass = require 'lib/CocoClass'
{me, CURRENT_USER_KEY} = require 'lib/auth'
{me} = require 'lib/auth'
{backboneFailure} = require 'lib/errors'
storage = require 'lib/storage'
@ -59,7 +59,6 @@ module.exports = FacebookHandler = class FacebookHandler extends CocoClass
error: backboneFailure,
url: "/db/user?facebookID=#{r.id}&facebookAccessToken=#{@authResponse.accessToken}"
success: (model) ->
storage.save(CURRENT_USER_KEY, model.attributes)
window.location.reload() if model.get('email') isnt oldEmail
})

View file

@ -1,5 +1,5 @@
CocoClass = require 'lib/CocoClass'
{me, CURRENT_USER_KEY} = require 'lib/auth'
{me} = require 'lib/auth'
{backboneFailure} = require 'lib/errors'
storage = require 'lib/storage'
GPLUS_TOKEN_KEY = 'gplusToken'
@ -102,7 +102,6 @@ module.exports = GPlusHandler = class GPlusHandler extends CocoClass
error: backboneFailure,
url: "/db/user?gplusID=#{gplusID}&gplusAccessToken=#{@accessToken.access_token}"
success: (model) ->
storage.save(CURRENT_USER_KEY, model.attributes)
window.location.reload() if wasAnonymous and not model.get('anonymous')
})

View file

@ -1,5 +1,3 @@
{me} = require 'lib/auth'
gplusClientID = "800329290710-j9sivplv2gpcdgkrsis9rff3o417mlfa.apps.googleusercontent.com"
go = (path) -> -> @routeDirectly path, arguments

View file

@ -1,20 +1,24 @@
{backboneFailure, genericFailure} = require 'lib/errors'
User = require 'models/User'
storage = require 'lib/storage'
module.exports.CURRENT_USER_KEY = CURRENT_USER_KEY = 'whoami'
BEEN_HERE_BEFORE_KEY = 'beenHereBefore'
init = ->
module.exports.me = window.me = new User(window.userObject) # inserted into main.html
trackFirstArrival()
if me and not me.get('testGroupNumber')?
# Assign testGroupNumber to returning visitors; new ones in server/routes/auth
me.set 'testGroupNumber', Math.floor(Math.random() * 256)
me.save()
me.loadGravatarProfile() if me.get('email')
Backbone.listenTo(me, 'sync', Backbone.Mediator.publish('me:synced', {me:me}))
module.exports.createUser = (userObject, failure=backboneFailure, nextURL=null) ->
user = new User(userObject)
user.save({}, {
error: failure,
success: (model) ->
storage.save(CURRENT_USER_KEY, model)
if nextURL
window.location.href = nextURL
else
window.location.reload()
error: failure,
success: -> if nextURL then window.location.href = nextURL else window.location.reload()
})
module.exports.loginUser = (userObject, failure=genericFailure) ->
@ -23,52 +27,15 @@ module.exports.loginUser = (userObject, failure=genericFailure) ->
username:userObject.email,
password:userObject.password
},
(model) ->
storage.save(CURRENT_USER_KEY, model)
window.location.reload()
(model) -> window.location.reload()
)
jqxhr.fail(failure)
module.exports.logoutUser = ->
FB?.logout?()
res = $.post('/auth/logout', {}, ->
storage.save(CURRENT_USER_KEY, null)
window.location.reload()
)
res = $.post('/auth/logout', {}, -> window.location.reload())
res.fail(genericFailure)
init = ->
# Load the user from local storage, and refresh it from the server.
# Also refresh and cache the gravatar info.
storedUser = storage.load(CURRENT_USER_KEY)
firstTime = not storedUser
module.exports.me = window.me = new User(storedUser)
me.url = -> '/auth/whoami'
me.fetch()
retry = -> me.fetch() # blindly try again
error = -> setTimeout(retry, 1000) # blindly try again
me.on 'error', error, @
me.on 'sync', ->
me.off 'error', error, @ if firstTime
me.url = -> "/db/user/#{me.id}"
trackFirstArrival() if firstTime
if me and not me.get('testGroupNumber')?
# Assign testGroupNumber to returning visitors; new ones in server/handlers/user
me.set 'testGroupNumber', Math.floor(Math.random() * 256)
me.save()
storage.save(CURRENT_USER_KEY, me.attributes)
me.loadGravatarProfile() if me.get('email')
Backbone.listenTo(me, 'sync', userSynced)
userSynced = (user) ->
Backbone.Mediator.publish('me:synced', {me:user})
storage.save(CURRENT_USER_KEY, user)
init()
onSetVolume = (e) ->
return if e.volume is me.get('volume')
me.set('volume', e.volume)
@ -83,3 +50,6 @@ trackFirstArrival = ->
return if beenHereBefore
window.tracker?.trackEvent 'First Arrived'
storage.save(BEEN_HERE_BEFORE_KEY, true)
init()

View file

@ -38,7 +38,7 @@ module.exports = class Thang
publishNote: (channel, event) ->
event.thang = @
@world.publishNote channel, event
setGoalState: (goalID, status) ->
@world.setGoalState goalID, status

View file

@ -98,10 +98,14 @@ module.exports = class ThangState
storage = @trackedPropertyValues[propIndex]
value = @getStoredProp propIndex, type, storage
if prop is "pos"
@thang.pos = @thang.pos.copy()
@thang.pos.x = inverse * @thang.pos.x + ratio * value.x
@thang.pos.y = inverse * @thang.pos.y + ratio * value.y
@thang.pos.z = inverse * @thang.pos.z + ratio * value.z
if @thang.pos.distanceSquared(value) > 900
# Don't interpolate; it was probably a teleport. https://github.com/codecombat/codecombat/issues/738
@thang.pos = value
else
@thang.pos = @thang.pos.copy()
@thang.pos.x = inverse * @thang.pos.x + ratio * value.x
@thang.pos.y = inverse * @thang.pos.y + ratio * value.y
@thang.pos.z = inverse * @thang.pos.z + ratio * value.z
else if prop is "rotation"
@thang.rotation = inverse * @thang.rotation + ratio * value
@thang.partialState = true

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "български език", englishDescri
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "Deutsch", englishDescription: "German", tra
tip_patience: "Geduld du musst haben, junger Padawan. - Yoda"
tip_documented_bug: "Ein dokumentierter Fehler ist kein Fehler; er ist ein Merkmal."
tip_impossible: "Es wirkt immer unmöglich bis es vollbracht ist. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
time_current: "Aktuell"
time_total: "Total"
time_goto: "Gehe zu"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "ελληνικά", englishDescription: "Gre
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -12,6 +12,7 @@ module.exports = nativeDescription: "English", englishDescription: "English", tr
manual: "Manual"
fork: "Fork"
play: "Play"
retry: "Retry"
units:
second: "second"
@ -264,6 +265,8 @@ module.exports = nativeDescription: "English", englishDescription: "English", tr
tip_patience: "Patience you must have, young Padawan. - Yoda"
tip_documented_bug: "A documented bug is not a bug; it is a feature."
tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
time_current: "Now:"
time_total: "Max:"
time_goto: "Go to:"
@ -600,3 +603,27 @@ module.exports = nativeDescription: "English", englishDescription: "English", tr
tutorial: "tutorial"
new_to_programming: ". New to programming? Hit our beginner campaign to skill up."
so_ready: "I Am So Ready for This"
loading_error:
could_not_load: "Error loading from server"
connection_failure: "Connection failed."
unauthorized: "You need to be signed in. Do you have cookies disabled?"
forbidden: "You do not have the permissions."
not_found: "Not found."
not_allowed: "Method not allowed."
timeout: "Server timeout."
conflict: "Resource conflict."
bad_input: "Bad input."
server_error: "Server error."
unknown: "Unknown error."
resources:
your_sessions: "Your Sessions"
level: "Level"
social_network_apis: "Social Network APIs"
facebook_status: "Facebook Status"
facebook_friends: "Facebook Friends"
facebook_friend_sessions: "Facebook Friend Sessions"
gplus_friends: "G+ Friends"
gplus_friend_sessions: "G+ Friend Sessions"
leaderboard: 'leaderboard'

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -5,7 +5,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
sending: "Enviando..."
cancel: "Cancelar"
save: "Guardar"
# create: "Create"
create: "Crear"
delay_1_sec: "1 segundo"
delay_3_sec: "3 segundos"
delay_5_sec: "5 segundos"
@ -13,13 +13,13 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
fork: "Bifurcar"
play: "Jugar"
# units:
# second: "second"
# seconds: "seconds"
# minute: "minute"
# minutes: "minutes"
# hour: "hour"
# hours: "hours"
units:
second: "segundo"
seconds: "segundos"
minute: "minuto"
minutes: "minutos"
hour: "hora"
hours: "horas"
modal:
close: "Cerrar"
@ -53,7 +53,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
login:
sign_up: "Crear una cuenta"
log_in: "Entrar"
# logging_in: "Logging In"
logging_in: "Entrando..."
log_out: "Salir"
recover: "recuperar cuenta"
@ -76,12 +76,12 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
no_ie: "CodeCombat no funciona en Internet Explorer 9 o anteriores. ¡Lo sentimos!"
no_mobile: "¡CodeCombat no fue diseñado para dispositivos móviles y puede que no funcione!"
play: "Jugar"
# old_browser: "Uh oh, your browser is too old to run CodeCombat. Sorry!"
# old_browser_suffix: "You can try anyway, but it probably won't work."
# campaign: "Campaign"
# for_beginners: "For Beginners"
# multiplayer: "Multiplayer"
# for_developers: "For Developers"
old_browser: "Ay, su navegador es demasiado viejo para ejecutar CodeCombat. ¡Lo sentimos!"
old_browser_suffix: "Puede tentar de todos modos, pero probablemente no va a funcionar."
campaign: "Campaña"
for_beginners: "Para principiantes"
multiplayer: "Multijugador"
for_developers: "Para programadores"
play:
choose_your_level: "Elige tu nivel"
@ -264,6 +264,8 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "español", englishDescription: "Spanish", t
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian",
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -9,7 +9,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
# delay_1_sec: "1 second"
# delay_3_sec: "3 seconds"
# delay_5_sec: "5 seconds"
# manual: "Manual"
manual: "Panduan"
# fork: "Fork"
play: "Mula"
@ -59,7 +59,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
recover:
recover_account_title: "Dapatkan Kembali Akaun"
send_password: "Hantar kembali kata laluan"
send_password: "Hantar kembali kata-laluan"
signup:
# create_account_title: "Create Account to Save Progress"
@ -102,7 +102,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
contact:
contact_us: "Hubungi CodeCombat"
welcome: "Kami suka mendengar dari anda! Gunakan form ini dan hantar kami emel. "
welcome: "Kami gemar mendengar dari anda! Gunakan borang ini dan hantar emel kepada kami. "
contribute_prefix: "Jikalau anda berasa besar hati untuk menyumbang, sila lihat "
contribute_page: "laman kami untuk menyumbang"
# contribute_suffix: "!"
@ -114,8 +114,8 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
diplomat_suggestion:
title: "Kami perlu menterjemahkan CodeCombat!"
sub_heading: "Kami memerlukan kemahiran bahasa anda."
pitch_body: "Kami membina CodeCombat dalam Bahasa Inggeris, tetapi kami sudah ada pemain dari seluruh dunia. Kebanyakan mereka mahu bermain dalam Bahasa Melayu dan tidak memahami bahasa Inggeris, jikalau anda boleh tertutur dalam kedua-dua bahasa, harap anda boleh daftar untuk menjadi Diplomat dan menolong menterjemahkan laman CodeCombat dan kesemua level kepada Bahasa Melayu."
missing_translations: "Sehingga kami dalam menterjemahkan kesemua kepada Bahasa Melayu, anda akan melihat Inggeris apabila Bahasa Melayu tiada dalam penterjemahan."
pitch_body: "Kami membina CodeCombat dalam Bahasa Inggeris, tetapi kami sudah ada pemain dari seluruh dunia. Kebanyakan mereka mahu bermain dalam Bahasa Melayu dan tidak memahami Bahasa Inggeris, jikalau anda boleh tertutur dalam kedua-dua bahasa, harap anda boleh daftar untuk menjadi Diplomat dan menolong menterjemahkan laman CodeCombat dan kesemua level kepada Bahasa Melayu."
missing_translations: "Sehingga kami dapat menterjemahkan kesemua kepada Bahasa Melayu, anda akan melihat Bahasa Inggeris apabila Bahasa Melayu tiada dalam penterjemahan."
learn_more: "Ketahui lebih lanjut untuk menjadi ahli Diplomat"
# subscribe_as_diplomat: "Subscribe as a Diplomat"
@ -131,35 +131,35 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
# saturation: "Saturation"
# lightness: "Lightness"
# account_settings:
account_settings:
# title: "Account Settings"
# not_logged_in: "Log in or create an account to change your settings."
# autosave: "Changes Save Automatically"
# me_tab: "Me"
# picture_tab: "Picture"
not_logged_in: "Daftar masuk atau buat account untuk menukar \"setting\" anda."
autosave: "Pengubahsuaian disimpan secara automatik"
me_tab: "Saya"
picture_tab: "Gambar"
# wizard_tab: "Wizard"
# password_tab: "Password"
# emails_tab: "Emails"
password_tab: "Kata-laluan"
emails_tab: "Kesemua E-mel"
# admin: "Admin"
# gravatar_select: "Select which Gravatar photo to use"
# gravatar_add_photos: "Add thumbnails and photos to a Gravatar account for your email to choose an image."
# gravatar_add_more_photos: "Add more photos to your Gravatar account to access them here."
gravatar_select: "Pilih mana gambar Gravatar photo digunakan"
gravatar_add_photos: "Tambah thumbnail and gambar-gambar kepada akaun Gravatar untuk emel anda untuk pilih imej."
gravatar_add_more_photos: "Tambah lebih gambar kepada akaun Gravatar dan aksess dari sana."
# wizard_color: "Wizard Clothes Color"
# new_password: "New Password"
# new_password_verify: "Verify"
new_password: "Kata-laluan baru"
new_password_verify: "Verifikasi"
# email_subscriptions: "Email Subscriptions"
# email_announcements: "Announcements"
# email_notifications: "Notifications"
email_announcements: "Pengumuman"
email_notifications: "Notifikasi"
# email_notifications_description: "Get periodic notifications for your account."
# email_announcements_description: "Get emails on the latest news and developments at CodeCombat."
# contributor_emails: "Contributor Class Emails"
# contribute_prefix: "We're looking for people to join our party! Check out the "
# contribute_page: "contribute page"
# contribute_suffix: " to find out more."
contribute_prefix: "Kami sedang mencari orang untuk masuk 'parti' kami! Sila semak kepada "
contribute_page: "Laman untuk sumbangan"
contribute_suffix: " untuk mengetahui lebih lanjut."
# email_toggle: "Toggle All"
# error_saving: "Error Saving"
# saved: "Changes Saved"
# password_mismatch: "Password does not match."
error_saving: "Masalah menyimpan"
saved: "Pengubahsuian disimpan"
password_mismatch: "Kata-laluan tidak sama."
account_profile:
# edit_settings: "Edit Settings"
@ -264,6 +264,8 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"
@ -336,7 +338,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
version: "Versi"
commit_msg: "Mesej Commit"
# history: "History"
# version_history_for: "Version History for: "
version_history_for: "Versi History untuk: "
result: "Keputusan"
results: "Keputusan-keputusan"
description: "Deskripsi"
@ -360,16 +362,16 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
about:
who_is_codecombat: "Siapa adalah CodeCombat?"
why_codecombat: "Kenapa CodeCombat?"
who_description_prefix: "bersama memulai CodeCombat in 2013. Kami juga membuat (mengaturcara) "
who_description_prefix: "bersama memulai CodeCombat dalam 2013. Kami juga membuat (mengaturcara) "
who_description_suffix: "dalam 2008, mengembangkan ia kepada applikasi iOS dan applikasi web #1 untuk belajar menaip dalam karakter Cina dan Jepun."
who_description_ending: "Sekarang, sudah tiba masanya untuk mengajar orang untuk menaip kod."
# why_paragraph_1: "When making Skritter, George didn't know how to program and was constantly frustrated by his inability to implement his ideas. Afterwards, he tried learning, but the lessons were too slow. His housemate, wanting to reskill and stop teaching, tried Codecademy, but \"got bored.\" Each week another friend started Codecademy, then dropped off. We realized it was the same problem we'd solved with Skritter: people learning a skill via slow, intensive lessons when what they need is fast, extensive practice. We know how to fix that."
why_paragraph_2: "Mahu belajar untuk membina kod? Anda tidak perlu membaca dan belajar. Anda perlu menaip kod yang banyak dan bersuka-suka dengan masa yang terluang."
why_paragraph_3_prefix: "Itulah semua tentang pengaturcaraan. Ia harus membuat anda gembira dan rasa berpuas hati. Tidak seperti"
why_paragraph_3_prefix: "Itulah semua mengenai pengaturcaraan. Ia harus membuat anda gembira dan rasa berpuas hati. Tidak seperti"
why_paragraph_3_italic: "yay satu badge"
why_paragraph_3_center: "tapi bersukaria seperti"
why_paragraph_3_italic_caps: "TIDAK MAK SAYA PERLU HABISKAN LEVEL!"
why_paragraph_3_suffix: "Itulah kenapa CodeCombat adalah permainan multiplayer, tapi bukan sebuah khursus dibuat sebagai permainan. Kami tidak akan berhenti sehingga kamu tidak akan--tetapi buat masa kini, itulah perkara yang baik."
why_paragraph_3_suffix: "Itulah kenapa CodeCombat adalah permainan multiplayer, tapi bukan sebuah khursus dibuat sebagai permainan. Kami tidak akan berhenti sehingga anda tidak--tetapi buat masa kini, itulah perkara yang terbaik."
why_paragraph_4: "Jika kamu mahu berasa ketagih terhadap sesuatu permainan komputer, jadilah ketagih kepada permainan ini dan jadilah seorang pakar dalam zaman teknologi terkini."
why_ending: "Dan ia adalah percuma! "
why_ending_url: "Mulalah bermain sekarang!"
@ -380,14 +382,14 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
# michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online."
# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that matter. The word impossible can't be found in his dictionary. Learning new skills is his joy!"
# legal:
# page_title: "Legal"
# opensource_intro: "CodeCombat is free to play and completely open source."
# opensource_description_prefix: "Check out "
# github_url: "our GitHub"
# opensource_description_center: "and help out if you like! CodeCombat is built on dozens of open source projects, and we love them. See "
legal:
page_title: "Undang-Undang"
opensource_intro: "CodeCombat adalah percuma untuk bermain dan adalah open source."
opensource_description_prefix: "Sila lihat "
github_url: "GitHub kami"
opensource_description_center: "dan sumbang seberapa mampu! CodeCombat dibina atas beberapa projek open source, dan kami menyukainya. Sila lihat "
# archmage_wiki_url: "our Archmage wiki"
# opensource_description_suffix: "for a list of the software that makes this game possible."
opensource_description_suffix: "senarai sofwe yang membolehkan permainan ini berfungsi."
# practices_title: "Respectful Best Practices"
# practices_description: "These are our promises to you, the player, in slightly less legalese."
# privacy_title: "Privacy"
@ -399,26 +401,27 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
# email_settings_url: "your email settings"
# email_description_suffix: "or through links in the emails we send, you can change your preferences and easily unsubscribe at any time."
# cost_title: "Cost"
# cost_description: "Currently, CodeCombat is 100% free! One of our main goals is to keep it that way, so that as many people can play as possible, regardless of place in life. If the sky darkens, we might have to charge subscriptions or for some content, but we'd rather not. With any luck, we'll be able to sustain the company with:"
cost_description: "Buat masa ini, CodeCombat adalah 100% percuma! salah satu daripada tujuan kami adalah untuk membiarkan ia sebegitu, supaya ramai boleh bermain, di mana sahaja mereka berada. Jikalau langit menjadi gelap untuk kami, kami akan mengecaj untuk langganan atau untuk beberapa muatan, tapi kami lebih suka untuk tidak berbuat demikian. Jika kami bernasib baik, kami dapat menanggung syarikat kami dengan:"
# recruitment_title: "Recruitment"
# recruitment_description_prefix: "Here on CodeCombat, you're going to become a powerful wizardnot just in the game, but also in real life."
# url_hire_programmers: "No one can hire programmers fast enough"
# recruitment_description_suffix: "so once you've sharpened your skills and if you agree, we will demo your best coding accomplishments to the thousands of employers who are drooling for the chance to hire you. They pay us a little, they pay you"
# recruitment_description_italic: "a lot"
# recruitment_description_ending: "the site remains free and everybody's happy. That's the plan."
# copyrights_title: "Copyrights and Licenses"
# contributor_title: "Contributor License Agreement"
# contributor_description_prefix: "All contributions, both on the site and on our GitHub repository, are subject to our"
copyrights_title: "Hakcipta dan Pemelesenan"
contributor_title: "Persetujuan Lesen Penyumbang"
contributor_description_prefix: "Kesemua sumbangan, termasuk di dalam laman dan di dalam repositiri GitHub, tertakluk kepada"
# cla_url: "CLA"
# contributor_description_suffix: "to which you should agree before contributing."
contributor_description_suffix: "di mana harus dipersetujui sebelum menyumbang."
# code_title: "Code - MIT"
# code_description_prefix: "All code owned by CodeCombat or hosted on codecombat.com, both in the GitHub repository or in the codecombat.com database, is licensed under the"
code_description_prefix: "Kesemua kod yang dimiliki CodeCombat atau dihos di codecombat.com, termasuk di dalam repositori GitHub dan database codecombat.com, dilesenkan di bawah"
# mit_license_url: "MIT license"
# code_description_suffix: "This includes all code in Systems and Components that are made available by CodeCombat for the purpose of creating levels."
code_description_suffix: "Ini termasuk kesemua kod Sistem dan Komponen yang sudah sedia ada untuk CodeCombat untuk membina level."
# art_title: "Art/Music - Creative Commons "
# art_description_prefix: "All common content is available under the"
art_description_prefix: "Kesemua muatan umum boleh didapat di bawah"
# cc_license_url: "Creative Commons Attribution 4.0 International License"
# art_description_suffix: "Common content is anything made generally available by CodeCombat for the purpose of creating Levels. This includes:"
# art_description_suffix: "Common content is anything made generally available by CodeCombat for the purpose of creating Levels. This includes:"
# art_music: "Music"
# art_sound: "Sound"
# art_artwork: "Artwork"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
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_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
time_current: "Nu:"
time_total: "Maximum:"
time_goto: "Ga naar:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
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_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
time_current: "Nu:"
time_total: "Maximum:"
time_goto: "Ga naar:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t
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_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
time_current: "Nu:"
time_total: "Maximum:"
time_goto: "Ga naar:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -5,7 +5,7 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
sending: "Enviando..."
cancel: "Cancelar"
save: "Salvar"
# create: "Create"
create: "Criar"
delay_1_sec: "1 segundo"
delay_3_sec: "3 segundos"
delay_5_sec: "5 segundos"
@ -13,13 +13,13 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
fork: "Fork"
play: "Jogar"
# units:
# second: "second"
# seconds: "seconds"
# minute: "minute"
# minutes: "minutes"
# hour: "hour"
# hours: "hours"
unidades:
second: "segundo"
seconds: "segundos"
minute: "minuto"
minutes: "minutos"
hour: "hora"
hours: "horas"
modal:
close: "Fechar"
@ -53,7 +53,7 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
login:
sign_up: "Criar conta"
log_in: "Entrar"
# logging_in: "Logging In"
logging_in: "Entrando"
log_out: "Sair"
recover: "Recuperar sua conta"
@ -264,6 +264,8 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "Português europeu", englishDescription: "P
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "português", englishDescription: "Portugues
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -5,7 +5,7 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman
sending: "Se trimite..."
cancel: "Anulează"
save: "Salvează"
# create: "Create"
create: "Crează"
delay_1_sec: "1 secundă"
delay_3_sec: "3 secunde"
delay_5_sec: "5 secunde"
@ -13,13 +13,13 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman
fork: "Fork"
play: "Joacă"
# units:
# second: "second"
# seconds: "seconds"
# minute: "minute"
# minutes: "minutes"
# hour: "hour"
# hours: "hours"
units:
second: "secundă"
seconds: "secunde"
minute: "minut"
minutes: "minute"
hour: "oră"
hours: "ore"
modal:
close: "Inchide"
@ -53,7 +53,7 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman
login:
sign_up: "Crează cont"
log_in: "Log In"
# logging_in: "Logging In"
logging_in: "Se conectează"
log_out: "Log Out"
recover: "recuperează cont"
@ -226,8 +226,8 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman
skip_tutorial: "Sari peste (esc)"
editor_config: "Editor Config"
editor_config_title: "Configurare Editor"
# editor_config_language_label: "Programming Language"
# editor_config_language_description: "Define the programming language you want to code in."
editor_config_language_label: "Limbaj de Programare"
editor_config_language_description: "Definește limbajul de programare în care vrei să codezi."
editor_config_keybindings_label: "Mapare taste"
editor_config_keybindings_default: "Default (Ace)"
editor_config_keybindings_description: "Adaugă comenzi rapide suplimentare cunoscute din editoarele obisnuite."
@ -246,17 +246,17 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman
tip_beta_launch: "CodeCombat a fost lansat beta in Octombrie 2013."
tip_js_beginning: "JavaScript este doar începutul."
tip_autocast_setting: "Ajutează setările de autocast apăsând pe rotița de pe buton."
# think_solution: "Think of the solution, not the problem."
# tip_theory_practice: "In theory, there is no difference between theory and practice. But in practice, there is. - Yogi Berra"
# tip_error_free: "There are two ways to write error-free programs; only the third one works. - Alan Perlis"
# tip_debugging_program: "If debugging is the process of removing bugs, then programming must be the process of putting them in. - Edsger W. Dijkstra"
# tip_forums: "Head over to the forums and tell us what you think!"
think_solution: "Gândește-te la soluție, nu la problemă."
tip_theory_practice: "Teoretic nu este nici o diferență înte teorie și practică. Dar practic este. - Yogi Berra"
tip_error_free: "Există doar două metode de a scrie un program fără erori; numai a treia funcționează. - Alan Perlis"
tip_debugging_program: "Dacă a face debuggin este procesul de a scoate bug-uri, atunci a programa este procesul de a introduce bug-uri. - Edsger W. Dijkstra"
tip_forums: "Intră pe forum și spune-ți părerea!"
tip_baby_coders: "În vitor până și bebelușii vor fi Archmage."
tip_morale_improves: "Se va încărca până până când va crește moralul."
tip_all_species: "Noi credem în șanse egale de a învăța programare pentru toate speciile."
# tip_reticulating: "Reticulating spines."
tip_reticulating: "Reticulating spines."
tip_harry: "Ha un Wizard, "
# tip_great_responsibility: "With great coding skill comes great debug responsibility."
tip_great_responsibility: "With great coding skill comes great debug responsibility."
# tip_munchkin: "If you don't eat your vegetables, a munchkin will come after you while you're asleep."
# tip_binary: "There are only 10 types of people in the world: those who understand binary, and those who don't."
# tip_commitment_yoda: "A programmer must have the deepest commitment, the most serious mind. ~ Yoda"
@ -264,6 +264,8 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"
@ -585,16 +587,16 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman
warmup: "Încălzire"
vs: "VS"
# multiplayer_launch:
# introducing_dungeon_arena: "Introducing Dungeon Arena"
# new_way: "The new way to compete with code."
# to_battle: "To Battle, Developers!"
# modern_day_sorcerer: "You know how to code? That's badass. You're a modern-day sorcerer! Isn't about time that you used your magic coding powers to command your minions in epic combat? And we're not talking robots here."
# arenas_are_here: "CodeCombat head-to-head multiplayer arenas are here."
# ladder_explanation: "Choose your heroes, enchant your human or ogre armies, and climb your way over defeated fellow Wizards to reach the top of the laddersthen challenge your friends in our glorious, asynchronous multiplayer coding arenas. If you're feeling creative, you can even"
# fork_our_arenas: "fork our arenas"
# create_worlds: "and create your own worlds."
# javascript_rusty: "JavaScript a bit rusty? Don't worry; there's a"
# tutorial: "tutorial"
# new_to_programming: ". New to programming? Hit our beginner campaign to skill up."
# so_ready: "I Am So Ready for This"
multiplayer_launch:
introducing_dungeon_arena: "Prezentăm Dungeon Arena"
new_way: "Noul mod de a concura prin linii de cod."
to_battle: "La luptă, Developers!"
modern_day_sorcerer: "Știi să programezie? Tare. Ești un vrăjitor al noii ere! Nu crezi ca este timpul să îți folosești puterile de programare pentru a conduce în lupte epice minionii tăi? Și nu vorbim despre roboți aici."
arenas_are_here: "Arenele CodeCombat multiplayer 1v1 sunt aici."
ladder_explanation: "Alegeți eroii,vrăjește armatele de orci sau oameni, și croiește-ți drumul luptând și învingând alți Vrăjitori pentru a ajunge în topul clasamentului. Dacă te simți creativ poți chiar să"
fork_our_arenas: "să dai fork la arenele noastre"
create_worlds: "și să îți creezi propriile lumi."
javascript_rusty: "N-ai mai pus mâna pe JavaScript? Nicio problemă; există un"
tutorial: "tutorial"
new_to_programming: ". Nou in tainele programării? Încearcă campania de începători pentru ați dezolvata abilitățile."
so_ready: "Sunt atât de pregătit pentru asta!"

View file

@ -226,8 +226,8 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
skip_tutorial: "Пропуск (Esc)"
editor_config: "Настройки редактора"
editor_config_title: "Настройки редактора"
# editor_config_language_label: "Programming Language"
# editor_config_language_description: "Define the programming language you want to code in."
editor_config_language_label: "Язык программирования"
editor_config_language_description: "Определяет язык, на котором вы хотите программировать."
editor_config_keybindings_label: "Сочетания клавиш"
editor_config_keybindings_default: "По умолчанию (Ace)"
editor_config_keybindings_description: "Добавляет дополнительные сочетания, известные из популярных редакторов."
@ -264,6 +264,8 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
tip_patience: "Терпением ты обладать должен, юный падаван. - Yoda"
tip_documented_bug: "Документированный баг не является багом; это фича."
tip_impossible: "Это всегда кажется невозможным, пока не сделано. - Nelson Mandela"
tip_talk_is_cheap: "Слова ничего не стоят. Покажи мне код. - Linus Torvalds"
tip_first_language: "Наиболее катастрофическая вещь, которую вы можете выучить - ваш первый язык программирования. - Alan Kay"
time_current: "Текущее:"
time_total: "Максимальное:"
time_goto: "Перейти на:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak",
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "українська мова", englishDesc
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu",
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -264,6 +264,8 @@ module.exports = nativeDescription: "中文", englishDescription: "Chinese", tra
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# time_current: "Now:"
# time_total: "Max:"
# time_goto: "Go to:"

View file

@ -167,7 +167,15 @@ a[data-toggle="modal"]
width: 50%
margin: 0 25%
.progress-bar
width: 100%
width: 0%
transition: width 0.1s ease
.errors .alert
padding: 5px
display: block
margin: 10px auto
.btn
margin-left: 10px
.modal
.wait
@ -210,3 +218,18 @@ body[lang='ru'], body[lang|='zh'], body[lang='ja'], body[lang='pl'], body[lang='
text-transform: uppercase
letter-spacing: -1px !important
@media only screen and (max-width: 800px)
.main-content-area
width: 100%
.content
width: 100%
.footer-link-text a
font-size: 17px
margin-left: 3px
margin-right: 3px
.share-buttons
margin-bottom: 20px
.partner-badges
display: none

View file

@ -95,3 +95,33 @@
li
color: #ebebeb
padding: 8px 20px
#mobile-nav
display: none
@media only screen and (max-width: 800px)
#top-nav
display: none
#mobile-nav
display: inline
a.navbar-brand
padding: 4px 20px 0px 20px
button.navbar-toggle
background: #483a2d
border: 2px solid #2f261d
span.icon-bar
background: #F9E612
ul li
font-family: 'Bangers', cursive
font-weight: normal
color: #fff
font-size: 25px
margin-top: 5px
margin-bottom: 5px
.header-font
color: #fff
.footer-link-text
width: 100%
display: ineline

View file

@ -92,3 +92,38 @@
width: 660px
height: 382px
pointer-events: none
#mobile-trailer-wrapper
display: none
@media only screen and (max-width: 800px)
#home-view
#site-slogan
font-size: 30px
#trailer-wrapper
display: none
#mobile-trailer-wrapper
display: inline-block
width: 100%
iframe
display: block
margin: 0 auto
.game-mode-wrapper
width: 100%
img
width: 100%
.play-text
position: absolute
right: 45px
bottom: 0px
color: $yellow
font-size: 50px
font-family: Bangers
@include transition(color .10s linear)
h1
text-align: center
margin-top: 0

View file

@ -70,3 +70,8 @@
#must-log-in button
margin-right: 10px
@media only screen and (max-width: 800px)
#ladder-view
#level-column img
width: 100%

View file

@ -0,0 +1,42 @@
#ladder-tab-view
.name-col-cell
max-width: 150px
white-space: nowrap
overflow: hidden
text-overflow: ellipsis
.bar rect
fill: steelblue
shape-rendering: crispEdges
.bar text
fill: #fff
.specialbar rect
fill: #555555
.axis path, .axis line
fill: none
stroke: #555555
shape-rendering: crispEdges
.humans-bar
fill: #bf3f3f
shape-rendering: crispEdges
.ogres-bar
fill: #3f44bf
shape-rendering: crispEdges
text
fill: #555555
.rank-text
font-size: 15px
fill: #555555
.humans-rank-text
fill: #bf3f3f
.ogres-rank-text
fill: #3f44bf

View file

@ -0,0 +1,29 @@
#my-matches-tab-view
.axis path, .axis line
fill: none
stroke: #555
shape-rendering: crispEdges
.x.axis.path
display: none
.line
fill: none
stroke: steelblue
stroke-width: 1.5px
.humans-line
fill: none
stroke: #bf3f3f
stroke-width: 1.5px
.ogres-line
fill: none
stroke: #3f44bf
stroke-width: 1.5px
.axis text
stroke: none
fill: #555555
shape-rendering: crispEdges

View file

@ -16,7 +16,7 @@ block content
else
span(data-i18n="account_profile.profile") Profile
if loading
if loadingProfile
p(data-i18n="common.loading") Loading...
else if !user.get('emailHash')

View file

@ -1,6 +1,28 @@
body
#fb-root
block header
.nav.navbar.navbar-fixed-top#mobile-nav
.content.clearfix
.navbar-header
button.navbar-toggle(type="button" data-toggle="collapse" data-target="#collapsible-navbar")
span.sr-only Toggle navigation
span.icon-bar
span.icon-bar
span.icon-bar
a.navbar-brand(href='/')
img(src="/images/pages/base/logo.png", title="CodeCombat - Learn how to code by playing a game", alt="CodeCombat")
.collapse.navbar-collapse#collapsible-navbar
ul.nav.navbar-nav
li.play
a.header-font(href='/play', data-i18n="nav.play") Levels
li.editor
a.header-font(href='/editor', data-i18n="nav.editor") Editor
li.blog
a.header-font(href='http://blog.codecombat.com/', data-i18n="nav.blog") Blog
li.forum
a.header-font(href='http://discourse.codecombat.com/', data-i18n="nav.forum") Forum
.nav.navbar.navbar-fixed-top#top-nav
.content.clearfix
.navbar-header
@ -32,6 +54,10 @@ body
if me.isAdmin()
li.admin
a.header-font(href='/admin', data-i18n="nav.admin") Admin
block outer_content
#outer-content-wrapper

View file

@ -7,7 +7,8 @@ block content
#trailer-wrapper
<iframe width="920" height="518" src="//www.youtube.com/embed/1zjaA13k-dA?rel=0&controls=0&modestbranding=1&showinfo=0&iv_load_policy=3&vq=hd720&wmode=transparent" frameborder="0" wmode="opaque" allowfullscreen></iframe>
img(src="/images/pages/home/video_border.png")
#mobile-trailer-wrapper
<iframe src="//www.youtube.com/embed/1zjaA13k-dA" frameborder="0" width="280" height="158"></iframe>
hr
.alert.alert-danger.lt-ie10
@ -21,7 +22,7 @@ block content
strong(data-i18n="home.old_browser") Uh oh, your browser is too old to run CodeCombat. Sorry!
br
span(data-i18n="home.old_browser_suffix") You can try anyway, but it probably won't work.
a#beginner-campaign(href="/play/level/rescue-mission")
div.game-mode-wrapper
if isEnglish

View file

@ -1,4 +1,6 @@
.loading-screen
h1(data-i18n="common.loading") Loading...
.progress.progress-striped.active
.progress-bar
.progress
.progress-bar
.errors

View file

@ -0,0 +1,31 @@
.alert.alert-danger.loading-error-alert
span(data-i18n="loading_error.could_not_load") Error loading from server
span (
span(data-i18n="resources.#{name}")
span )
if !responseText
strong(data-i18n="loading_error.connection_failure") Connection failed.
else if status === 401
strong(data-i18n="loading_error.unauthorized") You need to be signed in. Do you have cookies disabled?
else if status === 403
strong(data-i18n="loading_error.forbidden") You do not have the permissions.
else if status === 404
strong(data-i18n="loading_error.not_found") Not found.
else if status === 405
strong(data-i18n="loading_error.not_allowed") Method not allowed.
else if status === 408
strong(data-i18n="loading_error.timeout") Server timeout.
else if status === 409
strong(data-i18n="loading_error.conflict") Resource conflict.
else if status === 422
strong(data-i18n="loading_error.bad_input") Bad input.
else if status >= 500
strong(data-i18n="loading_error.server_error") Server error.
else
strong(data-i18n="loading_error.unknown") Unknown error.
if resourceIndex !== undefined
button.btn.btn-sm.retry-loading-resource(data-i18n="common.retry", data-resource-index=resourceIndex) Retry
if requestIndex !== undefined
button.btn.btn-sm.retry-loading-request(data-i18n="common.retry", data-request-index=requestIndex) Retry

View file

@ -1,6 +1,7 @@
div#columns.row
for team in teams
div.column.col-md-4
div(id="histogram-display-#{team.name}", class="histogram-display",data-team-name=team.name)
table.table.table-bordered.table-condensed.table-hover
tr
th

View file

@ -11,14 +11,14 @@ div#columns.row
tr
th(colspan=4, style="color: #{team.primaryColor}")
span(data-i18n="ladder.summary_your") Your
span(data-i18n="ladder.summary_your") Your
|#{team.name}
|
span(data-i18n="ladder.summary_matches") Matches -
span(data-i18n="ladder.summary_matches") Matches -
|#{team.wins}
span(data-i18n="ladder.summary_wins") Wins,
span(data-i18n="ladder.summary_wins") Wins,
|#{team.losses}
span(data-i18n="ladder.summary_losses") Losses
span(data-i18n="ladder.summary_losses") Losses
if team.session
tr
@ -34,7 +34,9 @@ div#columns.row
if team.chartData
tr
th(colspan=4, style="color: #{team.primaryColor}")
img(src="https://chart.googleapis.com/chart?chs=450x125&cht=lxy&chco=#{team.chartColor}&chtt=Score%3A+#{team.currentScore}&chts=#{team.chartColor},16,r&chf=a,s,000000FF&chls=2&chm=o,#{team.chartColor},0,4&chd=t:#{team.chartData}&chxt=y&chxr=0,#{team.minScore},#{team.maxScore}")
div(class="score-chart-wrapper", data-team-name=team.name, id="score-chart-#{team.name}")
tr
th(data-i18n="general.result") Result

View file

@ -35,6 +35,8 @@
strong.tip.rare(data-i18n='play_level.tip_no_try') Do. Or do not. There is no try. - Yoda
strong.tip.rare(data-i18n='play_level.tip_patience') Patience you must have, young Padawan. - Yoda
strong.tip.rare(data-i18n='play_level.tip_documented_bug') A documented bug is not a bug; it is a feature.
strong.tip.rare(data-i18n='play_level.tip_talk_is_cheap') Talk is cheap. Show me the code. - Linus Torvalds
strong.tip.rare(data-i18n='play_level.tip_first_language') The most disastrous thing that you can ever learn is your first programming language. - Alan Kay
strong.tip.rare
span(data-i18n='play_level.tip_harry') Yer a Wizard,
span= me.get('name') || 'Anoner'

View file

@ -5,21 +5,21 @@ User = require 'models/User'
module.exports = class ProfileView extends View
id: "profile-view"
template: template
loading: true
loadingProfile: true
constructor: (options, @userID) ->
super options
@user = User.getByID(@userID)
@loading = false if 'gravatarProfile' of @user
@loadingProfile = false if 'gravatarProfile' of @user
@listenTo(@user, 'change', @userChanged)
@listenTo(@user, 'error', @userError)
userChanged: (user) ->
@loading = false if 'gravatarProfile' of user
@loadingProfile = false if 'gravatarProfile' of user
@render()
userError: (user) ->
@loading = false
@loadingProfile = false
@render()
getRenderData: ->
@ -28,7 +28,7 @@ module.exports = class ProfileView extends View
grav = grav.entry[0] if grav
addedContext =
user: @user
loading: @loading
loadingProfile: @loadingProfile
myProfile: @user.id is context.me.id
grav: grav
photoURL: @user.getPhotoURL()

View file

@ -21,6 +21,10 @@ module.exports = class ColorsTabView extends CocoView
@interval = setInterval f, 1000
super options
destroy: ->
clearInterval @interval
super()
afterRender: ->
super()
@createShapeButtons()

View file

@ -2,6 +2,7 @@ SuperModel = require 'models/SuperModel'
utils = require 'lib/utils'
CocoClass = require 'lib/CocoClass'
loadingScreenTemplate = require 'templates/loading'
loadingErrorTemplate = require 'templates/loading_error'
visibleModal = null
waitingModal = null
@ -18,13 +19,26 @@ module.exports = class CocoView extends Backbone.View
'click a': 'toggleModal'
'click button': 'toggleModal'
'click li': 'toggleModal'
'click .retry-loading-resource': 'onRetryResource'
'click .retry-loading-request': 'onRetryRequest'
subscriptions: {}
shortcuts: {}
# load progress properties
loadProgress:
num: 0
denom: 0
showing: false
resources: [] # models and collections
requests: [] # jqxhr's
somethings: [] # everything else
progress: 0
# Setup, Teardown
constructor: (options) ->
@loadProgress = _.cloneDeep @loadProgress
@supermodel ?= options?.supermodel or new SuperModel()
@options = options
@subscriptions = utils.combineAncestralObject(@, 'subscriptions')
@ -33,6 +47,7 @@ module.exports = class CocoView extends Backbone.View
@shortcuts = utils.combineAncestralObject(@, 'shortcuts')
@subviews = {}
@listenToShortcuts()
@updateProgressBar = _.debounce @updateProgressBar, 100
# Backbone.Mediator handles subscription setup/teardown automatically
super options
@ -74,7 +89,7 @@ module.exports = class CocoView extends Backbone.View
return @template if _.isString(@template)
@$el.html @template(@getRenderData())
@afterRender()
@showLoading() if @startsLoading
@showLoading() if @startsLoading or @loading() # TODO: Remove startsLoading entirely
@$el.i18n()
@
@ -89,6 +104,101 @@ module.exports = class CocoView extends Backbone.View
context
afterRender: ->
# Resource and request loading management for any given view
addResourceToLoad: (modelOrCollection, name, value=1) ->
@loadProgress.resources.push {resource:modelOrCollection, value:value, name:name}
@listenToOnce modelOrCollection, 'sync', @updateProgress
@listenTo modelOrCollection, 'error', @onResourceLoadFailed
@updateProgress()
addRequestToLoad: (jqxhr, name, retryFunc, value=1) ->
@loadProgress.requests.push {request:jqxhr, value:value, name: name, retryFunc: retryFunc}
jqxhr.done @updateProgress
jqxhr.fail @onRequestLoadFailed
addSomethingToLoad: (name, value=1) ->
@loadProgress.somethings.push {loaded: false, name: name, value: value}
@updateProgress()
somethingLoaded: (name) ->
r = _.find @loadProgress.somethings, {name: name}
return console.error 'Could not find something called', name if not r
r.loaded = true
@updateProgress(name)
loading: ->
return false if @loaded
for r in @loadProgress.resources
return true if not r.resource.loaded
for r in @loadProgress.requests
return true if not r.request.status
for r in @loadProgress.somethings
return true if not r.loaded
return false
updateProgress: =>
console.debug 'Loaded', r.name if arguments[0] and r = _.find @loadProgress.resources, {resource:arguments[0]}
console.debug 'Loaded', r.name if arguments[2] and r = _.find @loadProgress.requests, {request:arguments[2]}
console.debug 'Loaded', r.name if arguments[0] and r = _.find @loadProgress.somethings, {name:arguments[0]}
denom = 0
denom += r.value for r in @loadProgress.resources
denom += r.value for r in @loadProgress.requests
denom += r.value for r in @loadProgress.somethings
num = @loadProgress.num
num += r.value for r in @loadProgress.resources when r.resource.loaded
num += r.value for r in @loadProgress.requests when r.request.status
num += r.value for r in @loadProgress.somethings when r.loaded
#console.log 'update progress', @, num, denom, arguments
progress = if denom then num / denom else 0
# sometimes the denominator isn't known from the outset, so make sure the overall progress only goes up
@loadProgress.progress = progress if progress > @loadProgress.progress
@updateProgressBar()
if num is denom and not @loaded
@loaded = true
@onLoaded()
updateProgressBar: =>
prog = "#{parseInt(@loadProgress.progress*100)}%"
@$el.find('.loading-screen .progress-bar').css('width', prog)
onLoaded: ->
@render()
# Error handling for loading
onResourceLoadFailed: (resource, jqxhr) ->
for r, index in @loadProgress.resources
break if r.resource is resource
@$el.find('.loading-screen .errors').append(loadingErrorTemplate({
status:jqxhr.status,
name: r.name
resourceIndex: index,
responseText: jqxhr.responseText
})).i18n()
onRetryResource: (e) ->
r = @loadProgress.resources[$(e.target).data('resource-index')]
r.resource.fetch()
$(e.target).closest('.loading-error-alert').remove()
onRequestLoadFailed: (jqxhr) =>
for r, index in @loadProgress.requests
break if r.request is jqxhr
@$el.find('.loading-screen .errors').append(loadingErrorTemplate({
status:jqxhr.status,
name: r.name
requestIndex: index,
responseText: jqxhr.responseText
}))
onRetryRequest: (e) ->
r = @loadProgress.requests[$(e.target).data('request-index')]
@[r.retryFunc]?()
$(e.target).closest('.loading-error-alert').remove()
# Modals

View file

@ -1,4 +1,5 @@
CocoView = require 'views/kinds/CocoView'
CocoClass = require 'lib/CocoClass'
Level = require 'models/Level'
LevelSession = require 'models/LevelSession'
CocoCollection = require 'models/CocoCollection'
@ -18,7 +19,6 @@ class LevelSessionsCollection extends CocoCollection
module.exports = class LadderTabView extends CocoView
id: 'ladder-tab-view'
template: require 'templates/play/ladder/ladder_tab'
startsLoading: true
events:
'click .connect-facebook': 'onConnectFacebook'
@ -32,6 +32,7 @@ module.exports = class LadderTabView extends CocoView
constructor: (options, @level, @sessions) ->
super(options)
@addSomethingToLoad("social_network_apis")
@teams = teamDataFromLevel @level
@leaderboards = {}
@refreshLadder()
@ -40,17 +41,18 @@ module.exports = class LadderTabView extends CocoView
checkFriends: ->
return if @checked or (not window.FB) or (not window.gapi)
@checked = true
@loadingFacebookFriends = true
@addSomethingToLoad("facebook_status")
FB.getLoginStatus (response) =>
@facebookStatus = response.status
if @facebookStatus is 'connected' then @loadFacebookFriendSessions() else @loadingFacebookFriends = false
@loadFacebookFriends() if @facebookStatus is 'connected'
@somethingLoaded("facebook_status")
if application.gplusHandler.loggedIn is undefined
@loadingGPlusFriends = true
@listenToOnce(application.gplusHandler, 'checked-state', @gplusSessionStateLoaded)
else
@gplusSessionStateLoaded()
@somethingLoaded("social_network_apis")
# FACEBOOK
@ -60,16 +62,24 @@ module.exports = class LadderTabView extends CocoView
onConnectedWithFacebook: -> location.reload() if @connecting
loadFacebookFriends: ->
@addSomethingToLoad("facebook_friends")
FB.api '/me/friends', @onFacebookFriendsLoaded
onFacebookFriendsLoaded: (response) =>
@facebookData = response.data
@loadFacebookFriendSessions()
@somethingLoaded("facebook_friends")
loadFacebookFriendSessions: ->
FB.api '/me/friends', (response) =>
@facebookData = response.data
levelFrag = "#{@level.get('original')}.#{@level.get('version').major}"
url = "/db/level/#{levelFrag}/leaderboard_facebook_friends"
$.ajax url, {
data: { friendIDs: (f.id for f in @facebookData) }
method: 'POST'
success: @onFacebookFriendSessionsLoaded
}
levelFrag = "#{@level.get('original')}.#{@level.get('version').major}"
url = "/db/level/#{levelFrag}/leaderboard_facebook_friends"
jqxhr = $.ajax url, {
data: { friendIDs: (f.id for f in @facebookData) }
method: 'POST'
success: @onFacebookFriendSessionsLoaded
}
@addRequestToLoad(jqxhr, 'facebook_friend_sessions', 'loadFacebookFriendSessions')
onFacebookFriendSessionsLoaded: (result) =>
friendsMap = {}
@ -79,9 +89,7 @@ module.exports = class LadderTabView extends CocoView
friend.otherTeam = if friend.team is 'humans' then 'ogres' else 'humans'
friend.imageSource = "http://graph.facebook.com/#{friend.facebookID}/picture"
@facebookFriendSessions = result
@loadingFacebookFriends = false
@renderMaybe()
# GOOGLE PLUS
onConnectGPlus: ->
@ -93,21 +101,23 @@ module.exports = class LadderTabView extends CocoView
gplusSessionStateLoaded: ->
if application.gplusHandler.loggedIn
@loadingGPlusFriends = true
@addSomethingToLoad("gplus_friends")
application.gplusHandler.loadFriends @gplusFriendsLoaded
else
@loadingGPlusFriends = false
@renderMaybe()
gplusFriendsLoaded: (friends) =>
@gplusData = friends.items
@loadGPlusFriendSessions()
@somethingLoaded("gplus_friends")
loadGPlusFriendSessions: ->
levelFrag = "#{@level.get('original')}.#{@level.get('version').major}"
url = "/db/level/#{levelFrag}/leaderboard_gplus_friends"
$.ajax url, {
jqxhr = $.ajax url, {
data: { friendIDs: (f.id for f in @gplusData) }
method: 'POST'
success: @onGPlusFriendSessionsLoaded
}
@addRequestToLoad(jqxhr, 'gplus_friend_sessions', 'loadGPlusFriendSessions')
onGPlusFriendSessionsLoaded: (result) =>
friendsMap = {}
@ -117,30 +127,29 @@ module.exports = class LadderTabView extends CocoView
friend.otherTeam = if friend.team is 'humans' then 'ogres' else 'humans'
friend.imageSource = friendsMap[friend.gplusID].image.url
@gplusFriendSessions = result
@loadingGPlusFriends = false
@renderMaybe()
# LADDER LOADING
refreshLadder: ->
promises = []
for team in @teams
@leaderboards[team.id]?.off 'sync'
@leaderboards[team.id]?.destroy()
teamSession = _.find @sessions.models, (session) -> session.get('team') is team.id
@leaderboards[team.id] = new LeaderboardData(@level, team.id, teamSession)
promises.push @leaderboards[team.id].promise
@loadingLeaderboards = true
$.when(promises...).then(@leaderboardsLoaded)
leaderboardsLoaded: =>
@loadingLeaderboards = false
@renderMaybe()
renderMaybe: ->
return if @loadingFacebookFriends or @loadingLeaderboards or @loadingGPlusFriends
@startsLoading = false
@render()
@addResourceToLoad @leaderboards[team.id], 'leaderboard', 3
render: ->
super()
@$el.find('.histogram-display').each (i, el) =>
histogramWrapper = $(el)
team = _.find @teams, name: histogramWrapper.data('team-name')
histogramData = null
$.when(
$.get("/db/level/#{@level.get('slug')}/histogram_data?team=#{team.name.toLowerCase()}", (data) -> histogramData = data)
).then =>
@generateHistogram(histogramWrapper, histogramData, team.name.toLowerCase())
getRenderData: ->
ctx = super()
ctx.level = @level
@ -153,6 +162,82 @@ module.exports = class LadderTabView extends CocoView
ctx.onGPlus = application.gplusHandler.loggedIn
ctx
generateHistogram: (histogramElement, histogramData, teamName) ->
#renders twice, hack fix
if $("#"+histogramElement.attr("id")).has("svg").length then return
histogramData = histogramData.map (d) -> d*100
margin =
top: 20
right: 20
bottom: 30
left: 0
width = 300 - margin.left - margin.right
height = 125 - margin.top - margin.bottom
formatCount = d3.format(",.0")
x = d3.scale.linear().domain([-3000,6000]).range([0,width])
data = d3.layout.histogram().bins(x.ticks(20))(histogramData)
y = d3.scale.linear().domain([0,d3.max(data, (d) -> d.y)]).range([height,0])
#create the x axis
xAxis = d3.svg.axis().scale(x).orient("bottom").ticks(5).outerTickSize(0)
svg = d3.select("#"+histogramElement.attr("id")).append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform","translate(#{margin.left},#{margin.top})")
barClass = "bar"
if teamName.toLowerCase() is "ogres" then barClass = "ogres-bar"
if teamName.toLowerCase() is "humans" then barClass = "humans-bar"
bar = svg.selectAll(".bar")
.data(data)
.enter().append("g")
.attr("class",barClass)
.attr("transform", (d) -> "translate(#{x(d.x)},#{y(d.y)})")
bar.append("rect")
.attr("x",1)
.attr("width",width/20)
.attr("height", (d) -> height - y(d.y))
if @leaderboards[teamName].session?
playerScore = @leaderboards[teamName].session.get('totalScore') * 100
scorebar = svg.selectAll(".specialbar")
.data([playerScore])
.enter().append("g")
.attr("class","specialbar")
.attr("transform", "translate(#{x(playerScore)},#{y(9001)})")
scorebar.append("rect")
.attr("x",1)
.attr("width",3)
.attr("height",height - y(9001))
rankClass = "rank-text"
if teamName.toLowerCase() is "ogres" then rankClass = "rank-text ogres-rank-text"
if teamName.toLowerCase() is "humans" then rankClass = "rank-text humans-rank-text"
message = "#{histogramData.length} players"
if @leaderboards[teamName].session? then message="#{@leaderboards[teamName].myRank}/#{histogramData.length}"
svg.append("g")
.append("text")
.attr("class",rankClass)
.attr("y",0)
.attr("text-anchor","end")
.attr("x",width)
.text(message)
#Translate the x-axis up
svg.append("g")
.attr("class", "x axis")
.attr("transform","translate(0," + height + ")")
.call(xAxis)
consolidateFriends: ->
allFriendSessions = (@facebookFriendSessions or []).concat(@gplusFriendSessions or [])
sessions = _.uniq allFriendSessions, false, (session) -> session._id
@ -160,9 +245,16 @@ module.exports = class LadderTabView extends CocoView
sessions.reverse()
sessions
class LeaderboardData
class LeaderboardData extends CocoClass
###
Consolidates what you need to load for a leaderboard into a single Backbone Model-like object.
###
constructor: (@level, @team, @session) ->
_.extend @, Backbone.Events
super()
@fetch()
fetch: ->
@topPlayers = new LeaderboardCollection(@level, {order:-1, scoreOffset: HIGHEST_SCORE, team: @team, limit: 20})
promises = []
promises.push @topPlayers.fetch()
@ -173,18 +265,24 @@ class LeaderboardData
promises.push @playersAbove.fetch()
@playersBelow = new LeaderboardCollection(@level, {order:-1, scoreOffset: score, limit: 4, team: @team})
promises.push @playersBelow.fetch()
level = "#{level.get('original')}.#{level.get('version').major}"
level = "#{@level.get('original')}.#{@level.get('version').major}"
success = (@myRank) =>
promises.push $.ajax "/db/level/#{level}/leaderboard_rank?scoreOffset=#{@session.get('totalScore')}&team=#{@team}", {success}
@promise = $.when(promises...)
@promise.then @onLoad
@promise.fail @onFail
@promise
onLoad: =>
return if @destroyed
@loaded = true
@trigger 'sync'
@trigger 'sync', @
# TODO: cache user ids -> names mapping, and load them here as needed,
# and apply them to sessions. Fetching each and every time is too costly.
onFail: (resource, jqxhr) =>
return if @destroyed
@trigger 'error', @, jqxhr
inTopSessions: ->
return me.id in (session.attributes.creator for session in @topPlayers.models)
@ -201,3 +299,7 @@ class LeaderboardData
startRank = @myRank - 4
session.rank = startRank + i for session, i in l
l
allResources: ->
resources = [@topPlayers, @playersAbove, @playersBelow]
return (r for r in resources when r)

View file

@ -48,6 +48,8 @@ module.exports = class MyMatchesTabView extends CocoView
@startsLoading = false
@render()
getRenderData: ->
ctx = super()
ctx.level = @level
@ -80,7 +82,9 @@ module.exports = class MyMatchesTabView extends CocoView
team.losses = _.filter(team.matches, {state: 'loss'}).length
scoreHistory = team.session?.get('scoreHistory')
if scoreHistory?.length > 1
team.scoreHistory = scoreHistory
scoreHistory = _.last scoreHistory, 100 # Chart URL needs to be under 2048 characters for GET
team.currentScore = Math.round scoreHistory[scoreHistory.length - 1][1] * 100
team.chartColor = team.primaryColor.replace '#', ''
#times = (s[0] for s in scoreHistory)
@ -109,7 +113,69 @@ module.exports = class MyMatchesTabView extends CocoView
else if session.get 'isRanking'
rankingState = 'ranking'
@setRankingButtonText button, rankingState
@$el.find('.score-chart-wrapper').each (i, el) =>
scoreWrapper = $(el)
team = _.find @teams, name: scoreWrapper.data('team-name')
@generateScoreLineChart(scoreWrapper.attr('id'), team.scoreHistory, team.name)
generateScoreLineChart: (wrapperID, scoreHistory,teamName) =>
margin =
top: 20
right: 20
bottom: 30
left: 50
width = 450 - margin.left - margin.right
height = 125
x = d3.time.scale().range([0,width])
y = d3.scale.linear().range([height,0])
xAxis = d3.svg.axis().scale(x).orient("bottom").ticks(4).outerTickSize(0)
yAxis = d3.svg.axis().scale(y).orient("left").ticks(4).outerTickSize(0)
line = d3.svg.line().x(((d) -> x(d.date))).y((d) -> y(d.close))
selector = "#" + wrapperID
svg = d3.select(selector).append("svg")
.attr("width", width + margin.left + margin.right)
.attr("height", height + margin.top + margin.bottom)
.append("g")
.attr("transform","translate(#{margin.left},#{margin.top})")
time = 0
data = scoreHistory.map (d) ->
time +=1
return {
date: time
close: d[1] * 100
}
x.domain(d3.extent(data, (d) -> d.date))
y.domain(d3.extent(data, (d) -> d.close))
svg.append("g")
.attr("class", "y axis")
.call(yAxis)
.append("text")
.attr("transform", "rotate(-90)")
.attr("y",4)
.attr("dy", ".75em")
.style("text-anchor","end")
.text("Score")
lineClass = "line"
if teamName.toLowerCase() is "ogres" then lineClass = "ogres-line"
if teamName.toLowerCase() is "humans" then lineClass = "humans-line"
svg.append("path")
.datum(data)
.attr("class",lineClass)
.attr("d",line)
readyToRank: (session) ->
return false unless session?.get('levelID') # If it hasn't been denormalized, then it's not ready.
return false unless c1 = session.get('code')

View file

@ -24,7 +24,6 @@ class LevelSessionsCollection extends CocoCollection
module.exports = class LadderView extends RootView
id: 'ladder-view'
template: require 'templates/play/ladder'
startsLoading: true
subscriptions:
'application:idle-changed': 'onIdleChanged'
@ -38,18 +37,18 @@ module.exports = class LadderView extends RootView
constructor: (options, @levelID) ->
super(options)
@level = new Level(_id:@levelID)
p1 = @level.fetch()
@level.fetch()
@sessions = new LevelSessionsCollection(levelID)
p2 = @sessions.fetch({})
@sessions.fetch({})
@addResourceToLoad(@sessions, 'your_sessions')
@addResourceToLoad(@level, 'level')
@simulator = new Simulator()
@listenTo(@simulator, 'statusUpdate', @updateSimulationStatus)
@teams = []
$.when(p1, p2).then @onLoaded
onLoaded: =>
onLoaded: ->
@teams = teamDataFromLevel @level
@startsLoading = false
@render()
super()
getRenderData: ->
ctx = super()
@ -63,7 +62,7 @@ module.exports = class LadderView extends RootView
afterRender: ->
super()
return if @startsLoading
return if @loading()
@insertSubView(@ladderTab = new LadderTabView({}, @level, @sessions))
@insertSubView(@myMatchesTab = new MyMatchesTabView({}, @level, @sessions))
@refreshInterval = setInterval(@fetchSessionsAndRefreshViews.bind(@), 10 * 1000)
@ -72,7 +71,7 @@ module.exports = class LadderView extends RootView
@showPlayModal(hash) if @sessions.loaded
fetchSessionsAndRefreshViews: ->
return if @destroyed or application.userIsIdle or @$el.find('#simulate.active').length or (new Date() - 2000 < @lastRefreshTime) or @startsLoading
return if @destroyed or application.userIsIdle or @$el.find('#simulate.active').length or (new Date() - 2000 < @lastRefreshTime) or @loading()
@sessions.fetch({"success": @refreshViews})
refreshViews: =>

View file

@ -78,7 +78,7 @@ module.exports = class VictoryModal extends View
c = super()
c.body = @body
c.me = me
c.hasNextLevel = _.isObject(@level.get('nextLevel')) and (@level.get('name') isnt "Mobile Artillery")
c.hasNextLevel = _.isObject(@level.get('nextLevel'))
c.levelName = utils.i18n @level.attributes, 'name'
c.level = @level
if c.level.get('type') is 'ladder'

View file

@ -44,7 +44,6 @@ module.exports = class PlaybackView extends View
'⌘+[, ctrl+[': 'onScrubBack'
'⌘+], ctrl+]': 'onScrubForward'
# popover that shows at the current mouse position on the progressbar, using the bootstrap popover.
# Could make this into a jQuery plugins itself theoretically.
class HoverPopup extends $.fn.popover.Constructor

View file

@ -63,7 +63,7 @@ module.exports = class SpellView extends View
@createFirepad()
else
# needs to happen after the code generating this view is complete
setTimeout @onLoaded, 1
setTimeout @onAllLoaded, 1
createACE: ->
# Test themes and settings here: http://ace.ajax.org/build/kitchen-sink.html
@ -178,9 +178,9 @@ module.exports = class SpellView extends View
else
@ace.setValue @previousSource
@ace.clearSelection()
@onLoaded()
@onAllLoaded()
onLoaded: =>
onAllLoaded: =>
@spell.transpile @spell.source
@spell.loaded = true
Backbone.Mediator.publish 'tome:spell-loaded', spell: @spell

View file

@ -35,7 +35,8 @@
"aether": "~0.1.18",
"underscore.string": "~2.3.3",
"firebase": "~1.0.2",
"catiline": "~2.9.3"
"catiline": "~2.9.3",
"d3": "~3.4.4"
},
"overrides": {
"backbone": {

View file

@ -65,6 +65,7 @@ exports.config =
# Aether before box2d for some strange Object.defineProperty thing
'bower_components/aether/build/aether.js'
'bower_components/d3/d3.min.js'
]
stylesheets:
defaultExtension: 'sass'

View file

@ -1,6 +1,8 @@
version=1.0
author=GlenDC
copyright=CodeCombat.com © 2013-2014
github_url=https://github.com/codecombat/codecombat.git
github_ssh=git@github.com:codecombat/codecombat.git
database_backup=http://23.21.59.137/dump.tar.gz
<?xml version="1.0" encoding="ISO-8859-1" ?>
<variables>
<version>1.2</version>
<author>GlenDC</author>
<copyright>CodeCombat.com © 2013-2014</copyright>
<github_url>https://github.com/codecombat/codecombat.git</github_url>
<github_ssh>git@github.com:codecombat/codecombat.git</github_ssh>
</variables>

View file

@ -1,23 +1,38 @@
[general]
[32]
nodejs=http://nodejs.org/dist/v0.10.25/node-v0.10.25-x86.msi
ruby=http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.0.0-p353.exe?direct
python=https://www.python.org/ftp/python/2.7.6/python-2.7.6.msi
[64]
nodejs=http://nodejs.org/dist/v0.10.25/x64/node-v0.10.25-x64.msi
ruby=http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.0.0-p353-x64.exe?direct
python=https://www.python.org/ftp/python/2.7.6/python-2.7.6.amd64.msi
winsdk=http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/winsdk_web.exe
[general]
gitbash=https://msysgit.googlecode.com/files/Git-1.8.5.2-preview20131230.exe
visualstudio2010=http://download.microsoft.com/download/1/D/9/1D9A6C0E-FC89-43EE-9658-B9F0E3A76983/vc_web.exe
[Win7]
[32]
mongodb=http://fastdl.mongodb.org/win32/mongodb-win32-i386-2.5.4.zip
[64]
mongodb=http://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.5.4.zip
[Vista]
[64]
mongodb=http://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2.5.4.zip
[32]
mongodb=http://fastdl.mongodb.org/win32/mongodb-win32-i386-2.5.4.zip
<?xml version="1.0" encoding="ISO-8859-1" ?>
<variables>
<general>
<b32>
<nodejs>http://nodejs.org/dist/v0.10.25/node-v0.10.25-x86.msi</nodejs>
<ruby>http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.0.0-p353.exe?direct</ruby>
<python>http://s3.amazonaws.com/CodeCombatLargeFiles/python-32.msi</python>
<vs12redist>http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x86.exe</vs12redist>
</b32>
<b64>
<nodejs>http://nodejs.org/dist/v0.10.25/x64/node-v0.10.25-x64.msi</nodejs>
<ruby>http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.0.0-p353-x64.exe?direct</ruby>
<python>http://s3.amazonaws.com/CodeCombatLargeFiles/python-64.msi</python>
<winsdk>http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/winsdk_web.exe</winsdk>
<vs12redist>http://download.microsoft.com/download/1/6/B/16B06F60-3B20-4FF2-B699-5E9B7962F9AE/VSU_4/vcredist_x64.exe</vs12redist>
</b64>
<general>
<gitbash>https://msysgit.googlecode.com/files/Git-1.8.5.2-preview20131230.exe</gitbash>
<vs10redist>http://download.microsoft.com/download/C/6/D/C6D0FD4E-9E53-4897-9B91-836EBA2AACD3/vcredist_x86.exe</vs10redist>
</general>
</general>
<Win7>
<b32>
<mongodb>http://fastdl.mongodb.org/win32/mongodb-win32-i386-2.5.4.zip</mongodb>
</b32>
<b64>
<mongodb>http://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2008plus-2.5.4.zip</mongodb>
</b64>
</Win7>
<Vista>
<b32>
<mongodb>http://fastdl.mongodb.org/win32/mongodb-win32-i386-2.5.4.zip</mongodb>
</b32>
<b64>
<mongodb>http://fastdl.mongodb.org/win32/mongodb-win32-x86_64-2.5.4.zip</mongodb>
</b64>
</Vista>
</variables>

View file

@ -4,4 +4,4 @@
4) Having questions/suggestions? Talk with us on HipChat via CodeCombat.com
You can find a step-by-step guide for this installation on our wiki.
https://github.com/codecombat/codecombat/wiki/<guide_path>
github.com/codecombat/codecombat/wiki/Setup-on-Windows:-a-step-by-step-guide

View file

@ -1,66 +1,82 @@
[global]
native=Deutsch
intro=Ab jetzt senden wir unser Feedback in Englisch!
[install]
[system]
bit=-Bit System erkannt.
prefix=Es wurde das Betriebssystem
sufix=erkannt.
xp=Windows XP wird nicht unterstützt. Installation abgebrochen.
[process]
sks=Sind die für CodeCombat benötigten Programme bereits installiert?
skq=Wir empfehlen Ihnen, mit „Nein“ zu antorten, falls Sie unsicher sind.
skc=Überspringe Installation der Programme...
1=Ohne Software von Drittanbietern könnte CodeCombat nicht entwickelt werden.
2=Aus diesem Grund müssen Sie diese Software installieren,
3=um sich in der Community zu engagieren.
4=Wenn Sie ein Programm bereits installiert haben, brechen Sie die Installation bitte ab.
prefix=Haben Sie bereits die aktuellste Version von
sufix=installiert?
downloading=wird heruntergeladen...
installing=wird installiert...
unzipping=wird entpackt...
cleaning=wird aufgeräumt...
mongodbpath=Bitte geben Sie den kompletten Pfad an, an dem MongoDB installiert werden soll
[github]
[intro]
opensource=Wie Du bereits weißt, ist CodeCombat Open Source.
online=Unser Quellcode ist komplett auf Github.
manual=Wenn Du möchtest, kannst du das komplette Git Repository selbst herunterladen und nach deinen wünschen einrichten.
norec=Allerdings empfehlen wir, dass du den Prozess statt dessen uns überlässt.
[skip]
question=Willst du das lokale Git Setup selbst vornehmen?
consequence=Bit vergewissere dich, dass das Repository korrekt heruntergeladen wurde, bevor du fortfährst.
donotclose=Bitte schließe dieses Fenster nicht.
wait=Wenn du fertig bist, drücke eine beliebige Taste zum Fortfahren...
[process]
path=Gebe bitte den kompletten Pfad zu deinem CodeCombat Git Repository ein:
checkout=Bitte gib den kompletten Pfad ein, an dem du die CodeCombat Umgebung einrichten willst
bashi=Diese Installation benötigt die Git Bash.
bashp64=Die Git Bash ist standardmäßig in 'C:\Program Files (x86)\Git' installiert.
bashp32=Die Git Bash ist standardmäßig in 'C:\Program Files\Git' installiert.
bashq=Bitte gebe den kompletten Pfad zur Git Bash ein, oder drücke Enter, um den Standardpfad zu verwenden
ssh=Willst du das Repository via SSH auschecken?
[npm]
install=Installing bower, brunch, nodemon and sendwithus...
binstall=Installing bower packages...
sass=Installing sass...
npm=Installing npm...
brnch=Starting brunch....
mongodb=Setting up a MongoDB database for you...
database=Downloading the last version of the CodeCombat database...
script=Preparing the automatic startup script for you...
[error]
path=Dieser Pfad existiert bereits. Willst du ihn wirklich überschreiben?
exist=Dieser Pfad exisitert nicht. Bitte versuche es erneut...
[end]
succesfull=Die CodeCombat Entwicklungsumgebung wurde erfoglreich installiert.
thankyou=Vielen Dank für die Unterstützung und bis bald.
readme=Willst du das README lesen, um weitere Informationen zu erhalten?
[start]
1=Von nun an kannst du die Entwicklungsumgebung starten unter
2=einmal mit der Maus klicken.
3= 1) Einfach Doppelklicken
4=und warten bis die Entwicklungsumgebung fertig geladen hat.
5= 2) Jetzt 'localhost:3000' in deinem bevorzugten Browser aufrufen.
6=Fertig. Du bist nun bereit, bei CodeCombat mitzuarbeiten!
<?xml version="1.0" encoding="ISO-8859-1" ?>
<variables>
<global>
<native>Deutsch</native>
<intro>Ab jetzt senden wir unser Feedback in Englisch!</intro>
</global>
<install>
<system>
<bit>-Bit System erkannt.</bit>
<prefix>Es wurde das Betriebssystem</prefix>
<sufix>erkannt.</sufix>
<xp>Windows XP wird nicht unterstützt. Installation abgebrochen.</xp>
</system>
<process>
<sks>Sind die für CodeCombat benötigten Programme bereits installiert?</sks>
<skq>Wir empfehlen Ihnen, mit „Nein“ zu antorten, falls Sie unsicher sind.</skq>
<skc>Überspringe Installation der Programme...</skc>
<s1>Ohne Software von Drittanbietern könnte CodeCombat nicht entwickelt werden.</s1>
<s2>Aus diesem Grund müssen Sie diese Software installieren,</s2>
<s3>um sich in der Community zu engagieren.</s3>
<s4>Wenn Sie ein Programm bereits installiert haben, brechen Sie die Installation bitte ab.</s4>
<winpath>Make sure to select the option that adds the application to your Windows Path, if the option is available.</winpath>
<prefix>Haben Sie bereits die aktuellste Version von</prefix>
<sufix>installiert?</sufix>
<downloading>wird heruntergeladen...</downloading>
<installing>wird installiert...</installing>
<unzipping>wird entpackt...</unzipping>
<cleaning>wird aufgeräumt...</cleaning>
<mongodbpath>Bitte geben Sie den kompletten Pfad an, an dem MongoDB installiert werden soll</mongodbpath>
</process>
</install>
<github>
<intro>
<opensource>Wie Du bereits weißt, ist CodeCombat Open Source.</opensource>
<online>Unser Quellcode ist komplett auf Github.</online>
<manual>Wenn Du möchtest, kannst du das komplette Git Repository selbst herunterladen und nach deinen wünschen einrichten.</manual>
<norec>Allerdings empfehlen wir, dass du den Prozess statt dessen uns überlässt.</norec>
</intro>
<skip>
<question>Willst du das lokale Git Setup selbst vornehmen?</question>
<consequence>Bit vergewissere dich, dass das Repository korrekt heruntergeladen wurde, bevor du fortfährst.</consequence>
<donotclose>Bitte schließe dieses Fenster nicht.</donotclose>
<wait>Wenn du fertig bist, drücke eine beliebige Taste zum Fortfahren...</wait>
</skip>
<process>
<path>Gebe bitte den kompletten Pfad zu deinem CodeCombat Git Repository ein: </path>
<checkout>Bitte gib den kompletten Pfad ein, an dem du die CodeCombat Umgebung einrichten willst</checkout>
<bashi>Diese Installation benötigt die Git Bash.</bashi>
<bashp64>Die Git Bash ist standardmäßig in 'C:\Program Files (x86)\Git' installiert.</bashp64>
<bashp32>Die Git Bash ist standardmäßig in 'C:\Program Files\Git' installiert.</bashp32>
<bashq>Bitte gebe den kompletten Pfad zur Git Bash ein, oder drücke Enter, um den Standardpfad zu verwenden</bashq>
<ssh>Willst du das Repository via SSH auschecken?</ssh>
</process>
</github>
<npm>
<install>Installing bower, brunch, nodemon and sendwithus...</install>
<binstall>Installing bower packages...</binstall>
<sass>Installing sass...</sass>
<npm>Installing npm...</npm>
<brnch>Starting brunch....</brnch>
<mongodb>Setting up a MongoDB database for you...</mongodb>
<database>Downloading the last version of the CodeCombat database...</database>
<script>Preparing the automatic startup script for you...</script>
</npm>
<error>
<path>Dieser Pfad existiert bereits. Willst du ihn wirklich überschreiben?</path>
<exist>Dieser Pfad exisitert nicht. Bitte versuche es erneut...</exist>
</error>
<end>
<succesfull>Die CodeCombat Entwicklungsumgebung wurde erfoglreich installiert.</succesfull>
<thankyou>Vielen Dank für die Unterstützung und bis bald.</thankyou>
<readme>Willst du das README lesen, um weitere Informationen zu erhalten?</readme>
</end>
<start>
<s1>Von nun an kannst du die Entwicklungsumgebung starten unter</s1>
<s2>einmal mit der Maus klicken.</s2>
<s3> 1) Einfach Doppelklicken</s3>
<s4>und warten bis die Entwicklungsumgebung fertig geladen hat.</s4>
<s5> 2) Jetzt 'localhost:3000' in deinem bevorzugten Browser aufrufen.</s5>
<s6>Fertig. Du bist nun bereit, bei CodeCombat mitzuarbeiten!</s6>
</start>
</variables>

View file

@ -1,66 +1,82 @@
[global]
native=English
intro=From now on we'll send our feedback in English!
[install]
[system]
bit=-bit computer detected.
prefix=The operating system
sufix=was detected.
xp=We don't support Windows XP, installation cancelled.
[process]
sks=Have you already installed all the software needed for CodeCombat?
skq=We recommand that you reply negative in case you're not sure.
skc=Skipping the installation of the software...
1=CodeCombat couldn't be developed without third-party software.
2=That's why you'll need to install this software,
3=in order to start contributing to our community.
4=Cancel the installation if you already have the application.
prefix=Do you already have the latest version of
sufix=installed?
downloading=is downloading...
installing=is installing...
unzipping=is unzipping...
cleaning=is cleaning...
mongodbpath=Please define the full path where mongodb should be installed
[github]
[intro]
opensource=CodeCombat is opensource, like you already know.
online=All our sourcecode can be found online at Github.
manual=You can choose to do the entire Git setup yourself.
norec=However we recommend that you instead let us handle it instead.
[skip]
question=Do you want to do the Local Git setup manually yourself?
consequence=Make sure you have correctly setup your repository before processing.
donotclose=Do not close this window please.
wait=When you're ready, press any key to continue...
[process]
path=Please give the full path of your CodeCombat git repository:
checkout=Please enter the full path where you want to install your CodeCombat environment
bashi=This installation requires Git Bash.
bashp64=Git bash is by default installed at 'C:\Program Files (x86)\Git'.
bashp32=Git bash is by default installed at 'C:\Program Files\Git'.
bashq=Please enter the full path where git bash is installed or just press enter if it's in the default location
ssh=Do you want to checkout the repository via ssh?
[npm]
install=Installing bower, brunch, nodemon and sendwithus...
binstall=Installing bower packages...
sass=Installing sass...
npm=Installing npm...
brnch=Starting brunch....
mongodb=Setting up a MongoDB database for you...
db=Downloading the last version of the CodeCombat database...
script=Preparing the automatic startup script for you...
[error]
path=That path already exists, are you sure you want to overwrite it?
exist=That path doesn't exist. Please try again...
[end]
succesfull=The setup of the CodeCombat Dev. Environment was succesfull.
thankyou=Thank you already for your contribution and see you soon.
readme=Do you want to read the README for more information?
[start]
1=From now on you can start the dev. environment at
2=the touch of a single mouse click.
3= 1) Just double click
4= and let the environment start up.
5= 2) Now just open 'localhost:3000' in your prefered browser.
6=That's it, you're now ready to start working on CodeCombat!
<?xml version="1.0" encoding="ISO-8859-1" ?>
<variables>
<global>
<native>English</native>
<intro>From now on we'll send our feedback in English!</intro>
</global>
<install>
<system>
<bit>-bit computer detected.</bit>
<prefix>The operating system</prefix>
<sufix>was detected.</sufix>
<xp>We don't support Windows XP, installation cancelled.</xp>
</system>
<process>
<sks>Have you already installed all the software needed for CodeCombat?</sks>
<skq>We recommand that you reply negative in case you're not sure.</skq>
<skc>Skipping the installation of the software...</skc>
<s1>CodeCombat couldn't be developed without third-party software.</s1>
<s2>That's why you'll need to install this software,</s2>
<s3>in order to start contributing to our community.</s3>
<s4>Cancel the installation if you already have the application.</s4>
<winpath>Make sure to select the option that adds the application to your Windows Path, if the option is available.</winpath>
<prefix>Do you already have the latest version of</prefix>
<sufix>installed?</sufix>
<downloading>is downloading...</downloading>
<installing>is installing...</installing>
<unzipping>is unzipping...</unzipping>
<cleaning>is cleaning...</cleaning>
<mongodbpath>Please define the full path where mongodb should be installed</mongodbpath>
</process>
</install>
<github>
<intro>
<opensource>CodeCombat is opensource, like you already know.</opensource>
<online>All our sourcecode can be found online at Github.</online>
<manual>You can choose to do the entire Git setup yourself.</manual>
<norec>However we recommend that you instead let us handle it instead.</norec>
</intro>
<skip>
<question>Do you want to do the Local Git setup manually yourself?</question>
<consequence>Make sure you have correctly setup your repository before processing.</consequence>
<donotclose>Do not close this window please.</donotclose>
<wait>When you're ready, press any key to continue...</wait>
</skip>
<process>
<path>Please give the full path of your CodeCombat git repository: </path>
<checkout>Please enter the full path where you want to install your CodeCombat environment</checkout>
<bashi>This installation requires Git Bash.</bashi>
<bashp64>Git bash is by default installed at 'C:\Program Files (x86)\Git'.</bashp64>
<bashp32>Git bash is by default installed at 'C:\Program Files\Git'.</bashp32>
<bashq>Please enter the full path where git bash is installed or just press enter if it's in the default location</bashq>
<ssh>Do you want to checkout the repository via ssh?</ssh>
</process>
</github>
<npm>
<install>Installing bower, brunch, nodemon and sendwithus...</install>
<binstall>Installing bower packages...</binstall>
<sass>Installing sass...</sass>
<npm>Installing npm...</npm>
<brnch>Starting brunch....</brnch>
<mongodb>Setting up a MongoDB database for you...</mongodb>
<db>Downloading the last version of the CodeCombat database...</db>
<script>Preparing the automatic startup script for you...</script>
</npm>
<error>
<path>That path already exists, are you sure you want to overwrite it?</path>
<exist>That path doesn't exist. Please try again...</exist>
</error>
<end>
<succesfull>The setup of the CodeCombat Dev. Environment was succesfull.</succesfull>
<thankyou>Thank you already for your contribution and see you soon.</thankyou>
<readme>Do you want to read the README for more information?</readme>
</end>
<start>
<s1>From now on you can start the dev. environment at</s1>
<s2>the touch of a single mouse click.</s2>
<s3> 1) Just double click</s3>
<s4> and let the environment start up.</s4>
<s5> 2) Now just open 'localhost:3000' in your prefered browser.</s5>
<s6>That's it, you're now ready to start working on CodeCombat!</s6>
</start>
</variables>

View file

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="ISO-8859-1" ?>
<variables>
<global>
<native>français</native>
<intro>From now on we'll send our feedback in English!</intro>
</global>
<install>
<system>
<bit>-bit computer detected.</bit>
<prefix>The operating system</prefix>
<sufix>was detected.</sufix>
<xp>We don't support Windows XP, installation cancelled.</xp>
</system>
<process>
<sks>Have you already installed all the software needed for CodeCombat?</sks>
<skq>We recommand that you reply negative in case you're not sure.</skq>
<skc>Skipping the installation of the software...</skc>
<s1>CodeCombat couldn't be developed without third-party software.</s1>
<s2>That's why you'll need to install this software,</s2>
<s3>in order to start contributing to our community.</s3>
<s4>Cancel the installation if you already have the application.</s4>
<winpath>Make sure to select the option that adds the application to your Windows Path, if the option is available.</winpath>
<prefix>Do you already have the latest version of</prefix>
<sufix>installed?</sufix>
<downloading>is downloading...</downloading>
<installing>is installing...</installing>
<unzipping>is unzipping...</unzipping>
<cleaning>is cleaning...</cleaning>
<mongodbpath>Please define the full path where mongodb should be installed</mongodbpath>
</process>
</install>
<github>
<intro>
<opensource>CodeCombat is opensource, like you already know.</opensource>
<online>All our sourcecode can be found online at Github.</online>
<manual>You can choose to do the entire Git setup yourself.</manual>
<norec>However we recommend that you instead let us handle it instead.</norec>
</intro>
<skip>
<question>Do you want to do the Local Git setup manually yourself?</question>
<consequence>Make sure you have correctly setup your repository before processing.</consequence>
<donotclose>Do not close this window please.</donotclose>
<wait>When you're ready, press any key to continue...</wait>
</skip>
<process>
<path>Please give the full path of your CodeCombat git repository: </path>
<checkout>Please enter the full path where you want to install your CodeCombat environment</checkout>
<bashi>This installation requires Git Bash.</bashi>
<bashp64>Git bash is by default installed at 'C:\Program Files (x86)\Git'.</bashp64>
<bashp32>Git bash is by default installed at 'C:\Program Files\Git'.</bashp32>
<bashq>Please enter the full path where git bash is installed or just press enter if it's in the default location</bashq>
<ssh>Do you want to checkout the repository via ssh?</ssh>
</process>
</github>
<npm>
<install>Installing bower, brunch, nodemon and sendwithus...</install>
<binstall>Installing bower packages...</binstall>
<sass>Installing sass...</sass>
<npm>Installing npm...</npm>
<brnch>Starting brunch....</brnch>
<mongodb>Setting up a MongoDB database for you...</mongodb>
<db>Downloading the last version of the CodeCombat database...</db>
<script>Preparing the automatic startup script for you...</script>
</npm>
<error>
<path>That path already exists, are you sure you want to overwrite it?</path>
<exist>That path doesn't exist. Please try again...</exist>
</error>
<end>
<succesfull>The setup of the CodeCombat Dev. Environment was succesfull.</succesfull>
<thankyou>Thank you already for your contribution and see you soon.</thankyou>
<readme>Do you want to read the README for more information?</readme>
</end>
<start>
<s1>From now on you can start the dev. environment at</s1>
<s2>the touch of a single mouse click.</s2>
<s3> 1) Just double click</s3>
<s4> and let the environment start up.</s4>
<s5> 2) Now just open 'localhost:3000' in your prefered browser.</s5>
<s6>That's it, you're now ready to start working on CodeCombat!</s6>
</start>
</variables>

View file

@ -1,3 +1,7 @@
en
nl
de
de
fr
zh
zh-HANT
zh-HANS

View file

@ -1,66 +1,82 @@
[global]
native=Nederlands
intro=Vanaf nu geven we onze feedback in het Nederlands!
[install]
[system]
bit=-bit computer gedetecteerd.
prefix=Het besturingsysteem
sufix=is gedetecteerd.
xp=Wij ondersteunen Windows XP niet, installatie geanulleerd.
[process]
sks=Heb je alle benodige software al geinstalleerd?
skq=We raden aan dat je negatief antwoord indien je niet zeker bent.
skc=De installatie van software wordt geanulleerd...
1=CodeCombat kon niet worden ontwikkeld zonder third-party software.
2=Dat is waarom je deze software moet installeren,
3=zodat je je kan beginnen met het bijdragen tot onze gemeenschap.
4=Annuleer de installatie als je de applicatie al hebt.
prefix=Heb je al de laatste versie van
sufix=geinstalleerd?
downloading=is aan het downloaden...
installing=is aan het installeren...
unzipping=is aan het uitpakken...
cleaning=is aan het opkuisen...
mongodbpath=Geef het volledige pad op, waar mongodb mag worden geinstalleerd
[github]
[intro]
opensource=CodeCombat is opensource, zoals je waarschijnlijk wel al weet.
online=Je kan al onze sourcecode vinden op Github.
manual=Indien je wil, kan je de Git setup manueel doen.
norec=Maar wij raden aan dat je ons dit automatisch laat afhandellen.
[skip]
question=Wil je de lokale Git setup manueel doen?
consequence=Zorg er zeker voor dat jouw git repository correct is.
donotclose=Sluit dit venster niet alsjeblieft.
wait=Wanneer je klaar bent, druk dan eender welke toets om verder te gaan...
[process]
path=Geef alsjeblieft het volledige pad van je CodeCombat git repository:
checkout=Geef alsjeblieft het volledige pad waar je de CodeCombat Ontwikkelings omgeving will installeren
bashi=Deze installatie maakt gebruik van Git Bash.
bashp64=Git bash is normaal geinstalleerd in 'C:\Program Files (x86)\Git'.
bashp32=Git bash is normaal geinstalleerd in 'C:\Program Files\Git'.
bashq=Geef alsjeblieft het volledige pad op van Git Bash of druk gewoon op enter indien je het pad niet gewijzigd heeft
ssh=Wil je het git project downloaden via ssh?
[npm]
install=Installing bower, brunch, nodemon and sendwithus...
binstall=Installing bower packages...
sass=Installing sass...
npm=Installing npm...
brnch=Starting brunch....
mongodb=Setting up a MongoDB database for you...
database=Downloading the last version of the CodeCombat database...
script=Preparing the automatic startup script for you...
[error]
path=Dat pad bestaat al, ben je zeker dat je het wil overschrijven?
exist=Dat pad bestaat niet, probeer alsjeblieft opnieuw...
[end]
succesfull=De installatie van de CodeCombat-Ontwikkelings omgeving was succesvol.
thankyou=Alvast bedankt voor al je werk en tot binnenkort.
readme=Wil je de LEESMIJ lezen voor meer informatie?
[start]
1=Vanaf nu kan je de ontwikkelings omgeving opstarten
2=met het gemak van een enkele muisklik.
3= 1) Dubbelklik op
4=en laat de omgeving opstarten.
5= 2) Nu kan je 'localhost:3000' openen in je browser naar voorkeur.
6=Dat is het, je bent nu klaar om te starten met je werk aan CodeCombat.
<?xml version="1.0" encoding="ISO-8859-1" ?>
<variables>
<global>
<native>Nederlands</native>
<intro>Vanaf nu geven we onze feedback in het Nederlands!</intro>
</global>
<install>
<system>
<bit>-bit computer gedetecteerd.</bit>
<prefix>Het besturingsysteem</prefix>
<sufix>is gedetecteerd.</sufix>
<xp>Wij ondersteunen Windows XP niet, installatie geanulleerd.</xp>
</system>
<process>
<sks>Heb je alle benodige software al geinstalleerd?</sks>
<skq>We raden aan dat je negatief antwoord indien je niet zeker bent.</skq>
<skc>De installatie van software wordt geanulleerd...</skc>
<s1>CodeCombat kon niet worden ontwikkeld zonder third-party software.</s1>
<s2>Dat is waarom je deze software moet installeren,</s2>
<s3>zodat je je kan beginnen met het bijdragen tot onze gemeenschap.</s3>
<s4>Annuleer de installatie als je de applicatie al hebt.</s4>
<winpath>Zorg er zeker voor dat je de optie selecteert dat de applicatie aan je Windows Path toevoegt, als de optie beschikbaar is.</winpath>
<prefix>Heb je al de laatste versie van</prefix>
<sufix>geinstalleerd?</sufix>
<downloading>is aan het downloaden...</downloading>
<installing>is aan het installeren...</installing>
<unzipping>is aan het uitpakken...</unzipping>
<cleaning>is aan het opkuisen...</cleaning>
<mongodbpath>Geef het volledige pad op, waar mongodb mag worden geinstalleerd</mongodbpath>
</process>
</install>
<github>
<intro>
<opensource>CodeCombat is opensource, zoals je waarschijnlijk wel al weet.</opensource>
<online>Je kan al onze sourcecode vinden op Github.</online>
<manual>Indien je wil, kan je de Git setup manueel doen.</manual>
<norec>Maar wij raden aan dat je ons dit automatisch laat afhandellen.</norec>
</intro>
<skip>
<question>Wil je de lokale Git setup manueel doen?</question>
<consequence>Zorg er zeker voor dat jouw git repository correct is.</consequence>
<donotclose>Sluit dit venster niet alsjeblieft.</donotclose>
<wait>Wanneer je klaar bent, druk dan eender welke toets om verder te gaan...</wait>
</skip>
<process>
<path>Geef alsjeblieft het volledige pad van je CodeCombat git repository: </path>
<checkout>Geef alsjeblieft het volledige pad waar je de CodeCombat Ontwikkelings omgeving will installeren</checkout>
<bashi>Deze installatie maakt gebruik van Git Bash.</bashi>
<bashp64>Git bash is normaal geinstalleerd in 'C:\Program Files (x86)\Git'.</bashp64>
<bashp32>Git bash is normaal geinstalleerd in 'C:\Program Files\Git'.</bashp32>
<bashq>Geef alsjeblieft het volledige pad op van Git Bash of druk gewoon op enter indien je het pad niet gewijzigd heeft</bashq>
<ssh>Wil je het git project downloaden via ssh?</ssh>
</process>
</github>
<npm>
<install>Installing bower, brunch, nodemon and sendwithus...</install>
<binstall>Installing bower packages...</binstall>
<sass>Installing sass...</sass>
<npm>Installing npm...</npm>
<brnch>Starting brunch....</brnch>
<mongodb>Setting up a MongoDB database for you...</mongodb>
<database>Downloading the last version of the CodeCombat database...</database>
<script>Preparing the automatic startup script for you...</script>
</npm>
<error>
<path>Dat pad bestaat al, ben je zeker dat je het wil overschrijven?</path>
<exist>Dat pad bestaat niet, probeer alsjeblieft opnieuw...</exist>
</error>
<end>
<succesfull>De installatie van de CodeCombat-Ontwikkelings omgeving was succesvol.</succesfull>
<thankyou>Alvast bedankt voor al je werk en tot binnenkort.</thankyou>
<readme>Wil je de LEESMIJ lezen voor meer informatie?</readme>
</end>
<start>
<s1>Vanaf nu kan je de ontwikkelings omgeving opstarten</s1>
<s2>met het gemak van een enkele muisklik.</s2>
<s3> 1) Dubbelklik op</s3>
<s4>en laat de omgeving opstarten.</s4>
<s5> 2) Nu kan je 'localhost:3000' openen in je browser naar voorkeur.</s5>
<s6>Dat is het, je bent nu klaar om te starten met je werk aan CodeCombat.</s6>
</start>
</variables>

View file

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="ISO-8859-1" ?>
<variables>
<global>
<native>简体中文</native>
<intro>From now on we'll send our feedback in English!</intro>
</global>
<install>
<system>
<bit>-bit computer detected.</bit>
<prefix>The operating system</prefix>
<sufix>was detected.</sufix>
<xp>We don't support Windows XP, installation cancelled.</xp>
</system>
<process>
<sks>Have you already installed all the software needed for CodeCombat?</sks>
<skq>We recommand that you reply negative in case you're not sure.</skq>
<skc>Skipping the installation of the software...</skc>
<s1>CodeCombat couldn't be developed without third-party software.</s1>
<s2>That's why you'll need to install this software,</s2>
<s3>in order to start contributing to our community.</s3>
<s4>Cancel the installation if you already have the application.</s4>
<winpath>Make sure to select the option that adds the application to your Windows Path, if the option is available.</winpath>
<prefix>Do you already have the latest version of</prefix>
<sufix>installed?</sufix>
<downloading>is downloading...</downloading>
<installing>is installing...</installing>
<unzipping>is unzipping...</unzipping>
<cleaning>is cleaning...</cleaning>
<mongodbpath>Please define the full path where mongodb should be installed</mongodbpath>
</process>
</install>
<github>
<intro>
<opensource>CodeCombat is opensource, like you already know.</opensource>
<online>All our sourcecode can be found online at Github.</online>
<manual>You can choose to do the entire Git setup yourself.</manual>
<norec>However we recommend that you instead let us handle it instead.</norec>
</intro>
<skip>
<question>Do you want to do the Local Git setup manually yourself?</question>
<consequence>Make sure you have correctly setup your repository before processing.</consequence>
<donotclose>Do not close this window please.</donotclose>
<wait>When you're ready, press any key to continue...</wait>
</skip>
<process>
<path>Please give the full path of your CodeCombat git repository: </path>
<checkout>Please enter the full path where you want to install your CodeCombat environment</checkout>
<bashi>This installation requires Git Bash.</bashi>
<bashp64>Git bash is by default installed at 'C:\Program Files (x86)\Git'.</bashp64>
<bashp32>Git bash is by default installed at 'C:\Program Files\Git'.</bashp32>
<bashq>Please enter the full path where git bash is installed or just press enter if it's in the default location</bashq>
<ssh>Do you want to checkout the repository via ssh?</ssh>
</process>
</github>
<npm>
<install>Installing bower, brunch, nodemon and sendwithus...</install>
<binstall>Installing bower packages...</binstall>
<sass>Installing sass...</sass>
<npm>Installing npm...</npm>
<brnch>Starting brunch....</brnch>
<mongodb>Setting up a MongoDB database for you...</mongodb>
<db>Downloading the last version of the CodeCombat database...</db>
<script>Preparing the automatic startup script for you...</script>
</npm>
<error>
<path>That path already exists, are you sure you want to overwrite it?</path>
<exist>That path doesn't exist. Please try again...</exist>
</error>
<end>
<succesfull>The setup of the CodeCombat Dev. Environment was succesfull.</succesfull>
<thankyou>Thank you already for your contribution and see you soon.</thankyou>
<readme>Do you want to read the README for more information?</readme>
</end>
<start>
<s1>From now on you can start the dev. environment at</s1>
<s2>the touch of a single mouse click.</s2>
<s3> 1) Just double click</s3>
<s4> and let the environment start up.</s4>
<s5> 2) Now just open 'localhost:3000' in your prefered browser.</s5>
<s6>That's it, you're now ready to start working on CodeCombat!</s6>
</start>
</variables>

View file

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="ISO-8859-1" ?>
<variables>
<global>
<native>繁体中文</native>
<intro>From now on we'll send our feedback in English!</intro>
</global>
<install>
<system>
<bit>-bit computer detected.</bit>
<prefix>The operating system</prefix>
<sufix>was detected.</sufix>
<xp>We don't support Windows XP, installation cancelled.</xp>
</system>
<process>
<sks>Have you already installed all the software needed for CodeCombat?</sks>
<skq>We recommand that you reply negative in case you're not sure.</skq>
<skc>Skipping the installation of the software...</skc>
<s1>CodeCombat couldn't be developed without third-party software.</s1>
<s2>That's why you'll need to install this software,</s2>
<s3>in order to start contributing to our community.</s3>
<s4>Cancel the installation if you already have the application.</s4>
<winpath>Make sure to select the option that adds the application to your Windows Path, if the option is available.</winpath>
<prefix>Do you already have the latest version of</prefix>
<sufix>installed?</sufix>
<downloading>is downloading...</downloading>
<installing>is installing...</installing>
<unzipping>is unzipping...</unzipping>
<cleaning>is cleaning...</cleaning>
<mongodbpath>Please define the full path where mongodb should be installed</mongodbpath>
</process>
</install>
<github>
<intro>
<opensource>CodeCombat is opensource, like you already know.</opensource>
<online>All our sourcecode can be found online at Github.</online>
<manual>You can choose to do the entire Git setup yourself.</manual>
<norec>However we recommend that you instead let us handle it instead.</norec>
</intro>
<skip>
<question>Do you want to do the Local Git setup manually yourself?</question>
<consequence>Make sure you have correctly setup your repository before processing.</consequence>
<donotclose>Do not close this window please.</donotclose>
<wait>When you're ready, press any key to continue...</wait>
</skip>
<process>
<path>Please give the full path of your CodeCombat git repository: </path>
<checkout>Please enter the full path where you want to install your CodeCombat environment</checkout>
<bashi>This installation requires Git Bash.</bashi>
<bashp64>Git bash is by default installed at 'C:\Program Files (x86)\Git'.</bashp64>
<bashp32>Git bash is by default installed at 'C:\Program Files\Git'.</bashp32>
<bashq>Please enter the full path where git bash is installed or just press enter if it's in the default location</bashq>
<ssh>Do you want to checkout the repository via ssh?</ssh>
</process>
</github>
<npm>
<install>Installing bower, brunch, nodemon and sendwithus...</install>
<binstall>Installing bower packages...</binstall>
<sass>Installing sass...</sass>
<npm>Installing npm...</npm>
<brnch>Starting brunch....</brnch>
<mongodb>Setting up a MongoDB database for you...</mongodb>
<db>Downloading the last version of the CodeCombat database...</db>
<script>Preparing the automatic startup script for you...</script>
</npm>
<error>
<path>That path already exists, are you sure you want to overwrite it?</path>
<exist>That path doesn't exist. Please try again...</exist>
</error>
<end>
<succesfull>The setup of the CodeCombat Dev. Environment was succesfull.</succesfull>
<thankyou>Thank you already for your contribution and see you soon.</thankyou>
<readme>Do you want to read the README for more information?</readme>
</end>
<start>
<s1>From now on you can start the dev. environment at</s1>
<s2>the touch of a single mouse click.</s2>
<s3> 1) Just double click</s3>
<s4> and let the environment start up.</s4>
<s5> 2) Now just open 'localhost:3000' in your prefered browser.</s5>
<s6>That's it, you're now ready to start working on CodeCombat!</s6>
</start>
</variables>

View file

@ -0,0 +1,82 @@
<?xml version="1.0" encoding="ISO-8859-1" ?>
<variables>
<global>
<native>中文</native>
<intro>From now on we'll send our feedback in English!</intro>
</global>
<install>
<system>
<bit>-bit computer detected.</bit>
<prefix>The operating system</prefix>
<sufix>was detected.</sufix>
<xp>We don't support Windows XP, installation cancelled.</xp>
</system>
<process>
<sks>Have you already installed all the software needed for CodeCombat?</sks>
<skq>We recommand that you reply negative in case you're not sure.</skq>
<skc>Skipping the installation of the software...</skc>
<s1>CodeCombat couldn't be developed without third-party software.</s1>
<s2>That's why you'll need to install this software,</s2>
<s3>in order to start contributing to our community.</s3>
<s4>Cancel the installation if you already have the application.</s4>
<winpath>Make sure to select the option that adds the application to your Windows Path, if the option is available.</winpath>
<prefix>Do you already have the latest version of</prefix>
<sufix>installed?</sufix>
<downloading>is downloading...</downloading>
<installing>is installing...</installing>
<unzipping>is unzipping...</unzipping>
<cleaning>is cleaning...</cleaning>
<mongodbpath>Please define the full path where mongodb should be installed</mongodbpath>
</process>
</install>
<github>
<intro>
<opensource>CodeCombat is opensource, like you already know.</opensource>
<online>All our sourcecode can be found online at Github.</online>
<manual>You can choose to do the entire Git setup yourself.</manual>
<norec>However we recommend that you instead let us handle it instead.</norec>
</intro>
<skip>
<question>Do you want to do the Local Git setup manually yourself?</question>
<consequence>Make sure you have correctly setup your repository before processing.</consequence>
<donotclose>Do not close this window please.</donotclose>
<wait>When you're ready, press any key to continue...</wait>
</skip>
<process>
<path>Please give the full path of your CodeCombat git repository: </path>
<checkout>Please enter the full path where you want to install your CodeCombat environment</checkout>
<bashi>This installation requires Git Bash.</bashi>
<bashp64>Git bash is by default installed at 'C:\Program Files (x86)\Git'.</bashp64>
<bashp32>Git bash is by default installed at 'C:\Program Files\Git'.</bashp32>
<bashq>Please enter the full path where git bash is installed or just press enter if it's in the default location</bashq>
<ssh>Do you want to checkout the repository via ssh?</ssh>
</process>
</github>
<npm>
<install>Installing bower, brunch, nodemon and sendwithus...</install>
<binstall>Installing bower packages...</binstall>
<sass>Installing sass...</sass>
<npm>Installing npm...</npm>
<brnch>Starting brunch....</brnch>
<mongodb>Setting up a MongoDB database for you...</mongodb>
<db>Downloading the last version of the CodeCombat database...</db>
<script>Preparing the automatic startup script for you...</script>
</npm>
<error>
<path>That path already exists, are you sure you want to overwrite it?</path>
<exist>That path doesn't exist. Please try again...</exist>
</error>
<end>
<succesfull>The setup of the CodeCombat Dev. Environment was succesfull.</succesfull>
<thankyou>Thank you already for your contribution and see you soon.</thankyou>
<readme>Do you want to read the README for more information?</readme>
</end>
<start>
<s1>From now on you can start the dev. environment at</s1>
<s2>the touch of a single mouse click.</s2>
<s3> 1) Just double click</s3>
<s4> and let the environment start up.</s4>
<s5> 2) Now just open 'localhost:3000' in your prefered browser.</s5>
<s6>That's it, you're now ready to start working on CodeCombat!</s6>
</start>
</variables>

View file

@ -6,8 +6,8 @@ if NOT exist "%temp_directory%" (
md %temp_directory%
)
call get_local_text install-process-prefix
call get_local_text install-process-sufix
call get_local_text install_process_prefix install process prefix
call get_local_text install_process_sufix install process sufix
call ask_question "!install_process_prefix! %1 !install_process_sufix!"
@ -18,7 +18,7 @@ if "%result%"=="true" (
call print_dashed_seperator
call get_extension %2 download_extension
call get_local_text install-process-downloading
call get_local_text install_process_downloading install process downloading
echo %1 !install_process_downloading!
set "install_file=!temp_directory!%1.!download_extension!"
%curl_app% -k %2 -o !install_file!
@ -34,10 +34,10 @@ if "%download_extension%"=="zip" (
goto:get_mongodb_path
:get_mongodb_path
call get_local_text install-process-mongodbpath
call get_local_text install_process_mongodbpath install process mongodbpath
set /p "mongodb_path=!install_process_mongodbpath!: "
if exist "%mongodb_path%" (
call get_local_text error-path
call get_local_text error_path error path
call ask_question "!error_path!"
if "!result!"=="false" (
call print_dashed_seperator
@ -52,14 +52,14 @@ if "%download_extension%"=="zip" (
goto:clean_up
)
call get_local_text install-process-installing
call get_local_text install_process_installing install process installing
echo %1 !install_process_installing!
echo.
start /WAIT !install_file!
goto:clean_up
:clean_up
call get_local_text install-process-cleaning
call get_local_text install_process_cleaning install process cleaning
echo %1 !install_process_cleaning!
rmdir /s /q "!temp_directory!"
goto:exit_installation

View file

@ -1,16 +1,16 @@
call print_install_header
call print_dashed_seperator
call get_local_text install-process-sks
call get_local_text install_process_sks install process sks
echo !install_process_sks!
call get_local_text install-process-skq
call get_local_text install_process_skq install process skq
call ask_question "!install_process_skq!"
call print_dashed_seperator
if "%result%"=="true" (
call get_local_text install-process-skc
call get_local_text install_process_skc install process skc
echo !install_process_skc!
call print_dashed_seperator
goto:exit_setup
@ -20,22 +20,27 @@ call get_system_information
call print_dashed_seperator
if %system_info_os% == XP (
call get_local_text install-system-xp
call get_local_text install_system_xp install system xp
echo !install_system_xp!
call print_exit
)
call get_category ..\\config\\downloads.coco downloads download_names downloads_count general-general general-%system_info_bit% %system_info_os%-%system_info_bit%
call get_variables ..\\config\\downloads.coco downloads download_names downloads_count 0 general general
call get_variables ..\\config\\downloads.coco downloads download_names downloads_count 2 %system_info_os% b%system_info_bit%
call get_variables ..\\config\\downloads.coco downloads download_names downloads_count 3 general b%system_info_bit%
call get_local_text install-process-1
call get_local_text install-process-2
call get_local_text install-process-3
call get_local_text install-process-4
call get_local_text install_process_s1 install process s1
call get_local_text install_process_s2 install process s2
call get_local_text install_process_s3 install process s3
call get_local_text install_process_s4 install process s4
call get_local_text install_process_winpath install process winpath
echo !install_process_1!
echo !install_process_2!
echo !install_process_3!
echo !install_process_4!
echo !install_process_s1!
echo !install_process_s2!
echo !install_process_s3!
echo !install_process_s4!
echo.
echo !install_process_winpath!
call print_dashed_seperator

View file

@ -1 +1,3 @@
for /f "delims=" %%a in ('..\\utilities\\get_var.exe ..\\config\\config.coco %1') do set "%%a"
for /F "delims=" %%F in ('call run_script .\\get_var.ps1 ..\\config\\config.coco %1') do (
set "%1=%%F"
)

View file

@ -1 +1,3 @@
for /f "delims=" %%a in ('..\\utilities\\get_var.exe ..\\config\\downloads.coco %1') do set "%%a"
for /F "delims=" %%F in ('call run_script .\\get_var.ps1 ..\\config\\downloads.coco %2 %3 %4 %5') do (
set "%1=%%F"
)

View file

@ -1,3 +1,3 @@
for /f "delims=" %%a in ('..\\utilities\\get_extension.exe %1 %2') do (
%%a
for /F "delims=" %%F in ('call run_script .\\get_extension.ps1 %1') do (
set "%2=%%F"
)

Some files were not shown because too many files have changed in this diff Show more