i18n/nb: wording, punctuation.

i18n/nb: wording, punctuation.

--- app/locale/nb.coffee
+++ app/locale/nb.coffee
@@ -780,11 +780,11 @@
     edit_article_title: "Rediger Artikkel"

   contribute:
-    page_title: "Bidrag"
+    page_title: "Bidra"
     intro_blurb: "CodeCombat er 100% åpen kildekode! Hundrevis av dedikerte spillere har hjulpet oss å bygge spillet til det det er blitt i dag. Foren deg med oss og bli med og skriv neste kapittel i CodeCombat sin søken etter å lære hele verden koding!"
     alert_account_message_intro: "Heisann!"
     alert_account_message: "For å abonnere på klasse-eposter må du være logget inn først."
-    archmage_introduction: "En av de beste tingene med å lage spill er at det bestaår av så mye forskjellig. Grafikk, lyd, sanntidsnettverk, sosiale nettverk, og selvfølgelig mange av de vanlige aspektene ved programmering, fra lav-nivå database drift og server administrasjon til design og bygging av brukergrensesnitt. Det er mye å gjøre og hvis du er en erfaren utvikler som har lyst til å dykke ned i de tekniske detaljene i CodeCombat, da er dette kanskje klassen for deg. Vi vil veldig gjerne ha din hjelp til å lage det beste programmeringsspillet noensinne."
+    archmage_introduction: "En av de beste tingene med å lage spill er at det består av så mye forskjellig. Grafikk, lyd, sanntidsnettverk, sosiale nettverk, og selvfølgelig mange av de vanlige aspektene ved programmering, fra lav-nivå database drift og serveradministrasjon til design og bygging av brukergrensesnitt. Det er mye å gjøre og hvis du er en erfaren utvikler som har lyst til å dykke ned i de tekniske detaljene i CodeCombat, da er dette kanskje klassen for deg. Vi vil veldig gjerne ha din hjelp til å lage det beste programmeringsspillet noensinne."
     class_attributes: "Klasseegenskaper"
     archmage_attribute_1_pref: "Kunnskap om "
     archmage_attribute_1_suf: ", eller lyst til å lære. Mesteparten av koden vår er skrevet i dette språket. Hvis du liker Python eller Ruby vil du føle deg hjemme. Det er JavaScript, men med en hyggeligere syntaks."
@@ -813,9 +813,9 @@
     adventurer_attribute_2: "Karismatisk. Vær hyggelig men tydelig på hvor det trengs forbedringer, og kom med forslag til hvordan ting kan bli bedre."
     adventurer_join_pref: "Finn (eller rekrutter!) en Artisan og jobb sammen med dem, eller kryss av i boksen under for å motta epost når det er nye brett som må testes. Vi poster også om brett som trenger testing på nettverkene våre, som"
     adventurer_forum_url: "forumet vårt"
-    adventurer_join_suf: ", så hvis du foretrekker å få varsler derfra i stedet kan du registrere deg der!"
+    adventurer_join_suf: "så hvis du foretrekker å få varsler derfra i stedet kan du registrere deg der!"
     adventurer_subscribe_desc: "Få epost når det er nye brett som må testes."
-    scribe_introduction_pref: "CodeCombat skal ikke bare være en samling av brett. Det skal også være en kilde til kunnskap, en wiki med programmeringskonsepter som kan brukes i brettene. Slik at i stedet for at hver Artisan må forklare i detalj hva en sammenligningsoperator er kan de bare linke brettet sitt til en eksisterende Artikkelen som forklarer konseptet. Noe lignende det som "
+    scribe_introduction_pref: "CodeCombat skal ikke bare være en samling med brett. Det skal også være en kilde til kunnskap, en wiki med programmeringskonsepter som kan brukes i brettene. Slik at i stedet for at hver Artisan må forklare i detalj hva en sammenligningsoperator er kan de bare linke brettet sitt til en eksisterende artikkelen som forklarer konseptet. Noe lignende det som "
     scribe_introduction_url_mozilla: "Mozilla Developer Network"
     scribe_introduction_suf: " har bygget opp. Hvis du synes det gøy å forklare programmeringskonsepter i Markdown format, da er denne klassen kanskje for deg."
     scribe_attribute_1: "Å være flink med ord er egentlig det eneste som trengs. Ikke bare grammatikk og rettskriving, men også evne til å formidle kompliserte konsepter til andre."
@@ -823,7 +823,7 @@
     scribe_join_description: "fortell oss litt om deg selv, din erfaring med programmering og hva slags ting du har lyst til å skrive om. Så tar vi det derfra!"
     scribe_subscribe_desc: "Få epost om kunngjøringer relatert til artikkelskriving."
     diplomat_introduction_pref: "Hvis det er en ting vi lærte av "
-    diplomat_launch_url: "lanseringen i Oktober"
+    diplomat_launch_url: "lanseringen i oktober"
     diplomat_introduction_suf: "så er det at det er stor interesse for CodeCombat i andre land! Vi bygger et korps av oversettere som er ivrige etter å gjøre om ett sett av ord til et annet sett av ord, slik at CodeCombat blir tilgengelig i så store deler av verden som mulig. Hvis du liker å få sniktitte på kommende innhold og å bringe disse brettene til dine lansdmenn fortere enn svint, da er denne klassen kanskje for deg."
     diplomat_attribute_1: "Gode kunnskaper i engelsk og det språket du vil oversette til. Når man skal formidle kompliserte konsepter er det viktig å mestre begge språkene godt!"
     diplomat_i18n_page_prefix: "Du kan beynne å oversette brett ved å gå til vår"
@@ -833,7 +833,7 @@
     diplomat_github_url: "på GitHub"
     diplomat_join_suf_github: ", rediger den online, og send oss en 'pull request'. Og kryss av i boksen under for å motta oppdateringer relatert til internasjonalisering!"
     diplomat_subscribe_desc: "Få epost om i18n oppdateringer og nye brett som må oversettes."
-    ambassador_introduction: "Det er et felleskap vi prøver å bygge her, og dere er bindeleddene. Vi har Olark chat, epost, og sosiale nettverkmed mange mennesker så snakke med og hjelpe med å bli bedre kjent med spillet. Hvis du vil hjelpe folk å bli mer involvert, ha det gøy, og får en god følelse av stemningen i CodeCombat og hva vi prøver å få til, da er denne klassen kanskje for deg.."
+    ambassador_introduction: "Det er et felleskap vi prøver å bygge her, og dere er bindeleddene. Vi har forum, chat, epost, og sosiale nettverk med mange mennesker å snakke med, og hjelpe til å bli bedre kjent med spillet, og lære fra. Hvis du vil hjelpe folk å bli mer involvert og ha det gøy, og får en god følelse av stemningen i CodeCombat og hva vi prøver å få til, da er denne klassen kanskje for deg.."
     ambassador_attribute_1: "Flink til å kommunisere. Flink til å identifisere problemene spillere har og hjelpe dem med å løse dem. Og i tillegg holde resten av oss informert om hva spillerne sier, hva de liker og ikke liker, og hva de vil ha mer av!"
     ambassador_join_desc: "fortell oss litt om deg selv, hva du har drevet med tidligere og hva du er interessert i å gjøre. Så tar vi det derfra!"
     ambassador_join_note_strong: "Merk"


Update nl.coffee

Update nl.coffee

--- app/locale/nl.coffee
+++ app/locale/nl.coffee
@@ -1,95 +1,95 @@
 module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", translation:

   new_home:
-#    title: "CodeCombat - Coding games to learn Python and JavaScript"
-#    meta_description: "Learn typed code through a programming game. Learn Python, JavaScript, and HTML as you solve puzzles and learn to make your own coding games and websites."
-#    built_for_teachers_title: "A Coding Game Built with Teachers in Mind"
-#    built_for_teachers_blurb: "Teaching kids to code can often feel overwhelming. CodeCombat helps all educators teach students how to code in either JavaScript or Python, two of the most popular programming languages. With a comprehensive curriculum that includes six computer science units and reinforces learning through project-based game development and web development units, kids will progress on a journey from basic syntax to recursion!"
-#    built_for_teachers_subtitle1: "Computer Science"
-#    built_for_teachers_subblurb1: "Starting with our free Introduction to Computer Science course, students master core coding concepts such as while/for loops, functions, and algorithms."
-#    built_for_teachers_subtitle2: "Game Development"
-#    built_for_teachers_subblurb2: "Learners construct mazes and use basic input handling to code their own games that can be shared with friends and family."
-#    built_for_teachers_subtitle3: "Web Development"
-#    built_for_teachers_subblurb3: "Using HTML, CSS, and jQuery, learners flex their creative muscles to program their own webpages with a custom URL to share with their classmates."
-#    century_skills_title: "21st Century Skills"
-#    century_skills_blurb1: "Students Don't Just Level Up Their Hero, They Level Up Themselves"
-#    century_skills_quote1: "You mess up…so then you think about all of the possible ways to fix it, and then try again. I wouldn't be able to get here without trying hard."
-#    century_skills_subtitle1: "Critical Thinking"
-#    century_skills_subblurb1: "With coding puzzles that are naturally scaffolded into increasingly challenging levels, CodeCombat's programming game ensures kids are always practicing critical thinking."
-#    century_skills_quote2: "Everyone else was making mazes, so I thought, ‘capture the flag’ and that’s what I did."
-#    century_skills_subtitle2: "Creativity"
-#    century_skills_subblurb2: "CodeCombat encourages students to showcase their creativity by building and sharing their own games and webpages."
-#    century_skills_quote3: "If I got stuck on a level. I would work with people around me until we were all able to figure it out."
-#    century_skills_subtitle3: "Collaboration"
-#    century_skills_subblurb3: "Throughout the game, there are opportunities for students to collaborate when they get stuck and to work together using our pair programming guide."
-#    century_skills_quote4: "I’ve always had aspirations of designing video games and learning how to code ... this is giving me a great starting point."
-#    century_skills_subtitle4: "Communication"
-#    century_skills_subblurb4: "Coding requires kids to practice new forms of communication, including communicating with the computer itself and conveying their ideas using the most efficient code."
-#    classroom_in_box_title: "We Strive To:"
-#    classroom_in_box_blurb1: "Engage every student so that they believe coding is for them."
-#    classroom_in_box_blurb2: "Empower any educator to feel confident when teaching coding."
-#    classroom_in_box_blurb3: "Inspire all school leaders to create a world-class computer science program."
-#    creativity_rigor_title: "Where Creativity Meets Rigor"
-#    creativity_rigor_subtitle1: "Make coding fun and teach real-world skills"
-#    creativity_rigor_blurb1: "Students type real Python and JavaScript while playing games that encourage trial-and-error, critical thinking, and creativity. Students then apply the coding skills they’ve learned by developing their own games and websites in project-based courses."
-#    creativity_rigor_subtitle2: "Reach students at their level"
-#    creativity_rigor_blurb2: "Every CodeCombat level is scaffolded based on millions of data points and optimized to adapt to each learner. Practice levels and hints help students when they get stuck, and challenge levels assess students' learning throughout the game."
-#    creativity_rigor_subtitle3: "Built for all teachers, regardless of experience"
-#    creativity_rigor_blurb3: "CodeCombat’s self-paced, standards-aligned curriculum makes teaching computer science possible for everyone. CodeCombat equips teachers with the training, instructional resources, and dedicated support to feel confident and successful in the classroom."
-#    featured_partners_title1: "Featured In"
-#    featured_partners_title2: "Awards & Partners"
-#    featured_partners_blurb1: "CollegeBoard Endorsed Provider"
-#    featured_partners_blurb2: "Best Creativity Tool for Students"
-#    featured_partners_blurb3: "Top Pick for Learning"
-#    featured_partners_blurb4: "Code.org Official Partner"
-#    featured_partners_blurb5: "CSforAll Official Member"
-#    featured_partners_blurb6: "Hour of Code Activity Partner"
-#    for_leaders_title: "For School Leaders"
-#    for_leaders_blurb: "A Comprehensive, Standards-Aligned Computer Science Program"
-#    for_leaders_subtitle1: "Easy Implementation"
-#    for_leaders_subblurb1: "A web-based program that requires no IT support. Get started in under 5 minutes using Google or Clever Single Sign-On (SSO)."
-#    for_leaders_subtitle2: "Full Coding Curriculum"
-#    for_leaders_subblurb2: "A standards-aligned curriculum with instructional resources and professional development to enable any teacher to teach computer science."
-#    for_leaders_subtitle3: "Flexible Use Cases"
-#    for_leaders_subblurb3: "Whether you want to build a Middle School coding elective, a CTE pathway, or an AP Computer Science Principles class, CodeCombat is tailored to suit your needs."
-#    for_leaders_subtitle4: "Real-World Skills"
-#    for_leaders_subblurb4: "Students build grit and develop a growth mindset through coding challenges that prepare them for the 500K+ open computing jobs."
-#    for_teachers_title: "For Teachers"
-#    for_teachers_blurb: "Tools to Unlock Student Potential"
-#    for_teachers_subtitle1: "Project-Based Learning"
-#    for_teachers_subblurb1: "Promote creativity, problem-solving, and confidence in project-based courses where students develop their own games and webpages."
-#    for_teachers_subtitle2: "Teacher Dashboard"
-#    for_teachers_subblurb2: "View data on student progress, discover curriculum resources, and access real-time support to empower student learning."
-#    for_teachers_subtitle3: "Built-in Assessments"
-#    for_teachers_subblurb3: "Personalize instruction and ensure students understand core concepts with formative and summative assessments."
-#    for_teachers_subtitle4: "Automatic Differentiation"
-#    for_teachers_subblurb4: "Engage all learners in a diverse classroom with practice levels that adapt to each student's learning needs."
-#    game_based_blurb: "CodeCombat is a game-based computer science program where students type real code and see their characters react in real time."
-#    get_started: "Get started"
-#    global_title: "Join Our Global Community of Learners and Educators"
-#    global_subtitle1: "Learners"
-#    global_subtitle2: "Lines of Code"
-#    global_subtitle3: "Teachers"
-#    global_subtitle4: "Countries"
-#    go_to_my_classes: "Go to my classes"
-#    go_to_my_courses: "Go to my courses"
-#    quotes_quote1: "Name any program online, I’ve tried it. None of them match up to CodeCombat. Any teacher who wants their students to learn how to code... start here!"
-#    quotes_quote2: " I was surprised about how easy and intuitive CodeCombat makes learning computer science. The scores on the AP exam were much higher than I expected and I believe CodeCombat is the reason why this was the case."
-#    quotes_quote3: "CodeCombat has been the most beneficial for teaching my students real-life coding capabilities. My husband is a software engineer and he has tested out all of my programs. He put this as his top choice."
-#    quotes_quote4: "The feedback … has been so positive that we are structuring a computer science class around CodeCombat. The program really engages the students with a gaming style platform that is entertaining and instructional at the same time. Keep up the good work, CodeCombat!"
-#    see_example: "See example"
+    title: "CodeCombat - Codeerspellen om Python en JavaScript te leren"
+    meta_description: "Leer code typen via een programmeerspel. Leer Python, JavaScript en HTML terwijl je puzzels oplost en leer je eigen coderingsspellen en websites maken."
+    built_for_teachers_title: "Een Codeerspel Gemaakt met Leraren in Gedachten"
+    built_for_teachers_blurb: "Kinderen leren programmeren kan vaak overweldigend aanvoelen. CodeCombat helpt alle docenten om leerlingen te leren coderen in JavaScript of Python, twee van de meest populaire programmeertalen. Met een uitgebreid curriculum dat zes computerwetenschap-eenheden omvat en het leren versterkt door projectgebaseerde spelontwikkeling en webontwikkelingsunits, zullen kinderen vooruitgang boeken op een reis van basissyntaxis naar recursie! "
+    built_for_teachers_subtitle1: "Computerwetenschap"
+    built_for_teachers_subblurb1: "Na onze gratis cursus Inleiding tot Informatica  beheersen studenten kernconcepten van programmeren zoals while / for loops, functies en algoritmen"
+    built_for_teachers_subtitle2: "Game Ontwikkeling"
+    built_for_teachers_subblurb2: "Leerlingen bouwen doolhoven en gebruiken basis input handling om hun eigen games te coderen, die kunnen worden gedeeld met vrienden en familie."
+    built_for_teachers_subtitle3: "Webontwikkeling"
+    built_for_teachers_subblurb3: "Met behulp van HTML, CSS en jQuery gebruiken leerlingen hun creatieve spieren om hun eigen webpagina's te programmeren met een aangepaste URL om te delen met hun klasgenoten."
+    century_skills_title: "21ste-Eeuwse Vaardigheden"
+    century_skills_blurb1: "Studenten laten niet alleen hun helden een level omhoog gaan, maar zichzelf ook."
+    century_skills_quote1: "Je maakt fouten…dus dan denk je aan alle mogelijke manieren om het op te lossen, en dan probeer je het opnieuw. Ik zou er niet kunnen komen zonder het te blijven proberen"
+    century_skills_subtitle1: "Kritisch Nadenken"
+    century_skills_subblurb1: Met codeerpuzzels die op een natuurlijke manier in steeds uitdagendere levels worden gezet, zorgt het programmeerspel van CodeCombat ervoor dat kinderen altijd kritisch blijven nadenken."
+    century_skills_quote2: "De rest was doolhoven aan het maken, dus ik dacht: ‘pak die vlag’ en deed het ook. "
+    century_skills_subtitle2: "Creativiteit"
+    century_skills_subblurb2: "CodeCombat moedigt studenten aan om hun creativiteit te laten zien door het bouwen en delen van hun eigen games en webpagina’s. "
+    century_skills_quote3: "Als ik vast kwam te zitten in een level, ging ik samenwerken met mensen om me heen totdat we een oplossing hadden."
+    century_skills_subtitle3: "Samenwerking"
+    century_skills_subblurb3: "Door het spel heen zijn er mogelijkheden voor studenten om samen te werken als ze vast komen te zitten, door met elkaar onze programmeergids te gebruiken."
+    century_skills_quote4: "Ik heb altijd al videogames willen ontwerpen en  leren coderen…Hierdoor krijg ik een goed startpunt."
+    century_skills_subtitle4: "Communicatie"
+    century_skills_subblurb4: "Programmeren vereist dat kinderen nieuwe vormen van communicatie oefenen, waaronder communiceren met de computer zelf en hun ideeën overbrengen met behulp van de meest efficiënte code."
+    classroom_in_box_title: "We Streven Ernaar om:"
+    classroom_in_box_blurb1: "Elke student erbij te betrekken zodat ze geloven dat coderen voor hen is. "
+    classroom_in_box_blurb2: "Elke leraar in staat te stellen zich zeker van zichzelf te voelen wanneer ze lesgeven in programmeren."#    classroom_in_box_blurb3: "Alle schoolleiders te inspireren om programmeeronderwijs van wereldklasse te maken."
+    creativity_rigor_title: "Waar Creativiteit en Structuur Samenkomen"
+    creativity_rigor_subtitle1: "Programmeren leuk te maken en real-world-skills te leren"
+    creativity_rigor_blurb1: "Studenten typen echte Python en JavaScript terwijl ze games spelen die trial-en-error aanmoedigen, kritisch denken, en creativiteit. Studenten passen dan de programmeerskills toe die ze hebben geleerd, door hun eigen games en websites te ontwerpen in projectgebaseerde cursussen."
+    creativity_rigor_subtitle2: "Studenten op hun eigen niveau te bereiken"
+    creativity_rigor_blurb2: "Elk CodeCombat-level gaat langzaam omhoog in niveau, gebaseerd op miljoenen datapunten en geoptimaliseerd om zich aan elke leerling aan te passen. Oefenlevels en hints helpen studenten wanneer ze vastlopen, en uitdagingslevels beoordelen het leren van studenten tijdens het spel."
+    creativity_rigor_subtitle3: "Gemaakt voor alle leraren, ongeacht hun ervaring"
+    creativity_rigor_blurb3: "CodeCombat’s op eigen tempo en op standaarden afgestemde curriculum maakt lesgeven in informatica mogelijk voor iedereen. CodeCombat rust leraren uit met de training, leermiddelen en toegewijde ondersteuning om zich zelfverzekerd en succesvol te voelen in de klas."
+    featured_partners_title1: "Uitgelicht In"
+    featured_partners_title2: "Awards & Partners"
+    featured_partners_blurb1: "CollegeBoard Onderschreven Provider"
+    featured_partners_blurb2: "Beste Creativiteits-tool voor Studenten"
+    featured_partners_blurb3: "Topkeuze om mee te leren"
+    featured_partners_blurb4: "Code.org Officiële Partner"
+    featured_partners_blurb5: "CSforAll Officieel Lid"
+    featured_partners_blurb6: "Hour of Code Activiteitspartner"
+    for_leaders_title: "Voor Schoolleiders"
+    for_leaders_blurb: "Een Uitgebreid, op Standaarden Gebaseerd Informaticaprogramma"
+    for_leaders_subtitle1: "Makkelijke Uitvoering"
+    for_leaders_subblurb1: "Een webgebaseerd programma dat geen IT-ondersteuning vereist. Begin binnen 5 minuten met Google of Clever Single Sign-On (SSO)."
+    for_leaders_subtitle2: "Volledig Programmeer-curriculum"
+    for_leaders_subblurb2: "Een op standaarden gebaseerd curriculum met leermiddelen and professionele ontwikkelingen om elke leraar in staat te stellen informatica te onderwijzen."
+    for_leaders_subtitle3: "Flexibele use cases"
+    for_leaders_subblurb3: "Of u nu een keuzevak voor de middelbare school, een CTE-pad of een AP Computer Science Principles-klas wilt maken, CodeCombat is afgestemd op uw behoeften."
+
+    for_leaders_subtitle4: "Realistische Vaardigheden"
+    for_leaders_subblurb4: "Studenten krijgen vastberadenheid en ontwikkelen een groei-mindset door de programmeeruitdagingen heen die hen voorbereiden op de meer dan 500.000 open ICT-banen."
+    for_teachers_title: "Voor Docenten"
+    for_teachers_blurb: "Hulpmiddelen om het Potentieel van Studenten te Ontgrendelen"
+    for_teachers_subtitle1: "Projectgebaseerd Leren"
+    for_teachers_subblurb1: "Bevorder creativiteit, probleemoplossing en vertrouwen in projectgebaseerde cursussen waar studenten hun eigen games en webpagina's ontwikkelen."
+    for_teachers_subtitle2: "Docentendashboard"
+    for_teachers_subblurb2: "Bekijk gegevens over de voortgang van studenten, ontdek leerplanbronnen en krijg toegang tot realtime ondersteuning om het leren van studenten te bevorderen."
+    for_teachers_subtitle3: "Ingebouwde Beoordelingen"
+    for_teachers_subblurb3: "Personaliseer uw instructie en wees er zeker van dat studenten kernconcepten  begrijpen, door middel van formatieve en summatieve toetsing."
+    for_teachers_subtitle4: "Automatische differentiatie"
+    for_teachers_subblurb4: "Betrek alle leerlingen in een divers klaslokaal erbij met oefenlevels die zich aanpassen aan de leerbehoeften van elke student."
+    game_based_blurb: "CodeCombat is een spelgebaseerd computerwetenschappelijk programma waarbij studenten echte code typen en hun personages in realtime zien reageren."
+    get_started: "Begin"
+    global_title: "Word lid van onze wereldwijde community van studenten en docenten"
+    global_subtitle1: "Leerlingen"
+    global_subtitle2: "Regels van Code"
+    global_subtitle3: "Docenten"
+    global_subtitle4: "Landen"
+    go_to_my_classes: "Ga naar mijn klassen"
+    go_to_my_courses: "Ga naar mijn cursussen"
+    quotes_quote1: "Noem elk programma online, ik heb het geprobeerd. Geen van hen komt overeen met CodeCombat. Elke leraar die wil dat zijn studenten leren programmeren raad ik aan... begin hier!"
+    quotes_quote2: "Ik was verrast hoe gemakkelijk en intuïtief CodeCombat het leren van informatica maakt. De scores op het AP-examen waren veel hoger dan ik had verwacht en ik geloof dat CodeCombat de reden is."
+    quotes_quote3: "CodeCombat is ontzettend nuttig geweest om mijn studenten echte programmeervaardigheden bij te brengen. Mijn man is een software-ingenieur en hij heeft al mijn programma's getest. Hij beschouwde dit als zijn topkeuze. "
+    quotes_quote4: "De feedback… is zo positief geweest dat we een Computerwetenschapsklas gaan maken rond CodeCombat. Het programma betrekt de studenten er echt bij met een gaming-style platform dat tegelijikertijd vermakelijk en  leerzaam is. Ga zo door, CodeCombat!
+    see_example: "Zie voorbeeld"
     slogan: "Het meest uitdagende spel om mee te leren programmeren." # {change}
-#    teach_cs1_free: "Teach CS1 Free"
-#    teachers_love_codecombat_title: "Teachers Love CodeCombat"
-#    teachers_love_codecombat_blurb1: "Report that their students enjoy using CodeCombat to learn how to code"
-#    teachers_love_codecombat_blurb2: "Would recommend CodeCombat to other computer science teachers"
-#    teachers_love_codecombat_blurb3: "Say that CodeCombat helps them support students’ problem solving abilities"
-#    teachers_love_codecombat_subblurb: "In partnership with McREL International, a leader in research-based guidance and evaluations of educational technology."
-#    try_the_game: "Try the game"
+    teach_cs1_free: "Leer CS1 gratis"
+    teachers_love_codecombat_title: "Leraren houden van CodeCombat"
+    teachers_love_codecombat_blurb1: "Melden dat hun studenten CodeCombat graag gebruiken om te leren hoe ze moeten coderen"
+    teachers_love_codecombat_blurb2: "Zouden CodeCombat aanraden aan andere informatica-docenten"
+    teachers_love_codecombat_blurb3: "Zeggen dat CodeCombat hen helpt om de probleemoplossende vaardigheden van studenten te ondersteunen"
+    teachers_love_codecombat_subblurb: "In samenwerking met McREL International, een leider in op onderzoek gebaseerde begeleiding en evaluaties van educatieve technologie."
+    try_the_game: "Probeer de game"
     classroom_edition: "Klaslokaalversie:"
     learn_to_code: "Leer programmeren:"
     play_now: "Speel"
-#    im_an_educator: "I'm an Educator"
+    im_an_educator: "Ik ben een onderwijzer"
     im_a_teacher: "Ik ben een leraar"
     im_a_student: "Ik ben een leerling"
     learn_more: "Lees verder"
@@ -119,21 +119,21 @@
     kind_of_struggle: "het soort worsteling dat uitmondt in een leerproces dat uitdagend is en "
     motivating: "motiveert"
     not_tedious: "niet vervelend."
-    gaming_is_good: "Studies wijzen uit dat speels leren goed is voor de hersenen van kinderen. (En dat klopt!)"
+    gaming_is_good: "Studies wijzen uit dat spelend leren goed is voor de hersenen van kinderen. (En dat klopt!)"
     game_based: "Wanneer spel-gebaseerde leersystemen worden"
     compared: "vergeleken"
-    conventional: "met conventionele assessmentmethoden, is het verschil duidelijk: games zijn beter in het stimuleren van leerlingen bij het onthouden van kennis, concentratie en het"
+    conventional: "met conventionele evaluatiemethoden, is het verschil duidelijk: games zijn beter in het stimuleren van leerlingen bij het onthouden van kennis, concentratie en het"
     perform_at_higher_level: "niveau van hun prestaties."
     feedback: "Games verschaffen directe feedback, wat leerlingen in staat stelt hun oplossingen te verbeteren en zij een holistisch begrip van de concepten krijgen, in plaats van beperkt zijn tot antwoorden als “correct” of “incorrect”."
     real_game: "Een echt spel, wat je speelt met echte programmeertaal."
     great_game: "Een goed spel is meer dan alleen medailles en prestaties - het gaat om een reis, nauwkeurig ontworpen puzzels, en de mogelijkheid om uitdagingen vol zelfvertrouwen aan te pakken."
-    agency: "CodeCombat is een game die de mogelijkheid en het zelfvertrouwen geeft om met echte code te werken, wat zowel beginners als gevorderde helpt bij het schrijven van goede, valide code."
+    agency: "CodeCombat is een game die de mogelijkheid en het zelfvertrouwen geeft om met echte code te werken, wat zowel beginners als gevorderden helpt bij het schrijven van goede, valide code."
     request_demo_title: "Begin vandaag nog met een gratis pilot!"
     request_demo_subtitle: "Vraag een pilot aan en start meteen."
     get_started_title: "Maak vandaag nog een klas aan!"
     get_started_subtitle: "Maak een klas aan, voeg je leerlingen toe, en monitor hun vooruitgang."
     request_demo: "Gratis pilot"
-#    request_quote: "Request a Quote"
+    request_quote: "Vraag een Quote aan"
     setup_a_class: "Maak een klas aan"
     have_an_account: "Heb je al een account?" # {change}
     logged_in_as: "Je bent ingelogd als"
@@ -149,13 +149,13 @@
     view_progress: "Bekijk voortgang"
     go_to_courses: "Ga naar mijn cursussen"
     want_coco: "Wil je CodeCombat op jouw school?"
-#    educator: "Educator"
-#    student: "Student"
+    educator: "Onderwijzer"
+    student: "Student

   nav:
-#    educators: "Educators"
-#    follow_us: "Follow Us"
-#    general: "General"
+    educators: "Onderwijzers"
+    follow_us: "Volg ons"
+    general: "Algemeen"
     map: "Kaart"
     play: "Levels" # The top nav bar entry where players choose which levels to play
     community: "Community"
@@ -175,7 +175,7 @@
     twitter_follow: "Volgen"
     my_classrooms: "Mijn klassen" # {change}
     my_courses: "Mijn lessen"
-#    my_teachers: "My Teachers"
+    my_teachers: "Mijn leraren"
     careers: "Banen"
     facebook: "Facebook"
     twitter: "Twitter"
@@ -199,7 +199,7 @@
   modal:
     close: "Sluiten"
     okay: "Oké"
-#    cancel: "Cancel"
+    cancel: "Annuleer"

   not_found:
     page_not_found: "Pagina niet gevonden"
@@ -209,16 +209,16 @@
     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 talen 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"
+    learn_more: "Meer informatie over Diplomaat zijn"
     subscribe_as_diplomat: "Abonneren als Diplomaat"

   play:
-#    title: "Play CodeCombat Levels - Learn Python, JavaScript, and HTML"
-#    meta_description: "Learn programming with a coding game for beginners. Learn Python or JavaScript as you solve mazes, make your own games, and level up. Challenge your friends in multiplayer arena levels!"
-#    level_title: "__level__ - Learn to Code in Python, JavaScript, HTML"
-#    video_title: "__video__ | Video Level"
-#    game_development_title: "__level__ | Game Development"
-#    web_development_title: "__level__ | Web Development"
+    title: "Speel CodeCombat Levels - Leer Python, JavaScript, en HTML"
+    meta_description: "Leer programmeren met een programmeerspel voor beginners. Leer Python or JavaScript terwijl je puzzels oplost, je eigen doolhoven maakt, en levels omhoog gaat. Daag je vrienden uit in multiplayer arena levels!"
+    level_title: "__level__ - Leer Programmeren in Python, JavaScript, HTML"
+    video_title: "__video__ | Video Level"
+    game_development_title: "__level__ | Game Ontwikkeling"
+    web_development_title: "__level__ | Web Ontwikkeling"
     anon_signup_title_1: "CodeCombat heeft een"
     anon_signup_title_2: "schoolversie!"
     anon_signup_enter_code: "Voer klassencode in:"
@@ -348,7 +348,7 @@
     creating: "Account aanmaken..."
     sign_up: "Aanmelden"
     log_in: "inloggen met wachtwoord"
-#    login: "Login"
+    login: "Log in"
     required: "Je moet inloggen om daarheen te gaan."
     login_switch: "Heb je al een account?"
     optional: "optioneel"
@@ -433,8 +433,8 @@
     books: "Boeken"

   common:
-#    default_title: "CodeCombat - Coding games to learn Python and JavaScript"
-#    default_meta_description: "Learn typed code through a programming game. Learn Python, JavaScript, and HTML as you solve puzzles and learn to make your own coding games and websites."
+    default_title: "CodeCombat - Programmeerspellen om Python en JavaScript te leren"
+    default_meta_description: "Leer code typen door middel van een programmeerspel. Leer Python, JavaScript, en HTML terwijl je puzzels oplost en leer je eigen programmeerspellen en websites te maken"
     back: "Terug" # When used as an action verb, like "Navigate backward"
     coming_soon: "Binnenkort!"
     continue: "Doorgaan" # When used as an action verb, like "Continue forward"
@@ -466,9 +466,9 @@
     submit_changes: "Veranderingen indienen"
     save_changes: "veranderingen opslaan"
     required_field: "Verplicht veld" # {change}
-#    submit: "Submit"
-#    replay: "Replay"
-#    complete: "Complete"
+    submit: "Invoeren"
+    replay: "Opnieuw afspelen"
+    complete: "Voltooi"

   general:
     and: "en"
@@ -601,8 +601,8 @@
     reload_title: "Alle Code Herladen?"
     reload_really: "Weet je zeker dat je dit level tot het begin wilt herladen?"
     reload_confirm: "Herlaad Alles"
-#    restart_really: "Are you sure you want to restart the level? You'll loose all the code you've written."
-#    restart_confirm: "Yes, Restart"
+    restart_really: "Weet je zeker dat je het level opnieuw wilt starten? Je verliest alle geschreven code."
+    restart_confirm: "Ja, herstarten"
     test_level: "Test Level"
     victory: "Gewonnen"
     victory_title_prefix: ""
@@ -627,13 +627,13 @@
     tome_cast_button_run: "Uitvoeren"
     tome_cast_button_running: "Afspelen"
     tome_cast_button_ran: "Uitgevoerd"
-#    tome_cast_button_update: "Update"
+    tome_cast_button_update: "Update"
     tome_submit_button: "Indienen"
     tome_reload_method: "Oorspronkelijke code voor deze methode herladen" # {change}
     tome_available_spells: "Beschikbare spreuken"
     tome_your_skills: "Jouw Vaardigheden"
     hints: "Hints"
-#    videos: "Videos"
+    videos: "Video's"
     hints_title: "Hint {{number}}"
     code_saved: "Code Opgeslagen"
     skip_tutorial: "Overslaan (esc)"
@@ -709,7 +709,7 @@
     tip_mistakes_proof_of_trying: "Foutjes in je code zijn het bewijs dat je het probeert."
     tip_adding_orgres: "Ogers verzamelen."
     tip_sharpening_swords: "Zwaarden slijpen."
-    tip_ratatouille: "Laat je niet door andere begrenzen op grond van je afkomst. Je enige begrenzing is je ziel. - Gusteau, Ratatouille"
+    tip_ratatouille: "Laat je niet door anderen begrenzen op grond van je afkomst. Je enige begrenzing is je ziel. - Gusteau, Ratatouille"
     tip_nemo: "Als het leven even tegenzit, wil je weten wat je dan moet doen? Gewoon blijven zwemmen, gewoon blijven zwemmen. - Dory, Finding Nemo"
     tip_internet_weather: "Verhuis gewoon naar het internet, het is hier fantastisch. We leven binnenshuis waar het nooit regent. - John Green"
     tip_nerds: "Het is nerds toegestaan om van dingen te houden, zoals spring-op-en-neer-op-een-stoel-heb-mijzelf-niet-in-de-hand, heerlijk. - John Green"
@@ -727,15 +727,15 @@
     view_gallery: "Bekijk galerij"
     project_published_noty: "Je level is gepubliceerd!"
     keep_editing: "Blijf aanpassen"
-#    learn_new_concepts: "Learn new concepts"
-#    watch_a_video: "Watch a video on __concept_name__"
-#    concept_unlocked: "Concept Unlocked"
-#    use_at_least_one_concept: "Use at least one concept: "
+    learn_new_concepts: "Leer nieuwe concepten"
+    watch_a_video: "Bekijk een video op __concept_name__"
+    concept_unlocked: "Concept Ontgrendeld"
+    use_at_least_one_concept: "Gebruik ten minste één concept: "
 #    command_bank: "Command Bank"
-#    learning_goals: "Learning Goals"
-#    start: "Start"
+    learning_goals: "Leerdoelen"
+    start: "Start"
 #    vega_character: "Vega Character"
-#    click_to_continue: "Click to Continue"
+    click_to_continue: "Klik om verder te gaan"

   apis:
     methods: "Methodes"
@@ -945,7 +945,7 @@
     wallOfDarkness_description: "Verberg je achter een muur van schaduwen om nieuwsgierige blikken te vermijden."

 #  avatar_selection:
-#    pick_an_avatar: "Pick an avatar that will represent you as a player"
+    pick_an_avatar: "Kies een avatar die jou moet voorstellen als speler"

   premium_features:
     get_premium: "Neem<br>CodeCombat<br>Premium" # Fit into the banner on the /features page
@@ -1007,11 +1007,11 @@
     restricted_to_certain_heroes: "Alleen bepaalde helden kunnen dit level spelen."

 #  char_customization_modal:
-#    heading: "Customize Your Hero"
-#    body: "Body"
-#    name_label: "Hero's Name"
-#    hair_label: "Hair Color"
-#    skin_label: "Skin Color"
+    heading: "Personaliseer je Held"
+    body: "Lichaam"
+    name_label: "Naam van de Held"
+    hair_label: "Haarkleur"
+    skin_label: "Huidskleur"

   skill_docs:
     function: "functie" # skill types
@@ -1041,7 +1041,7 @@
     optional_parameters: "Optionele Parameters"
     returns: "Geeft terug"
     granted_by: "Verleend door"
-#    still_undocumented: "Still undocumented, sorry."
+    still_undocumented: "Nog steeds ongeregistreerd, sorry"

   save_load:
     granularity_saved_games: "Opgeslagen"
@@ -1063,8 +1063,8 @@
     editor_config_behaviors_description: "Automatisch aanvullen van (gekrulde) haakjes en aanhalingstekens."

   about:
-#    title: "About CodeCombat - Engaging Students, Empowering Teachers, Inspiring Creation"
-#    meta_description: "Our mission is to level computer science through game-based learning and make coding accessible to every learner. We believe programming is magic and want learners to be empowered to to create things from pure imagination."
+    title: "Over CodeCombat - Studenten erbij Betrekken, Leraren Zelfvertrouwen geven, Creaties Inspireren"
+    meta_description: "Onze missie is om het niveau van de computerwetenschap te verhogen door spelgebaseerd leren en programmeren toegankelijk te maken voor elke leerling. Wij geloven dat programmeren magisch is en willen dat leerlingen de mogelijkheid krijgen om dingen te creëren vanuit pure verbeelding."
     learn_more: "Lees meer"
     main_title: "Als je wilt leren programmeren, moet je (heel veel) code schrijven."
     main_description: "Bij CodeCombat, is het ons doel om te zorgen dat je dat doet met een glimlach op je gezicht."
@@ -1266,7 +1266,7 @@
     create_account_subtitle: "Krijg toegang tot exclusieve hulpmiddelen voor docenten door CodeCombat in de klas te gebruiken. <strong>Maak een klas aan</strong>, voeg leerlingen toe, en <strong>bekijk hun vooruitgang</strong>!"
     convert_account_title: "Verander in een docenten-account"
     not: "niet"
-#    full_name_required: "First and last name required"
+    full_name_required: "Voor- en achternaam verplicht"

   versions:
     save_version_title: "Nieuwe versie opslaan"
@@ -1357,7 +1357,7 @@
     maximize_editor: "Maximaliseer/minimaliseer code editor."

 #  cinematic:
-#    click_anywhere_continue: "click anywhere to continue"
+    click_anywhere_continue: "klik ergens om door te gaan"

   community:
     main_title: "CodeCombat Gemeenschap"
@@ -1378,9 +1378,9 @@
     contribute_to_the_project: "Help mee met het project"

   clans:
-#    title: "Join CodeCombat Clans - Learn to Code in Python, JavaScript, and HTML"
-#    clan_title: "__clan__ - Join CodeCombat Clans and Learn to Code"
-#    meta_description: "Join a Clan or build your own community of coders. Play multiplayer arena levels and level up your hero and your coding skills."
+    title: "Meld je aan bij CodeCombat Clans - Leer programmeren in Python, JavaScript, en HTML"
+    clan_title: "__clan__ - Meld je aan bij CodeCombat Clans en leer Programmeren"
+    meta_description: "Meld je aan bij een Clan of maak je eigen community van programmeurs. Speel multiplayer arena levels en verhoog het level van je held en je coding skills."
     clan: "Clan"
     clans: "Clans"
     new_name: "Nieuwe clannaam"
@@ -1497,8 +1497,8 @@
     welcome_to_page: "Welkom op je cursus-pagina!" # {change}
     my_classes: "Mijn klassen" # {change}
     class_added: "Klas succesvol toegevoegd!"
-#    view_map: "view map"
-#    view_videos: "view videos"
+    view_map: "bekijk kaart"
+    view_videos: "bekijk video's"
     view_project_gallery: "Bekijk de projecten van mijn klasgenoten"
     join_class: "Doe mee met een klas"
     join_class_2: "Deelnemen"
@@ -1544,10 +1544,10 @@
     student_age_range_younger: "Jonger dan 6"
     student_age_range_older: "Ouder dan 18"
     student_age_range_to: "tot"
-#    estimated_class_dates_label: "Estimated Class Dates"
-#    estimated_class_frequency_label: "Estimated Class Frequency"
-#    classes_per_week: "classes per week"
-#    minutes_per_class: "minutes per class"
+    estimated_class_dates_label: "Geschatte lesdata"
+    estimated_class_frequency_label: "Geschatte Klasfrequentie"
+    classes_per_week: "lessen per week"
+    minutes_per_class: "minuten per les"
     create_class: "Maak klas aan"
     class_name: "Klasnaam"
     teacher_account_restricted: "Jouw account is een Docenten Account, daarom heeft dit account geen toegang tot inhoud bedoeld voor leerlingen." # {change}
@@ -1605,10 +1605,10 @@
     update_old_classroom_detail_2: "en door de leerlingen de nieuwe klassencode te geven die verschijnt."
     view_assessments: "Bekijk Evaluaties"
     view_challenges: "Bekijk Challenge Levels"
-#    view_ranking: "view ranking"
-#    ranking_position: "Position"
-#    ranking_players: "Players"
-#    ranking_completed_leves: "Completed levels"
+    view_ranking: "Bekijk ranking"
+    ranking_position: "Positie"
+    ranking_players: "Spelers"
+    ranking_completed_leves: "Voltooide levels"
     challenge: "Uitdaging/Challenge:"
 #    challenge_level: "Challenge Level:"
 #    status: "Status:"
@@ -1621,22 +1621,22 @@
     concepts_used: "Gebruikte concepten:"
     show_change_log: "Laat veranderingen aan de levels van deze cursus zien"
     hide_change_log: "Verberg veranderingen aan de levels van deze cursus"
-#    concept_videos: "Concept Videos"
-#    concept: "Concept:"
-#    basic_syntax: "Basic Syntax"
-#    while_loops: "While Loops"
-#    variables: "Variables"
-#    basic_syntax_desc: "Syntax is how we write code. Just as spelling and grammar are important in writing narratives and essays, syntax is important when writing code. Humans are good at figuring out what something means, even if it isn't exactly correct, but computers aren't that smart, and they need you to write very precisely."
-#    while_loops_desc: "A loop is a way of repeating actions in a program. You can use them so you don't have to keep writing repetitive code, and when you don't know exactly how many times an action will need to occur to accomplish a task."
-#    variables_desc: "Working with variables is like organizing things in shoeboxes. You give the shoebox a name, like \"School Supplies\", and then you put things inside. The exact contents of the box might change over time, but whatever's inside will always be called \"School Supplies\". In programming, variables are symbols used to store data that will change over the course of the program. Variables can hold a variety of data types, including numbers and strings."
-#    locked_videos_desc: "Keep playing the game to unlock the __concept_name__ concept video."
-#    unlocked_videos_desc: "Review the __concept_name__ concept video."
-#    video_shown_before: "shown before __level__"
-#    link_google_classroom: "Link Google Classroom"
-#    select_your_classroom: "Select Your Classroom"
-#    no_classrooms_found: "No classrooms found"
-#    create_classroom_manually: "Create classroom manually"
-#    classes: "Classes"
+    concept_videos: "Concept Video's"
+    concept: "Concept:"
+    basic_syntax: "Basic Syntaxis"
+    while_loops: "While Loops"
+    variables: "Variabelen"
+    basic_syntax_desc: "Syntaxis is hoe we code schrijven. Net zoals spelling en grammatica belangrijk zijn bij het schrijven van verhalen en essays, is syntaxis belangrijk bij het schrijven van code. Mensen zijn goed in het uitzoeken wat iets betekent, zelfs als het niet precies correct is, maar computers zijn niet zo slim, ze hebben het nodig dat je heel precies typt. "
+    while_loops_desc: "Een loop (lus) is een manier om acties in een programma te herhalen. Je kunt ze gebruiken, zodat je niet steeds herhaalde code hoeft te schrijven. Ook gebruik je het wanneer je niet precies weet hoe vaak een actie moet plaatsvinden om een taak te volbrengen. "
+    variables_desc: "Werken met variabelen is als het opruimen van spullen in schoenendozen. Je geeft de schoenendoos een naam, zoals \"Schoolspullen\", en dan stop je er spullen in. De exacte inhoud van de doos kan in de loop van de tijd veranderen, maar wat er ook in zit, er zal altijd \"Schoolspullen\" op blijven staan. Bij het programmeren zijn variabelen symbolen die worden gebruikt om gegevens op te slaan die in de loop van het programma zullen veranderen. Variabelen kunnen verschillende datatypes bevatten, inclusief getallen en strings."
+    locked_videos_desc: "Blijf het spel spelen om de __concept_name__ concept video te ontgrendelen."
+    unlocked_videos_desc: "Bekijk de __concept_name__ concept video."
+    video_shown_before: "eerder getoond __level__"
+    link_google_classroom: "Link Google Classroom"
+    select_your_classroom: "Kies je klas"
+    no_classrooms_found: "Geen klassen gevonden"
+    create_classroom_manually: "Maak klas handmatig aan"
+    classes: "Lessen"
 #    certificate_btn_print: "Print"
 #    certificate_btn_toggle: "Toggle"

@@ -1664,7 +1664,7 @@
     no_code_yet: "Leerling heeft nog geen code voor dit level geschreven"
     open_ended_level: "Open-einde-level"
     partial_solution: "Gedeeltelijke oplossing"
-#    capstone_solution: "Capstone Solution"
+    capstone_solution: "Capstone Oplossing"
     removing_course: "Cursus wordt verwijderd"
     solution_arena_blurb: "Studenten worden aangemoedigd om arena-levels creatief op te lossen. De onderstaande oplossing voldoet aan de vereisten van het arena-level."
     solution_challenge_blurb: "Studenten worden aangemoedigd om open-ended (met een open einde) challenge levels op een creatieve manier op te lossen. Een mogelijke oplossing wordt hieronder weergegeven."
@@ -1898,8 +1898,8 @@
     starter_license: "Starter Licentie"
     trial: "Uitproberen"
     hoc_welcome: "Fijne Computer Wetenschap Educatie Week!"
-#    hoc_title: "Hour of Code Games - Free Activities to Learn Real Coding Languages"
-#    hoc_meta_description: "Make your own game or code your way out of a dungeon! CodeCombat has four different Hour of Code activities and over 60 levels to learn code, play, and create."
+    hoc_title: "Hour of Code Games - Gratis Activiteiten Om Echte Programmeertalen te Leren"
+    hoc_meta_description: "Maak je eigen game of codeer je een weg uit de kelder! CodeCombat heeft 4 verschillende Hour of Code activiteiten en meer dan 60 levels om te leren coderen, te spelen, en te creëren."
     hoc_intro: "Er zijn drie manieren waarop uw klas kan meedoen aan het Code Uur met CodeCombat"
     hoc_self_led: "Zelfstandig Gamen"
     hoc_self_led_desc: "Leerlingen kunnen zelfstandig 2 uur CodeCombat tutorials spelen"
@@ -1979,18 +1979,18 @@
     combo_explanation: "Leerlingen komen door Combo challenge levels door in ieder geval één van de genoemde concepten te gebruiken. Bekijk de code van de leerling door op 'vooruitgang'te klikken."
     concept: "Concept"
 #    sync_google_classroom: "Sync Google Classroom"
-#    try_ozaria_footer: "Try our new adventrue game, Ozaria!"
+    try_ozaria_footer: "Probeer ons nieuwe avonturenspel, Ozaria!"

 #  teacher_ozaria_encouragement_modal:
-#    title: "Build Computer Science Skills to Save Ozaria"
-#    sub_title: "You are invited to try the new adventure game from CodeCombat"
-#    cancel: "Back to CodeCombat"
-#    accept: "Try First Unit Free"
-#    bullet1: "Deepen student connection to learning through an epic story and immersive gameplay"
-#    bullet2: "Teach CS fundamentals, Python or JavaScript and 21st century skills"
-#    bullet3: "Unlock creativity through capstone projects"
-#    bullet4: "Support instructions through dedicated curriculum resources"
-#    you_can_return: "You can always return to CodeCombat"
+    title: "Werk aan je Computervaardigheden om Ozaria te redden"
+    sub_title: "Je bent uitgenodigd om het nieuwe avonturenspel van CodeCombat uit te proberen"
+    cancel: "Terug naar CodeCombat"
+    accept: "Probeer het eerste gedeelte gratis"
+    bullet1: "Verdiep de verbinding van de student met leren, door middel van een episch verhaal en meeslepende gameplay"
+    bullet2: "Geef les in CS fundamentals, Python of JavaScript en 21ste eeuwse vaardigheden"
+    bullet3: "Ontgrendel creativiteit via capstone projecten"
+    bullet4: "Ondersteun instructies via speciale leerplannen
+    you_can_return: "Je kunt altijd teruggaan naar CodeCombat"

   share_licenses:
     share_licenses: "Deel licenties"
@@ -2229,7 +2229,7 @@
     helpful_ambassadors: "Onze behulpzame Ambassadeurs:"

   ladder:
-#    title: "Multiplayer Arenas"
+    title: "Multiplayer Arena's"
 #    arena_title: "__arena__ | Multiplayer Arenas"
     my_matches: "Mijn Wedstrijden"
     simulate: "Simuleer"
@@ -2278,12 +2278,12 @@
     watch_battle: "Bekijk het gevecht"
     tournament_started: ", begonnen"
     tournament_ends: "Toernooi eindigt"
-    tournament_ended: "Toernooi geeindigd"
-    tournament_rules: "Toernooi regels"
+    tournament_ended: "Toernooi geëindigd"
+    tournament_rules: "Toernooiregels"
     tournament_blurb: "Schrijf code, verzamel goud, bouw legers, verpletter je tegenstanders, win prijzen en verbeter je carrière in ons $40,000 Greed toernooi! Zie de details"
     tournament_blurb_criss_cross: "Win biedingen, bouw paden, wees je tegenstander te slim af, pak edelstenen en verbeter je carrière in ons Criss-Cross toernooi! Zie de details"
-    tournament_blurb_zero_sum: "Ontketen je code creativiteit in goud verzamelen en veldslag tactieken in deze alpine spiegel wedstrijd tussen de rode tovenaar en de blauwe tovenaar. Het tournament is gestart op Vrijdag 27 maart en loopt tot Maandag 6 April om 17:00 PDT. Doe mee voor plezier en overwinning! Check de details"
-    tournament_blurb_ace_of_coders: "Vecht het uit in de bevroren gletsjer in deze dominatie spiegel wedstrijd! Het tournament begon op Woensdag 16 September en loopt tot Woensdag 14 Oktober om 17:00 PDT. Check de details"
+    tournament_blurb_zero_sum: "Ontketen je code-creativiteit in goud verzamelen en veldslag tactieken in deze Alpine Mirror wedstrijd tussen de rode tovenaar en de blauwe tovenaar. Het toernooi is gestart op Vrijdag 27 maart en loopt tot Maandag 6 April om 17:00 PDT. Doe mee voor plezier en overwinning! Check de details"
+    tournament_blurb_ace_of_coders: "Vecht het uit in de bevroren gletsjer in deze Dominance Mirror wedstrijd! Het toernooi begint op Woensdag 16 September en loopt tot Woensdag 14 Oktober om 17:00 PDT. Check de details"
     tournament_blurb_blog: "op ons blog"
     rules: "Regels"
     winners: "Winnaars"
@@ -2293,10 +2293,10 @@
     wins: "Wint" # At end of multiplayer match playback
     humans: "Rood" # Ladder page display team name
     ogres: "Blauw"
-#    live_tournament: "Live Tournament"
-#    awaiting_tournament_title: "Tournament Inactive"
-#    awaiting_tournament_blurb: "The tournament arena is not currently active."
-#    tournament_end_desc: "The tournament is over, thanks for playing"
+    live_tournament: "Live Toernooi"
+    awaiting_tournament_title: "Tournament Inactief"
+    awaiting_tournament_blurb: "De toernooi arena is op dit moment niet actief"
+    tournament_end_desc: "Het toernooi is voorbij, bedankt voor het spelen"

   user:
 #    user_title: "__name__ - Learn to Code with CodeCombat"
@@ -2338,12 +2338,12 @@
     left_xp_postfix: ""

   account:
-#    title: "Account"
-#    settings_title: "Account Settings"
-#    unsubscribe_title: "Unsubscribe"
-#    payments_title: "Payments"
-#    subscription_title: "Subscription"
-#    invoices_title: "Invoices"
+    title: "Account"
+    settings_title: "Instellingen Account"
+    unsubscribe_title: "Schrijf uit"
+    payments_title: "Betalingen"
+    subscription_title: "Abonnement"
+    invoices_title: "Facturen"
 #    prepaids_title: "Prepaids"
     payments: "Betalingen"
     prepaid_codes: "Prepaidcodes"
@@ -2365,7 +2365,7 @@
     next_payment: "Volgende betaling"
     card: "Kaart"
     status_unsubscribed_active: "Je bent niet ingeschreven en krijgt geen factuur, maar je account is nu nog actief."
-    status_unsubscribed: "Krijg toegang tot nieuwe levels, helden, items, en bonus edelstenen met een abonnement op CodeCombat!"
+    status_unsubscribed: "Krijg toegang tot nieuwe levels, helden, items, en extra edelstenen met een abonnement op CodeCombat!"
     not_yet_verified: "Nog niet bevestigd."
     resend_email: "Stuur e-mail opnieuw"
     email_sent: "E-mail verstuurd! Check je inbox."
@@ -2393,7 +2393,7 @@
     purchase_code2: "Op iedere CodeCombat account kan een bepaalde Code maar één keer worden ingewisseld."
     purchase_code3: "Als je een gewoon abonnement op CodeCombat hebt, worden de Codes toegevoegd aan het einde van je huidige abonnement aan je account toegevoegd."
     purchase_code4: "Abonnement codes zijn voor de Thuisversie van CodeCombat, ze kunnen niet gebruikt worden als Leerlinglicenties in Klassen."
-    purchase_code5: "Neem voor meer informatie over Leerling licenties contact op met"
+    purchase_code5: "In Nederland en België: mail naar product@codecombat.eu. Neem voor meer informatie over Leerlinglicenties in Amerika etc. contact op met"
     users: "Gebruikers"
     months: "Maanden"
     purchase_total: "Totaal"
@@ -2412,64 +2412,64 @@
     you_can3: "die je voor je eigen account kunt gebruiken of aan anderen kunt geven."

 #  ozaria_chrome:
-#    sound_off: "Sound Off"
-#    sound_on: "Sound On"
-#    back_to_map: "Back to Map"
-#    level_options: "Level Options"
-#    restart_level: "Restart Level"
+    sound_off: "Geluid Uit"
+    sound_on: "Geluid Aan"
+    back_to_map: "Terug naar de Kaart"
+    level_options: "Levelopties"
+    restart_level: "Herstart Level"

 #  impact:
-#    hero_heading: "Building A World-Class Computer Science Program"
-#    hero_subheading: "We Help Empower Educators and Inspire Students Across the Country"
-#    featured_partner_story: "Featured Partner Story"
-#    partner_heading: "Successfully Teaching Coding at a Title I School"
+    hero_heading: "Werken aan een computerwetenschappelijk programma van wereldklasse"
+    hero_subheading: "We geven onderwijzers zelfvertrouwen en inspireren studenten in het hele land"
+    featured_partner_story: "Uitgelicht verhaal van Partner"
+    partner_heading: "Geeft succesvol les in programmeren op een Title I School"
 #    partner_school: "Bobby Duke Middle School"
 #    featured_teacher: "Scott Baily"
-#    teacher_title: "Technology Teacher Coachella, CA"
-#    implementation: "Implementation"
-#    grades_taught: "Grades Taught"
-#    length_use: "Length of Use"
-#    length_use_time: "3 years"
-#    students_enrolled: "Students Enrolled this Year"
+    teacher_title: "Leraar Technologie Coachella, CA"
+    implementation: "Implementatie"
+    grades_taught: "Klassen lesgegeven"
+    length_use: "Duur van gebruik"
+    length_use_time: "3 jaar"
+    students_enrolled: "Ingeschreven Studenten Dit Jaar"
 #    students_enrolled_number: "130"
-#    courses_covered: "Courses Covered"
+    courses_covered: "Inbegrepen Cursussen"
 #    course1: "CompSci 1"
 #    course2: "CompSci 2"
 #    course3: "CompSci 3"
 #    course4: "CompSci 4"
 #    course5: "GameDev 1"
-#    fav_features: "Favorite Features"
-#    responsive_support: "Responsive Support"
-#    immediate_engagement: "Immediate Engagement"
-#    paragraph1: "Bobby Duke Middle School sits nestled between the \t    Southern California mountains of Coachella Valley to the west and east and the Salton Sea 33 miles south, and boasts a student population of 697 students within Coachella Valley Unified’s district-wide population of 18,861 students."
-#    paragraph2: "The students of Bobby Duke Middle School reflect the socioeconomic challenges facing Coachella Valley’s residents and students within the district. With over 95% of the Bobby Duke Middle School student population qualifying for free and reduced-price meals and over 40% classified as English language learners , the importance of teaching 21st century skills was the top priority of Bobby Duke Middle School Technology teacher, Scott Baily."
-#    paragraph3: "Baily knew that teaching his students coding was a key pathway to opportunity in a job landscape that increasingly prioritizes and necessitates computing skills. So, he decided to take on the exciting challenge of creating and teaching the only coding class in the school and finding a solution that was affordable, responsive to feedback, and engaging to students of all learning abilities and backgrounds."
-#    teacher_quote: "When I got my hands on CodeCombat [and] started having my students use it, the light bulb went on. It was just night and day from every other program that we had used. They’re not even close."
-#    quote_attribution: "Scott Baily, Technology Teacher"
-#    read_full_story: "Read Full Story"
-#    more_stories: "More Partner Stories"
-#    partners_heading_1: "Supporting Multiple CS Pathways in One Class"
+    fav_features: "Favoriete Functies"
+    responsive_support: "Snel reagerende Ondersteuning"
+    immediate_engagement: "Onmiddelijke Betrokkenheid"
+    paragraph1: "Bobby Duke Middle School ligt genesteld tussen \t    de bergen van Zuid-Californië van Coachella Valley in het westen en oosten en de Salton Sea 33 mijl naar het zuiden, en heeft een studentenpopulatie van 697 studenten binnen de district-brede bevolking van Coachella Valley Unified van 18,861 students."
+    paragraph2: "De studenten van Bobby Duke Middle School weerspiegelen de sociaaleconomische uitdagingen waarmee de bewoners en studenten van Coachella Valley in de wijk worden geconfronteerd. Met meer dan 95% van de Bobby Duke Middle School-studentenpopulatie die in aanmerking komt voor gratis of goedkope maaltijden en meer dan 40% geclassificeerd als Engelstalige leerlingen, was het belang van het onderwijzen van 21e-eeuwse vaardigheden de hoogste prioriteit van Bobby Duke Middle School Technology-docent Scott Baily."
+    paragraph3: "Baily wist dat het onderwijzen van programmeren aan zijn studenten een belangrijke weg was naar kansen in een baanlandschap waarin steeds vaker prioriteit wordt gegeven aan computervaardigheden. Dus besloot hij de opwindende uitdaging aan te gaan om de enige programmeerklas op school te creëren en te onderwijzen en een oplossing te vinden die betaalbaar was, op feedback reageerde en studenten van alle leermogelijkheden en achtergronden aanspoorde."
+    teacher_quote: "Toen ik CodeCombat in handen kreeg [en] door mijn studenten liet gebruiken, ging er een lichtje branden. Het was gewoon het verschil tussen dag en nacht met elk ander programma dat we hadden gebruikt. Ze komen niet eens in de buurt. "
+    quote_attribution: "Scott Baily, Technologiedocent"
+    read_full_story: "Lees het Hele Verhaal"
+    more_stories: "Meer verhalen van Partners"
+    partners_heading_1: "Ondersteuning van meerdere CS-pathways in één klas"
 #    partners_school_1: "Preston High School"
-#    partners_heading_2: "Excelling on the AP Exam"
+    partners_heading_2: "Subliem scoren op het AP Examen"
 #    partners_school_2: "River Ridge High School"
-#    partners_heading_3: "Teaching Computer Science Without Prior Experience"
+    partners_heading_3: "Lesgeven in Computerwetenschap Zonder Ervaring"
 #    partners_school_3: "Riverdale High School"
-#    download_study: "Download Research Study"
-#    teacher_spotlight: "Teacher & Student Spotlights"
+    download_study: "Download Onderzoeksstudie"
+    teacher_spotlight: "Docent & Student Spotlights"
 #    teacher_name_1: "Amanda Henry"
-#    teacher_title_1: "Rehabilitation Instructor"
+    teacher_title_1: "Revalidatie Instructeur"
 #    teacher_location_1: "Morehead, Kentucky"
-#    spotlight_1: "Through her compassion and drive to help those who need second chances, Amanda Henry helped change the lives of students who need positive role models. With no previous computer science experience, Henry led her students to coding success in a regional coding competition."
+    spotlight_1: "Door haar mededogen en gedrevenheid om diegenen te helpen die tweede kansen nodig hebben, heeft Amanda Henry geholpen de levens van studenten te veranderen die positieve rolmodellen nodig hebben. Zonder eerdere ervaring in computerwetenschappen leidde Henry haar studenten naar codeersucces in een regionale programmeerwedstrijd."
 #    teacher_name_2: "Kaila, Student"
 #    teacher_title_2: "Maysville Community & Technical College"
 #    teacher_location_2: "Lexington, Kentucky"
-#    spotlight_2: "Kaila was a student who never thought she would be writing lines of code, let alone enrolled in college with a pathway to a bright future."
+    spotlight_2: "Kaila was een student die nooit had gedacht dat ze regels code zou schrijven, laat staan dat ze ingeschreven zou zijn aan de universiteit met een pad naar een mooie toekomst. "
 #    teacher_name_3: "Susan Jones-Szabo"
-#    teacher_title_3: "Teacher Librarian"
+    teacher_title_3: "Docent Bilbiothecaresse"
 #    teacher_school_3: "Ruby Bridges Elementary"
 #    teacher_location_3: "Alameda, CA"
-#    spotlight_3: "Susan Jones-Szabo promotes an equitable atmosphere in her class where everyone can find success in their own way. Mistakes and struggles are welcomed because everyone learns from a challenge, even the teacher."
-#    continue_reading_blog: "Continue Reading on Blog..."
+    spotlight_3: "Susan Jones-Szabo bevordert een open-minded houding in haar klas waar iedereen op zijn eigen manier succes kan hebben. Fouten en worstelingen zijn welkom omdat iedereen leert van een uitdaging, zelfs de leraar. "
+    continue_reading_blog: "Lees verder op de blog"

   loading_error:
     could_not_load: "Fout bij het laden van de server" # {change}
@@ -2480,7 +2480,7 @@
     unauthorized: "Je moet ingelogd zijn. Heb je de cookies uitgeschakeld?"
     forbidden: "Je hebt hier geen toestemming voor." # {change}
     forbidden_desc: "Oh nee, er is niets dat we je hier kunnen laten zien. Zorg dat je bent ingelogd op de juiste account, of klik op een van de volgende links om verder te gaan met programmeren!"
-#    user_not_found: "User Not Found"
+    user_not_found: "Gebruiker niet gevonden"
     not_found: "Niet gevonden." # {change}
     not_found_desc: "Hm, hier is niets. Klik op een van de volgende links om verder te gaan met programmeren!"
     not_allowed: "Methode niet toegestaan."
@@ -2839,8 +2839,8 @@
     your_parentheses_must_match: "Je haakjes moeten overeenkomen."

   apcsp:
-#    title: "AP Computer Science Principals | College Board Endorsed"
-#    meta_description: "CodeCombat’s comprehensive curriculum and professional development program are all you need to offer College Board’s newest computer science course to your students."
+    title: "AP Computer Science Principals | Onderschreven door het College van Bestuur (College Board)"
+    meta_description: "Het uitgebreide curriculum en het professionele ontwikkelingsprogramma van CodeCombat zijn alles wat u nodig hebt om de nieuwste cursus informatica van College Board aan uw studenten aan te bieden."
 #    syllabus: "AP CS Principles Syllabus"
     syllabus_description: "Gebruik dit hulpmiddel om het CodeCombat-curriculum (leerplan) te plannen voor uw AP Computer Science Principles-klas. Termen worden niet vertaald naar het Nederlands."
     computational_thinking_practices: "Toepassingen Computational Thinking"
@@ -2982,24 +2982,24 @@
     teacher_email: "Email-adres van leraar"

 #  school_administrator:
-#    title: "School Administrator Dashboard"
-#    my_teachers: "My Teachers"
-#    last_login: "Last Login"
-#    licenses_used: "licenses used"
-#    total_students: "total students"
-#    active_students: "active students"
-#    projects_created: "projects created"
-#    other: "Other"
-#    notice: "The following school administrators have view-only access to your classroom data:"
-#    add_additional_teacher: "Need to add an additional teacher? Contact your CodeCombat Account Manager or email support@codecombat.com. "
-#    license_stat_description: "Licenses available accounts for the total number of licenses available to the teacher, including Shared Licenses."
-#    students_stat_description: "Total students accounts for all students across all classrooms, regardless of whether they have licenses applied."
-#    active_students_stat_description: "Active students counts the number of students that have logged into CodeCombat in the last 60 days."
-#    project_stat_description: "Projects created counts the total number of Game and Web development projects that have been created."
-#    no_teachers: "You are not administrating any teachers."
+    title: "Schoolbeheerders Dashboard"
+    my_teachers: "Mijn leraren"
+    last_login: "Laatste login"
+    licenses_used: "gebruikte licenties"
+    total_students: "totaal aantal studenten"
+    active_students: "actieve studenten"
+    projects_created: "gecreëerde projecten"
+    other: "Overige"
+    notice: "De volgende schoolbeheerders hebben alleen toegang tot uw klaslokaalgegevens:"
+    add_additional_teacher: "Wilt u een extra docent toevoegen? Neem contact op met uw CodeCombat-accountmanager of e-mail product@codecombat.eu. "
+    license_stat_description: "Beschikbare licenties houden rekening met het totale aantal licenties dat beschikbaar is voor de docent, inclusief gedeelde licenties. "
+    students_stat_description: "Totaal studentenaccounts voor alle studenten in alle klaslokalen, ongeacht of ze licenties hebben aangevraagd."
+    active_students_stat_description: "Actieve studenten telt het aantal studenten dat zich de afgelopen 60 dagen heeft aangemeld bij CodeCombat. "
+    project_stat_description: "Aangemaakte projecten telt het totale aantal gecreëerde projecten voor Game en Web. "
+    no_teachers: "U beheert geen leraren."

 #  interactives:
-#    phenomenal_job: "Phenomenal Job!"
-#    try_again: "Whoops, try again!"
-#    select_statement_left: "Whoops, select a statement from the left before hitting \"Submit.\""
-#    fill_boxes: "Whoops, make sure to fill all boxes before hitting \"Submit.\""
+    phenomenal_job: "Geweldig gedaan!"
+    try_again: "Oeps, probeer het opnieuw!"
+    select_statement_left: "Oeps, selecteer iets van links voordat je op \"Submit.\" klikt."
+    fill_boxes: "Oeps, zorg ervoor dat je alle velden hebt ingevuld voordat je op \"Submit.\"klikt."


Change --pretty to --indent

Change --pretty to --indent

--- src/command.coffee
+++ src/command.coffee
@@ -25,9 +25,9 @@
     .option '-i --in-place',
         'Modify the file that contains the original object.'
     .option '-n --normalize <style>',
-        'Normalize field names to a standard style.'
-    .option '-p --pretty',
-        'Output pretty indented JSON.'
+        'Normalize field names to a standard style.', 'underscored'
+    .option '-I --indent [n]',
+        'Output pretty indented JSON.', 2
     .parse process.argv

 inputPath = program.args[0]
@@ -79,8 +79,7 @@
     refraction = _.extend object, refraction

 normalizedRefraction = normalize refraction
-indentation = if program.pretty then 4
-serialization = JSON.stringify normalizedRefraction, undefined, indentation
+serialization = JSON.stringify normalizedRefraction, undefined, program.indent

 if program.inPlace
     if not inputPath then throw new Error "Cannot edit in-place on stdin."


Update ru.coffee

Update ru.coffee

--- app/locale/ru.coffee
+++ app/locale/ru.coffee
@@ -225,20 +225,20 @@
     editor_config_indentguides_description: "Отображение вертикальных линий для лучшего обзора отступов."
     editor_config_behaviors_label: "Умное поведение"
     editor_config_behaviors_description: "Автозавершать квадратные, фигурные скобки и кавычки."
-#    loading_ready: "Ready!"
-#    tip_insert_positions: "Shift+Click a point on the map to insert it into the spell editor."
-#    tip_toggle_play: "Toggle play/paused with Ctrl+P."
-#    tip_scrub_shortcut: "Ctrl+[ and Ctrl+] rewind and fast-forward."
-#    tip_guide_exists: "Click the guide at the top of the page for useful info."
-#    tip_open_source: "CodeCombat is 100% open source!"
-#    tip_beta_launch: "CodeCombat launched its beta in October, 2013."
-#    tip_js_beginning: "JavaScript is just the beginning."
-#    tip_autocast_setting: "Adjust autocast settings by clicking the gear on the cast button."
-#    tip_baby_coders: "In the future, even babies will be Archmages."
-#    tip_morale_improves: "Loading will continue until morale improves."
-#    tip_all_species: "We believe in equal opportunities to learn programming for all species."
-#    tip_reticulating: "Reticulating spines."
-#    tip_harry: "Yer a Wizard, "
+    loading_ready: "Готово!"
+    tip_insert_positions: "Shift+Клик по карте вставит координаты в редактор заклинаний."
+    tip_toggle_play: "Переключайте воспроизведение/паузу комбинацией Ctrl+P."
+    tip_scrub_shortcut: "Ctrl+[ и Ctrl+] - перемотка назад и вперёд."
+    tip_guide_exists: "Щёлкните \"руководство\" наверху страницы для получения полезной информации."
+    tip_open_source: "Исходный код CodeCombat открыт на 100%!"
+    tip_beta_launch: "CodeCombat запустил бета-тестирование в октябре 2013."
+    tip_js_beginning: "JavaScript это только начало."
+    tip_autocast_setting: "Изменяйте настройки авточтения заклинания, щёлкнув по шестерёнке на кнопке прочтения."
+    tip_baby_coders: "В будущем, даже младенцы будут Архимагами."
+    tip_morale_improves: "Загрузка будет продолжаться, пока боевой дух не улучшится."
+    tip_all_species: "Мы верим в равные возможности для обучения программированию для всех видов."
+    tip_reticulating: "Ретикуляция сплайнов."
+    tip_harry: "Ты волшебник, "

   admin:
     av_title: "Админ панель"
@@ -249,7 +249,7 @@
     av_other_debug_base_url: "База (для отладки base.jade)"
     u_title: "Список пользователей"
     lg_title: "Последние игры"
-#    clas: "CLAs"
+    clas: "ЛСС"

   editor:
     main_title: "Редакторы CodeCombat"
@@ -530,8 +530,8 @@
     simulation_explanation: "Симулированием игр вы сможете быстрее получить оценку игры!"
     simulate_games: "Симулировать игры!"
     simulate_all: "СБРОСИТЬ И СИМУЛИРОВАТЬ ИГРЫ"
-#    games_simulated_by: "Games simulated by you:"
-#    games_simulated_for: "Games simulated for you:"
+    games_simulated_by: "Игры, симулированные вами:"
+    games_simulated_for: "Игры, симулированные за вас:"
     leaderboard: "Таблица лидеров"
     battle_as: "Сразиться за "
     summary_your: "Ваши "


Exit if the list is complete...

Exit if the list is complete...

--- src/command.coffee
+++ src/command.coffee
@@ -80,8 +80,8 @@
     if list.length >= 1
       startBot(options, list)
     else
-      if options.quiet
-        process.exit(0)
+      # if options.quiet
+      process.exit(0)
   .on 'fileExists', (filePath) ->
     err filePath + " already exists, aborting...", null, '\n'
   .on 'error', (error) ->


Update ru.coffee

Update ru.coffee

--- app/locale/ru.coffee
+++ app/locale/ru.coffee
@@ -335,7 +335,7 @@
     nick_description: "Маг программирования, эксцентрично мотивированный волшебник, и экспериментатор вверх ногами. Ник может делать всё и хочет построить CodeCombat."
     jeremy_description: "Маг клиентской поддержки, юзабилити-тестер, и организатор сообщества; вы наверняка уже говорили с Джереми."
     michael_description: "Программист, сисадмин и непризнанный технический гений, Михаэль является лицом, поддерживающим наши серверы онлайн."
-    glen_description: "Программист и страстный разработчик игр, с мотивацией сделать этот мир лучше путём разработки вещей, вроде этой. Слова \"невозможно\" нет в его словаре. Освоение новых навыков его развлечение!"
+    glen_description: "Программист и страстный разработчик игр, с мотивацией сделать этот мир лучше путём разработки действительно значащих вещей. Слова \"невозможно\" нет в его словаре. Освоение новых навыков его развлечение!"

   legal:
     page_title: "Юридическая информация"


Fix dogapi calls

Fix dogapi calls

--- src/datadog.coffee
+++ src/datadog.coffee
@@ -22,7 +22,7 @@
   unless process.env.HUBOT_DATADOG_APPKEY?
     return robot.logger.error "HUBOT_DATADOG_APPKEY env var is not set"

-  client = new dog {
+  dog.initialize{
     api_key: process.env.HUBOT_DATADOG_APIKEY
     app_key: process.env.HUBOT_DATADOG_APPKEY
   }
@@ -36,7 +36,7 @@
     end = now.unix()
     start = now.subtract(unit, time).unix()

-    client.snapshot metric, start, end, (err, result) ->
+    dog.graph.snapshot metric, start, end, (err, result) ->
       return msg.send "Could not generate the graph snapshot: #{err}" if err?

       setTimeout ->
@@ -46,7 +46,7 @@
   robot.respond /metric(s)? search (.*)/i, (msg) ->
     metric = msg.match[2]

-    client.search metric, (err, result) ->
+    dog.infrastructure.search metric, (err, result) ->
       msg.send "Could not fetch search results: #{err}" if err?

       metrics = result['results']['metrics']


Documentation

Documentation

--- src/durable.coffee
+++ src/durable.coffee
@@ -33,8 +33,8 @@

   before:
     update: () ->
-      # adding in I.age + 1 because this
-      # check occurs before I.age is updated
-      if I.duration != -1 && I.age + 1 >= I.duration
+      # this check occurs before I.age is updated
+      # off by 1 error
+      if I.duration != -1 && I.age >= I.duration
         I.active = false


Kite: kietCode is private so it shouldn't be sent to client.

--- workers/social/lib/social/models/kite.coffee
+++ workers/social/lib/social/models/kite.coffee
@@ -61,8 +61,10 @@
           callback null, kite

   @list: permit 'list kites',
-    success: (client, selector, options, callback)->
-      JKite.some selector, options, callback
+    success: (client, selector, options, callback) ->
+      JKite.some selector, options, (err, kites) =>
+        delete kite.data.kiteCode  for kite in kites
+        callback err, kites

   modify: permit 'edit kite',
     success: (client, formData, callback)->


code cleanup in the embedBox

code cleanup in the embedBox

--- client/landing/app/Applications/Activity.kdapplication/views/embedboxviews.coffee
+++ client/landing/app/Applications/Activity.kdapplication/views/embedboxviews.coffee
@@ -298,6 +298,8 @@
     super options,data
     @options      = options
     @loader       = new KDLoaderView
+
+    # @getDelegate().setClass 'condensed'

     # @imageTooltip =
     #   constructorName : KDCustomHTMLView
@@ -337,9 +339,11 @@
     @setData data
     @options = data.link_options

-    if data.link_embed?.images?[0]?.url
+    url = data.link_embed?.images?[0]?.url
+
+    if url
       @image.setDomAttributes
-        'data-src' : @utils.proxifyUrl data.link_embed.images[0].url
+        'data-src' : @utils.proxifyUrl url

     @setTemplate @pistachio()
     @template.update()


"canthefason" is added to dummy admins

"canthefason" is added to dummy admins

--- workers/social/lib/social/models/account.coffee
+++ workers/social/lib/social/models/account.coffee
@@ -928,7 +928,7 @@

   dummyAdmins = [ "sinan", "devrim", "gokmen", "chris", "fatihacet", "arslan",
                   "sent-hil", "kiwigeraint", "cihangirsavas", "leventyalcin",
-                  "leeolayvar", "stefanbc", "erdinc", "szkl", "alfredo" ]
+                  "leeolayvar", "stefanbc", "erdinc", "szkl", "alfredo", "canthefason" ]

   userIsExempt: (callback)->
     # console.log @isExempt, this


Refactor Number Control to look and behave like Date Control

--- src/coffee/cilantro/ui/field/controls/number.coffee
+++ src/coffee/cilantro/ui/field/controls/number.coffee
@@ -1,30 +1,111 @@
 define [
     '../../core'
     '../../controls'
-    './base'
-], (c, controls, base) ->
+    '../../button'
+    'tpl!templates/controls/number-range-input.html'
+], (c, controls, button, templates...) ->

+    templates = c._.object ['number'], templates

-    class NumberControl extends base.FieldControl
-        options:
-            regionViews:
-                value: controls.RangeInput
+    class NumberControl extends controls.Control
+        template: templates.number

         events: ->
-            events = c._.clone base.FieldControl::events
-            events["change #{@dataSelectors.operator}"] = 'toggleRange'
-            return events
+            'keyup .range-from, .range-to': 'change'
+            'change .btn-select': 'change'
+            'click .range-help-button': 'toggleHelpText'

-        toggleRange: ->
-            input2 = @value.currentView.input2.ui.input
-            if /range/i.test(@getOperator())
-                input2.prop('disabled', false).show()
-            else
-                input2.prop('disabled', true).hide()
+        initialize: (options) ->
+            @model = options.model
+
+        ui:
+            inOutSelect: '.btn-select'

         onRender: ->
-            super
-            @toggleRange()
+            @inOutSelect = new button.ButtonSelect
+                collection: [
+                    value: 'between'
+                    label: 'between'
+                    selected: true
+                ,
+                    value: 'not_between'
+                    label: 'not between'
+                ]

+            @inOutSelect.render().$el.prependTo(@$el)
+            @$('.help-block').hide()
+
+            @set(@context)
+
+        toggleHelpText: (event) ->
+            @$('.help-block').toggle()
+            event.preventDefault()
+
+        isBetweenSelected: ->
+            return @inOutSelect.getSelection() == 'between'
+
+        getField: ->
+            return @model.id
+
+        getOperator: ->
+            from = @$('.range-from').val()
+            to = @$('.range-to').val()
+            operator = ''
+
+            if from != "" and to != ""
+                operator = if @isBetweenSelected() then 'range' else '-range'
+            else if from != ""
+                operator = if @isBetweenSelected() then 'gte' else 'lte'
+            else if to != ""
+                operator = if @isBetweenSelected() then 'lte' else 'gte'
+            else
+                operator = if @isBetweenSelected() then 'range' else '-range'
+
+            return operator
+
+        getValue: ->
+            from_text = @$('.range-from').val()
+            from_num = new Number(from_text)
+
+            to_text = @$('.range-to').val()
+            to_num = new Number(to_text)
+
+            value = []
+
+            if from_text != "" and to_text != ""
+                value = [from_num, to_num]
+            else if from_text != ""
+                value = from_num
+            else if to_text != ""
+                value = to_num
+            # If both fields are emtpy, return null to invalidate this range
+            else
+                value = null
+
+            return value
+
+        setOperator: (operator) ->
+            @operator = operator
+
+            if operator == '-range'
+                @inOutSelect.setSelection("not_between")
+            else
+                @inOutSelect.setSelection("between")
+
+        setValue: (value) ->
+            switch @operator
+                when 'range', '-range'
+                    if value[0]?
+                        @$('.range-from').val(value[0])
+                    else
+                        @$('.range-from').val('')
+                    if value[1]?
+                        @$('.range-to').val(value[1])
+                    else
+                        @$('.range-to').val('')
+                when 'gte'
+                    @$('.range-from').val(value)
+                when 'lte'
+                    @$('.range-to').val(value)

     { NumberControl }


Keep traversing when non-file/directory is encountered

Fixes an issue I'm seeing where traverseTree will stop silently when it encounters a socket.

--- src/fs-plus.coffee
+++ src/fs-plus.coffee
@@ -384,6 +384,8 @@
                     callback()
               else
                 callback()
+            else
+              callback()
         queue.concurrency = 1
         queue.drain = onDone
         queue.push(path.join(rootPath, file)) for file in files


Fix propType to be correct "oneOfType"

Fix propType to be correct "oneOfType"

--- tutor/src/components/icon.cjsx
+++ tutor/src/components/icon.cjsx
@@ -9,7 +9,7 @@
     type: React.PropTypes.string.isRequired
     spin: React.PropTypes.bool
     className: React.PropTypes.string
-    tooltip: React.PropTypes.oneOf([
+    tooltip: React.PropTypes.oneOfType([
       React.PropTypes.string, React.PropTypes.element
     ])
     tooltipProps: React.PropTypes.object


Implement scopesFromStack without underscore

Creating the array manually instead of combining _.pluck and _.compact
calls reduces the benchmark time spent in this method from ~65ms to ~5ms.

--- src/grammar.coffee
+++ src/grammar.coffee
@@ -175,4 +175,6 @@
     @maxTokensPerLine

   scopesFromStack: (stack) ->
-    _.compact(_.pluck(stack, "scopeName"))
+    scopes = []
+    scopes.push(rule.scopeName) for rule in stack when rule.scopeName
+    scopes


[ClientNav] Fix AB middleware test

[ClientNav] Fix AB middleware test

--- src/desktop/components/split_test/middleware.coffee
+++ src/desktop/components/split_test/middleware.coffee
@@ -17,7 +17,8 @@
       res.locals.sd[k.toUpperCase()] = v

   # TODO: Remove when the client nav AB test ends.
-  res.locals.sd['EXPERIMENTAL_APP_SHELL'] = Boolean(res.locals.sd['CLIENT_NAVIGATION_V3'] is 'experiment')
+  if runningTests['CLIENT_NAVIGATION_V3']
+    res.locals.sd['EXPERIMENTAL_APP_SHELL'] = Boolean(res.locals.sd['CLIENT_NAVIGATION_V3'] is 'experiment')

   # Store value in globally available location.
   setSplitTest('EXPERIMENTAL_APP_SHELL', res.locals.sd['EXPERIMENTAL_APP_SHELL'])


Less stupid...

Less stupid...

--- src/helpers.coffee
+++ src/helpers.coffee
@@ -2,6 +2,7 @@

 {exec} = require 'child_process'
 coffeescript = require 'coffee-script'
+_ = require 'underscore'
 express = require 'express'
 fs = require 'fs'
 sysPath = require 'path'
@@ -231,7 +232,7 @@
   fs.readFile config.paths.packageConfig, (error, data) ->
     return callback error if error?
     json = JSON.parse(data)
-    deps = Object.keys(json.dependencies or json.devDependencies)
+    deps = Object.keys(_.extend(json.devDependencies, json.dependencies))
     try
       plugins = deps
         .map (dependency) ->


Only print outcome if not installing globally

--- src/install.coffee
+++ src/install.coffee
@@ -255,10 +255,11 @@
           @installModule(options, pack, packagePath, callback)

         async.waterfall commands, (error) ->
-          if error?
-            process.stdout.write '\u2717\n'.red
-          else
-            process.stdout.write '\u2713\n'.green
+          unless installGlobally
+            if error?
+              process.stdout.write '\u2717\n'.red
+            else
+              process.stdout.write '\u2713\n'.green
           callback(error)

   # Install all the package dependencies found in the package.json file.


use conditional get instead of head request

--- lib/assets/javascripts/turbolinks.js.coffee
+++ lib/assets/javascripts/turbolinks.js.coffee
@@ -61,26 +61,34 @@
   if localStorage.getItem(url)?
     headRequest?.abort()
     headRequest = new XMLHttpRequest
-    headRequest.open 'HEAD', url, true
-    headRequest.setRequestHeader 'Etag', localStorage.getItem('etag-' + url)
+    headRequest.open 'GET', url, true
+    headRequest.setRequestHeader 'Accept', 'text/html, application/xhtml+xml, application/xml'
+    headRequest.setRequestHeader 'X-XHR-Referer', referer
+    headRequest.setRequestHeader 'If-None-Match', localStorage.getItem('etag-' + url)

     headRequest.onreadystatechange = ->
       if headRequest.readyState == 4
         if headRequest.status != 304
-          console.log(headRequest)
           callbacks.yes()
         else
-          console.log('page has not changed')
           callbacks.no()

     headRequest.send()
   else
-    callbacks.no()
+    callbacks.yes()

 fetchFromLocalStore = (url) ->
   safeUrl = removeHash url
   stored_page = localStorage.getItem(safeUrl)
-  changePage(extractTitleAndBody(createDocument stored_page))
+  triggerEvent 'page:receive'
+  doc = createDocument(stored_page)
+  changePage extractTitleAndBody(doc)
+  reflectRedirectedUrl xhr
+  if document.location.hash
+    document.location.href = document.location.href
+  else
+    resetScrollPosition()
+  triggerEvent 'page:load'

 fetchHistory = (state) ->
   cacheCurrentPage()


don't drop failures creating app

don't drop failures creating app

--- app/app.coffee
+++ app/app.coffee
@@ -76,6 +76,7 @@
   getInitialState: ->
     initializationPromise.finally =>
       @setState initializationState: initializationPromise.inspect()
+    .done()
     modal: null
     initializationState: initializationPromise.inspect()
   mixins: [Router.Navigation]


Removed like widget and instead of it inserted a link to post on wall

--- assets/js/app.coffee
+++ assets/js/app.coffee
@@ -169,7 +169,7 @@
   VK.init (data) ->
     uid = document.location.search.match(/user_id=\d+/)[0].slice 8
     app_id = document.location.search.match(/api_id=\d+/)[0].slice 7
-    console.log 'https://vk.com/app' + app_id
+    console.log VK
     VK.api 'storage.get', {key: 'score'}, (data) ->
       if data.response
         if data.response == ''
@@ -199,7 +199,7 @@
       return false

     # 1. Get the server url where to upload photo
-    Vk.api 'photos.getWallUploadServer', {}, (response) ->
+    VK.api 'photos.getWallUploadServer', {}, (response) ->
       if not response
         console.log "Can't get WallUploadServer"
       else
@@ -210,10 +210,10 @@
           else
             upload_result.user_id = uid
             # 3. Save uploaded photo to the wall
-            Vk.api 'photos.saveWallPhoto', upload_result, (uploaded_photo) ->
+            VK.api 'photos.saveWallPhoto', upload_result, (uploaded_photo) ->
               console.log uploaded_photo
               # 4. Create a post with the photo uploaded earlier
-              Vk.api 'wall.post', {attachments: 'photo' + uploaded_photo.owner_id + '_' + uploaded_photo.id + ',' + curr_photo.res_url}, (final_result) ->
+              VK.api 'wall.post', {attachments: 'photo' + uploaded_photo.owner_id + '_' + uploaded_photo.id + ',' + curr_photo.res_url}, (final_result) ->
                 console.log 'Successfully posted on the wall: ' + final_result.post_id

   $('.btn-choose').on 'click', (event) ->


Allow commenting of graph includes with '#'

--- src/lib/Fbp.coffee
+++ src/lib/Fbp.coffee
@@ -7,7 +7,7 @@
     matchInitial: new RegExp "\'(.+)\'"
     matchConnection: new RegExp "\-\>"
     matchSeparator: new RegExp "[\\s,\\n]"
-    matchSubgraph: new RegExp "\\'(.+)\\' *-> *GRAPH *([A-Za-z\\.]+)\\(Graph\\)"
+    matchSubgraph: new RegExp "\n *\\'(.+)\\' *-> *GRAPH *([A-Za-z\\.]+)\\(Graph\\)"

     constructor: ->
         @lastElement = null
@@ -41,12 +41,12 @@
                 fbp = fbp.replace(@matchComponentGlobal, "#{name}.$1($2)")

                 # Replace the graph statement with the FBP
-                string = string.replace(match, fbp)
+                string = string.replace(match, "\n#{fbp}")

     parse: (string) ->
         currentString = ""
-        string = @compileSubgraphs(string)
+        string = @compileSubgraphs("\n#{string}") # Pad string with newline in case the first line is a graph include

         for char, index in string
             @currentLine++ if char is "\n"


Modified in browser at pixie.strd6.com

Modified in browser at pixie.strd6.com

--- test/engine_selector.coffee
+++ test/engine_selector.coffee
@@ -18,7 +18,7 @@
     x: 5
     y: 10

-
+  counter =

   engine.each (obj, index) ->


Modified in browser at pixie.strd6.com

Modified in browser at pixie.strd6.com

--- test/engine_selector.coffee
+++ test/engine_selector.coffee
@@ -25,7 +25,7 @@

   indexSum = 0

-  engine.each (obj, index) ->
+  engine.each ('',obj, index) ->
     indexSum += index

     if index is 0


Modified in browser at pixie.strd6.com

Modified in browser at pixie.strd6.com

--- test/number_extensions.coffee
+++ test/number_extensions.coffee
@@ -15,6 +15,8 @@
   equals 4.2.ceil(), 5, "(4.2).ceil() equals 5"
   equals (-1.2).ceil(), -1, "(-1.2).ceil() equals -1"
   equals 3.ceil(), 3, "(3).ceil() equals 3"
+
+test "#clamp"

 test "#floor", ->
   equals 4.9.floor(), 4, "(4.9).floor() equals 4"


Modified in browser at pixie.strd6.com

Modified in browser at pixie.strd6.com

--- test/number_extensions.coffee
+++ test/number_extensions.coffee
@@ -118,6 +118,6 @@
   ]

   4.circularPoints (p, i) ->
-    equals p.x.toFixed(2), points[i].x.toFixed), "#{p} == #{points[i]}"
+    equals p.x.toFixed(2), points[i].x.toFixed(), "#{p} == #{points[i]}"

 module undefined


library: Allow to follow component changes

--- src/library.coffee
+++ src/library.coffee
@@ -2,6 +2,7 @@
 fs = require 'fs'
 path = require 'path'
 debug = require('debug')('msgflo:library')
+EventEmitter = require('events').EventEmitter

 common = require './common'

@@ -89,7 +90,7 @@

   return config

-class Library
+class Library extends EventEmitter
   constructor: (options) ->
     options.config = JSON.parse(fs.readFileSync options.configfile, 'utf-8') if options.configfile
     options.componentdir = 'participants' if not options.componentdir
@@ -98,13 +99,17 @@

     @components = {} # "name" -> { command: "", language: ''|null }.  lazy-loaded using load()

+  _updateComponents: (components) ->
+    names = Object.keys components
+    for name, comp of components
+      @components[name] = comp
+    @emit 'components-changed', names, @components
+
   load: (callback) ->
     componentsFromDirectory @options.componentdir, @options.config, (err, components) =>
       return callback err if err
-      for k,v of components
-        @components[k] = v
-      for k,v of componentsFromConfig @options.config
-        @components[k] = v
+      @_updateComponents components
+      @_updateComponents componentsFromConfig(@options.config)
       return callback null

   getSource: (name, callback) ->
@@ -131,9 +136,11 @@

     fs.writeFile filename, code, (err) =>
       return callback err if err
-      @components[name] =
+      changes = {}
+      changes[name] =
         language: language
         command: componentCommandForFile @options.config, filename
+      @_updateComponents changes
       return callback null

   componentCommand: (component, role, iips={}) ->


Redirect to login on 401 error

Redirect to login on 401 error

--- lib/generators/pbw/templates/pbw.coffee
+++ lib/generators/pbw/templates/pbw.coffee
@@ -15,6 +15,8 @@
 @display_errors = (message, jqXHR) ->
   debug message
   debug jqXHR
+  if jqXHR.status == 401
+    window.location.hash = '/login'
   $("#error").html('<h3>' + message + '</h3><ul>')
   if jqXHR && jqXHR.responseText
     _.each($.parseJSON(jqXHR.responseText), (value,key) ->


GameObject: Remove object splat for compatibility.

--- engine/gameobject.coffee
+++ engine/gameobject.coffee
@@ -339,8 +339,9 @@
                 b.assign n
         # Adding children after ensures objects don't need to be sorted
         if recursive
+            child_options = Object.assign {}, options, {new_parent: n}
             for child in @children
-                child = child.clone({options..., new_parent: n})
+                child = child.clone child_options
                 child.parent = n
                 children.push child
         n.body.instance()


:bug: Fix invalid range registered if the tail and head are inversed

Closes abe33/atom-minimap-selection#2

--- lib/mixins/decoration-management.coffee
+++ lib/mixins/decoration-management.coffee
@@ -109,7 +109,12 @@
         for decoration in decorations
           @trigger 'minimap:decoration-changed', marker, decoration, event

-      @stackRangeChanges(start: event.oldTailScreenPosition, end: event.oldHeadScreenPosition)
+      start = event.oldTailScreenPosition
+      end = event.oldHeadScreenPosition
+
+      [start, end] = [end, start] if start.row > end.row
+
+      @stackRangeChanges({start, end})

     decoration = new Decoration(marker, this, decorationParams)
     @decorationsByMarkerId[marker.id] ?= []


Functions renaming.

Functions renaming.

--- src/PPU.coffee
+++ src/PPU.coffee
@@ -153,7 +153,7 @@
         if @$isPaletteAddress address then @vramReadBuffer else oldBufferContent # Delayed read outside the palette memory area

     writeData: (value) ->
-        address = @$incrementAddress()                          # Always increments the address
+        address = @$incrementAddress()                      # Always increments the address
         @$write address, value if not @$isRenderingActive() # Only during VBLANK or disabled rendering
         value

@@ -172,7 +172,7 @@

     read: (address) ->
         if @$isPaletteAddress address
-            value = @ppuMemory.read @$getColorAddress address
+            value = @ppuMemory.read @$fixColorAddress address
             if @monochromeMode then value & 0x30 else value
         else
             @ppuMemory.read address
@@ -183,7 +183,7 @@
     isPaletteAddress: (address) ->
         (address & 0x3F00) == 0x3F00

-    getColorAddress: (address) ->
+    fixColorAddress: (address) ->
         if @$shouldUseBackdropColor address then 0x3F00 else address

     shouldUseBackdropColor: (address) ->


Unique Avatar: Follow up fix randomness.

--- app/assets/javascripts/app/models/user.coffee
+++ app/assets/javascripts/app/models/user.coffee
@@ -90,8 +90,8 @@
       height = 226 * size/baseSize

       rng = new Math.seedrandom(@id)
-      x   = rng * (width - size)
-      y   = rng * (height - size)
+      x   = rng() * (width - size)
+      y   = rng() * (height - size)

       return App.view('avatar_unique')
         data: data


js menus quieter

js menus quieter

--- app/assets/javascripts/droom/popups.js.coffee
+++ app/assets/javascripts/droom/popups.js.coffee
@@ -76,7 +76,6 @@

     conclude: (data) =>
       if @_affected
-        console.log "affected:", $(@_affected).get(0), $(@_affected).first().attr('data-url')
         $(@_affected).trigger "refresh"
       if @_aftered?
         addition = $(data)
@@ -253,8 +252,6 @@
     setup: () =>
       position = @header.position()
       offset = @header.offset()
-      console.log "header offset", @header.offset()
-      console.log "header position", @header.position()
       @patch.css
         left: position.left + 1
         top: position.top + @header.height() - 3


minor javascript refactorization

minor javascript refactorization

--- app/assets/javascripts/picked_words.js.coffee
+++ app/assets/javascripts/picked_words.js.coffee
@@ -25,7 +25,6 @@
       pick = $(@)
       url  = pick.find('a[data-action=show]').attr 'href'

-      p.updating.abort() if p.updating?
       p.updating = $.ajax
         type: 'PUT'
         url: url
@@ -37,10 +36,11 @@
           $('#messages').contents().remove()
         complete: ->
           p.updating = null
+          args.onComplete?.call pick
         success: (json) ->
           args.onSuccess?.call pick
         error: (json) ->
-          args.onError?.call(pick) unless json.statusText is 'abort'
+          args.onError?.call pick

     enableEditable: (e) ->
       pick  = $(@)
@@ -99,7 +99,7 @@

           favs = f.langFilter.find('span[data-badge=fav]').hasClass('badge-fav')
           if favs and not badge.hasClass('badge-fav')
-            pick.fadeOut 'fast', ->
+            pick.fadeOut ->
               $(@).remove()
               p.nopicksMesg.show() if p.list.children('article').length is 0

@@ -111,7 +111,7 @@
     tfWrapper:    $('#filters .pw-tf_wrapper')
     filtering:    null

-    applyFilter: (handlers) ->
+    applyFilter: (args) ->
       cfg = pwIndex.config
       f = pwIndex.filters
       p = pwIndex.picks
@@ -135,7 +135,7 @@
           p.loadingMesg.spin(false).stop(true).hide()
           f.filtering = null
         success: ->
-          handlers.onSuccess?.call link
+          args.onSuccess?.call link
         error: (response) ->
           p.errorMesg.show() unless response.statusText is 'abort'


minor fix

minor fix

Former-commit-id: e85c5c723f08970ffb554192d5d0eaab94bbf17c [formerly 45c46e7040ec1db5a9c12057e365c21524886844] [formerly ffe53cab7fb69b6d589e4eab0974a6bd63bbccfa [formerly ffe53cab7fb69b6d589e4eab0974a6bd63bbccfa [formerly 963030ebf3a03286874c6dd8cf7816a47b512cb7]]]
Former-commit-id: 41d4231902edb7f2adbfd1652ba012c9e59871f8 [formerly a402ea81ed63642523c0c880cce068735f3f8823]
Former-commit-id: 18e827dc6d2263c1374c561dfade7a98c3bc61f7
Former-commit-id: 18eeaf849ecbc67bd19bd47b8034e5cf7ffe6624

--- app/assets/javascripts/views/pointview.coffee
+++ app/assets/javascripts/views/pointview.coffee
@@ -50,7 +50,7 @@
       ConsiderIt.comments[model.id] = new ConsiderIt.CommentList()
       ConsiderIt.comments[model.id].reset(comments)

-      if ConsiderIt.current_tenant.assessment_enabled
+      if ConsiderIt.current_tenant.get('assessment_enabled')
         model.update_assessable_data(data)

       view.data_loaded = true if view


Unlinted admin-script.coffee

Unlinted admin-script.coffee

--- resources/coffee/admin-script.coffee
+++ resources/coffee/admin-script.coffee
@@ -38,9 +38,11 @@
             multi || $preview.html ''

             $item.find('input').val attachment.id
-            $item.find('.preview-img').css({'background-image':'url('+attachment.url+')'})
+            $item.find('.preview-img').css
+              'background-image':'url('+attachment.url+')'
             $item.find('.preview-img').attr 'title', attachment.alt
-            $item.removeClass('hidden').removeClass('template').appendTo $preview
+            $item.removeClass('hidden').removeClass('template')
+            $item.appendTo $preview
             return

           file_frame = null
@@ -70,7 +72,7 @@
       $( document ).on 'click', '#widgets-right .widget-control-save', (e) ->
         $container = $( e.target ).closest '.widgets-holder-wrap'
         interval = setInterval(->
-          if !$container.find( '.widget-control-actions .spinner' ).is ':visible'
+          if !$container.find('.widget-control-actions .spinner').is ':visible'
             if $container.find( '.widgets-upload-image[data-multi=1]' ).length
               initUploadSortable $container.find(
                 '.widgets-upload-image[data-multi=1] .preview')


added tests for add, sub, div, mult

added tests for add, sub, div, mult