Merge remote-tracking branch 'codecombat/master' into translation

This commit is contained in:
AkaKaras 2015-09-12 18:30:38 -04:00
commit b60f9f1bde
8 changed files with 43 additions and 52 deletions

View file

@ -437,24 +437,24 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
payment_methods_title: "Metodos de pago aceptados." payment_methods_title: "Metodos de pago aceptados."
payment_methods_blurb1: "Actualmente aceptamos tarjetas de credito y Alipay." payment_methods_blurb1: "Actualmente aceptamos tarjetas de credito y Alipay."
payment_methods_blurb2: "Si necesitas una forma alternativa de pago, por favor contactarse" payment_methods_blurb2: "Si necesitas una forma alternativa de pago, por favor contactarse"
# sale_already_subscribed: "You're already subscribed!" sale_already_subscribed: "¡Ya estás subscrito!"
sale_blurb1: "Ahorra 35%" sale_blurb1: "Ahorra 35%"
# sale_blurb2: "off regular subscription price of $120 for a whole year!" # {changed} sale_blurb2: "de descuento en el precio regular de una subscripción de $120 USD por un año completo!" # {changed}
# sale_button: "Sale!" sale_button: "Venta!"
# sale_button_title: "Save 35% when you purchase a 1 year subscription" sale_button_title: "Ahorra 35% al adquirir una subscripción por 1 año"
sale_click_here: "Haz Click Aquí" sale_click_here: "Haz Click Aquí"
sale_ends: "Termina" sale_ends: "Termina"
# sale_extended: "*Existing subscriptions will be extended by 1 year." sale_extended: "*Las subscripciones existentes se extenderán por un año."
# sale_feature_here: "Here's what you'll get:" sale_feature_here: "Esto es lo que obtendrás:"
# sale_feature2: "Access to 9 powerful <strong>new heroes</strong> with unique skills!" sale_feature2: "¡Acceso a 9 poderosos <strong>nuevos héroes</strong> con habilidades únicas!"
# sale_feature4: "<strong>42,000 bonus gems</strong> awarded immediately!" sale_feature4: "¡Una bonificación inmediata de <strong>42,000 gemas</strong>!"
# sale_continue: "Ready to continue adventuring?" sale_continue: "¿Estás listo para continuar aventurándote?"
sale_limited_time: "¡Oferta por tiempo limitado!" sale_limited_time: "¡Oferta por tiempo limitado!"
sale_new_heroes: "¡Nuevos héroes!" sale_new_heroes: "¡Nuevos héroes!"
# sale_title: "Back to School Sale" sale_title: "Venta de regreso a clases"
# sale_view_button: "Buy 1 year subscription for" sale_view_button: "Compra la subscripción de 1 año por"
stripe_description: "Suscripción Mensual" stripe_description: "Suscripción Mensual"
# stripe_description_year_sale: "1 Year Subscription (35% discount)" stripe_description_year_sale: "Subscripción por 1 año (35% descuento)"
subscription_required_to_play: "Necesitas una suscripción para jugar este nivel." subscription_required_to_play: "Necesitas una suscripción para jugar este nivel."
unlock_help_videos: "Suscríbete para desbloquear todos los video tutoriales." unlock_help_videos: "Suscríbete para desbloquear todos los video tutoriales."
personal_sub: "Suscripción Personal" # Accounts Subscription View below personal_sub: "Suscripción Personal" # Accounts Subscription View below
@ -462,14 +462,14 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
managed_by: "Administrado por" managed_by: "Administrado por"
will_be_cancelled: "Será cancelado en" will_be_cancelled: "Será cancelado en"
currently_free: "Actualmente tienes una suscripción gratuita" currently_free: "Actualmente tienes una suscripción gratuita"
currently_free_until: "Actualmente tienes una suscripción gratuita hasta" # {changed} currently_free_until: "Actualmente tienes una suscripción gratuita hasta"
was_free_until: "Tuviste una suscripción gratuita hasta" was_free_until: "Tuviste una suscripción gratuita hasta"
managed_subs: "Suscripciones administradas" managed_subs: "Suscripciones administradas"
managed_subs_desc: "Agregar suscripciones para otros jugadores (alumnos, hijos, etc.)" managed_subs_desc: "Agregar suscripciones para otros jugadores (alumnos, hijos, etc.)"
managed_subs_desc_2: "Los recipientes deben tener una cuenta de CodeCombat asociada con el email que usted provea." managed_subs_desc_2: "Los recipientes deben tener una cuenta de CodeCombat asociada con el email que usted provea."
group_discounts: "Descuentos por grupo" group_discounts: "Descuentos por grupo"
group_discounts_1: "También ofrecemos descuentos grupales por suscripciones masivas." group_discounts_1: "También ofrecemos descuentos grupales por suscripciones masivas."
group_discounts_1st: "1ra suscripción (incluye la tuya)" # {change} group_discounts_1st: "primera suscripción (incluye la tuya)"
group_discounts_full: "Precio regular" group_discounts_full: "Precio regular"
group_discounts_2nd: "2-11 Suscripciones" group_discounts_2nd: "2-11 Suscripciones"
group_discounts_20: "20% descuento" group_discounts_20: "20% descuento"
@ -654,7 +654,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
teachers_survey: teachers_survey:
title: "Encuesta para profesores" title: "Encuesta para profesores"
must_be_logged: "Debe iniiciar sesión primero. Por favor cree una cuenta o inicie sesión desde el menú en la parte superior." must_be_logged: "Debe iniciar sesión primero. Por favor cree una cuenta o inicie sesión desde el menú en la parte superior."
retrieving: "Obteniendo información..." retrieving: "Obteniendo información..."
being_reviewed_1: "Su solicitud para una prueba gratuita de subscripción está siendo" being_reviewed_1: "Su solicitud para una prueba gratuita de subscripción está siendo"
being_reviewed_2: "revisada." being_reviewed_2: "revisada."
@ -665,20 +665,20 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
denied_2: "denegada." denied_2: "denegada."
contact_1: "Por favor contáctenos" contact_1: "Por favor contáctenos"
contact_2: "si tiene más preguntas." contact_2: "si tiene más preguntas."
# description_1: "Ofrecemos free subscriptions to teachers for evaluation purposes. You can find more information on our" description_1: "Ofrecemos suscripciones gratuitas a maestros con propósitos de evaluación. Puede hallar más información en nuestra"
description_2: "página" description_2: "página"
description_3: "de maestros." description_3: "de maestros."
# description_4: "Por favor fill out this quick survey and well email you setup instructions." description_4: "Por favor llene esta encuesta rápida y le mandaremos por email las instrucciones de configuración."
email: "Dirección de email" email: "Dirección de email"
school: "Nombre del colegio" school: "Nombre del colegio"
location: "Nombre de la ciudad" location: "Nombre de la ciudad"
age_students: "¿Qué edad tienen tus estudiantes?" age_students: "¿Qué edad tienen sus estudiantes?"
under: "Menor" under: "Menor"
other: "Otro:" other: "Otro:"
amount_students: "¿A cuantos alumnos les enseñas?" amount_students: "¿A cuantos alumnos les enseña?"
hear_about: "¿Donde escuchaste sobre CodeCombat?" hear_about: "¿Donde escuchó sobre CodeCombat?"
fill_fields: "Porfavor llenar todos los campos." fill_fields: "Porfavor llene todos los campos."
thanks: "Gracias! Vamos a mandarte instrucciónes para iniciar proximamente." thanks: "Gracias! Vamos a mandarle instrucciónes para iniciar proximamente."
versions: versions:
save_version_title: "Guardar nueva versión" save_version_title: "Guardar nueva versión"
@ -836,7 +836,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
latest_achievement: "último logro" latest_achievement: "último logro"
playtime: "Tiempo de juego" playtime: "Tiempo de juego"
last_played: "Último jugado" last_played: "Último jugado"
# leagues_explanation: "Juega en una liga contra otros miembros del clan en these multiplayer arena instances." leagues_explanation: "Juega en una liga contra otros miembros del clan en estas instancias de arena multijugador."
classes: classes:
archmage_title: "Archimago" archmage_title: "Archimago"
@ -1026,7 +1026,7 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
my_matches: "Mis Partidas" my_matches: "Mis Partidas"
simulate: "Simular" simulate: "Simular"
simulation_explanation: "¡Simulando tus juegos puedes mejorar tu posición más rápido!" simulation_explanation: "¡Simulando tus juegos puedes mejorar tu posición más rápido!"
# simulation_explanation_leagues: "Principalmente ayudarás a simular juegos for allied players in your clans and courses." simulation_explanation_leagues: "Principalmente ayudarás a simular juegos para jugadores aliados en tus clanes y cursos."
simulate_games: "¡Simular Juegos!" simulate_games: "¡Simular Juegos!"
simulate_all: "REINICIAR Y SIMULAR JUEGOS" simulate_all: "REINICIAR Y SIMULAR JUEGOS"
games_simulated_by: "Juegos simulados por ti:" games_simulated_by: "Juegos simulados por ti:"
@ -1219,16 +1219,16 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
arrays: "Arreglos" arrays: "Arreglos"
basic_syntax: "Sintaxis Básica" basic_syntax: "Sintaxis Básica"
boolean_logic: "Lógica Booleana" boolean_logic: "Lógica Booleana"
# break_statements: "Break Statements" break_statements: "Sentencias Break"
classes: "Clases" classes: "Clases"
# continue_statements: "Continue Statements" continue_statements: "Sentencias Continue"
for_loops: "Ciclos For" for_loops: "Ciclos For"
functions: "Funciones" functions: "Funciones"
graphics: "Gráficos" graphics: "Gráficos"
# if_statements: "If Statements" if_statements: "Sentencias If"
# input_handling: "Input Handling" input_handling: "Manejo de Entrada"
math_operations: "Operaciones Matemáticas" math_operations: "Operaciones Matemáticas"
# object_literals: "Object Literals" object_literals: "Literales de Objeto"
parameters: "Parámetros" parameters: "Parámetros"
strings: "Cadenas" strings: "Cadenas"
variables: "Variables" variables: "Variables"
@ -1260,9 +1260,9 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
multiplayer_sign_in_leaderboard: "Entra o crea una cuenta y mira tu solución en la tabla de posiciones." multiplayer_sign_in_leaderboard: "Entra o crea una cuenta y mira tu solución en la tabla de posiciones."
legal: legal:
page_title: "Legal" page_title: "Información legal"
opensource_intro: "CodeCombat es completamente open source." opensource_intro: "CodeCombat es completamente open source."
opensource_description_prefix: "Echa un vistazo " opensource_description_prefix: "Echa un vistazo a "
github_url: "nuestro GitHub" github_url: "nuestro GitHub"
opensource_description_center: "y ayudanos si quieres! CodeCombat esta construido por docenas de proyectos open source, y los amamos. Mira " opensource_description_center: "y ayudanos si quieres! CodeCombat esta construido por docenas de proyectos open source, y los amamos. Mira "
archmage_wiki_url: "nuestra wiki de Archimago" archmage_wiki_url: "nuestra wiki de Archimago"

View file

@ -13,7 +13,6 @@ block header
a(href='/clans', data-i18n="clans.clans") Clans a(href='/clans', data-i18n="clans.clans") Clans
a(href='http://discourse.codecombat.com/', data-i18n="nav.forum") a(href='http://discourse.codecombat.com/', data-i18n="nav.forum")
a(href='/community', data-i18n="nav.community") a(href='/community', data-i18n="nav.community")
//a(href='/play/ladder', data-i18n="home.multiplayer").multiplayer-nav-link
if me.get('anonymous') === false if me.get('anonymous') === false
span.dropdown span.dropdown
@ -63,6 +62,7 @@ block footer
a(href='http://blog.codecombat.com/', data-i18n="nav.blog") a(href='http://blog.codecombat.com/', data-i18n="nav.blog")
a(href='/contribute', tabindex=-1, data-i18n="nav.contribute") Contribute a(href='/contribute', tabindex=-1, data-i18n="nav.contribute") Contribute
a(href='/legal', tabindex=-1, data-i18n="nav.legal") Legal a(href='/legal', tabindex=-1, data-i18n="nav.legal") Legal
a(href='/play/ladder', tabindex=-1, data-i18n="home.multiplayer").multiplayer-nav-link
if me.isAdmin() if me.isAdmin()
a(href='/admin', data-i18n="nav.admin") Admin a(href='/admin', data-i18n="nav.admin") Admin

View file

@ -16,8 +16,6 @@ table.table
block tableBody block tableBody
for document in documents for document in documents
- var data = document.attributes; - var data = document.attributes;
- if(data.slug == 'ace-of-coders' && new Date() < new Date(1441863900000))
- continue;
tr(class=document.getOwner() == me.id ? 'mine' : '') tr(class=document.getOwner() == me.id ? 'mine' : '')
td td
a(href="/editor/#{page}/#{data.slug || data._id}") a(href="/editor/#{page}/#{data.slug || data._id}")

View file

@ -17,8 +17,6 @@ if campaign
a(href=level.type == 'hero' ? '#' : level.disabled ? "/play" : "/play/#{level.levelPath || 'level'}/#{level.slug}", disabled=level.disabled, data-level-slug=level.slug, data-level-path=level.levelPath || 'level', data-level-name=level.name) a(href=level.type == 'hero' ? '#' : level.disabled ? "/play" : "/play/#{level.levelPath || 'level'}/#{level.slug}", disabled=level.disabled, data-level-slug=level.slug, data-level-path=level.levelPath || 'level', data-level-name=level.name)
if level.slug == 'lost-viking' if level.slug == 'lost-viking'
img.star(src="/file/db/thang.type/5441c3144e9aeb727cc97111/portrait.png") img.star(src="/file/db/thang.type/5441c3144e9aeb727cc97111/portrait.png")
else if level.slug == 'robot-ragnarok'
img.star(src="/file/db/thang.type/54ea35fd2b7506e891ca70d5/portrait.png")
else if level.requiresSubscription else if level.requiresSubscription
img.star(src="/images/pages/play/star.png") img.star(src="/images/pages/play/star.png")
if levelStatusMap[level.slug] === 'complete' if levelStatusMap[level.slug] === 'complete'

View file

@ -191,7 +191,6 @@ module.exports = class ClanDetailsView extends RootView
name: utils.i18n(campaign.attributes, 'fullName') or utils.i18n(campaign.attributes, 'name') name: utils.i18n(campaign.attributes, 'fullName') or utils.i18n(campaign.attributes, 'name')
levels: [] levels: []
for levelID, level of campaign.get('levels') for levelID, level of campaign.get('levels')
continue if level.slug is 'ace-of-coders' and new Date() < new Date(1441863900000)
campaignLevelProgression.levels.push campaignLevelProgression.levels.push
ID: levelID ID: levelID
slug: level.slug slug: level.slug

View file

@ -55,6 +55,13 @@ module.exports = class LadderHomeView extends RootView
context context
heroArenas = [ heroArenas = [
{
name: 'Ace of Coders'
difficulty: 3
id: 'ace-of-coders'
image: '/file/db/level/55de80407a57948705777e89/Ace-of-Coders-banner.png'
description: 'Battle for control over the icy treasure chests as your gigantic warrior marshals his armies against his mirror-match nemesis.'
}
{ {
name: 'Zero Sum' name: 'Zero Sum'
difficulty: 3 difficulty: 3
@ -62,13 +69,6 @@ heroArenas = [
image: '/file/db/level/550363b4ec31df9c691ab629/MAR26-Banner_Zero%20Sum.png' image: '/file/db/level/550363b4ec31df9c691ab629/MAR26-Banner_Zero%20Sum.png'
description: 'Unleash your coding creativity in both gold gathering and battle tactics in this alpine mirror match between red sorcerer and blue sorcerer.' description: 'Unleash your coding creativity in both gold gathering and battle tactics in this alpine mirror match between red sorcerer and blue sorcerer.'
} }
{
name: 'Ace of Coders'
difficulty: 3
id: 'ace-of-coders'
image: '/file/db/level/550363b4ec31df9c691ab629/MAR26-Banner_Zero%20Sum.png'
description: 'Battle for control over the icy treasure chests as your gigantic warrior marshals his armies against his mirror-match nemesis.'
}
{ {
name: 'Cavern Survival' name: 'Cavern Survival'
difficulty: 1 difficulty: 1
@ -99,8 +99,6 @@ heroArenas = [
} }
] ]
heroArenas = _.reject heroArenas, id: 'ace-of-coders' if new Date() < new Date(1441863900000)
oldArenas = [ oldArenas = [
{ {
name: 'Criss-Cross' name: 'Criss-Cross'

View file

@ -267,7 +267,7 @@ module.exports = class CampaignView extends RootView
level.locked = false if @campaign?.get('name') is 'Auditions' level.locked = false if @campaign?.get('name') is 'Auditions'
level.locked = false if @campaign?.get('name') is 'Intro' level.locked = false if @campaign?.get('name') is 'Intro'
level.locked = false if me.isInGodMode() level.locked = false if me.isInGodMode()
level.locked = false if level.slug is 'robot-ragnarok' #level.locked = false if level.slug is 'robot-ragnarok'
level.disabled = true if level.adminOnly and @levelStatusMap[level.slug] not in ['started', 'complete'] level.disabled = true if level.adminOnly and @levelStatusMap[level.slug] not in ['started', 'complete']
level.disabled = false if me.isInGodMode() level.disabled = false if me.isInGodMode()
level.color = 'rgb(255, 80, 60)' level.color = 'rgb(255, 80, 60)'
@ -324,8 +324,7 @@ module.exports = class CampaignView extends RootView
me.isPremium() or me.isPremium() or
not nextLevel.requiresSubscription or not nextLevel.requiresSubscription or
(nextLevel.slug is 'boom-and-bust' and not @levelStatusMap['defense-of-plainswood']) or (nextLevel.slug is 'boom-and-bust' and not @levelStatusMap['defense-of-plainswood']) or
(nextLevel.slug is 'favorable-odds' and not @levelStatusMap['the-raised-sword']) or (nextLevel.slug is 'favorable-odds' and not @levelStatusMap['the-raised-sword'])
(nextLevel.slug is 'robot-ragnarok' and @levelStatusMap['the-raised-sword'])
) )
nextLevel.next = true nextLevel.next = true
foundNext = true foundNext = true
@ -381,7 +380,7 @@ module.exports = class CampaignView extends RootView
particleKey.push 'premium' if level.requiresSubscription particleKey.push 'premium' if level.requiresSubscription
particleKey.push 'gate' if level.slug in ['kithgard-gates', 'siege-of-stonehold', 'clash-of-clones', 'summits-gate'] particleKey.push 'gate' if level.slug in ['kithgard-gates', 'siege-of-stonehold', 'clash-of-clones', 'summits-gate']
particleKey.push 'hero' if level.unlocksHero and not level.unlockedHero particleKey.push 'hero' if level.unlocksHero and not level.unlockedHero
particleKey.push 'item' if level.slug is 'robot-ragnarok' # TODO: generalize #particleKey.push 'item' if level.slug is 'robot-ragnarok' # TODO: generalize
continue if particleKey.length is 2 # Don't show basic levels continue if particleKey.length is 2 # Don't show basic levels
continue unless level.hidden or _.intersection(particleKey, ['item', 'hero-ladder', 'replayable']).length continue unless level.hidden or _.intersection(particleKey, ['item', 'hero-ladder', 'replayable']).length
@particleMan.addEmitter level.position.x / 100, level.position.y / 100, particleKey.join('-') @particleMan.addEmitter level.position.x / 100, level.position.y / 100, particleKey.join('-')

View file

@ -66,7 +66,7 @@ getRandomSessions = (user, callback) ->
# Sampling by level: we pick a level, then find a human and ogre session for that level, one at random, one biased towards recent submissions. # Sampling by level: we pick a level, then find a human and ogre session for that level, one at random, one biased towards recent submissions.
#ladderLevelIDs = ['greed', 'criss-cross', 'brawlwood', 'dungeon-arena', 'gold-rush', 'sky-span'] # Let's not give any extra simulations to old ladders. #ladderLevelIDs = ['greed', 'criss-cross', 'brawlwood', 'dungeon-arena', 'gold-rush', 'sky-span'] # Let's not give any extra simulations to old ladders.
ladderLevelIDs = ['dueling-grounds', 'cavern-survival', 'multiplayer-treasure-grove', 'harrowland', 'zero-sum', 'ace-of-coders', 'ace-of-coders', 'ace-of-coders', 'ace-of-coders', 'ace-of-coders', 'ace-of-coders', 'ace-of-coders', 'ace-of-coders', 'ace-of-coders', 'ace-of-coders', 'ace-of-coders', 'ace-of-coders', 'ace-of-coders', 'ace-of-coders', 'ace-of-coders', 'ace-of-coders', 'ace-of-coders'] ladderLevelIDs = ['dueling-grounds', 'cavern-survival', 'multiplayer-treasure-grove', 'harrowland', 'zero-sum', 'ace-of-coders', 'ace-of-coders', 'ace-of-coders', 'ace-of-coders']
sampleByLevel = (callback) -> sampleByLevel = (callback) ->
levelID = _.sample ladderLevelIDs levelID = _.sample ladderLevelIDs
favorRecentHumans = Math.random() < 0.5 # We pick one session favoring recent submissions, then find another one uniformly to play against favorRecentHumans = Math.random() < 0.5 # We pick one session favoring recent submissions, then find another one uniformly to play against
@ -76,7 +76,6 @@ findRandomSession = (queryParams, callback) ->
# In MongoDB 3.2, we will be able to easily get a random document with aggregate $sample: https://jira.mongodb.org/browse/SERVER-533 # In MongoDB 3.2, we will be able to easily get a random document with aggregate $sample: https://jira.mongodb.org/browse/SERVER-533
queryParams.submitted = true queryParams.submitted = true
favorRecent = queryParams.favorRecent favorRecent = queryParams.favorRecent
favorRecent = false # temp, for Ace of Coders tournament
delete queryParams.favorRecent delete queryParams.favorRecent
if favorRecent if favorRecent
return findRecentRandomSession queryParams, callback return findRecentRandomSession queryParams, callback