Merge remote-tracking branch 'upstream/master'

Updated my local copy to match the public copy
This commit is contained in:
mlewisno 2014-01-10 10:08:02 -05:00
commit 9318675447
64 changed files with 1366 additions and 1357 deletions

Binary file not shown.

Before

(image error) Size: 5.3 KiB

Binary file not shown.

Before

(image error) Size: 5.3 KiB

Binary file not shown.

Before

(image error) Size: 700 B

Binary file not shown.

Before

(image error) Size: 5.3 KiB

Binary file not shown.

Before

(image error) Size: 5.1 KiB

Binary file not shown.

Before

(image error) Size: 4.6 KiB

Binary file not shown.

Before

(image error) Size: 6.6 KiB

Binary file not shown.

Before

(image error) Size: 5.4 KiB

Binary file not shown.

Before

(image error) Size: 5.1 KiB

Binary file not shown.

Before

(image error) Size: 6.2 KiB

Binary file not shown.

Before

(image error) Size: 2.6 KiB

Binary file not shown.

Before

(image error) Size: 5.6 KiB

Binary file not shown.

Before

(image error) Size: 4.6 KiB

Binary file not shown.

Before

(image error) Size: 1.7 KiB

Binary file not shown.

Before

(image error) Size: 2.8 KiB

Binary file not shown.

Before

(image error) Size: 4.9 KiB

Binary file not shown.

Before

(image error) Size: 4.4 KiB

Binary file not shown.

Before

(image error) Size: 551 B

Binary file not shown.

Before

(image error) Size: 671 B

Binary file not shown.

Before

(image error) Size: 5.7 KiB

Binary file not shown.

Before

(image error) Size: 6.7 KiB

Binary file not shown.

Before

(image error) Size: 5.7 KiB

View file

@ -62,11 +62,11 @@ module.exports = class CocoRouter extends Backbone.Router
renderLoginButtons: ->
$('.share-buttons, .partner-badges').addClass('fade-in').delay(10000).removeClass('fade-in', 5000)
setTimeout(FB.XFBML.parse, 10) if FB? # Handles FB login and Like
twttr?.widgets?.load()
setTimeout(FB.XFBML.parse, 10) if FB?.XFBML?.parse # Handles FB login and Like
twttr?.widgets?.load?()
return unless gapi?.plusone?
gapi.plusone.go() # Handles +1 button
gapi.plusone.go?() # Handles +1 button
for gplusButton in $('.gplus-login-button')
params = {
callback:"signinCallback",
@ -75,7 +75,7 @@ module.exports = class CocoRouter extends Backbone.Router
scope:"https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email",
size:"medium",
}
if gapi.signin
if gapi.signin?.render
gapi.signin.render(gplusButton, params)
else
console.warn "Didn't have gapi.signin to render G+ login button. (DoNotTrackMe extension?)"

View file

@ -24,7 +24,7 @@ module.exports = class Tracker
return if me.get("anonymous")
olark 'api.visitor.updateEmailAddress', emailAddress: me.get("email")
olark 'api.chat.updateVisitorNickname', snippet: me.displayName()
updatePlayState: (level, session) ->
link = "codecombat.com/play/level/#{level.get('slug') or level.id}?session=#{session.id}"
snippet = [
@ -32,10 +32,10 @@ module.exports = class Tracker
"User ID: #{me.id}"
"Session ID: #{session.id}"
"Level: #{level.get('name')}"
]
olark 'api.chat.updateVisitorStatus', snippet: snippet
olark 'api.chat.updateVisitorStatus', snippet: snippet
trackPageView: ->
return unless @isProduction and analytics?
url = Backbone.history.getFragment()

View file

@ -27,7 +27,7 @@ module.exports.loginUser = (userObject, failure=genericFailure) ->
jqxhr.fail(failure)
module.exports.logoutUser = ->
FB.logout()
FB?.logout?()
res = $.post('/auth/logout', {}, ->
saveObjectToStorage(CURRENT_USER_KEY, null)
window.location.reload()

View file

@ -82,6 +82,7 @@ module.exports = class SpriteParser
shortKey = @shapeLongKeys[longKey]
unless shortKey?
shortKey = '' + _.size @thangType.shapes
shortKey += '+' while @thangType.shapes[shortKey]
@thangType.shapes[shortKey] = shape
@shapeLongKeys[longKey] = shortKey
return shortKey

View file

@ -129,7 +129,7 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass
reg = @getOffset 'registration'
@imageObject.regX = -reg.x
@imageObject.regY = -reg.y
if @currentRootAction.name is 'move'
if @currentRootAction.name is 'move' and action.frames
start = Math.floor(Math.random() * action.frames.length)
@imageObject.currentAnimationFrame = start
@ -375,6 +375,7 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass
e = _.clone(e)
e.sprite = @
e.blurb ?= '...'
e.thang = @thang
Backbone.Mediator.publish 'sprite:speech-updated', e
isTalking: ->
@ -427,5 +428,5 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass
delay = if withDelay and sound.delay then 1000 * sound.delay / createjs.Ticker.getFPS() else 0
name = AudioPlayer.nameForSoundReference sound
instance = createjs.Sound.play name, "none", delay, 0, 0, volume
#console.log @thang?.id, "played sound", name, "with delay", delay, "volume", volume, "and got sound instance", instance
# console.log @thang?.id, "played sound", name, "with delay", delay, "volume", volume, "and got sound instance", instance
instance

View file

@ -233,7 +233,7 @@ module.exports = class SpriteBoss extends CocoClass
sprite?.selected = true
@selectedSprite = sprite
alive = sprite?.thang.health > 0
sprite.playSound 'selected' if alive and not @suppressSelectionSounds
Backbone.Mediator.publish "surface:sprite-selected",
thang: if sprite then sprite.thang else null
sprite: sprite
@ -241,6 +241,13 @@ module.exports = class SpriteBoss extends CocoClass
originalEvent: e
worldPos: worldPos
if alive and not @suppressSelectionSounds
instance = sprite.playSound 'selected'
if instance?.playState is 'playSucceeded'
Backbone.Mediator.publish 'thang-began-talking', thang: sprite?.thang
instance.addEventListener 'complete', ->
Backbone.Mediator.publish 'thang-finished-talking', thang: sprite?.thang
# Marks
updateSelection: ->

View file

@ -179,7 +179,7 @@ module.exports.Trailmaster = class Trailmaster
animation = sprite.getActionDirection(animation) ? animation # no idea if this ever works
clone.gotoAndStop animation.name
# TODO: use action-specific framerate here?
clone.currentAnimationFrame = Math.min(@clock % (animation.frames.length * 3), animation.frames.length - 1)
# clone.currentAnimationFrame = Math.min(@clock % (animation.frames.length * 3), animation.frames.length - 1)
sprites.push(clone)
lastPos = x: thang.pos.x, y: thang.pos.y
lastAction = action.name

View file

@ -14,27 +14,3 @@ module.exports.createProgressBar = createProgressBar = (color, y, width=PROG_BAR
s.width = width
s.height = height
return s
module.exports.createAvatar = createAvatar = (spriteName, $image) ->
url = createAvatarURL spriteName
$image ?= $('<img>')
$image.attr('src', url)
$image
module.exports.createAvatarURL = createAvatarURL = (spriteName) ->
# We destroyed old version of this; this is temp anyway
spriteName = _.string.slugify(spriteName).replace /-/g, '_'
spriteName = {
"anya": "captain_anya"
"soldier": "ally_small"
"ogre_munchkin": "enemy_small"
"ogre": "enemy_medium"
"ogre_brawler": "enemy_large"
"ogre_fangrider": "enemy_flying"
"ogre_shaman": "mage"
"ogre_thrower": "thrower"
"health_potion_small": "potion"
"health_potion_medium": "potion"
"health_potion_large": "potion"
}[spriteName] ? spriteName
"/images/avatars/#{spriteName}.png"

View file

@ -75,6 +75,7 @@ module.exports.thangNames = thangNames =
"Carlton"
"Giselle"
"Bernadette"
"Hershell"
]
"Archer": [
"Phoebe"
@ -125,6 +126,7 @@ module.exports.thangNames = thangNames =
"Iyert"
"Palt"
"Snortt"
"Kog"
]
"Ogre": [
"Krogg"
@ -137,6 +139,7 @@ module.exports.thangNames = thangNames =
"Axe Ox"
"Nareng"
"Morthrug"
"Glonc"
]
"Ogre Brawler": [
"Grul'thock"

View file

@ -1,183 +1,183 @@
module.exports = nativeDescription: "italiano", englishDescription: "Italian", translation:
common:
loading: "Loading..."
loading: "Caricamento..."
modal:
close: "Chiudi"
okay: "Ok"
not_found:
page_not_found: "Pagina non trovata"
nav:
# Header
sign_up: "Crea Account"
log_in: "Accedi"
log_out: "Disconnetti"
play: "Gioca"
editor: "Editor"
blog: "Blog"
forum: "Forum"
admin: "Admin"
# Footer
home: "Pagina Iniziale"
contribute: "Contribuisci"
legal: "Legale"
about: "Informazioni"
contact: "Contatti"
twitter_follow: "Segui"
forms:
name: "Nome"
email: "Email"
message: "Messaggio"
cancel: "Annulla"
login:
log_in: "Accedi"
sign_up: "crea un nuovo account"
or: ", o "
recover: "recupera account"
signup:
description: "È gratis. Servono solo un paio di dettagli:"
email_announcements: "Ricevi comunicazioni per email"
coppa: "13+ o non-USA"
coppa_why: "(Perché?)"
creating: "Creando l'account..."
sign_up: "Registrati"
or: "o "
log_in: "accedi con password"
home:
slogan: "Impara a Programmare in JavaScript Giocando"
no_ie: "CodeCombat non supporta IE8 o browser precedendi. Ci dispiace!"
no_mobile: "CodeCombat non è stato pensato per dispositivi mobili e potrebbe non funzionare!"
play: "Gioca"
play:
choose_your_level: "Scegli il Tuo Livello"
adventurer_prefix: "Puoi saltare a qualunque livello qui sotto, o scambiare opinioni sui livelli su "
adventurer_forum: "il forum degli Avventurieri"
adventurer_suffix: "."
campaign_beginner: "Campagna Facile"
campaign_beginner_description: "... nella quale imparerai i trucchi della programmazione."
campaign_dev: "Livelli Difficili Casuali"
campaign_dev_description: "... nei quali imparerai a usare l'interfaccia facendo qualcosa di un po' più difficile."
campaign_multiplayer: "Arene Multigiocatore"
campaign_multiplayer_description: "... nelle quali programmi faccia a faccia contro altri giocatori."
campaign_player_created: "Creati dai Giocatori"
campaign_player_created_description: "... nei quali affronterai la creatività dei tuoi compagni <a href=\"/contribute#artisan\">Stregoni Artigiani</a>."
level_difficulty: "Difficoltà: "
contact:
contact_us: "Contatta CodeCombat"
welcome: "È bello sentirti! Usa questo form per mandarci un'email."
contribute_prefix: "Se sei interessato a contribuire, dai un'occhiata alla nostra "
contribute_page: "pagina dei contributi"
contribute_suffix: "!"
forum_prefix: "Per discussioni pubbliche, puoi provare "
forum_page: "il nostro forum"
forum_suffix: " invece."
sending: "Invio in corso..."
send: "Invia Feedback"
# modal:
# close: "Close"
# okay: "Okay"
#
# not_found:
# page_not_found: "Page not found"
#
# nav:
# # Header
# sign_up: "Create Account"
# log_in: "Log In"
# log_out: "Log Out"
# play: "Play"
# editor: "Editor"
# blog: "Blog"
# forum: "Forum"
# admin: "Admin"
# # Footer
# home: "Home"
# contribute: "Contribute"
# legal: "Legal"
# about: "About"
# contact: "Contact"
# twitter_follow: "Follow"
#
# forms:
# name: "Name"
# email: "Email"
# message: "Message"
# cancel: "Cancel"
#
# login:
# log_in: "Log In"
# sign_up: "create new account"
# or: ", or "
# recover: "recover account"
#
# signup:
# description: "It's free. Just need a couple things and you'll be good to go:"
# email_announcements: "Receive announcements by email"
# coppa: "13+ or non-USA"
# coppa_why: "(Why?)"
# creating: "Creating Account..."
# sign_up: "Sign Up"
# or: "or "
# log_in: "log in with password"
#
# home:
# slogan: "Learn to Code JavaScript by Playing a Game"
# no_ie: "CodeCombat does not run in IE8 or older. Sorry!"
# no_mobile: "CodeCombat wasn't designed for mobile devices and may not work!"
# play: "Play"
#
# play:
# choose_your_level: "Choose Your Level"
# adventurer_prefix: "You can jump to any level below, or discuss the levels on "
# adventurer_forum: "the Adventurer forum"
# adventurer_suffix: "."
# campaign_beginner: "Beginner Campaign"
# campaign_beginner_description: "... in which you learn the wizardry of programming."
# campaign_dev: "Random Harder Levels"
# campaign_dev_description: "... in which you learn the interface while doing something a little harder."
# campaign_multiplayer: "Multiplayer Arenas"
# campaign_multiplayer_description: "... in which you code head-to-head against other players."
# campaign_player_created: "Player-Created"
# campaign_player_created_description: "... in which you battle against the creativity of your fellow <a href=\"/contribute#artisan\">Artisan Wizards</a>."
# level_difficulty: "Difficulty: "
#
# contact:
# contact_us: "Contact CodeCombat"
# welcome: "Good to hear from you! Use this form to send us email."
# contribute_prefix: "If you're interested in contributing, check out our "
# contribute_page: "contribute page"
# contribute_suffix: "!"
# forum_prefix: "For anything public, please try "
# forum_page: "our forum"
# forum_suffix: " instead."
# sending: "Sending..."
# send: "Send Feedback"
#
diplomat_suggestion:
# title: "Help translate CodeCombat!"
# sub_heading: "We need your language skills."
pitch_body: "We develop CodeCombat in English, but we already have players all over the world. Many of them want to play in Italian but don't speak English, so if you can speak both, please consider signing up to be a Diplomat and help translate both the CodeCombat website and all the levels into Italian."
missing_translations: "Until we can translate everything into Italian, you'll see English when Italian isn't available."
# learn_more: "Learn more about being a Diplomat"
# subscribe_as_diplomat: "Subscribe as a Diplomat"
#
# 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"
# wizard_tab: "Wizard"
# password_tab: "Password"
# emails_tab: "Emails"
# language_tab: "Language"
# 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."
# wizard_color: "Wizard Clothes Color"
# new_password: "New Password"
# new_password_verify: "Verify"
# email_subscriptions: "Email Subscriptions"
# email_announcements: "Announcements"
# 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."
# email_toggle: "Toggle All"
# language: "Language"
# saving: "Saving..."
# error_saving: "Error Saving"
# saved: "Changes Saved"
# password_mismatch: "Password does not match."
#
# account_profile:
# edit_settings: "Edit Settings"
# profile_for_prefix: "Profile for "
# profile_for_suffix: ""
# profile: "Profile"
# user_not_found: "No user found. Check the URL?"
# gravatar_not_found_mine: "We couldn't find your profile associated with:"
# gravatar_signup_prefix: "Sign up at "
# gravatar_signup_suffix: " to get set up!"
# gravatar_not_found_other: "Alas, there's no profile associated with this person's email address."
# gravatar_contact: "Contact"
# gravatar_websites: "Websites"
# gravatar_accounts: "As Seen On"
# gravatar_profile_link: "Full Gravatar Profile"
#
# play_level:
# level_load_error: "Level could not be loaded."
# done: "Done"
# grid: "Grid"
# customize_wizard: "Customize Wizard"
# home: "Home"
# guide: "Guide"
# multiplayer: "Multiplayer"
# restart: "Restart"
# goals: "Goals"
# action_timeline: "Action Timeline"
# click_to_select: "Click on a unit to select it."
# reload_title: "Reload All Code?"
# reload_really: "Are you sure you want to reload this level back to the beginning?"
# reload_confirm: "Reload All"
# victory_title_prefix: ""
# victory_title_suffix: " Complete"
# victory_sign_up: "Sign Up for Updates"
# victory_sign_up_poke: "Want to get the latest news by email? Create a free account and we'll keep you posted!"
# victory_rate_the_level: "Rate the level: "
# victory_play_next_level: "Play Next Level"
# victory_go_home: "Go Home"
# victory_review: "Tell us more!"
# victory_hour_of_code_done: "Are You Done?"
# victory_hour_of_code_done_yes: "Yes, I'm finished with my Hour of Code!"
# multiplayer_title: "Multiplayer Settings"
# multiplayer_link_description: "Give this link to anyone to have them join you."
# multiplayer_hint_label: "Hint:"
# multiplayer_hint: " Click the link to select all, then press Apple-C or Ctrl-C to copy the link."
# multiplayer_coming_soon: "More multiplayer features to come!"
# guide_title: "Guide"
# tome_minion_spells: "Your Minions' Spells"
# tome_read_only_spells: "Read-Only Spells"
# tome_other_units: "Other Units"
# tome_cast_button_castable: "Cast"
# tome_cast_button_casting: "Casting"
# tome_cast_button_cast: "Spell Cast"
# tome_autocast_delay: "Autocast Delay"
# tome_autocast_1: "1 second"
# tome_autocast_3: "3 seconds"
# tome_autocast_5: "5 seconds"
# tome_autocast_manual: "Manual"
# tome_select_spell: "Select a Spell"
# tome_select_a_thang: "Select Someone for "
# tome_available_spells: "Available Spells"
# hud_continue: "Continue (press shift-space)"
title: "Aiuta a tradurre CodeCombat!"
sub_heading: "Abbiamo bisogno di traduttori."
pitch_body: "Noi sviluppiamo CodeCombat in Inglese, ma abbiamo già giocatori in tutto il mondo. Molti di loro vorrebbero giocare in Italiano ma non parlano Inglese, quindi se tu sai parlarli entrambi sarebbe fantastico se decidessi di diventare un Diplomatico ed aiutassi a tradurre sia il sito di CodeCombat che tutti i livelli in Italiano."
missing_translations: "Finché non riusciamo a tradurre tutto in Italiano vedrai alcune parti in Inglese dove l'Italiano non è disponibile."
learn_more: "Maggiori dettagli sull'essere un Diplomatico"
subscribe_as_diplomat: "Diventa un Diplomatico"
account_settings:
title: "Impostazioni Account"
not_logged_in: "Accedi o crea un account per cambiare le tue impostazioni."
autosave: "Modifiche Salvate Automaticamente"
me_tab: "Io"
picture_tab: "Immagine"
wizard_tab: "Stregone"
password_tab: "Password"
emails_tab: "Email"
language_tab: "Lingue"
gravatar_select: "Seleziona quale foto di Gravatar usare"
gravatar_add_photos: "Aggiungi delle immagini all'account di Gravatar per la tua email per scegliare un'immagine."
gravatar_add_more_photos: "Aggiungi più foto al tuo account di Gravatar per vederle qui."
wizard_color: "Colore dei Vestiti da Stregone"
new_password: "Nuova Password"
new_password_verify: "Verifica"
email_subscriptions: "Sottoscrizioni Email"
email_announcements: "Annunci"
email_announcements_description: "Ricevi email con le ultime novità e sviluppi a CodeCombat."
contributor_emails: "Email dei Collaboratori"
contribute_prefix: "Stiamo cercando persone che si uniscano al nostro gruppo! Dai un'occhiata alla "
contribute_page: "pagina dei collaboratori"
contribute_suffix: " per saperne di più."
email_toggle: "Attiva Tutti"
language: "Lingua"
saving: "Salvando..."
error_saving: "Errore durante il Salvataggio"
saved: "Modifiche Salvate"
password_mismatch: "La password non corrisponde."
account_profile:
edit_settings: "Modifica Impostazioni"
profile_for_prefix: "Profilo per "
profile_for_suffix: ""
profile: "Profilo"
user_not_found: "Utente non trovato. Forse l'URL è sbagliato."
gravatar_not_found_mine: "Non abbiamo trovato un profilo associato a:"
gravatar_signup_prefix: "Iscriviti su "
gravatar_signup_suffix: " per impostare tutto!"
gravatar_not_found_other: "A quanto pare non c'è un profilo associato con l'indirizzo email di questa persona."
gravatar_contact: "Contatto"
gravatar_websites: "Siti Web"
gravatar_accounts: "Come su"
gravatar_profile_link: "Profilo Gravatar Completo"
play_level:
level_load_error: "Il livello non può essere caricato."
done: "Fatto"
grid: "Griglia"
customize_wizard: "Personalizza Stregone"
home: "Pagina Iniziale"
guide: "Guida"
multiplayer: "Multigiocatore"
restart: "Ricomincia"
goals: "Obiettivi"
action_timeline: "Barra Temporale delle Azioni"
click_to_select: "Clicca un'unità per selezionarla."
reload_title: "Ricarica tutto il Codice?"
reload_really: "Sei sicuro di voler ricominciare il livello?"
reload_confirm: "Ricarica Tutto"
victory_title_prefix: ""
victory_title_suffix: " Completato"
victory_sign_up: "Registrati per Aggiornamenti"
victory_sign_up_poke: "Vuoi ricevere le ultime novità per email? Crea un account gratuito e ti terremo aggiornato!"
victory_rate_the_level: "Vota il livello: "
victory_play_next_level: "Gioca il Prossimo Livello"
victory_go_home: "Torna alla Pagina Iniziale"
victory_review: "Dicci di più!"
victory_hour_of_code_done: "Finito?"
victory_hour_of_code_done_yes: "Si, ho finito con la mia Ora di Programmazione!"
multiplayer_title: "Impostazioni Multigiocatore"
multiplayer_link_description: "Dai questo link a chi vuoi che si unisca a te."
multiplayer_hint_label: "Suggerimento:"
multiplayer_hint: " Clicca il link per selezionare tutto, quindi premi CMD-C o Ctrl-C per copiare il link."
multiplayer_coming_soon: "Ulteriori aggiunte per il multigiocatore in arrivo!"
guide_title: "Guida"
tome_minion_spells: "Incantesimi dei tuoi Seguaci"
tome_read_only_spells: "Incantesimi in Sola-Lettura"
tome_other_units: "Altre Unità"
tome_cast_button_castable: "Lancia"
tome_cast_button_casting: "Lanciando"
tome_cast_button_cast: "Incantesimi"
tome_autocast_delay: "Ritardo di lancio"
tome_autocast_1: "1 secondo"
tome_autocast_3: "3 secondi"
tome_autocast_5: "5 secondi"
tome_autocast_manual: "Manuale"
tome_select_spell: "Seleziona un Incantesimo"
tome_select_a_thang: "Seleziona Qualcuno per "
tome_available_spells: "Incantesimi Disponibili"
# hud_continue: ""

View file

@ -1,183 +1,183 @@
module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norwegian (Bokmål)", translation:
common:
loading: "Loading..."
loading: "Laster..."
modal:
close: "Lukk"
okay: "Ok"
not_found:
page_not_found: "Finner ikke siden"
nav:
# Header
sign_up: "Lag konto"
log_in: "Logg Inn"
log_out: "Logg Ut"
play: "Spill"
editor: "Editor"
blog: "Blogg"
forum: "Forum"
admin: "Administrator"
# Footer
home: "Hjem"
contribute: "Bidra"
legal: "Juridisk"
about: "Om"
contact: "Kontakt"
twitter_follow: "Følg"
forms:
name: "Navn"
email: "Epost"
message: "Melding"
cancel: "Avbryt"
login:
log_in: "Logg Inn"
sign_up: "lag ny konto"
or: ", eller "
recover: "gjenåpne konto"
signup:
description: "Det er gratis. Trenger bare noen få avklaringer, så er du klar:"
email_announcements: "Motta kunngjøringer på epost"
coppa: "13+ eller ikke fra USA"
coppa_why: "(Hvorfor?)"
creating: "Oppretter Konto..."
sign_up: "Registrer deg"
or: "eller "
log_in: "logg inn med passord"
home:
slogan: "Lær å Kode JavaScript ved å Spille et Spill"
no_ie: "CodeCombat kjører ikke på IE8 eller eldre. Beklager!"
no_mobile: "CodeCombat ble ikke designet for mobile enheter, og vil muligens ikke virke!"
play: "Spill"
play:
choose_your_level: "Velg Ditt Nivå"
adventurer_prefix: "Du kan hoppe til hvilket som helts nivå under, eller diskutere nivåene på"
adventurer_forum: "Adventurer forumet"
adventurer_suffix: "."
campaign_beginner: "Begynner Felttog"
campaign_beginner_description: "... hvor du lærer trolldommen bak programmering."
campaign_dev: "Tilfeldig Vanskeligere Nivåer"
campaign_dev_description: "... hvor du lærer grensesnittet mens du stadig gjør mer vanskeligere utfordringer."
campaign_multiplayer: "Multispiller Arenaer"
campaign_multiplayer_description: "... hvor du spiller direkte mot andre spillere."
campaign_player_created: "Spiller-Lagde"
campaign_player_created_description: "... hvor du kjemper mot kreativiteten til en av dine medspillende <a href=\"/contribute#artisan\">Artisan Trollmenn</a>."
level_difficulty: "Vanskelighetsgrad: "
contact:
contact_us: "Kontakt CodeCombat"
welcome: "Bra å høre fra deg! Bruk dette skjemaet for å sende oss en epost."
contribute_prefix: "Hvis du er interessert i å bidra, sjekk ut vår "
contribute_page: "bidrags side"
contribute_suffix: "!"
forum_prefix: "For allment tilgjengelige henvendelser, vennligst prøv "
forum_page: "forumet vårt"
forum_suffix: " i steden."
sending: "Sender..."
send: "Send Tilbakemelding"
# modal:
# close: "Close"
# okay: "Okay"
#
# not_found:
# page_not_found: "Page not found"
#
# nav:
# # Header
# sign_up: "Create Account"
# log_in: "Log In"
# log_out: "Log Out"
# play: "Play"
# editor: "Editor"
# blog: "Blog"
# forum: "Forum"
# admin: "Admin"
# # Footer
# home: "Home"
# contribute: "Contribute"
# legal: "Legal"
# about: "About"
# contact: "Contact"
# twitter_follow: "Follow"
#
# forms:
# name: "Name"
# email: "Email"
# message: "Message"
# cancel: "Cancel"
#
# login:
# log_in: "Log In"
# sign_up: "create new account"
# or: ", or "
# recover: "recover account"
#
# signup:
# description: "It's free. Just need a couple things and you'll be good to go:"
# email_announcements: "Receive announcements by email"
# coppa: "13+ or non-USA"
# coppa_why: "(Why?)"
# creating: "Creating Account..."
# sign_up: "Sign Up"
# or: "or "
# log_in: "log in with password"
#
# home:
# slogan: "Learn to Code JavaScript by Playing a Game"
# no_ie: "CodeCombat does not run in IE8 or older. Sorry!"
# no_mobile: "CodeCombat wasn't designed for mobile devices and may not work!"
# play: "Play"
#
# play:
# choose_your_level: "Choose Your Level"
# adventurer_prefix: "You can jump to any level below, or discuss the levels on "
# adventurer_forum: "the Adventurer forum"
# adventurer_suffix: "."
# campaign_beginner: "Beginner Campaign"
# campaign_beginner_description: "... in which you learn the wizardry of programming."
# campaign_dev: "Random Harder Levels"
# campaign_dev_description: "... in which you learn the interface while doing something a little harder."
# campaign_multiplayer: "Multiplayer Arenas"
# campaign_multiplayer_description: "... in which you code head-to-head against other players."
# campaign_player_created: "Player-Created"
# campaign_player_created_description: "... in which you battle against the creativity of your fellow <a href=\"/contribute#artisan\">Artisan Wizards</a>."
# level_difficulty: "Difficulty: "
#
# contact:
# contact_us: "Contact CodeCombat"
# welcome: "Good to hear from you! Use this form to send us email."
# contribute_prefix: "If you're interested in contributing, check out our "
# contribute_page: "contribute page"
# contribute_suffix: "!"
# forum_prefix: "For anything public, please try "
# forum_page: "our forum"
# forum_suffix: " instead."
# sending: "Sending..."
# send: "Send Feedback"
#
diplomat_suggestion:
# title: "Help translate CodeCombat!"
# sub_heading: "We need your language skills."
pitch_body: "We develop CodeCombat in English, but we already have players all over the world. Many of them want to play in Norwegian (Bokmål) but don't speak English, so if you can speak both, please consider signing up to be a Diplomat and help translate both the CodeCombat website and all the levels into Norwegian (Bokmål)."
missing_translations: "Until we can translate everything into Norwegian (Bokmål), you'll see English when Norwegian (Bokmål) isn't available."
# learn_more: "Learn more about being a Diplomat"
# subscribe_as_diplomat: "Subscribe as a Diplomat"
#
# 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"
# wizard_tab: "Wizard"
# password_tab: "Password"
# emails_tab: "Emails"
# language_tab: "Language"
# 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."
# wizard_color: "Wizard Clothes Color"
# new_password: "New Password"
# new_password_verify: "Verify"
# email_subscriptions: "Email Subscriptions"
# email_announcements: "Announcements"
# 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."
# email_toggle: "Toggle All"
# language: "Language"
# saving: "Saving..."
# error_saving: "Error Saving"
# saved: "Changes Saved"
# password_mismatch: "Password does not match."
#
# account_profile:
# edit_settings: "Edit Settings"
# profile_for_prefix: "Profile for "
# profile_for_suffix: ""
# profile: "Profile"
# user_not_found: "No user found. Check the URL?"
# gravatar_not_found_mine: "We couldn't find your profile associated with:"
# gravatar_signup_prefix: "Sign up at "
# gravatar_signup_suffix: " to get set up!"
# gravatar_not_found_other: "Alas, there's no profile associated with this person's email address."
# gravatar_contact: "Contact"
# gravatar_websites: "Websites"
# gravatar_accounts: "As Seen On"
# gravatar_profile_link: "Full Gravatar Profile"
#
# play_level:
# level_load_error: "Level could not be loaded."
# done: "Done"
# grid: "Grid"
# customize_wizard: "Customize Wizard"
# home: "Home"
# guide: "Guide"
# multiplayer: "Multiplayer"
# restart: "Restart"
# goals: "Goals"
# action_timeline: "Action Timeline"
# click_to_select: "Click on a unit to select it."
# reload_title: "Reload All Code?"
# reload_really: "Are you sure you want to reload this level back to the beginning?"
# reload_confirm: "Reload All"
# victory_title_prefix: ""
# victory_title_suffix: " Complete"
# victory_sign_up: "Sign Up for Updates"
# victory_sign_up_poke: "Want to get the latest news by email? Create a free account and we'll keep you posted!"
# victory_rate_the_level: "Rate the level: "
# victory_play_next_level: "Play Next Level"
# victory_go_home: "Go Home"
# victory_review: "Tell us more!"
# victory_hour_of_code_done: "Are You Done?"
# victory_hour_of_code_done_yes: "Yes, I'm finished with my Hour of Code!"
# multiplayer_title: "Multiplayer Settings"
# multiplayer_link_description: "Give this link to anyone to have them join you."
# multiplayer_hint_label: "Hint:"
# multiplayer_hint: " Click the link to select all, then press Apple-C or Ctrl-C to copy the link."
# multiplayer_coming_soon: "More multiplayer features to come!"
# guide_title: "Guide"
# tome_minion_spells: "Your Minions' Spells"
# tome_read_only_spells: "Read-Only Spells"
# tome_other_units: "Other Units"
# tome_cast_button_castable: "Cast"
# tome_cast_button_casting: "Casting"
# tome_cast_button_cast: "Spell Cast"
# tome_autocast_delay: "Autocast Delay"
# tome_autocast_1: "1 second"
# tome_autocast_3: "3 seconds"
# tome_autocast_5: "5 seconds"
# tome_autocast_manual: "Manual"
# tome_select_spell: "Select a Spell"
# tome_select_a_thang: "Select Someone for "
# tome_available_spells: "Available Spells"
# hud_continue: "Continue (press shift-space)"
title: "Hjelp med oversettelse av CodeCombat!"
sub_heading: "Vi trenger dine språkkunnskaper."
pitch_body: "Vi utvikler CodeCombat på Engelsk, men vi vi har allerede spillere over hele verden. Mange av dem vil spille på Norsk, men snakker ikke Engelsk, så hvis du kan snakke begge språk, vennligst vurder å meld deg på som Diplomat og hjelp å oversette både CodeCombat web siden og alle nivåene til Norsk."
missing_translations: "Inntil vi har oversatt alt til Norsk vil du se Engelsk hvor Norsk ikke er tilgjengelig."
learn_more: "Lær mer om hvordan det er å være en Diplomat"
subscribe_as_diplomat: "Meld deg på som Diplomat"
account_settings:
title: "Kontoinnstillinger"
not_logged_in: "Logg inn eller opprett en konto for å endre innstillingene dine."
autosave: "Endringer Lagres Automatisk"
me_tab: "Meg"
picture_tab: "Bilde"
wizard_tab: "Trollmann"
password_tab: "Passord"
emails_tab: "Epost"
language_tab: "Språk"
gravatar_select: "Velg hvilket Gravatar bilde du ønsker å bruke"
gravatar_add_photos: "Legg til miniatyrbilder og bildertil en Gravatar konto for at du skal kunne velge et bilde for din epost."
gravatar_add_more_photos: "Legg til flere bilder til din Gravatar konto for å kunne aksessere dem her."
wizard_color: "Farge på Trollmannens Klær"
new_password: "Nytt Passord"
new_password_verify: "Verifiser"
email_subscriptions: "Epost Abonnement"
email_announcements: "Kunngjøringer"
email_announcements_description: "Få epost om siste nytt og utvikling fra CodeCombat."
contributor_emails: "Contributor Klasse Epost"
contribute_prefix: "Vi leter etter folk som vil delta på festen vår! Sjekk ut "
contribute_page: "bidra siden"
contribute_suffix: " for å finne ut mer."
email_toggle: "Vis Alle"
language: "Språk"
saving: "Lagrer..."
error_saving: "Lagring Feilet"
saved: "Endringer Lagret"
password_mismatch: "Passordene er ikke like."
account_profile:
edit_settings: "Rediger Innstillinger"
profile_for_prefix: "Profil for "
profile_for_suffix: ""
profile: "Profil"
user_not_found: "Ingen bruker funnet. Sjekk URL'en?"
gravatar_not_found_mine: "Vi kunne ikke finne din profil assosiert med:"
gravatar_signup_prefix: "Registre det på "
gravatar_signup_suffix: " for å sette opp!"
gravatar_not_found_other: "Akk, det er ingen profil assosiert med denne personens epost adresse."
gravatar_contact: "Kontakt"
gravatar_websites: "Websider"
gravatar_accounts: "Som Sett På"
gravatar_profile_link: "Full Gravatar Profil"
play_level:
level_load_error: "Nivået kunne ikke bli lastet."
done: "Ferdig"
grid: "Grid"
customize_wizard: "Spesiallag Trollmann"
home: "Hjem"
guide: "Guide"
multiplayer: "Flerspiller"
restart: "Start på nytt"
goals: "Mål"
action_timeline: "Hendelsestidslinje"
click_to_select: "Klikk på en enhet for å velge den."
reload_title: "Laste All Koden på Nytt?"
reload_really: "Er du sikker på at du vil laste dette nivået på nytt, tilbake til begynnelsen?"
reload_confirm: "Last Alle på Nytt"
victory_title_prefix: ""
victory_title_suffix: " Ferdig"
victory_sign_up: "Tegn deg på for Oppdateringer"
victory_sign_up_poke: "Vil du ha siste nytt på epost? Opprett en gratis konto, så vil vi holde deg oppdatert!"
victory_rate_the_level: "Bedøm nivået: "
victory_play_next_level: "Spill Neste Nivå"
victory_go_home: "Gå Hjem"
victory_review: "Fortell oss mer!"
victory_hour_of_code_done: "Er du ferdig?"
victory_hour_of_code_done_yes: "Ja, jeg er ferdig med min Time i Koding!"
multiplayer_title: "Flerspillerinnstillinger"
multiplayer_link_description: "Gi denne lenken til de du vil spille med."
multiplayer_hint_label: "Hint:"
multiplayer_hint: " Klikk lenken for å velge alle, så trykker du Apple-C eller Ctrl-C for å kopiere lenken."
multiplayer_coming_soon: "Det kommer flere flerspillsmuligheter!"
guide_title: "Guide"
tome_minion_spells: "Din Minions' Trylleformularer"
tome_read_only_spells: "Kun-Lesbare Trylleformularer"
tome_other_units: "Andre Enheter"
tome_cast_button_castable: "Kast"
tome_cast_button_casting: "Kaster"
tome_cast_button_cast: "Kast Trylleformular"
tome_autocast_delay: "Automatisk Forsinkelse"
tome_autocast_1: "1 sekunder"
tome_autocast_3: "3 sekunder"
tome_autocast_5: "5 sekunder"
tome_autocast_manual: "Manuelt"
tome_select_spell: "Velg et Trylleformular"
tome_select_a_thang: "Velg Noe for å "
tome_available_spells: "Tilgjenglige Trylleformularer"
hud_continue: "Fortsett (trykk shift-mellomrom)"

View file

@ -1,183 +1,183 @@
module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", translation:
common:
loading: "Loading..."
loading: "Aan het laden..."
modal:
close: "Sluiten"
okay: "Oké"
not_found:
page_not_found: "Pagina niet gevonden"
nav:
# Header
sign_up: "Account Maken"
log_in: "Inloggen"
log_out: "Uitloggen"
play: "Spelen"
# editor: ""
blog: "Blog"
forum: "Forum"
admin: "Admin"
# Footer
home: "Home"
contribute: "Bijdragen"
legal: "Legaal"
about: "Over"
contact: "Contact"
twitter_follow: "Volgen"
forms:
name: "Naam"
email: "Email"
message: "Bericht"
cancel: "Annuleren"
login:
log_in: "Inloggen"
sign_up: "nieuw account aanmaken"
or: ", of "
recover: "account herstellen"
signup:
description: "Het is gratis. We hebben maar een paar dingen nodig en dan kan je aan de slag:"
email_announcements: "Ontvang aankondigingen via email"
coppa: "13+ of niet uit de VS"
coppa_why: "(Waarom?)"
creating: "Account aanmaken..."
sign_up: "Aanmelden"
or: "of "
log_in: "inloggen met wachtwoord"
home:
slogan: "Leer programmeren in JavaScript door het spelen van een spel"
no_ie: "CodeCombat werkt niet in IE8 of ouder. Sorry!"
no_mobile: "CodeCombat is niet gemaakt voor mobiele apparaten en werkt misschien niet!"
play: "Speel"
play:
choose_your_level: "Kies Je Level"
adventurer_prefix: "Je kunt meteen naar een van de levels hieronder springen, of de levels bespreken op "
adventurer_forum: "het Avonturiersforum"
adventurer_suffix: "."
campaign_beginner: "Beginnercampagne"
campaign_beginner_description: "... waarin je de toverkunst van programmeren leert."
campaign_dev: "Willekeurige moeilijkere levels"
campaign_dev_description: "... waarin je de interface leert kennen terwijl je wat moeilijkers doet."
campaign_multiplayer: "Multiplayer Arena's"
campaign_multiplayer_description: "... waarin je direct tegen andere spelers speelt."
campaign_player_created: "Door-spelers-gemaakt"
campaign_player_created_description: "... waarin je ten strijde trekt tegen de creativiteit van andere <a href=\"/contribute#artisan\">Ambachtelijke Tovenaars</a>."
level_difficulty: "Moeilijkheidsgraad: "
contact:
contact_us: "Contact opnemen met CodeCombat"
welcome: "Goed om van je te horen! Gebruik dit formulier om ons een e-mail te sturen."
contribute_prefix: "Als je interesse hebt om bij te dragen, bekijk onze "
contribute_page: "pagina over bijdragen"
contribute_suffix: "!"
forum_prefix: "Voor iets publiekelijks, probeer dan "
forum_page: "ons forum"
forum_suffix: "."
sending: "Verzenden..."
send: "Feedback Verzonden"
# modal:
# close: "Close"
# okay: "Okay"
#
# not_found:
# page_not_found: "Page not found"
#
# nav:
# # Header
# sign_up: "Create Account"
# log_in: "Log In"
# log_out: "Log Out"
# play: "Play"
# editor: "Editor"
# blog: "Blog"
# forum: "Forum"
# admin: "Admin"
# # Footer
# home: "Home"
# contribute: "Contribute"
# legal: "Legal"
# about: "About"
# contact: "Contact"
# twitter_follow: "Follow"
#
# forms:
# name: "Name"
# email: "Email"
# message: "Message"
# cancel: "Cancel"
#
# login:
# log_in: "Log In"
# sign_up: "create new account"
# or: ", or "
# recover: "recover account"
#
# signup:
# description: "It's free. Just need a couple things and you'll be good to go:"
# email_announcements: "Receive announcements by email"
# coppa: "13+ or non-USA"
# coppa_why: "(Why?)"
# creating: "Creating Account..."
# sign_up: "Sign Up"
# or: "or "
# log_in: "log in with password"
#
# home:
# slogan: "Learn to Code JavaScript by Playing a Game"
# no_ie: "CodeCombat does not run in IE8 or older. Sorry!"
# no_mobile: "CodeCombat wasn't designed for mobile devices and may not work!"
# play: "Play"
#
# play:
# choose_your_level: "Choose Your Level"
# adventurer_prefix: "You can jump to any level below, or discuss the levels on "
# adventurer_forum: "the Adventurer forum"
# adventurer_suffix: "."
# campaign_beginner: "Beginner Campaign"
# campaign_beginner_description: "... in which you learn the wizardry of programming."
# campaign_dev: "Random Harder Levels"
# campaign_dev_description: "... in which you learn the interface while doing something a little harder."
# campaign_multiplayer: "Multiplayer Arenas"
# campaign_multiplayer_description: "... in which you code head-to-head against other players."
# campaign_player_created: "Player-Created"
# campaign_player_created_description: "... in which you battle against the creativity of your fellow <a href=\"/contribute#artisan\">Artisan Wizards</a>."
# level_difficulty: "Difficulty: "
#
# contact:
# contact_us: "Contact CodeCombat"
# welcome: "Good to hear from you! Use this form to send us email."
# contribute_prefix: "If you're interested in contributing, check out our "
# contribute_page: "contribute page"
# contribute_suffix: "!"
# forum_prefix: "For anything public, please try "
# forum_page: "our forum"
# forum_suffix: " instead."
# sending: "Sending..."
# send: "Send Feedback"
#
diplomat_suggestion:
# title: "Help translate CodeCombat!"
# sub_heading: "We need your language skills."
pitch_body: "We develop CodeCombat in English, but we already have players all over the world. Many of them want to play in Dutch but don't speak English, so if you can speak both, please consider signing up to be a Diplomat and help translate both the CodeCombat website and all the levels into Dutch."
missing_translations: "Until we can translate everything into Dutch, you'll see English when Dutch isn't available."
# learn_more: "Learn more about being a Diplomat"
# subscribe_as_diplomat: "Subscribe as a Diplomat"
#
# 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"
# wizard_tab: "Wizard"
# password_tab: "Password"
# emails_tab: "Emails"
# language_tab: "Language"
# 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."
# wizard_color: "Wizard Clothes Color"
# new_password: "New Password"
# new_password_verify: "Verify"
# email_subscriptions: "Email Subscriptions"
# email_announcements: "Announcements"
# 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."
# email_toggle: "Toggle All"
# language: "Language"
# saving: "Saving..."
# error_saving: "Error Saving"
# saved: "Changes Saved"
# password_mismatch: "Password does not match."
#
# account_profile:
# edit_settings: "Edit Settings"
# profile_for_prefix: "Profile for "
# profile_for_suffix: ""
# profile: "Profile"
# user_not_found: "No user found. Check the URL?"
# gravatar_not_found_mine: "We couldn't find your profile associated with:"
# gravatar_signup_prefix: "Sign up at "
# gravatar_signup_suffix: " to get set up!"
# gravatar_not_found_other: "Alas, there's no profile associated with this person's email address."
# gravatar_contact: "Contact"
# gravatar_websites: "Websites"
# gravatar_accounts: "As Seen On"
# gravatar_profile_link: "Full Gravatar Profile"
#
# play_level:
# level_load_error: "Level could not be loaded."
# done: "Done"
# grid: "Grid"
# customize_wizard: "Customize Wizard"
# home: "Home"
# guide: "Guide"
# multiplayer: "Multiplayer"
# restart: "Restart"
# goals: "Goals"
# action_timeline: "Action Timeline"
# click_to_select: "Click on a unit to select it."
# reload_title: "Reload All Code?"
# reload_really: "Are you sure you want to reload this level back to the beginning?"
# reload_confirm: "Reload All"
title: "Help CodeCombat vertalen!"
sub_heading: "We hebben je taalvaardigheden nodig."
pitch_body: "We ontwikkelen CodeCombat in het Engels, maar we hebben al spelers van over de hele wereld. Veel van hen willen in het Nederlands spelen, maar kunnen geen Engels. Dus als je beiden spreekt, overweeg a.u.b. om je aan te melden als Diplomaat en help zowel de CodeCombat website als alle levels te vertalen naar het Nederlands."
missing_translations: "Totdat we alles hebben vertaald naar het Nederlands zul je Engels zien waar Nederlands niet beschikbaar is."
learn_more: "Meer informatie over het zijn van een Diplomaat"
subscribe_as_diplomat: "Abonneren als Diplomaat"
account_settings:
title: "Account Instellingen"
not_logged_in: "Log in of maak een account om je instellingen aan te passen."
autosave: "Aanpassingen Worden Automatisch Opgeslagen"
me_tab: "Ik"
picture_tab: "Afbeelding"
wizard_tab: "Tovenaar"
password_tab: "Wachtwoord"
emails_tab: "Emails"
language_tab: "Taal"
gravatar_select: "Select which Gravatar photo to use"
# gravatar_add_photos: ""
gravatar_add_more_photos: "Voeg meer afbeeldingen toe aan je Gravatar account om ze hier te gebruiken."
wizard_color: "Tovenaar Kleding Kleur"
new_password: "Nieuw Wachtwoord"
new_password_verify: "Verifieer"
email_subscriptions: "Email Abonnementen"
email_announcements: "Aankondegingen"
email_announcements_description: "Verkrijg emails over het laatste nieuws en de ontwikkelingen bij CodeCombat."
# contributor_emails: ""
contribute_prefix: "We zoeken mensen om bij ons feest aan te voegen! Bekijk de "
contribute_page: "contributie pagina"
contribute_suffix: " om meer te weten te komen."
# email_toggle: ""
language: "Taal"
saving: "Opslaan..."
error_saving: "Fout Tijdens Het Opslaan"
saved: "Aanpassingen Opgeslagen"
password_mismatch: "Het wachtwoord komt niet overeen."
account_profile:
edit_settings: "Instellingen Aanpassen"
profile_for_prefix: "Profiel voor "
profile_for_suffix: ""
profile: "Profiel"
user_not_found: "Geen gebruiker gevonden. Controleer de URL?"
# gravatar_not_found_mine: ""
gravatar_signup_prefix: "Registreer op "
gravatar_signup_suffix: ""
gravatar_not_found_other: "Alas, there's no profile associated with this person's email address."
gravatar_contact: "Contact"
gravatar_websites: "Websites"
gravatar_accounts: "Zoals Gezien Op"
gravatar_profile_link: "Volledig Gravatar Profiel"
play_level:
level_load_error: "Level kon niet geladen worden."
done: "Klaar"
grid: "Raster"
# customize_wizard: ""
# home: ""
guide: "Handleiding"
multiplayer: "Multiplayer"
restart: "Herstarten"
goals: "Doelen"
# action_timeline: ""
click_to_select: "Klik op een eenheid om deze te selecteren."
reload_title: "Alle Code Herladen?"
reload_really: "Weet je zeker dat je dit level tot het begin wilt herladen?"
reload_confirm: "Herlaad Alles"
# victory_title_prefix: ""
# victory_title_suffix: " Complete"
# victory_sign_up: "Sign Up for Updates"
# victory_sign_up_poke: "Want to get the latest news by email? Create a free account and we'll keep you posted!"
# victory_rate_the_level: "Rate the level: "
# victory_play_next_level: "Play Next Level"
# victory_go_home: "Go Home"
# victory_review: "Tell us more!"
# victory_hour_of_code_done: "Are You Done?"
# victory_hour_of_code_done_yes: "Yes, I'm finished with my Hour of Code!"
# multiplayer_title: "Multiplayer Settings"
# victory_title_suffix: ""
# victory_sign_up: ""
# victory_sign_up_poke: ""
# victory_rate_the_level: ""
victory_play_next_level: "Speel Volgend Level"
# victory_go_home: ""
victory_review: "Vertel ons meer!"
victory_hour_of_code_done: "Ben Je Klaar?"
# victory_hour_of_code_done_yes: ""
multiplayer_title: "Multiplayer Instellingen"
# multiplayer_link_description: "Give this link to anyone to have them join you."
# multiplayer_hint_label: "Hint:"
# multiplayer_hint: " Click the link to select all, then press Apple-C or Ctrl-C to copy the link."
# multiplayer_coming_soon: "More multiplayer features to come!"
# guide_title: "Guide"
# tome_minion_spells: "Your Minions' Spells"
# tome_read_only_spells: "Read-Only Spells"
# tome_other_units: "Other Units"
# tome_cast_button_castable: "Cast"
# tome_cast_button_casting: "Casting"
# tome_cast_button_cast: "Spell Cast"
# tome_autocast_delay: "Autocast Delay"
# tome_autocast_1: "1 second"
# tome_autocast_3: "3 seconds"
# tome_autocast_5: "5 seconds"
# tome_autocast_manual: "Manual"
# tome_select_spell: "Select a Spell"
# tome_select_a_thang: "Select Someone for "
# tome_available_spells: "Available Spells"
# hud_continue: "Continue (press shift-space)"
multiplayer_hint_label: "Hint:"
multiplayer_hint: " Klik de link om alles te selecteren, druk dan op Apple-C of Ctrl-C om de link te kopiëren."
# multiplayer_coming_soon: ""
guide_title: "Handleiding"
# tome_minion_spells: ""
# tome_read_only_spells: ""
tome_other_units: "Andere Eenheden"
# tome_cast_button_castable: ""
# tome_cast_button_casting: ""
# tome_cast_button_cast: ""
# tome_autocast_delay: ""
tome_autocast_1: "1 seconde"
tome_autocast_3: "3 seconde"
tome_autocast_5: "5 seconde"
tome_autocast_manual: "Handmatig"
tome_select_spell: "Selecteer een Spreuk"
tome_select_a_thang: "Selecteer Iemand voor "
tome_available_spells: "Beschikbare spreuken"
# hud_continue: ""

View file

@ -1,183 +1,183 @@
module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", translation:
common:
loading: "Loading..."
loading: "Laster..."
modal:
close: "Lukk"
okay: "Ok"
not_found:
page_not_found: "Finner ikke siden"
nav:
# Header
sign_up: "Lag konto"
log_in: "Logg Inn"
log_out: "Logg Ut"
play: "Spill"
editor: "Editor"
blog: "Blogg"
forum: "Forum"
admin: "Administrator"
# Footer
home: "Hjem"
contribute: "Bidra"
legal: "Juridisk"
about: "Om"
contact: "Kontakt"
twitter_follow: "Følg"
forms:
name: "Navn"
email: "Epost"
message: "Melding"
cancel: "Avbryt"
login:
log_in: "Logg Inn"
sign_up: "lag ny konto"
or: ", eller "
recover: "gjenåpne konto"
signup:
description: "Det er gratis. Trenger bare noen få avklaringer, så er du klar:"
email_announcements: "Motta kunngjøringer på epost"
coppa: "13+ eller ikke fra USA"
coppa_why: "(Hvorfor?)"
creating: "Oppretter Konto..."
sign_up: "Registrer deg"
or: "eller "
log_in: "logg inn med passord"
home:
slogan: "Lær å Kode JavaScript ved å Spille et Spill"
no_ie: "CodeCombat kjører ikke på IE8 eller eldre. Beklager!"
no_mobile: "CodeCombat ble ikke designet for mobile enheter, og vil muligens ikke virke!"
play: "Spill"
play:
choose_your_level: "Velg Ditt Nivå"
adventurer_prefix: "Du kan hoppe til hvilket som helts nivå under, eller diskutere nivåene på"
adventurer_forum: "Adventurer forumet"
adventurer_suffix: "."
campaign_beginner: "Begynner Felttog"
campaign_beginner_description: "... hvor du lærer trolldommen bak programmering."
campaign_dev: "Tilfeldig Vanskeligere Nivåer"
campaign_dev_description: "... hvor du lærer grensesnittet mens du stadig gjør mer vanskeligere utfordringer."
campaign_multiplayer: "Multispiller Arenaer"
campaign_multiplayer_description: "... hvor du spiller direkte mot andre spillere."
campaign_player_created: "Spiller-Lagde"
campaign_player_created_description: "... hvor du kjemper mot kreativiteten til en av dine medspillende <a href=\"/contribute#artisan\">Artisan Trollmenn</a>."
level_difficulty: "Vanskelighetsgrad: "
contact:
contact_us: "Kontakt CodeCombat"
welcome: "Bra å høre fra deg! Bruk dette skjemaet for å sende oss en epost."
contribute_prefix: "Hvis du er interessert i å bidra, sjekk ut vår "
contribute_page: "bidrags side"
contribute_suffix: "!"
forum_prefix: "For allment tilgjengelige henvendelser, vennligst prøv "
forum_page: "forumet vårt"
forum_suffix: " i steden."
sending: "Sender..."
send: "Send Tilbakemelding"
# modal:
# close: "Close"
# okay: "Okay"
#
# not_found:
# page_not_found: "Page not found"
#
# nav:
# # Header
# sign_up: "Create Account"
# log_in: "Log In"
# log_out: "Log Out"
# play: "Play"
# editor: "Editor"
# blog: "Blog"
# forum: "Forum"
# admin: "Admin"
# # Footer
# home: "Home"
# contribute: "Contribute"
# legal: "Legal"
# about: "About"
# contact: "Contact"
# twitter_follow: "Follow"
#
# forms:
# name: "Name"
# email: "Email"
# message: "Message"
# cancel: "Cancel"
#
# login:
# log_in: "Log In"
# sign_up: "create new account"
# or: ", or "
# recover: "recover account"
#
# signup:
# description: "It's free. Just need a couple things and you'll be good to go:"
# email_announcements: "Receive announcements by email"
# coppa: "13+ or non-USA"
# coppa_why: "(Why?)"
# creating: "Creating Account..."
# sign_up: "Sign Up"
# or: "or "
# log_in: "log in with password"
#
# home:
# slogan: "Learn to Code JavaScript by Playing a Game"
# no_ie: "CodeCombat does not run in IE8 or older. Sorry!"
# no_mobile: "CodeCombat wasn't designed for mobile devices and may not work!"
# play: "Play"
#
# play:
# choose_your_level: "Choose Your Level"
# adventurer_prefix: "You can jump to any level below, or discuss the levels on "
# adventurer_forum: "the Adventurer forum"
# adventurer_suffix: "."
# campaign_beginner: "Beginner Campaign"
# campaign_beginner_description: "... in which you learn the wizardry of programming."
# campaign_dev: "Random Harder Levels"
# campaign_dev_description: "... in which you learn the interface while doing something a little harder."
# campaign_multiplayer: "Multiplayer Arenas"
# campaign_multiplayer_description: "... in which you code head-to-head against other players."
# campaign_player_created: "Player-Created"
# campaign_player_created_description: "... in which you battle against the creativity of your fellow <a href=\"/contribute#artisan\">Artisan Wizards</a>."
# level_difficulty: "Difficulty: "
#
# contact:
# contact_us: "Contact CodeCombat"
# welcome: "Good to hear from you! Use this form to send us email."
# contribute_prefix: "If you're interested in contributing, check out our "
# contribute_page: "contribute page"
# contribute_suffix: "!"
# forum_prefix: "For anything public, please try "
# forum_page: "our forum"
# forum_suffix: " instead."
# sending: "Sending..."
# send: "Send Feedback"
#
diplomat_suggestion:
# title: "Help translate CodeCombat!"
# sub_heading: "We need your language skills."
pitch_body: "We develop CodeCombat in English, but we already have players all over the world. Many of them want to play in Norwegian but don't speak English, so if you can speak both, please consider signing up to be a Diplomat and help translate both the CodeCombat website and all the levels into Norwegian."
missing_translations: "Until we can translate everything into Norwegian, you'll see English when Norwegian isn't available."
# learn_more: "Learn more about being a Diplomat"
# subscribe_as_diplomat: "Subscribe as a Diplomat"
#
# 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"
# wizard_tab: "Wizard"
# password_tab: "Password"
# emails_tab: "Emails"
# language_tab: "Language"
# 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."
# wizard_color: "Wizard Clothes Color"
# new_password: "New Password"
# new_password_verify: "Verify"
# email_subscriptions: "Email Subscriptions"
# email_announcements: "Announcements"
# 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."
# email_toggle: "Toggle All"
# language: "Language"
# saving: "Saving..."
# error_saving: "Error Saving"
# saved: "Changes Saved"
# password_mismatch: "Password does not match."
#
# account_profile:
# edit_settings: "Edit Settings"
# profile_for_prefix: "Profile for "
# profile_for_suffix: ""
# profile: "Profile"
# user_not_found: "No user found. Check the URL?"
# gravatar_not_found_mine: "We couldn't find your profile associated with:"
# gravatar_signup_prefix: "Sign up at "
# gravatar_signup_suffix: " to get set up!"
# gravatar_not_found_other: "Alas, there's no profile associated with this person's email address."
# gravatar_contact: "Contact"
# gravatar_websites: "Websites"
# gravatar_accounts: "As Seen On"
# gravatar_profile_link: "Full Gravatar Profile"
#
# play_level:
# level_load_error: "Level could not be loaded."
# done: "Done"
# grid: "Grid"
# customize_wizard: "Customize Wizard"
# home: "Home"
# guide: "Guide"
# multiplayer: "Multiplayer"
# restart: "Restart"
# goals: "Goals"
# action_timeline: "Action Timeline"
# click_to_select: "Click on a unit to select it."
# reload_title: "Reload All Code?"
# reload_really: "Are you sure you want to reload this level back to the beginning?"
# reload_confirm: "Reload All"
# victory_title_prefix: ""
# victory_title_suffix: " Complete"
# victory_sign_up: "Sign Up for Updates"
# victory_sign_up_poke: "Want to get the latest news by email? Create a free account and we'll keep you posted!"
# victory_rate_the_level: "Rate the level: "
# victory_play_next_level: "Play Next Level"
# victory_go_home: "Go Home"
# victory_review: "Tell us more!"
# victory_hour_of_code_done: "Are You Done?"
# victory_hour_of_code_done_yes: "Yes, I'm finished with my Hour of Code!"
# multiplayer_title: "Multiplayer Settings"
# multiplayer_link_description: "Give this link to anyone to have them join you."
# multiplayer_hint_label: "Hint:"
# multiplayer_hint: " Click the link to select all, then press Apple-C or Ctrl-C to copy the link."
# multiplayer_coming_soon: "More multiplayer features to come!"
# guide_title: "Guide"
# tome_minion_spells: "Your Minions' Spells"
# tome_read_only_spells: "Read-Only Spells"
# tome_other_units: "Other Units"
# tome_cast_button_castable: "Cast"
# tome_cast_button_casting: "Casting"
# tome_cast_button_cast: "Spell Cast"
# tome_autocast_delay: "Autocast Delay"
# tome_autocast_1: "1 second"
# tome_autocast_3: "3 seconds"
# tome_autocast_5: "5 seconds"
# tome_autocast_manual: "Manual"
# tome_select_spell: "Select a Spell"
# tome_select_a_thang: "Select Someone for "
# tome_available_spells: "Available Spells"
# hud_continue: "Continue (press shift-space)"
title: "Hjelp med oversettelse av CodeCombat!"
sub_heading: "Vi trenger dine språkkunnskaper."
pitch_body: "Vi utvikler CodeCombat på Engelsk, men vi vi har allerede spillere over hele verden. Mange av dem vil spille på Norsk, men snakker ikke Engelsk, så hvis du kan snakke begge språk, vennligst vurder å meld deg på som Diplomat og hjelp å oversette både CodeCombat web siden og alle nivåene til Norsk."
missing_translations: "Inntil vi har oversatt alt til Norsk vil du se Engelsk hvor Norsk ikke er tilgjengelig."
learn_more: "Lær mer om hvordan det er å være en Diplomat"
subscribe_as_diplomat: "Meld deg på som Diplomat"
account_settings:
title: "Kontoinnstillinger"
not_logged_in: "Logg inn eller opprett en konto for å endre innstillingene dine."
autosave: "Endringer Lagres Automatisk"
me_tab: "Meg"
picture_tab: "Bilde"
wizard_tab: "Trollmann"
password_tab: "Passord"
emails_tab: "Epost"
language_tab: "Språk"
gravatar_select: "Velg hvilket Gravatar bilde du ønsker å bruke"
gravatar_add_photos: "Legg til miniatyrbilder og bildertil en Gravatar konto for at du skal kunne velge et bilde for din epost."
gravatar_add_more_photos: "Legg til flere bilder til din Gravatar konto for å kunne aksessere dem her."
wizard_color: "Farge på Trollmannens Klær"
new_password: "Nytt Passord"
new_password_verify: "Verifiser"
email_subscriptions: "Epost Abonnement"
email_announcements: "Kunngjøringer"
email_announcements_description: "Få epost om siste nytt og utvikling fra CodeCombat."
contributor_emails: "Contributor Klasse Epost"
contribute_prefix: "Vi leter etter folk som vil delta på festen vår! Sjekk ut "
contribute_page: "bidra siden"
contribute_suffix: " for å finne ut mer."
email_toggle: "Vis Alle"
language: "Språk"
saving: "Lagrer..."
error_saving: "Lagring Feilet"
saved: "Endringer Lagret"
password_mismatch: "Passordene er ikke like."
account_profile:
edit_settings: "Rediger Innstillinger"
profile_for_prefix: "Profil for "
profile_for_suffix: ""
profile: "Profil"
user_not_found: "Ingen bruker funnet. Sjekk URL'en?"
gravatar_not_found_mine: "Vi kunne ikke finne din profil assosiert med:"
gravatar_signup_prefix: "Registre det på "
gravatar_signup_suffix: " for å sette opp!"
gravatar_not_found_other: "Akk, det er ingen profil assosiert med denne personens epost adresse."
gravatar_contact: "Kontakt"
gravatar_websites: "Websider"
gravatar_accounts: "Som Sett På"
gravatar_profile_link: "Full Gravatar Profil"
play_level:
level_load_error: "Nivået kunne ikke bli lastet."
done: "Ferdig"
grid: "Grid"
customize_wizard: "Spesiallag Trollmann"
home: "Hjem"
guide: "Guide"
multiplayer: "Flerspiller"
restart: "Start på nytt"
goals: "Mål"
action_timeline: "Hendelsestidslinje"
click_to_select: "Klikk på en enhet for å velge den."
reload_title: "Laste All Koden på Nytt?"
reload_really: "Er du sikker på at du vil laste dette nivået på nytt, tilbake til begynnelsen?"
reload_confirm: "Last Alle på Nytt"
victory_title_prefix: ""
victory_title_suffix: " Ferdig"
victory_sign_up: "Tegn deg på for Oppdateringer"
victory_sign_up_poke: "Vil du ha siste nytt på epost? Opprett en gratis konto, så vil vi holde deg oppdatert!"
victory_rate_the_level: "Bedøm nivået: "
victory_play_next_level: "Spill Neste Nivå"
victory_go_home: "Gå Hjem"
victory_review: "Fortell oss mer!"
victory_hour_of_code_done: "Er du ferdig?"
victory_hour_of_code_done_yes: "Ja, jeg er ferdig med min Time i Koding!"
multiplayer_title: "Flerspillerinnstillinger"
multiplayer_link_description: "Gi denne lenken til de du vil spille med."
multiplayer_hint_label: "Hint:"
multiplayer_hint: " Klikk lenken for å velge alle, så trykker du Apple-C eller Ctrl-C for å kopiere lenken."
multiplayer_coming_soon: "Det kommer flere flerspillsmuligheter!"
guide_title: "Guide"
tome_minion_spells: "Din Minions' Trylleformularer"
tome_read_only_spells: "Kun-Lesbare Trylleformularer"
tome_other_units: "Andre Enheter"
tome_cast_button_castable: "Kast"
tome_cast_button_casting: "Kaster"
tome_cast_button_cast: "Kast Trylleformular"
tome_autocast_delay: "Automatisk Forsinkelse"
tome_autocast_1: "1 sekunder"
tome_autocast_3: "3 sekunder"
tome_autocast_5: "5 sekunder"
tome_autocast_manual: "Manuelt"
tome_select_spell: "Velg et Trylleformular"
tome_select_a_thang: "Velg Noe for å "
tome_available_spells: "Tilgjenglige Trylleformularer"
hud_continue: "Fortsett (trykk shift-mellomrom)"

View file

@ -6,12 +6,12 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
close: "Zamknij"
okay: "Ok"
# not_found:
# page_not_found: ""
not_found:
page_not_found: "Strona nie istnieje"
nav:
# Header
sign_up: ""
sign_up: "Stwórz Konto"
log_in: "Zaloguj się"
log_out: "Wyloguj się"
play: "Graj"

View file

@ -1,183 +1,183 @@
module.exports = nativeDescription: "русский язык", englishDescription: "Russian", translation:
common:
loading: "Loading..."
loading: "Загрузка..."
modal:
close: "Закрыть"
okay: "Хорошо"
not_found:
page_not_found: "Страница не найдена"
nav:
# Header
sign_up: "Создать Профиль"
log_in: "Войти"
log_out: "Выйти"
play: "Играть"
editor: "Редактор"
blog: "Блог"
forum: "Форум"
admin: "Администратор"
# Footer
home: "Домой"
contribute: "Сотрудничество"
legal: "Юридическая информация"
about: "О нас"
contact: "Контакты"
twitter_follow: "Подписаться"
forms:
name: "Имя"
email: "Email"
message: "Сообщение"
cancel: "Отмена"
login:
log_in: "Войти"
sign_up: "создать аккаунт"
or: ", или"
recover: "восстановить аккаунт"
signup:
description: "Это бесплатно. Нужно сделать лишь несколько шагов:"
email_announcements: "Получать оповещения по email"
coppa: "Вы старше 13 лет или живёте не в США"
coppa_why: "(Почему?)"
creating: "Создание аккаунта..."
sign_up: "Регистрация"
or: "или "
log_in: "вход с паролем"
home:
slogan: "Научитесь программировать на JavaScript, играя в игру"
no_ie: "CodeCombat не работает в IE8 или более старых версиях. Нам очень жаль!"
no_mobile: "CodeCombat не приспособлен для работы на мобильных устройствах и может не работать!"
play: "Играть"
play:
choose_your_level: "Выберите ваш уровень"
adventurer_prefix: "Вы можете зайти на любой из этих уровней, а также обсудить уровни на "
adventurer_forum: "форуме Искателей Приключений"
adventurer_suffix: "."
campaign_beginner: "Кампания для новичков"
campaign_beginner_description: "... в которой вы познакомитесь с магией программирования."
campaign_dev: "Случайные уровни потруднее"
campaign_dev_description: "... в которой вы изучите интерфейс и научитесь делать кое-что посложнее."
campaign_multiplayer: "Арены для мультиплеера"
campaign_multiplayer_description: "... в которых вы соревнуетесь в программировании с другими игроками."
campaign_player_created: "Уровни игроков"
campaign_player_created_description: "... в которых вы сражаетесь с креативностью ваших друзей-<a href=\"/contribute#artisan\">Архитекторов</a>."
level_difficulty: "Сложность: "
contact:
contact_us: "Связаться с CodeCombat"
welcome: "Мы рады вашему сообщению! Используйте эту форму, чтобы отправить нам email."
contribute_prefix: "Если вы хотите внести свой вклад в проект, зайдите на нашу "
contribute_page: "страницу сотрудничества"
contribute_suffix: "!"
forum_prefix: "Для любых публичных обсуждений, пожалуйста, используйте "
forum_page: "наш форум"
forum_suffix: "."
sending: "Отправка..."
send: "Отправить отзыв"
# modal:
# close: "Close"
# okay: "Okay"
#
# not_found:
# page_not_found: "Page not found"
#
# nav:
# # Header
# sign_up: "Create Account"
# log_in: "Log In"
# log_out: "Log Out"
# play: "Play"
# editor: "Editor"
# blog: "Blog"
# forum: "Forum"
# admin: "Admin"
# # Footer
# home: "Home"
# contribute: "Contribute"
# legal: "Legal"
# about: "About"
# contact: "Contact"
# twitter_follow: "Follow"
#
# forms:
# name: "Name"
# email: "Email"
# message: "Message"
# cancel: "Cancel"
#
# login:
# log_in: "Log In"
# sign_up: "create new account"
# or: ", or "
# recover: "recover account"
#
# signup:
# description: "It's free. Just need a couple things and you'll be good to go:"
# email_announcements: "Receive announcements by email"
# coppa: "13+ or non-USA"
# coppa_why: "(Why?)"
# creating: "Creating Account..."
# sign_up: "Sign Up"
# or: "or "
# log_in: "log in with password"
#
# home:
# slogan: "Learn to Code JavaScript by Playing a Game"
# no_ie: "CodeCombat does not run in IE8 or older. Sorry!"
# no_mobile: "CodeCombat wasn't designed for mobile devices and may not work!"
# play: "Play"
#
# play:
# choose_your_level: "Choose Your Level"
# adventurer_prefix: "You can jump to any level below, or discuss the levels on "
# adventurer_forum: "the Adventurer forum"
# adventurer_suffix: "."
# campaign_beginner: "Beginner Campaign"
# campaign_beginner_description: "... in which you learn the wizardry of programming."
# campaign_dev: "Random Harder Levels"
# campaign_dev_description: "... in which you learn the interface while doing something a little harder."
# campaign_multiplayer: "Multiplayer Arenas"
# campaign_multiplayer_description: "... in which you code head-to-head against other players."
# campaign_player_created: "Player-Created"
# campaign_player_created_description: "... in which you battle against the creativity of your fellow <a href=\"/contribute#artisan\">Artisan Wizards</a>."
# level_difficulty: "Difficulty: "
#
# contact:
# contact_us: "Contact CodeCombat"
# welcome: "Good to hear from you! Use this form to send us email."
# contribute_prefix: "If you're interested in contributing, check out our "
# contribute_page: "contribute page"
# contribute_suffix: "!"
# forum_prefix: "For anything public, please try "
# forum_page: "our forum"
# forum_suffix: " instead."
# sending: "Sending..."
# send: "Send Feedback"
#
diplomat_suggestion:
# title: "Help translate CodeCombat!"
# sub_heading: "We need your language skills."
pitch_body: "We develop CodeCombat in English, but we already have players all over the world. Many of them want to play in Russian but don't speak English, so if you can speak both, please consider signing up to be a Diplomat and help translate both the CodeCombat website and all the levels into Russian."
missing_translations: "Until we can translate everything into Russian, you'll see English when Russian isn't available."
# learn_more: "Learn more about being a Diplomat"
# subscribe_as_diplomat: "Subscribe as a Diplomat"
#
# 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"
# wizard_tab: "Wizard"
# password_tab: "Password"
# emails_tab: "Emails"
# language_tab: "Language"
# 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."
# wizard_color: "Wizard Clothes Color"
# new_password: "New Password"
# new_password_verify: "Verify"
# email_subscriptions: "Email Subscriptions"
# email_announcements: "Announcements"
# 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."
# email_toggle: "Toggle All"
# language: "Language"
# saving: "Saving..."
# error_saving: "Error Saving"
# saved: "Changes Saved"
# password_mismatch: "Password does not match."
#
# account_profile:
# edit_settings: "Edit Settings"
# profile_for_prefix: "Profile for "
# profile_for_suffix: ""
# profile: "Profile"
# user_not_found: "No user found. Check the URL?"
# gravatar_not_found_mine: "We couldn't find your profile associated with:"
# gravatar_signup_prefix: "Sign up at "
# gravatar_signup_suffix: " to get set up!"
# gravatar_not_found_other: "Alas, there's no profile associated with this person's email address."
# gravatar_contact: "Contact"
# gravatar_websites: "Websites"
# gravatar_accounts: "As Seen On"
# gravatar_profile_link: "Full Gravatar Profile"
#
# play_level:
# level_load_error: "Level could not be loaded."
# done: "Done"
# grid: "Grid"
# customize_wizard: "Customize Wizard"
# home: "Home"
# guide: "Guide"
# multiplayer: "Multiplayer"
# restart: "Restart"
# goals: "Goals"
# action_timeline: "Action Timeline"
# click_to_select: "Click on a unit to select it."
# reload_title: "Reload All Code?"
# reload_really: "Are you sure you want to reload this level back to the beginning?"
# reload_confirm: "Reload All"
# victory_title_prefix: ""
# victory_title_suffix: " Complete"
# victory_sign_up: "Sign Up for Updates"
# victory_sign_up_poke: "Want to get the latest news by email? Create a free account and we'll keep you posted!"
# victory_rate_the_level: "Rate the level: "
# victory_play_next_level: "Play Next Level"
# victory_go_home: "Go Home"
# victory_review: "Tell us more!"
# victory_hour_of_code_done: "Are You Done?"
# victory_hour_of_code_done_yes: "Yes, I'm finished with my Hour of Code!"
# multiplayer_title: "Multiplayer Settings"
# multiplayer_link_description: "Give this link to anyone to have them join you."
# multiplayer_hint_label: "Hint:"
# multiplayer_hint: " Click the link to select all, then press Apple-C or Ctrl-C to copy the link."
# multiplayer_coming_soon: "More multiplayer features to come!"
# guide_title: "Guide"
# tome_minion_spells: "Your Minions' Spells"
# tome_read_only_spells: "Read-Only Spells"
# tome_other_units: "Other Units"
# tome_cast_button_castable: "Cast"
# tome_cast_button_casting: "Casting"
# tome_cast_button_cast: "Spell Cast"
# tome_autocast_delay: "Autocast Delay"
# tome_autocast_1: "1 second"
# tome_autocast_3: "3 seconds"
# tome_autocast_5: "5 seconds"
# tome_autocast_manual: "Manual"
# tome_select_spell: "Select a Spell"
# tome_select_a_thang: "Select Someone for "
# tome_available_spells: "Available Spells"
# hud_continue: "Continue (press shift-space)"
title: "Помогите перевести CodeCombat!"
sub_heading: "Нам нужен ваш языковой талант."
pitch_body: "Мы создаём CodeCombat на английском, но у нас уже есть игроки со всего мира. Многие из них хотели бы играть на русском, но не знают английского, так что если вы знаете оба этих языка - зарегистрируйтесь как Дипломат и помогите перевести сайт CodeCombat и все уровни на русский язык."
missing_translations: "Пока мы не перевели всё на русский язык, вы будете видеть английский текст в тех частях игры, которые ещё не переведены на русский."
learn_more: "Узнать о том, как стать Дипломатом"
subscribe_as_diplomat: "Зарегистрироваться как Дипломат"
account_settings:
title: "Настройки аккаунта"
not_logged_in: "Войдите или зарегистрируйтесь, чтобы изменить настройки."
autosave: "Настройки сохраняются автоматически"
me_tab: "Я"
picture_tab: "Аватар"
wizard_tab: "Волшебник"
password_tab: "Пароль"
emails_tab: "Email-адреса"
language_tab: "Язык"
gravatar_select: "Выберите, какое фото с Gravatar использовать"
gravatar_add_photos: "Чтобы выбрать изображение, добавьте фото и уменьшенные изображения в ваш Gravatar-аккаунт."
gravatar_add_more_photos: "Добавьте больше фото к вашему аккаунту в Gravatar, чтобы использовать их здесь."
wizard_color: "Цвет волос персонажа"
new_password: "Новый пароль"
new_password_verify: "Подтверждение пароля"
email_subscriptions: "Email-подписки"
email_announcements: "Оповещения"
email_announcements_description: "Получать email-оповещения о последних новостях CodeCombat."
contributor_emails: "Рассылки по классам участников"
contribute_prefix: "Нам нужны люди, которые присоединятся к нашей команде! Зайдите на "
contribute_page: "страницу участников,"
contribute_suffix: " чтобы узнать больше."
email_toggle: "Отметить всё"
language: "Язык"
saving: "Сохранение..."
error_saving: "Ошибка сохранения"
saved: "Изменения сохранены"
password_mismatch: "Пароли не совпадают."
account_profile:
edit_settings: "Изменить настройки"
profile_for_prefix: "Профиль для "
profile_for_suffix: ""
profile: "Профиль"
user_not_found: "Пользователь не найден. Пожалуйста, проверьте URL."
gravatar_not_found_mine: "Мы не можем найти профиль, связанный с:"
gravatar_signup_prefix: "Зарегистрироваться на "
gravatar_signup_suffix: " чтобы настроить профиль"
gravatar_not_found_other: "Нет профиля, связанного с почтой данного пользователя."
gravatar_contact: "Контакты"
gravatar_websites: "Сайты"
gravatar_accounts: "Как показано на"
gravatar_profile_link: "Полный профиль на Gravatar"
play_level:
level_load_error: "Уровень не может быть загружен."
done: "Готово"
grid: "Решетка"
customize_wizard: "Настройки волшебника"
home: "На главную"
guide: "Руководство"
multiplayer: "Мультиплеер"
restart: "Перезапустить"
goals: "Цели"
action_timeline: "Временная линия"
click_to_select: "Выберите персонажа, щелкнув на нем"
reload_title: "Перезагрузить код полностью?"
reload_really: "Вы уверены, что хотите начать уровень сначала?"
reload_confirm: "Перезагрузить всё"
victory_title_prefix: ""
victory_title_suffix: " Завершено"
victory_sign_up: "Подписаться на обновления"
victory_sign_up_poke: "Хотите получать последние новости по почте? Создайте бесплатный аккаунт, и мы будем держать вас в курсе!"
victory_rate_the_level: "Оцените уровень:"
victory_play_next_level: "Следующий уровень"
victory_go_home: "На главную"
victory_review: "Расскажите нам больше!"
victory_hour_of_code_done: "Вы закончили?"
victory_hour_of_code_done_yes: "Да, я закончил мой Час Кода!"
multiplayer_title: "Настройки Мультиплеера"
multiplayer_link_description: "Дай эту ссылку кому-нибудь, чтоб он присоединился к тебе."
multiplayer_hint_label: "Подсказка:"
multiplayer_hint: " Кликните на ссылку, чтобы выбрать все, затем нажмите Apple-С или Ctrl-C, чтобы скопировать ссылку."
multiplayer_coming_soon: "Больше возможностей мультиплеера на подходе!"
guide_title: "Руководство"
tome_minion_spells: "Заклинания ваших миньонов"
tome_read_only_spells: "Заклинания только для чтения"
tome_other_units: "Другие персонажи"
tome_cast_button_castable: "Читать заклинание"
tome_cast_button_casting: "Заклинание читается"
tome_cast_button_cast: "Заклинание прочитано"
tome_autocast_delay: "Задержка автоматического чтения"
tome_autocast_1: "1 секунда"
tome_autocast_3: "3 секунды"
tome_autocast_5: "5 секунд"
tome_autocast_manual: "Вручную"
tome_select_spell: "Выбрать заклинание"
tome_select_a_thang: "Выбрать кого-нибудь для "
tome_available_spells: "Доступные заклинания"
hud_continue: "Продолжить (нажмите Shift+Space)"

View file

@ -1,183 +1,183 @@
module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", translation:
common:
loading: "Loading..."
loading: "Laddar..."
modal:
close: "Stäng"
okay: "Okej"
not_found:
page_not_found: "Sidan kan inte hittas"
nav:
# Header
sign_up: "Skapa Konto"
log_in: "Logga In"
log_out: "Logga Ut"
play: "Spela"
editor: "Nivåredigerare"
blog: "Blogg"
forum: "Forum"
admin: "Admin"
# Footer
home: "Hem"
contribute: "Bidra"
legal: "Juridik"
about: "Om oss"
contact: "Kontakt"
twitter_follow: "Följ oss på Twitter"
forms:
name: "Namn"
email: "E-post"
message: "Meddelande"
cancel: "Avbryt"
login:
log_in: "Logga In"
sign_up: "skapa konto"
or: ", eller "
recover: "glömt lösenord"
signup:
description: "Det är gratis. Vi behöver bara lite information och sen är du redo att börja:"
email_announcements: "Mottag nyheter via e-post"
coppa: "13+ eller ej i USA"
coppa_why: "(Varför?)"
creating: "Skapar Konto..."
sign_up: "Skapa Konto"
or: "eller "
log_in: "logga in med lösenord"
home:
slogan: "Lär dig att koda Javascript genom att spela ett spel."
no_ie: "CodeCombat fungerar tyvärr inte i IE8 eller äldre."
no_mobile: "CodeCombat är inte designat för mobila enhter och kanske inte fungerar!"
play: "Spela"
play:
choose_your_level: "Välj din nivå"
adventurer_prefix: "Du kan hoppa till vilken nivå som helst här under, eller diskutera nivåer på "
adventurer_forum: "Äventyrarforumet"
adventurer_suffix: "."
campaign_beginner: "Nybörjarkampanj"
# campaign_beginner_description: ""
campaign_dev: "Slumpmässig Svårare Nivå"
campaign_dev_description: "... där du lär dig att hantera gränssnittet medan du gör något lite svårare."
campaign_multiplayer: "Flerspelararenor"
# campaign_multiplayer_description: ""
campaign_player_created: "Spelarskapade"
# campaign_player_created_description: ""
level_difficulty: "Svårighetsgrad: "
contact:
contact_us: "Kontakta CodeCombat"
welcome: "Kul att höra från dig! Använd formuläret för att skicka e-post till oss."
contribute_prefix: "Om du är intresserad av att bidra, koll in vår "
contribute_page: "bidragarsida"
contribute_suffix: "!"
# forum_prefix: ""
forum_page: "vårt forum"
forum_suffix: " istället."
sending: "Skickar..."
send: "Skicka Feedback"
# modal:
# close: "Close"
# okay: "Okay"
#
# not_found:
# page_not_found: "Page not found"
#
# nav:
# # Header
# sign_up: "Create Account"
# log_in: "Log In"
# log_out: "Log Out"
# play: "Play"
# editor: "Editor"
# blog: "Blog"
# forum: "Forum"
# admin: "Admin"
# # Footer
# home: "Home"
# contribute: "Contribute"
# legal: "Legal"
# about: "About"
# contact: "Contact"
# twitter_follow: "Follow"
#
# forms:
# name: "Name"
# email: "Email"
# message: "Message"
# cancel: "Cancel"
#
# login:
# log_in: "Log In"
# sign_up: "create new account"
# or: ", or "
# recover: "recover account"
#
# signup:
# description: "It's free. Just need a couple things and you'll be good to go:"
# email_announcements: "Receive announcements by email"
# coppa: "13+ or non-USA"
# coppa_why: "(Why?)"
# creating: "Creating Account..."
# sign_up: "Sign Up"
# or: "or "
# log_in: "log in with password"
#
# home:
# slogan: "Learn to Code JavaScript by Playing a Game"
# no_ie: "CodeCombat does not run in IE8 or older. Sorry!"
# no_mobile: "CodeCombat wasn't designed for mobile devices and may not work!"
# play: "Play"
#
# play:
# choose_your_level: "Choose Your Level"
# adventurer_prefix: "You can jump to any level below, or discuss the levels on "
# adventurer_forum: "the Adventurer forum"
# adventurer_suffix: "."
# campaign_beginner: "Beginner Campaign"
# campaign_beginner_description: "... in which you learn the wizardry of programming."
# campaign_dev: "Random Harder Levels"
# campaign_dev_description: "... in which you learn the interface while doing something a little harder."
# campaign_multiplayer: "Multiplayer Arenas"
# campaign_multiplayer_description: "... in which you code head-to-head against other players."
# campaign_player_created: "Player-Created"
# campaign_player_created_description: "... in which you battle against the creativity of your fellow <a href=\"/contribute#artisan\">Artisan Wizards</a>."
# level_difficulty: "Difficulty: "
#
# contact:
# contact_us: "Contact CodeCombat"
# welcome: "Good to hear from you! Use this form to send us email."
# contribute_prefix: "If you're interested in contributing, check out our "
# contribute_page: "contribute page"
# contribute_suffix: "!"
# forum_prefix: "For anything public, please try "
# forum_page: "our forum"
# forum_suffix: " instead."
# sending: "Sending..."
# send: "Send Feedback"
#
diplomat_suggestion:
# title: "Help translate CodeCombat!"
# sub_heading: "We need your language skills."
pitch_body: "We develop CodeCombat in English, but we already have players all over the world. Many of them want to play in Swedish but don't speak English, so if you can speak both, please consider signing up to be a Diplomat and help translate both the CodeCombat website and all the levels into Swedish."
missing_translations: "Until we can translate everything into Swedish, you'll see English when Swedish isn't available."
# learn_more: "Learn more about being a Diplomat"
# subscribe_as_diplomat: "Subscribe as a Diplomat"
#
# 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"
# wizard_tab: "Wizard"
# password_tab: "Password"
# emails_tab: "Emails"
# language_tab: "Language"
# 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."
# wizard_color: "Wizard Clothes Color"
# new_password: "New Password"
# new_password_verify: "Verify"
# email_subscriptions: "Email Subscriptions"
# email_announcements: "Announcements"
# 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."
# email_toggle: "Toggle All"
# language: "Language"
# saving: "Saving..."
# error_saving: "Error Saving"
# saved: "Changes Saved"
# password_mismatch: "Password does not match."
#
# account_profile:
# edit_settings: "Edit Settings"
# profile_for_prefix: "Profile for "
# profile_for_suffix: ""
# profile: "Profile"
# user_not_found: "No user found. Check the URL?"
# gravatar_not_found_mine: "We couldn't find your profile associated with:"
# gravatar_signup_prefix: "Sign up at "
# gravatar_signup_suffix: " to get set up!"
# gravatar_not_found_other: "Alas, there's no profile associated with this person's email address."
# gravatar_contact: "Contact"
# gravatar_websites: "Websites"
# gravatar_accounts: "As Seen On"
# gravatar_profile_link: "Full Gravatar Profile"
#
# play_level:
# level_load_error: "Level could not be loaded."
# done: "Done"
# grid: "Grid"
# customize_wizard: "Customize Wizard"
# home: "Home"
# guide: "Guide"
# multiplayer: "Multiplayer"
# restart: "Restart"
# goals: "Goals"
# action_timeline: "Action Timeline"
# click_to_select: "Click on a unit to select it."
# reload_title: "Reload All Code?"
# reload_really: "Are you sure you want to reload this level back to the beginning?"
# reload_confirm: "Reload All"
# victory_title_prefix: ""
# victory_title_suffix: " Complete"
# victory_sign_up: "Sign Up for Updates"
# victory_sign_up_poke: "Want to get the latest news by email? Create a free account and we'll keep you posted!"
# victory_rate_the_level: "Rate the level: "
# victory_play_next_level: "Play Next Level"
# victory_go_home: "Go Home"
# victory_review: "Tell us more!"
# victory_hour_of_code_done: "Are You Done?"
# victory_hour_of_code_done_yes: "Yes, I'm finished with my Hour of Code!"
# multiplayer_title: "Multiplayer Settings"
# multiplayer_link_description: "Give this link to anyone to have them join you."
# multiplayer_hint_label: "Hint:"
# multiplayer_hint: " Click the link to select all, then press Apple-C or Ctrl-C to copy the link."
# multiplayer_coming_soon: "More multiplayer features to come!"
# guide_title: "Guide"
# tome_minion_spells: "Your Minions' Spells"
# tome_read_only_spells: "Read-Only Spells"
# tome_other_units: "Other Units"
# tome_cast_button_castable: "Cast"
# tome_cast_button_casting: "Casting"
# tome_cast_button_cast: "Spell Cast"
# tome_autocast_delay: "Autocast Delay"
# tome_autocast_1: "1 second"
# tome_autocast_3: "3 seconds"
# tome_autocast_5: "5 seconds"
# tome_autocast_manual: "Manual"
# tome_select_spell: "Select a Spell"
# tome_select_a_thang: "Select Someone for "
# tome_available_spells: "Available Spells"
# hud_continue: "Continue (press shift-space)"
title: "Hjälp till att översätta CodeCombat!"
sub_heading: "Vi behöver dina språkliga kunskaper."
pitch_body: "Vi utvecklar CodeCombat på engelska, men vi har redan spelare världen över. Många av dem vill spela på svenska, men talar inte engelska, så om du talar båda språken, fundera på att registrera dig som Diplomat och hjälp till med översättningen av både hemsidan och alla nivår till svenska."
missing_translations: "Tills vi har översatt allting till svenska, så kommer du se engelska när det inte finns någon svensk översättning tillgänglig."
learn_more: "Läs mer om att vara en Diplomat"
subscribe_as_diplomat: "Registrera dig som Diplomat"
account_settings:
title: "Kontoinställningar"
not_logged_in: "Logga in eller skapa ett konto för att ändra dina inställningar."
autosave: "Ändringar Sparas Automatiskt"
me_tab: "Jag"
picture_tab: "Profilbild"
wizard_tab: "Trollkarl"
password_tab: "Lösenord"
emails_tab: "E-postadresser"
language_tab: "Språk"
gravatar_select: "Välj ett Gravatar foto att använda"
gravatar_add_photos: "Lägg till miniatyrbilder och fotografier i ett Gravatar konto kopplat till din mail för att välja profilbild."
gravatar_add_more_photos: "Lägg till mer fotografier till i ditt Gravatar konto för att använda dem här."
wizard_color: "Trollkarlens Klädfärg"
new_password: "Nytt Lösenord"
new_password_verify: "Verifiera"
email_subscriptions: "E-post Prenumerationer"
email_announcements: "Meddelanden"
email_announcements_description: "Få e-post med de senaste nyheterna och utvecklingen på CodeCombat."
# contributor_emails: ""
contribute_prefix: "Vi söker mer folk som vill var med och hjälpa till! Kolla in "
contribute_page: "bidragarsida"
contribute_suffix: " tför att få veta mer."
email_toggle: "Växla Alla"
language: "Språk"
saving: "Sparar..."
error_saving: "Ett Fel Uppstod Vid Sparningen"
saved: "Ändringar Sparade"
password_mismatch: "De angivna lösenorden stämmer inte överens."
account_profile:
edit_settings: "Ändra Inställningar"
profile_for_prefix: "Profil för "
profile_for_suffix: ""
profile: "Profil"
user_not_found: "Användaren du söker verkar inte finnas. Kolla adressen?"
gravatar_not_found_mine: "Vi kunde inte hitta en profil associerad med:"
gravatar_signup_prefix: "Registrera dig på "
gravatar_signup_suffix: " för att komma igång!"
gravatar_not_found_other: "Tyvärr, det finns ingen profil associerad med den här personens e-postadress."
gravatar_contact: "Kontakt"
gravatar_websites: "Hemsidor"
# gravatar_accounts: ""
gravatar_profile_link: "Hela Gravatar profilen"
play_level:
level_load_error: "Nivån kunde inte laddas."
done: "Klar"
grid: "Rutnät"
customize_wizard: "Finjustera Trollkarl"
home: "Hem"
guide: "Guide"
multiplayer: "Flerspelareläge"
restart: "Börja om"
goals: "Mål"
action_timeline: "Händelse-tidslinje"
click_to_select: "Klicka på en enhet för att välja den."
reload_title: "Ladda om all kod?"
reload_really: "Är du säker på att du vill ladda om nivån från början?"
reload_confirm: "Ladda om allt"
victory_title_prefix: ""
victory_title_suffix: " Genomförd"
victory_sign_up: "Registrera dig för att få uppdateringar"
victory_sign_up_poke: "Vill du ha de senaste nyheterna vi e-post? Skapa ett gratiskonto så håller vi dig informerad!"
victory_rate_the_level: "Betygsätt nivån: "
victory_play_next_level: "Spela Nästa Nivå"
victory_go_home: "Gå Hem"
victory_review: "Berätta mer!"
victory_hour_of_code_done: "Är Du Klar?"
victory_hour_of_code_done_yes: "Ja, jag är klar med min Hour of Code!"
multiplayer_title: "Flerspelarinställningar"
multiplayer_link_description: "Dela den här länken med alla som du vill spela med."
multiplayer_hint_label: "Tips:"
multiplayer_hint: " Klicka på länken för att välja allt, tryck sedan på Cmd-C eller Ctrl-C för att kopiera länken."
multiplayer_coming_soon: "Mer flerspelarlägen kommer!"
guide_title: "Guide"
tome_minion_spells: "Dina Soldaters Förmågor"
tome_read_only_spells: "Skrivskyddade Förmågor"
tome_other_units: "Andra Enheter"
# tome_cast_button_castable: ""
# tome_cast_button_casting: ""
# tome_cast_button_cast: ""
# tome_autocast_delay: ""
tome_autocast_1: "1 sekund"
tome_autocast_3: "3 sekunder"
tome_autocast_5: "5 sekunder"
tome_autocast_manual: "Manuellt"
tome_select_spell: "Välj en Förmåga"
tome_select_a_thang: "Välj Någon för "
tome_available_spells: "Tillgängliga Förmågor"
# hud_continue: ""

View file

@ -36,148 +36,147 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
login:
log_in: "登录"
sign_up: "注册"
or: ""
or: ""
recover: "找回账户"
signup:
description: "免费啊。先跟你讲两点你就可以开始了"
email_announcements: "收到邮件宣告"
description: "这是免费的。简单易学:"
email_announcements: "通过邮件接收通知"
# coppa: ""
coppa_why: "为什么?"
creating: "账户在创新中"
creating: "账户创建中..."
sign_up: "注册"
or: ""
log_in: "以密码登录"
log_in: "登录"
home:
slogan: "通过玩儿游戏学到Javascript脚本语言"
no_ie: "抱歉Internet Explorer 9等更旧的预览器打不开此网站"
# no_mobile: ""
no_mobile: "CodeCombat 不是针对手机设备设计的,所以可能不好用!"
play: ""
play:
choose_your_level: "选取难度"
# adventurer_prefix: ""
# adventurer_forum: ""
# adventurer_suffix: ""
# campaign_beginner: ""
# campaign_beginner_description: ""
# campaign_dev: ""
# campaign_dev_description: ""
# campaign_multiplayer: ""
# campaign_multiplayer_description: ""
# campaign_player_created: ""
# campaign_player_created_description: ""
adventurer_prefix: "你可以选择以下任意关卡,或者讨论以上的关卡 "
adventurer_forum: "冒险家论坛"
adventurer_suffix: "."
campaign_beginner: "新手作战"
campaign_beginner_description: "...在这里可以学到编程技巧。"
campaign_dev: "随机困难关卡"
campaign_dev_description: "...在这里你可以学到做一些复杂功能的接口。"
campaign_multiplayer: "多人竞技场"
campaign_multiplayer_description: "...在这里你可以和其他玩家们进行代码肉搏战。"
campaign_player_created: "已创建的玩家"
campaign_player_created_description: "...在这里你可以与你的小伙伴的创造力战斗 <a href=\"/contribute#artisan\">技术指导</a>."
level_difficulty: "难度"
contact:
contact_us: "联系我们"
# welcome: ""
# contribute_prefix: ""
# contribute_page: ""
# contribute_suffix: ""
# forum_prefix: ""
welcome: "很高兴收到你的信!用这个表格给我们发邮件。 "
contribute_prefix: "如果你想贡献代码,请看我们的 "
contribute_page: "贡献代码页面"
contribute_suffix: ""
forum_prefix: "对任何公共部分,放手去干吧 "
forum_page: "我们的论坛"
# forum_suffix: ""
sending: "发送中。。。"
forum_suffix: "代替。"
sending: "发送中。。。"
send: "意见反馈"
diplomat_suggestion:
title: "帮我们翻译CodeCombat"
sub_heading: "我们需要您的语言技能"
pitch_body: "We develop CodeCombat in English, but we already have players all over the world. Many of them want to play in Chinese (Simplified) but don't speak English, so if you can speak both, please consider signing up to be a Diplomat and help translate both the CodeCombat website and all the levels into Chinese (Simplified)."
pitch_body: "我们开发了CodeCombat的英文版但是现在我们的玩家遍布全球。很多人想玩中文简体版的却不会说英语所以如果你中英文都会请考虑一下参加我们的翻译工作帮忙把 CodeCombat 网站还有所有的关卡翻译成中文(简体)。"
# missing_translations: ""
# learn_more: ""
# subscribe_as_diplomat: ""
# account_settings:
# title: ""
# not_logged_in: ""
# autosave: ""
# me_tab: ""
# picture_tab: ""
# wizard_tab: ""
# password_tab: ""
# emails_tab: ""
# language_tab: ""
# gravatar_select: ""
# gravatar_add_photos: ""
# gravatar_add_more_photos: ""
# wizard_color: ""
# new_password: ""
# new_password_verify: ""
# email_subscriptions: ""
# email_announcements: ""
# email_announcements_description: ""
account_settings:
title: "账户设置"
not_logged_in: "登录或创建一个账户来修改设置。"
autosave: "自动保存修改"
me_tab: ""
picture_tab: "图片"
wizard_tab: "巫师"
password_tab: "密码"
emails_tab: "邮件"
gravatar_select: "选择使用 Gravatar 照片"
gravatar_add_photos: "添加小图和照片到一个 Gravatar 账户供你选择。"
gravatar_add_more_photos: "添加更多照片到你的 Gravatar 账户并查看。"
wizard_color: "巫师 衣服 颜色"
new_password: "新密码"
new_password_verify: "核实"
email_subscriptions: "邮箱验证"
email_announcements: "通知"
email_announcements_description: "接收关于 CodeCombat 最近的新闻和发展的邮件。"
# contributor_emails: ""
# contribute_prefix: ""
# contribute_page: ""
# contribute_suffix: ""
# email_toggle: ""
# language: ""
# saving: ""
# error_saving: ""
# saved: ""
# password_mismatch: ""
#
# account_profile:
# edit_settings: ""
# profile_for_prefix: ""
# profile_for_suffix: ""
# profile: ""
# user_not_found: ""
# gravatar_not_found_mine: ""
# gravatar_signup_prefix: ""
# gravatar_signup_suffix: ""
# gravatar_not_found_other: ""
# gravatar_contact: ""
# gravatar_websites: ""
contribute_prefix: "我们在寻找志同道合的人!请到 "
contribute_page: "贡献页面"
contribute_suffix: " 查看更多信息。"
email_toggle: "切换所有"
saving: "保存中..."
error_saving: "保存时出错"
saved: "保存修改"
password_mismatch: "密码不匹配。"
account_profile:
edit_settings: "编辑设置"
profile_for_prefix: "关于TA的基本资料"
profile_for_suffix: ""
profile: "基本资料"
user_not_found: "没有找到用户。检查URL"
gravatar_not_found_mine: "我们找不到TA的基本资料"
gravatar_not_found_email_suffix: "."
gravatar_signup_prefix: "去注册 "
gravatar_signup_suffix: " 去设置!"
gravatar_not_found_other: "哎呀,没有与这个人的邮箱相关的资料。"
gravatar_contact: "联系"
gravatar_websites: "网站"
# gravatar_accounts: ""
# gravatar_profile_link: ""
#
# play_level:
# level_load_error: ""
# done: ""
# grid: ""
# customize_wizard: ""
# home: ""
# guide: ""
# multiplayer: ""
# restart: ""
# goals: ""
# action_timeline: ""
# click_to_select: ""
# reload_title: ""
# reload_really: ""
# reload_confirm: ""
# victory_title_prefix: ""
# victory_title_suffix: ""
# victory_sign_up: ""
# victory_sign_up_poke: ""
# victory_rate_the_level: ""
# victory_play_next_level: ""
# victory_go_home: ""
# victory_review: ""
# victory_hour_of_code_done: ""
# victory_hour_of_code_done_yes: ""
# multiplayer_title: ""
# multiplayer_link_description: ""
# multiplayer_hint_label: ""
# multiplayer_hint: ""
# multiplayer_coming_soon: ""
# guide_title: ""
# tome_minion_spells: ""
# tome_read_only_spells: ""
# tome_other_units: ""
# tome_cast_button_castable: ""
# tome_cast_button_casting: ""
# tome_cast_button_cast: ""
# tome_autocast_delay: ""
# tome_autocast_1: ""
# tome_autocast_3: ""
# tome_autocast_5: ""
# tome_autocast_manual: ""
# tome_select_spell: ""
# tome_select_a_thang: ""
# tome_available_spells: ""
# hud_continue: ""
gravatar_profile_link: "完善 Gravatar 资料"
play_level:
level_load_error: "关卡不能载入。"
done: "完成"
grid: "格子"
customize_wizard: "自定义巫师"
home: "主页"
guide: "指南"
multiplayer: "多人游戏"
restart: "重新开始"
goals: "目标"
action_timeline: "行动时间轴"
click_to_select: "点击选择一个单元。"
reload_title: "重载所有代码?"
reload_really: "确定重载这一关,返回开始处吗?"
reload_confirm: "重载所有"
victory_title_prefix: ""
victory_title_suffix: " 完成"
victory_sign_up: "保存进度"
victory_sign_up_poke: "想保存你的代码?创建一个免费账户吧!"
victory_rate_the_level: "评估关卡: "
victory_play_next_level: "下一关"
victory_go_home: "返回主页"
victory_review: "给我们反馈!"
victory_hour_of_code_done: "你完成了吗?"
victory_hour_of_code_done_yes: "是的,俺完成了俺的代码!"
multiplayer_title: "多人游戏设置"
multiplayer_link_description: "把这个链接告诉小伙伴们,一起玩吧。"
multiplayer_hint_label: "提示:"
multiplayer_hint: " 点击全选,然后按 ⌘-C 或 Ctrl-C 复制链接。"
multiplayer_coming_soon: "多人游戏的更多特性!"
guide_title: "指南"
tome_minion_spells: "小助手的法术"
tome_read_only_spells: "只读的法术"
tome_other_units: "其他单元"
tome_cast_button_castable: "投掷"
tome_cast_button_casting: "投掷中"
tome_cast_button_cast: "施法"
tome_autocast_delay: "自动施法延迟"
tome_autocast_1: "1 秒"
tome_autocast_3: "3 秒"
tome_autocast_5: "5 秒"
tome_autocast_manual: "手动"
tome_select_spell: "选择一个法术"
tome_select_a_thang: "选择人物来 "
tome_available_spells: "可用的法术"
hud_continue: "继续 (按 shift-空格)"

View file

@ -18,19 +18,6 @@ module.exports = class ThangType extends CocoModel
resetRawData: ->
@set('raw', {shapes:{}, containers:{}, animations:{}})
requiredRawAnimations: ->
required = []
for name, action of @get('actions')
continue if name is 'portrait'
allActions = [action].concat(_.values (action.relatedActions ? {}))
for a in allActions when a.animation
scale = if name is 'portrait' then a.scale or 1 else a.scale or @get('scale') or 1
animation = {animation: a.animation, scale: scale}
animation.portrait = name is 'portrait'
unless _.find(required, (r) -> _.isEqual r, animation)
required.push animation
required
resetSpriteSheetCache: ->
@buildActions()
@spriteSheets = {}
@ -87,8 +74,7 @@ module.exports = class ThangType extends CocoModel
mc.nominalBounds = mc.frameBounds = null # override what the movie clip says on bounding
@builder.addMovieClip(mc, rect, scale)
frames = @builder._animations[portrait.animation].frames
frames = @normalizeFrames(portrait.frames, frames[0]) if portrait.frames?
portrait.frames = frames
frames = @mapFrames(portrait.frames, frames[0]) if portrait.frames?
@builder.addAnimation 'portrait', frames, true
else if portrait.container
s = @vectorParser.buildContainerFromStore(portrait.container)
@ -108,7 +94,6 @@ module.exports = class ThangType extends CocoModel
scale = action.scale ? @get('scale') ? 1
frames = framesMap[scale + "_" + action.animation]
frames = @mapFrames(action.frames, frames[0]) if action.frames?
action.frames = frames # Keep generated frame numbers around
next = true
next = action.goesTo if action.goesTo
next = false if action.loops is false
@ -120,7 +105,20 @@ module.exports = class ThangType extends CocoModel
s = @vectorParser.buildContainerFromStore(action.container)
frame = @builder.addFrame(s, s.bounds, scale)
@builder.addAnimation name, [frame], false
requiredRawAnimations: ->
required = []
for name, action of @get('actions')
continue if name is 'portrait'
allActions = [action].concat(_.values (action.relatedActions ? {}))
for a in allActions when a.animation
scale = if name is 'portrait' then a.scale or 1 else a.scale or @get('scale') or 1
animation = {animation: a.animation, scale: scale}
animation.portrait = name is 'portrait'
unless _.find(required, (r) -> _.isEqual r, animation)
required.push animation
required
mapFrames: (frames, frameOffset) ->
return frames unless _.isString(frames) # don't accidentally do this again
(parseInt(f, 10) + frameOffset for f in frames.split(','))
@ -148,11 +146,16 @@ module.exports = class ThangType extends CocoModel
getPortraitImage: (spriteOptionsOrKey, size=100) ->
src = @getPortraitSource(spriteOptionsOrKey, size)
return null unless src
$('<img />').attr('src', src)
getPortraitSource: (spriteOptionsOrKey, size=100) ->
stage = @getPortraitStage(spriteOptionsOrKey, size)
stage?.toDataURL()
getPortraitStage: (spriteOptionsOrKey, size=100) ->
key = spriteOptionsOrKey
key = if _.isObject(key) then @spriteSheetKey(key) else key
key = if _.isString(key) then key else @spriteSheetKey(@fillOptions(key))
spriteSheet = @spriteSheets[key]
spriteSheet ?= @buildSpriteSheet({portraitOnly:true})
return unless spriteSheet
@ -165,11 +168,21 @@ module.exports = class ThangType extends CocoModel
sprite.gotoAndStop 'portrait'
stage.addChild(sprite)
stage.update()
stage.toDataURL()
stage.startTalking = ->
sprite.gotoAndPlay 'portrait'
return if @tick
@tick = => @update()
createjs.Ticker.addEventListener 'tick', @tick
stage.stopTalking = ->
sprite.gotoAndStop 'portrait'
@update()
createjs.Ticker.removeEventListener 'tick', @tick
@tick = null
stage
uploadGenericPortrait: (callback) ->
src = @getPortraitSource()
return unless src
return callback?() unless src
src = src.replace('data:image/png;base64,', '').replace(/\ /g, '+')
body =
filename: 'portrait.png'

View file

@ -98,6 +98,7 @@ h1 h2 h3 h4
font-size: 25px
letter-spacing: 1px
color: #ffffff
cursor: pointer
a[data-toggle="modal"]
cursor: pointer

View file

@ -60,7 +60,7 @@
.no-selection-message
display: none
.thang-image-wrapper, .speaker-image-wrapper
.thang-canvas-wrapper, .speaker-image-wrapper
width: 100px
height: 100px
border: 1px solid darkred
@ -71,9 +71,11 @@
&.team-humans
border-color: darkred
background-color: rgba(255,100,100,0.5)
&.team-ogres
border-color: darkblue
background-color: rgba(100,100,255,0.5)
.thang-props
width: 144px

View file

@ -73,3 +73,7 @@
//.ace_scroller
// background-color: #470000
.ace_marker-layer
.ace_bracket
// Override faint gray
border-color: #0FF

View file

@ -33,8 +33,6 @@ block content
| ,
a(href="https://www.facebook.com/codecombat") Facebook
| ,
a(href="http://www.reddit.com/r/CodeCombat/") Reddit
| ,
a(href="https://twitter.com/CodeCombat") Twitter
| , and
a(href="https://plus.google.com/115285980638641924488/posts") Google+

View file

@ -149,8 +149,6 @@ block content
| ,
a(href="https://www.facebook.com/codecombat") Facebook
| ,
a(href="http://www.reddit.com/r/CodeCombat/") Reddit
| ,
a(href="https://twitter.com/CodeCombat") Twitter
| , and
a(href="https://plus.google.com/115285980638641924488/posts") Google+

View file

@ -2,8 +2,8 @@
.center
.thang-image-wrapper.thang-elem
img.thang-image
.thang-canvas-wrapper.thang-elem
canvas.thang-canvas
.thang-props.thang-elem
.thang-name
@ -17,9 +17,6 @@
tbody
.dialogue-area
.speaker-image-wrapper
canvas.thang-canvas(width=100, height=100)
img.speaker-image
p.bubble.dialogue-bubble
.no-selection-message

View file

@ -166,7 +166,7 @@ module.exports = class ThangTypeEditView extends View
@file = e.target.files[0]
return unless @file
return unless @file.type is 'text/javascript'
@$el.find('#upload-button').prop('disabled', true)
# @$el.find('#upload-button').prop('disabled', true)
@reader = new FileReader()
@reader.onload = @onFileLoad
@reader.readAsText(@file)
@ -301,7 +301,7 @@ module.exports = class ThangTypeEditView extends View
res.success =>
url = "/editor/thang/#{newThangType.get('slug') or newThangType.id}"
newThangType.uploadGenericPortrait =>
newThangType.uploadGenericPortrait ->
document.location.href = url
clearRawData: ->

View file

@ -3,32 +3,32 @@ template = require 'templates/play/level/hud'
prop_template = require 'templates/play/level/hud_prop'
action_template = require 'templates/play/level/hud_action'
DialogueAnimator = require './dialogue_animator'
spriteUtils = require 'lib/surface/sprite_utils'
module.exports = class HUDView extends View
id: 'thang-hud'
template: template
dialogueMode: false
constructor: (options) ->
@thangIDMap = {}
super options
subscriptions:
'surface:frame-changed': 'onFrameChanged'
'level-disable-controls': 'onDisableControls'
'level-enable-controls': 'onEnableControls'
'surface:sprite-selected': 'onSpriteSelected'
'sprite:speech-updated': 'onSpriteDialogue'
'level-sprite-clear-dialogue': 'onSpriteClearDialogue'
'level-disable-controls': 'onDisableControls'
'level-enable-controls': 'onEnableControls'
'level:shift-space-pressed': 'onShiftSpacePressed'
'god:new-world-created': 'onNewWorldCreated'
'surface:ticked': 'onTick'
'level:escape-pressed': 'onEscapePressed'
'dialogue-sound-completed': 'onDialogueSoundCompleted'
'thang-began-talking': 'onThangBeganTalking'
'thang-finished-talking': 'onThangFinishedTalking'
events:
'click': -> Backbone.Mediator.publish 'focus-editor'
afterRender: =>
super()
@$el.addClass 'no-selection'
onFrameChanged: (e) ->
@timeProgress = e.progress
@update()
@ -41,100 +41,81 @@ module.exports = class HUDView extends View
return if e.controls and not ('hud' in e.controls)
@disabled = false
onNewWorldCreated: (e) ->
@thangIDMap = {}
for thang in e.world.thangs
if @thang?.id is thang.id
#console.log('HUD updated thang for', thang.id)
@thang = thang
@createActions()
@thangIDMap[thang.id] = thang.spriteName
onSpriteSelected: (e) ->
# TODO: this allows the surface and HUD selection to get out of sync if we select another unit while in dialogue mode
return if @disabled or @dialogueMode
@switchToThangElements()
@setThang e.thang
@setThang e.thang, e.sprite?.thangType
onSpriteDialogue: (e) ->
return unless e.message
spriteID = e.sprite.thang.id
spriteName = e.sprite.thangType?.get('name') or e.sprite.thang.spriteName
@setSpeaker spriteID, spriteName
@startAnimation spriteID
@setSpeaker e.sprite
@stage?.startTalking()
@setMessage(e.message, e.mood, e.responses)
window.tracker?.trackEvent 'Heard Sprite', {speaker: spriteID, message: e.message, label: e.message}, ['Google Analytics']
startAnimation: (spriteID) =>
@speakerStage.removeAllChildren()
#spriteData = spriteMap.dataForThang(spriteID)
spriteData = null # we deleted SpriteMap, but haven't refactored to use vector animated portraits yet
canvas = $('canvas', @$el)
image = $('.speaker-image', @$el)
if spriteData?.sprite_data?.animations.portrait
image.hide()
canvas.show()
else
image.show()
canvas.hide()
return
onDialogueSoundCompleted: ->
return unless @portraitSprite
@portraitSprite.gotoAndPlay('portrait_idle')
onTick: ->
@speakerStage.update()
@stage?.stopTalking()
onSpriteClearDialogue: ->
@clearSpeaker()
afterRender: =>
super()
@$el.addClass 'no-selection'
@speakerStage = new createjs.Stage($('canvas', @$el)[0])
setThang: (thang) ->
setThang: (thang, thangType) ->
unless @speaker
if not thang? and not @thang? then return
if thang? and @thang? and thang.id is @thang.id then return
@thang = thang
@thangType = thangType
@$el.toggleClass 'no-selection', not @thang?
clearTimeout @hintNextSelectionTimeout
@$el.find('.no-selection-message').hide()
if not @thang
@hintNextSelectionTimeout = _.delay((=> @$el.find('.no-selection-message').slideDown('slow')), 10000)
return
@createAvatar @thang.id, @sprite
@createAvatar thangType
@createProperties()
@createActions()
@update()
@speaker = null
setSpeaker: (speaker, speakerType) ->
return if speaker is @speaker
image = @$el.find '.speaker-image'
spriteUtils.createAvatar @thangIDMap[speakerType] or speakerType, image
@speaker = speaker
setSpeaker: (speakerSprite) ->
return if speakerSprite is @speakerSprite
@speakerSprite = speakerSprite
@speaker = @speakerSprite.thang.id
@createAvatar @speakerSprite.thangType
@$el.removeClass 'no-selection'
@switchToDialogueElements()
clearSpeaker: ->
if not @thang
@$el.addClass 'no-selection'
#console.log "clearSpeaker and have thang", @thang
@setThang @thang
@setThang @thang, @thangType
@switchToThangElements()
@speaker = null
@speakerSprite = null
@bubble = null
@update()
createAvatar: (id) ->
image = @$el.find '.thang-image'
spriteUtils.createAvatar @thangIDMap[id] or id, image
image.attr('title', id).parent().removeClass('team-ogres').removeClass('team-humans').addClass('team-' + @thang.team)
createAvatar: (thangType) ->
stage = thangType.getPortraitStage()
wrapper = @$el.find '.thang-canvas-wrapper'
newCanvas = $(stage.canvas).addClass('thang-canvas')
wrapper.empty().append(newCanvas)
team = @thang?.team or @speakerSprite?.thang?.team
newCanvas.parent().removeClass('team-ogres').removeClass('team-humans').addClass("team-#{team}")
stage.update()
@stage?.stopTalking()
@stage = stage
onThangBeganTalking: (e) ->
return unless @stage and @thang is e.thang
@stage?.startTalking()
onThangFinishedTalking: (e) ->
return unless @stage and @thang is e.thang
@stage?.stopTalking()
createProperties: ->
props = @$el.find('.thang-props')
@ -174,7 +155,7 @@ module.exports = class HUDView extends View
response.button = $('button:last', group)
else
s = $.i18n.t('play_level.hud_continue', defaultValue: "Continue (press shift-space)")
if @shiftSpacePressed > 4
if @shiftSpacePressed > 4 and not @escapePressed
group.append('<span class="hud-hint">Press esc to skip dialog</span>')
group.append($('<button class="btn btn-small banner with-dot">' + s + ' <div class="dot"></div></button>'))
@lastResponses = null
@ -206,6 +187,9 @@ module.exports = class HUDView extends View
r = @lastResponses[@lastResponses.length - 1]
_.delay (-> Backbone.Mediator.publish(r.channel, r.event)), 10
onEscapePressed: (e) ->
@escapePressed = true
animateEnterButton: =>
return unless @bubble
button = $('.enter', @bubble)
@ -215,6 +199,7 @@ module.exports = class HUDView extends View
switchToDialogueElements: ->
@dialogueMode = true
$('.thang-elem', @$el).addClass('hide')
@$el.find('.thang-canvas-wrapper').removeClass('hide')
$('.dialogue-area', @$el)
.removeClass('hide')
.animate({opacity:1.0}, 200)
@ -231,11 +216,8 @@ module.exports = class HUDView extends View
update: ->
return unless @thang and not @speaker
# Update avatar?
# Update properties
@updatePropElement(prop, @thang[prop]) for prop in @thang.hudProperties ? []
# Update action timeline
@updateActions()
@ -339,3 +321,7 @@ module.exports = class HUDView extends View
timeline.append bar
ael
destroy: ->
super()
@stage?.stopTalking()

View file

@ -92,9 +92,9 @@ module.exports = class VictoryModal extends View
afterInsert: ->
super()
Backbone.Mediator.publish 'play-sound', trigger: "victory"
gapi?.plusone.go @$el[0]
FB?.XFBML.parse @$el[0]
twttr?.widgets?.load()
gapi?.plusone?.go? @$el[0]
FB?.XFBML?.parse? @$el[0]
twttr?.widgets?.load?()
onHidden: ->
Backbone.Mediator.publish 'level:victory-hidden'

View file

@ -1,6 +1,6 @@
View = require 'views/kinds/CocoView'
template = require 'templates/play/level/thang_avatar'
{createAvatarURL} = require 'lib/surface/sprite_utils'
ThangType = require 'models/ThangType'
module.exports = class ThangAvatarView extends View
className: 'thang-avatar-view'
@ -17,7 +17,10 @@ module.exports = class ThangAvatarView extends View
getRenderData: (context={}) =>
context = super context
context.thang = @thang
context.avatarURL = createAvatarURL @thang.spriteName
thangs = @supermodel.getModels(ThangType)
thangs = (t for t in thangs when t.get('name') is @thang.spriteName)
thang = thangs[0]
context.avatarURL = thang.getPortraitSource()
context.includeName = @includeName
context

View file

@ -7,7 +7,7 @@ module.exports = class Spell
view: null
entryView: null
constructor: (programmableMethod, @spellKey, @pathComponents, @session) ->
constructor: (programmableMethod, @spellKey, @pathComponents, @session, @supermodel) ->
p = programmableMethod
@name = p.name
@source = @session.getSourceFor(@spellKey) ? p.source
@ -17,7 +17,8 @@ module.exports = class Spell
@thangs = {}
@view = new SpellView {spell: @, session: @session}
@view.render() # Get it ready and code loaded in advance
@tabView = new SpellListTabEntryView spell: @
console.log 'spell creates tab entry view', @supermodel
@tabView = new SpellListTabEntryView spell: @, supermodel: @supermodel
@tabView.render()
addThang: (thang) ->

View file

@ -23,7 +23,7 @@ module.exports = class SpellListEntryThangsView extends View
@avatars = []
spellName = @spell.name
for thang in @thangs
avatar = new ThangAvatarView thang: thang, includeName: true
avatar = new ThangAvatarView thang: thang, includeName: true, supermodel: @supermodel
@$el.append avatar.el
avatar.render()
avatar.setSelected thang is @thang

View file

@ -45,7 +45,7 @@ module.exports = class SpellListEntryView extends View
super()
return unless @options.showTopDivider # Don't repeat Thang avatars when not changed from previous entry
return unless spellThang = @getPrimarySpellThang()
@avatar = new ThangAvatarView thang: spellThang.thang, includeName: false
@avatar = new ThangAvatarView thang: spellThang.thang, includeName: false, supermodel: @supermodel
@$el.prepend @avatar.el # Before rendering, so render can use parent for popover
@avatar.render()
@avatar.setSharedThangs _.size @spell.thangs
@ -69,7 +69,7 @@ module.exports = class SpellListEntryView extends View
showThangs: =>
clearTimeout @hideThangsTimeout if @hideThangsTimeout
return if @thangsView
@thangsView = new SpellListEntryThangsView thangs: (spellThang.thang for thangID, spellThang of @spell.thangs), thang: @getPrimarySpellThang().thang, spell: @spell
@thangsView = new SpellListEntryThangsView thangs: (spellThang.thang for thangID, spellThang of @spell.thangs), thang: @getPrimarySpellThang().thang, spell: @spell, supermodel: @supermodel
@thangsView.render()
@$el.append @thangsView.el
@thangsView.$el.mouseenter (e) => @onMouseEnterAvatar()

View file

@ -1,7 +1,6 @@
SpellListEntryView = require './spell_list_entry_view'
ThangAvatarView = require 'views/play/level/thang_avatar_view'
template = require 'templates/play/level/tome/spell_list_tab_entry'
{createAvatarURL} = require 'lib/surface/sprite_utils'
Docs = require 'lib/world/docs'
module.exports = class SpellListTabEntryView extends SpellListEntryView
@ -35,7 +34,7 @@ module.exports = class SpellListTabEntryView extends SpellListEntryView
@buildDocs() unless @docsBuilt
buildAvatar: ->
avatar = new ThangAvatarView thang: @thang, includeName: false
avatar = new ThangAvatarView thang: @thang, includeName: false, supermodel: @supermodel
if @avatar
@avatar.$el.replaceWith avatar.$el
@avatar.destroy()

View file

@ -59,7 +59,7 @@ module.exports = class SpellListView extends View
theseThangs = _.keys(spell.thangs)
changedThangs = not lastThangs or not _.isEqual theseThangs, lastThangs
lastThangs = theseThangs
@entries.push entry = new SpellListEntryView spell: spell, showTopDivider: changedThangs
@entries.push entry = new SpellListEntryView spell: spell, showTopDivider: changedThangs, supermodel: @supermodel
for entry in @entries
@$el.append entry.el
entry.render() # Render after appending so that we can access parent container for popover

View file

@ -42,7 +42,7 @@ module.exports = class ThangListEntryView extends View
afterRender: ->
super()
@avatar = new ThangAvatarView thang: @thang, includeName: true
@avatar = new ThangAvatarView thang: @thang, includeName: true, supermodel: @supermodel
@$el.append @avatar.el # Before rendering, so render can use parent for popover
@avatar.render()
@avatar.setSharedThangs @spells.length # A bit weird to call it sharedThangs; could refactor if we like this

View file

@ -62,7 +62,7 @@ module.exports = class ThangListView extends View
section = @$el.find(section).toggle thangs.length > 0
for thang in thangs
spells = _.filter @spells, (s) -> thang.id of s.thangs
entry = new ThangListEntryView thang: thang, spells: spells, permission: permission
entry = new ThangListEntryView thang: thang, spells: spells, permission: permission, supermodel: @supermodel
section.find('.thang-list').append entry.el # Render after appending so that we can access parent container for popover
entry.render()
@entries.push entry

View file

@ -52,15 +52,12 @@ module.exports = class TomeView extends View
'click #spell-view': 'onSpellViewClick'
'click': -> Backbone.Mediator.publish 'focus-editor'
constructor: (options) ->
super options
afterRender: ->
super()
programmableThangs = _.filter @options.thangs, 'isProgrammable'
@createSpells programmableThangs # Do before spellList, thangList, and castButton
@spellList = @insertSubView new SpellListView spells: @spells
@thangList = @insertSubView new ThangListView spells: @spells, thangs: @options.thangs
@spellList = @insertSubView new SpellListView spells: @spells, supermodel: @supermodel
@thangList = @insertSubView new ThangListView spells: @spells, thangs: @options.thangs, supermodel: @supermodel
@castButton = @insertSubView new CastButtonView spells: @spells
createSpells: (programmableThangs) ->
@ -80,7 +77,7 @@ module.exports = class TomeView extends View
spellKey = pathComponents.join '/'
@thangSpells[thang.id].push spellKey
unless method.cloneOf
spell = @spells[spellKey] = new Spell method, spellKey, pathPrefixComponents.concat(pathComponents), @options.session
spell = @spells[spellKey] = new Spell method, spellKey, pathPrefixComponents.concat(pathComponents), @options.session, @supermodel
for thangID, spellKeys of @thangSpells
thang = world.getThangByID(thangID)
@spells[spellKey].addThang thang for spellKey in spellKeys

View file

@ -128,7 +128,7 @@ module.exports = class PlayLevelView extends View
ctx.fillText("Loaded #{@modelsLoaded} thingies",50,50)
insertSubviews: ->
@insertSubView @tome = new TomeView levelID: @levelID, session: @session, thangs: @world.thangs
@insertSubView @tome = new TomeView levelID: @levelID, session: @session, thangs: @world.thangs, supermodel: @supermodel
@insertSubView new PlaybackView {}
@insertSubView new GoalsView {}
@insertSubView new HUDView {}

View file

@ -33,7 +33,7 @@ class DirectoryController(object):
shutil.rmtree(self.root_dir + os.sep + "coco" + os.sep + "node_modules",ignore_errors=True) #just in case
try:
if os.path.exists(self.tmp_directory):
self.remove_directories()
self.remove_tmp_directory()
os.mkdir(self.tmp_directory)
except:
raise errors.CoCoError(u"There was an error creating the directory structure, do you have correct permissions? Please remove all and start over.")

View file

@ -119,6 +119,7 @@ checkExistence = (options, res, force, done) ->
returnConflict(res)
done(true)
else if files.length
q = { _id: files[0]._id }
q.root = 'media'
Grid.gfs.remove q, (err) ->
return returnServerError(res) if err

View file

@ -7,8 +7,9 @@ describe '/file', ->
it 'deletes all the files first', (done) ->
dropGridFS ->
done()
it 'posts good', (done) ->
it 'no admin users can\'t post files', (done) ->
options = {
uri:url
json: {
@ -18,12 +19,31 @@ describe '/file', ->
description: 'None!'
}
}
func = (err, res, body) ->
expect(res.statusCode).toBe(403)
expect(body.metadata).toBeUndefined()
done()
request.post(options, func)
# FIXME fatal error
xit 'posts good', (done) ->
options = {
uri:url
json: {
url: 'http://scotterickson.info/images/where-are-you.jpg'
filename: 'where-are-you.jpg'
mimetype: 'image/jpeg'
description: 'None!'
}
}
func = (err, res, body) ->
expect(res.statusCode).toBe(200)
expect(body.metadata.description).toBe('None!')
files.push(body)
collection = mongoose.connection.db.collection('media.files')
collection.findOne {}, (err, result) ->
expect(result.metadata.name).toBe('Where are you')
@ -49,17 +69,18 @@ describe '/file', ->
request.get {uri:url+'/thiswillnotwork'}, (err, res) ->
expect(res.statusCode).toBe(404)
done()
it 'posts data directly', (done) ->
# FIXME fatal error
xit 'posts data directly', (done) ->
options = {
uri:url
}
func = (err, res, body) ->
expect(res.statusCode).toBe(200)
body = JSON.parse(body)
expect(body.metadata.description).toBe('rando-info')
files.push(body)
@ -67,7 +88,7 @@ describe '/file', ->
collection.find({_id:mongoose.Types.ObjectId(body._id)}).toArray (err, results) ->
expect(results[0].metadata.name).toBe('Ittybitty')
done()
# the only way I could figure out how to get request to do what I wanted...
r = request.post(options, func)
form = r.form()

View file

@ -24,7 +24,7 @@ describe 'LevelSystem', ->
it 'can make a LevelSystem, without setting official.', (done) ->
loginJoe (joe) ->
request.post {uri:url, json:system}, (err, res, body) ->
request.post {uri:url, json:systems}, (err, res, body) ->
expect(res.statusCode).toBe(200)
expect(body.official).toBeUndefined()
systems[0] = body

View file

@ -81,7 +81,8 @@ describe 'PUT /db/user', ->
done()
form = req.form()
form.append('_id', joe.id)
form.append('email', "farghlarghlfarghlarghlfarghlarghlfarghlarghlfarghlarghlfarghlarghlfarghlarghlfarghlarghlfarghlarghlfarghlarghlfarghlarghlfarghlarghlfarghlarghlfarghlarghl")
form.append('email', "farghlarghlfarghlarghlfarghlarghlfarghlarghlfarghlarghlfarghlar
ghlfarghlarghlfarghlarghlfarghlarghlfarghlarghlfarghlarghlfarghlarghlfarghlarghlfarghlarghl")
it 'logs in as admin', (done) ->
loginAdmin -> done()