diff --git a/.travis.yml b/.travis.yml index 0e998a59e..4920dcef8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,6 +11,7 @@ before_install: before_script: - "npm install" - export DISPLAY=:99.0 + - export COCO_TRAVIS_TEST=1 - sh -e /etc/init.d/xvfb start - "./node_modules/.bin/bower install" - "gem install sass" diff --git a/app/assets/images/level/popover_border_background.png b/app/assets/images/level/popover_border_background.png index e74234591..a8414487b 100644 Binary files a/app/assets/images/level/popover_border_background.png and b/app/assets/images/level/popover_border_background.png differ diff --git a/app/assets/images/pages/contribute/class_detail_adventurer.png b/app/assets/images/pages/contribute/class_detail_adventurer.png new file mode 100644 index 000000000..2e738ae2d Binary files /dev/null and b/app/assets/images/pages/contribute/class_detail_adventurer.png differ diff --git a/app/assets/images/pages/contribute/class_detail_ambassador.png b/app/assets/images/pages/contribute/class_detail_ambassador.png new file mode 100644 index 000000000..632cb527b Binary files /dev/null and b/app/assets/images/pages/contribute/class_detail_ambassador.png differ diff --git a/app/assets/images/pages/contribute/class_detail_archmage.png b/app/assets/images/pages/contribute/class_detail_archmage.png new file mode 100644 index 000000000..25b0145bd Binary files /dev/null and b/app/assets/images/pages/contribute/class_detail_archmage.png differ diff --git a/app/assets/images/pages/contribute/class_detail_artisan.png b/app/assets/images/pages/contribute/class_detail_artisan.png new file mode 100644 index 000000000..9d4f001e3 Binary files /dev/null and b/app/assets/images/pages/contribute/class_detail_artisan.png differ diff --git a/app/assets/images/pages/contribute/class_detail_diplomat.png b/app/assets/images/pages/contribute/class_detail_diplomat.png new file mode 100644 index 000000000..d79d59bdf Binary files /dev/null and b/app/assets/images/pages/contribute/class_detail_diplomat.png differ diff --git a/app/assets/images/pages/contribute/class_detail_scribe.png b/app/assets/images/pages/contribute/class_detail_scribe.png new file mode 100644 index 000000000..a9378b41c Binary files /dev/null and b/app/assets/images/pages/contribute/class_detail_scribe.png differ diff --git a/app/assets/images/pages/contribute/tile_adventurer.png b/app/assets/images/pages/contribute/tile_adventurer.png new file mode 100644 index 000000000..6b6a8b5eb Binary files /dev/null and b/app/assets/images/pages/contribute/tile_adventurer.png differ diff --git a/app/assets/images/pages/contribute/tile_ambassador.png b/app/assets/images/pages/contribute/tile_ambassador.png new file mode 100644 index 000000000..a36b2ca5b Binary files /dev/null and b/app/assets/images/pages/contribute/tile_ambassador.png differ diff --git a/app/assets/images/pages/contribute/tile_archmage.png b/app/assets/images/pages/contribute/tile_archmage.png new file mode 100644 index 000000000..bb7659713 Binary files /dev/null and b/app/assets/images/pages/contribute/tile_archmage.png differ diff --git a/app/assets/images/pages/contribute/tile_artisan.png b/app/assets/images/pages/contribute/tile_artisan.png new file mode 100644 index 000000000..53b00e73a Binary files /dev/null and b/app/assets/images/pages/contribute/tile_artisan.png differ diff --git a/app/assets/images/pages/contribute/tile_diplomat.png b/app/assets/images/pages/contribute/tile_diplomat.png new file mode 100644 index 000000000..46704bc0a Binary files /dev/null and b/app/assets/images/pages/contribute/tile_diplomat.png differ diff --git a/app/assets/images/pages/contribute/tile_scribe.png b/app/assets/images/pages/contribute/tile_scribe.png new file mode 100644 index 000000000..3ee5a429a Binary files /dev/null and b/app/assets/images/pages/contribute/tile_scribe.png differ diff --git a/app/assets/javascripts/run-tests.js b/app/assets/javascripts/run-tests.js index 7dbdf9859..913f71fe3 100644 --- a/app/assets/javascripts/run-tests.js +++ b/app/assets/javascripts/run-tests.js @@ -1,7 +1,8 @@ // Helper for running tests through Karma. // Hooks into the test view logic for running tests. -require('core/initialize'); +initialize = require('core/initialize'); +initialize.init(); console.debug = function() {}; // Karma conf doesn't seem to work? Debug messages are still emitted when they shouldn't be. TestView = require('views/TestView'); TestView.runTests(); \ No newline at end of file diff --git a/app/core/Tracker.coffee b/app/core/Tracker.coffee index 59a5aec7c..02d84f2d0 100644 --- a/app/core/Tracker.coffee +++ b/app/core/Tracker.coffee @@ -1,4 +1,5 @@ {me} = require 'core/auth' +AnalyticsLogEvent = require 'models/AnalyticsLogEvent' debugAnalytics = false @@ -29,7 +30,7 @@ module.exports = class Tracker if virtualName? # Override title and path properties for virtual page view # https://segment.com/docs/libraries/analytics.js/#page - properties = + properties = title: name path: "/#{name}" @@ -45,10 +46,10 @@ module.exports = class Tracker # Ok to pass empty properties, but maybe not options # TODO: What happens when we pass empty options? if _.isEmpty options - # console.log "trackPageView without options '/#{name}'", properties, options + # console.log "trackPageView without options '/#{name}'", properties, options analytics.page "/#{name}" else - # console.log "trackPageView with options '/#{name}'", properties, options + # console.log "trackPageView with options '/#{name}'", properties, options analytics.page "/#{name}", properties, options trackEvent: (action, properties, includeIntegrations=null) => @@ -69,6 +70,10 @@ module.exports = class Tracker context.integrations[integration] = true analytics?.track action, properties, context + # Log internally too. Will turn off external event logging when internal logging is sufficient. + event = new AnalyticsLogEvent event: action, properties: properties + event.save() + trackTiming: (duration, category, variable, label, samplePercentage=5) -> # https://developers.google.com/analytics/devguides/collection/gajs/gaTrackingTiming return console.warn "Duration #{duration} invalid for trackTiming call." unless duration >= 0 and duration < 60 * 60 * 1000 diff --git a/app/core/initialize.coffee b/app/core/initialize.coffee index a3033feac..1f4744652 100644 --- a/app/core/initialize.coffee +++ b/app/core/initialize.coffee @@ -34,6 +34,8 @@ init = -> handleNormalUrls() setUpMoment() # Set up i18n for moment +module.exports.init = init = _.once init + handleNormalUrls = -> # http://artsy.github.com/blog/2012/06/25/replacing-hashbang-routes-with-pushstate/ $(document).on 'click', "a[href^='/']", (event) -> diff --git a/app/core/social-handlers/FacebookHandler.coffee b/app/core/social-handlers/FacebookHandler.coffee index 26df3151f..c1d36b09b 100644 --- a/app/core/social-handlers/FacebookHandler.coffee +++ b/app/core/social-handlers/FacebookHandler.coffee @@ -51,7 +51,6 @@ module.exports = FacebookHandler = class FacebookHandler extends CocoClass window.tracker?.trackEvent 'Facebook Login', category: "Signup", ['Google Analytics'] if model.id is beforeID window.tracker?.trackEvent 'Finished Signup', category: "Signup", label: 'Facebook' - window.tracker?.trackPageView "signup/finished", ['Google Analytics'] window.location.reload() if model.get('email') isnt oldEmail }) diff --git a/app/core/social-handlers/GPlusHandler.coffee b/app/core/social-handlers/GPlusHandler.coffee index 748615ff6..6eab09c07 100644 --- a/app/core/social-handlers/GPlusHandler.coffee +++ b/app/core/social-handlers/GPlusHandler.coffee @@ -118,7 +118,6 @@ module.exports = GPlusHandler = class GPlusHandler extends CocoClass window.tracker?.trackEvent 'Google Login', category: "Signup", ['Google Analytics'] if model.id is beforeID window.tracker?.trackEvent 'Finished Signup', label: 'GPlus' - window.tracker?.trackPageView "signup/finished", ['Google Analytics'] window.location.reload() if wasAnonymous and not model.get('anonymous') }) diff --git a/app/lib/LevelOptions.coffee b/app/lib/LevelOptions.coffee index b26d43086..a151dbff9 100644 --- a/app/lib/LevelOptions.coffee +++ b/app/lib/LevelOptions.coffee @@ -1,6 +1,12 @@ module.exports = LevelOptions = 'dungeons-of-kithgard': disableSpaces: true + helpVideos: [ + {style: 'original', URL: '//player.vimeo.com/video/114921603'} + {style: 'scripted', URL: '//player.vimeo.com/video/114729726'} + {style: 'eccentric', URL: '//player.vimeo.com/video/114729725'} + {style: 'edited', URL: '//player.vimeo.com/video/114729724'} + ] hidesSubmitUntilRun: true hidesPlayButton: true hidesRunShortcut: true @@ -13,6 +19,7 @@ module.exports = LevelOptions = requiredCode: ['moveRight'] 'gems-in-the-deep': disableSpaces: true + helpVideos: [{style: 'original', URL: '//player.vimeo.com/video/114730449'}] hidesSubmitUntilRun: true hidesPlayButton: true hidesRunShortcut: true @@ -24,6 +31,7 @@ module.exports = LevelOptions = restrictedGear: {feet: 'leather-boots'} 'shadow-guard': disableSpaces: true + helpVideos: [{style: 'original', URL: '//player.vimeo.com/video/114734163'}] hidesSubmitUntilRun: true hidesPlayButton: true hidesRunShortcut: true @@ -35,6 +43,7 @@ module.exports = LevelOptions = restrictedGear: {feet: 'leather-boots', 'right-hand': 'simple-sword'} 'kounter-kithwise': disableSpaces: true + helpVideos: [{style: 'original', URL: '//player.vimeo.com/video/114734160'}] hidesPlayButton: true hidesRunShortcut: true hidesHUD: true @@ -44,6 +53,7 @@ module.exports = LevelOptions = requiredGear: {feet: 'simple-boots'} restrictedGear: {feet: 'leather-boots', 'right-hand': 'simple-sword', 'programming-book': 'programmaticon-i'} 'crawlways-of-kithgard': + helpVideos: [{style: 'original', URL: '//player.vimeo.com/video/114734162'}] hidesPlayButton: true hidesRunShortcut: true hidesHUD: true @@ -54,6 +64,7 @@ module.exports = LevelOptions = restrictedGear: {feet: 'leather-boots', 'right-hand': 'simple-sword', 'programming-book': 'programmaticon-i'} 'forgetful-gemsmith': disableSpaces: true + helpVideos: [{style: 'original', URL: '//player.vimeo.com/video/114734165'}] hidesPlayButton: true hidesRunShortcut: true hidesHUD: true @@ -64,6 +75,7 @@ module.exports = LevelOptions = restrictedGear: {feet: 'leather-boots', 'programming-book': 'programmaticon-i'} 'true-names': disableSpaces: true + helpVideos: [{style: 'original', URL: '//player.vimeo.com/video/114734166'}] hidesPlayButton: true hidesRunShortcut: true hidesHUD: true @@ -75,6 +87,7 @@ module.exports = LevelOptions = requiredCode: ['Brak'] 'favorable-odds': disableSpaces: true + helpVideos: [{style: 'original', URL: '//player.vimeo.com/video/114734656'}] hidesPlayButton: true hidesRunShortcut: true hidesHUD: true @@ -85,6 +98,7 @@ module.exports = LevelOptions = restrictedGear: {feet: 'leather-boots', 'programming-book': 'programmaticon-i'} 'the-raised-sword': disableSpaces: true + helpVideos: [{style: 'original', URL: '//player.vimeo.com/video/114734655'}] hidesPlayButton: true hidesRunShortcut: true hidesHUD: true @@ -103,6 +117,12 @@ module.exports = LevelOptions = restrictedGear: {feet: 'leather-boots'} requiredCode: ['loop'] 'haunted-kithmaze': + helpVideos: [ + {style: 'original', URL: '//player.vimeo.com/video/114921605'} + {style: 'scripted', URL: '//player.vimeo.com/video/114730074'} + {style: 'eccentric', URL: '//player.vimeo.com/video/114729727'} + {style: 'edited', URL: '//player.vimeo.com/video/114729723'} + ] hidesRunShortcut: true hidesHUD: true hidesSay: true @@ -120,6 +140,7 @@ module.exports = LevelOptions = requiredGear: {feet: 'simple-boots', 'programming-book': 'programmaticon-i'} restrictedGear: {feet: 'leather-boots'} 'the-second-kithmaze': + helpVideos: [{style: 'original', URL: '//player.vimeo.com/video/114899761'}] hidesHUD: true hidesSay: true hidesCodeToolbar: true @@ -306,8 +327,41 @@ module.exports = LevelOptions = requiredGear: {} restrictedGear: {} 'the-mighty-sand-yak': - requiredGear: {} - restrictedGear: {} + #requiredGear: {neck: 'rough-sense-stone'} # Too many players probably won't have this, and we don't have a way to require players to buy it yet. + restrictedGear: {flag: 'basic-flags'} 'oasis': + requiredGear: {} + restrictedGear: {flag: 'basic-flags'} + 'sarven-road': + requiredGear: {} + restrictedGear: {flag: 'basic-flags'} + 'sarven-gaps': + requiredGear: {'right-hand': 'crude-builders-hammer'} + restrictedGear: {flag: 'basic-flags'} + 'thunderhooves': + requiredGear: {'right-hand': 'crude-builders-hammer'} + restrictedGear: {flag: 'basic-flags'} + 'medical-attention': + requiredGear: {'right-hand': 'long-sword'}, #neck: 'polished-sense-stone'} # We don't have a way to require players to buy it yet. + restrictedGear: {'right-hand': 'crude-builders-hammer', flag: 'basic-flags'} + 'minesweeper': + requiredGear: {} + restrictedGear: {flag: 'basic-flags'} + 'sarven-sentry': + requiredGear: {'right-hand': 'crude-builders-hammer', flag: 'basic-flags'} + restrictedGear: {} + 'keeping-time': + requiredGear: {} # watch + restrictedGear: {} + 'hoarding-gold': + requiredGear: {} + restrictedGear: {} + 'decoy-drill': + requiredGear: {} # new builder's hammer + restrictedGear: {} + 'yakstraction': + requiredGear: {} # new builder's hammer + restrictedGear: {} + 'sarven-brawl': requiredGear: {} restrictedGear: {} diff --git a/app/lib/world/GoalManager.coffee b/app/lib/world/GoalManager.coffee index a9c933221..abef73901 100644 --- a/app/lib/world/GoalManager.coffee +++ b/app/lib/world/GoalManager.coffee @@ -278,7 +278,7 @@ module.exports = class GoalManager extends CocoClass # saveThangs: by default we would want to save all the Thangs, which means that we would want none of them to be 'done' numNeeded = _.size(stateThangs) - Math.max((goal.howMany ? 1), _.size stateThangs) + 1 numDone = _.filter(stateThangs).length - #console.log 'needed', numNeeded, 'done', numDone, 'of total', _.size(stateThangs), 'with how many', goal.howMany, 'and stateThangs', stateThangs, 'for', goalID, thangID, 'on frame', frameNumber + #console.log 'needed', numNeeded, 'done', numDone, 'of total', _.size(stateThangs), 'with how many', goal.howMany, 'and stateThangs', stateThangs, 'for', goalID, thangID, 'on frame', frameNumber, 'all Thangs', _.keys(stateThangs), _.values(stateThangs) return unless numDone >= numNeeded return if state.status and not success # already failed it; don't wipe keyframe state.status = if success then 'success' else 'failure' diff --git a/app/lib/world/thang.coffee b/app/lib/world/thang.coffee index 0c7721081..05d21249a 100644 --- a/app/lib/world/thang.coffee +++ b/app/lib/world/thang.coffee @@ -179,6 +179,8 @@ module.exports = class Thang options.colorConfig.team = teamColor if @color and color = @grabColorConfig @color options.colorConfig.color = color + if @colors + options.colorConfig[colorType] = colorValue for colorType, colorValue of @colors options grabColorConfig: (color) -> diff --git a/app/locale/ar.coffee b/app/locale/ar.coffee index 460dfb5fe..042128c25 100644 --- a/app/locale/ar.coffee +++ b/app/locale/ar.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi fork: "إنسخ" play: "إلعب" # When used as an action verb, like "Play next level" retry: "إعادة" +# actions: "Actions" +# info: "Info" +# help: "Help" watch: "مشاهدة" unwatch: "إنهاء المشاهدة" submit_patch: "تقديم التصحيح" +# submit_changes: "Submit Changes" # general: # and: "and" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi # date: "Date" # body: "Body" # version: "Version" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" +# review: "Review" # version_history: "Version History" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" # result: "Result" # results: "Results" # description: "Description" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi forum_prefix: "لأي شيء عام، يرجى المحاولة" forum_page: "منتدانا" forum_suffix: "بدلا من ذلك." +# where_reply: "Where should we reply?" send: "إرسال تعليقات" contact_candidate: "الاتصال المرشح" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/bg.coffee b/app/locale/bg.coffee index 6fc61b920..480442f3d 100644 --- a/app/locale/bg.coffee +++ b/app/locale/bg.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "български език", englishDescri # fork: "Fork" # play: "Play" # When used as an action verb, like "Play next level" # retry: "Retry" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" general: and: "и" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "български език", englishDescri date: "Дата" # body: "Body" version: "Версия" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" +# review: "Review" version_history: "Предишни версии" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" # result: "Result" results: "Резултати" description: "Описание" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "български език", englishDescri # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "български език", englishDescri # forum_prefix: "For anything public, please try " # forum_page: "our forum" # forum_suffix: " instead." +# where_reply: "Where should we reply?" # send: "Send Feedback" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "български език", englishDescri # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "български език", englishDescri # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/ca.coffee b/app/locale/ca.coffee index a57ebfeae..ef941a574 100644 --- a/app/locale/ca.coffee +++ b/app/locale/ca.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr fork: "Fork" play: "Jugar" # When used as an action verb, like "Play next level" retry: "Tornar a intentar" +# actions: "Actions" +# info: "Info" +# help: "Help" watch: "Veure" unwatch: "Amaga" submit_patch: "Enviar pegat" +# submit_changes: "Submit Changes" general: # and: "and" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr date: "Data" body: "Cos" version: "Versió" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" +# review: "Review" version_history: "Historial de versions" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" result: "Resultat" results: "Resultats" description: "Descripció" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr forum_prefix: "Per a qualsevol publicació, si us plau prova " forum_page: "el nostre fòrum" forum_suffix: " sinó" +# where_reply: "Where should we reply?" send: "Enviar comentari" contact_candidate: "Contactar amb el candidat" # Deprecated recruitment_reminder: "Utilitza aquest formulari per a contactar amb els candidats que vols entrevistar. Recorda que CodeCombat cobrará el 15% del sou del primer any. El cost es per la contactacio del treballador i es reemborsable durant 90 dies si el treballdor no roman contractat . Temporals, a distancia i treballadors de contracte són gratuits, com els becaris." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr more: "Més" wiki: "Wiki" live_chat: "Xat en directe" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/cs.coffee b/app/locale/cs.coffee index 4f527d923..56b775367 100644 --- a/app/locale/cs.coffee +++ b/app/locale/cs.coffee @@ -10,7 +10,7 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr ipad_browser: "Špatné zprávy: CodeCombat neběží na iPad v prohlížeči. Dobré zprávy: naše iPad aplikace čeká na schválení od Apple." campaign: "Kampaň" for_beginners: "Pro začátečníky" - multiplayer: "Hra více hráčů" # Not currently shown on home page + multiplayer: "Multiplayer" # Not currently shown on home page for_developers: "Pro vývojáře" # Not currently shown on home page. or_ipad: "Nebo stáhnout pro iPad" @@ -30,7 +30,7 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr legal: "Licence" about: "O programu" contact: "Kontakt" - twitter_follow: "Sledovat na twitteru" + twitter_follow: "Sledovat na Twitteru" teachers: "Učitelé" modal: @@ -60,7 +60,7 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr locked: "Zamčené" purchasable: "Zakoupitelné" # For a hero you unlocked but haven't purchased available: "Dostupné" -# skills_granted: "Skills Granted" # Property documentation details + skills_granted: "Nabyté dovednosti" # Property documentation details heroes: "Hrdinové" # Tooltip on hero shop button from /play achievements: "Úspěchy" # Tooltip on achievement list button from /play account: "Účet" # Tooltip on account button from /play @@ -69,7 +69,7 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr change_hero: "Změnit hrdinu" # Go back from choose inventory to choose hero choose_inventory: "Vyzbrojit se předměty" buy_gems: "Zakoupit drahokamy" -# campaign_desert: "Desert Campaign" + campaign_desert: "Pouštní kampaň" campaign_forest: "Lesní kampaň" campaign_dungeon: "Jeskynní kampaň" subscription_required: "Předplatné vyžadováno" @@ -102,140 +102,151 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr log_in: "Přihlásit" logging_in: "Přihlašování" log_out: "Odhlásit" -# forgot_password: "Forgot your password?" -# authenticate_gplus: "Authenticate G+" -# load_profile: "Load G+ Profile" -# load_email: "Load G+ Email" + forgot_password: "Zapomenuté heslo?" + authenticate_gplus: "Ověřit Google+" + load_profile: "Načíst Google+ Profil" + load_email: "Načíst Google+ Email" finishing: "Dokončování" -# sign_in_with_facebook: "Sign in with Facebook" -# sign_in_with_gplus: "Sign in with G+" -# signup_switch: "Want to create an account?" + sign_in_with_facebook: "Přihlásit přes Facebook" + sign_in_with_gplus: "Přihlásit přes Google+" + signup_switch: "Chcete si založit účet?" signup: email_announcements: "Dostávat novinky emailem" creating: "Vytvářím účet..." sign_up: "Přihlášení" log_in: "zadejte vaše heslo" -# social_signup: "Or, you can sign up through Facebook or G+:" -# required: "You need to log in before you can go that way." -# login_switch: "Already have an account?" + social_signup: "Nebo se přihlašte přes Facebook nebo Google+:" + required: "Nejprve se musíte přihlásit." + login_switch: "Máte již účet?" recover: recover_account_title: "Obnovení účtu" send_password: "Zaslat nové heslo" -# recovery_sent: "Recovery email sent." + recovery_sent: "Email s obnovením byl zaslán." -# items: -# primary: "Primary" -# secondary: "Secondary" -# armor: "Armor" -# accessories: "Accessories" -# misc: "Misc" -# books: "Books" + items: + primary: "Hlavní" + secondary: "Vedlejší" + armor: "Zbroj" + accessories: "Doplňky" + misc: "Různé" + books: "Spisy" common: loading: "Načítání..." saving: "Ukládání..." sending: "Odesílání..." -# send: "Send" + send: "Zaslat" cancel: "Zrušit" save: "Uložit" -# publish: "Publish" -# create: "Create" + publish: "Publikovat" + create: "Vytvořit" manual: "Ručně" fork: "Klonovat" - play: "Přehrát" # When used as an action verb, like "Play next level" -# retry: "Retry" + play: "Hrát" # When used as an action verb, like "Play next level" + retry: "Znovu" + actions: "Akce" + info: "Info" + help: "Pomoc" # watch: "Watch" # unwatch: "Unwatch" -# submit_patch: "Submit Patch" + submit_patch: "Odeslat opravu" + submit_changes: "Odeslat změny" general: and: "a" name: "Jméno" -# date: "Date" + date: "Datum" body: "Tělo" version: "Verze" + submitter: "Odesílatel" + submitted: "Odesláno" commit_msg: "Popisek ukládání" -# version_history: "Version History" - version_history_for: "Verze historie pro: " -# result: "Result" + review: "Přezkoumání" + version_history: "Seznam změn" + version_history_for: "Seznam změn pro: " + select_changes: "Vyberte dvě změny pro porovnání." + undo: "Zpět (Ctrl+Z)" + redo: "Znovu dopředu (Ctrl+Shift+Z)" + play_preview: "Přehrát náhled současné úrovně" + result: "Výsledek" results: "Výsledky" description: "Popis" or: "nebo" -# subject: "Subject" + subject: "Předmět" email: "Email" -# password: "Password" + password: "Heslo" message: "Zpráva" -# code: "Code" -# ladder: "Ladder" -# when: "When" -# opponent: "Opponent" -# rank: "Rank" -# score: "Score" -# win: "Win" -# loss: "Loss" -# tie: "Tie" -# easy: "Easy" -# medium: "Medium" -# hard: "Hard" -# player: "Player" -# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard + code: "Kód" + ladder: "Žebřík" + when: "Když" + opponent: "Protivník" + rank: "Pořadí" + score: "Skóre" + win: "Vyhrané" + loss: "Prohrané" + tie: "Remízy" + easy: "Jednoduché" + medium: "Střední" + hard: "Těžké" + player: "Hráč" + player_level: "Úroveň" # Like player level 5, not like level: Dungeons of Kithgard -# units: -# second: "second" -# seconds: "seconds" -# minute: "minute" -# minutes: "minutes" -# hour: "hour" -# hours: "hours" -# day: "day" -# days: "days" -# week: "week" -# weeks: "weeks" -# month: "month" -# months: "months" -# year: "year" -# years: "years" + units: + second: "sekunda" + seconds: "sekund" + minute: "minuta" + minutes: "minut" + hour: "hodina" + hours: "hodin" + day: "den" + days: "dní" + week: "týden" + weeks: "týdnů" + month: "měsíc" + months: "měsíců" + year: "rok" + years: "roků" play_level: done: "Hotovo" home: "Domů" # Not used any more, will be removed soon. -# level: "Level" # Like "Level: Dungeons of Kithgard" -# skip: "Skip" -# game_menu: "Game Menu" + level: "Úroveň" # Like "Level: Dungeons of Kithgard" + skip: "Přeskočit" + game_menu: "Herní menu" guide: "Průvodce" restart: "Restartovat" - goals: "Cíl" -# goal: "Goal" -# running: "Running..." -# success: "Success!" -# incomplete: "Incomplete" -# timed_out: "Ran out of time" -# failing: "Failing" + goals: "Cíle" + goal: "Cíl" + running: "Běžící..." + success: "Úspěch!" + incomplete: "Nedokončený" + timed_out: "Vypršel čas" + failing: "Selhání" action_timeline: "Časová osa" click_to_select: "Vyberte kliknutím." -# control_bar_multiplayer: "Multiplayer" -# control_bar_join_game: "Join Game" -# reload: "Reload" - reload_title: "Znovunačíst veškerý kód?" + control_bar_multiplayer: "Multiplayer" + control_bar_join_game: "Vstoupit do hry" + reload: "Znovu načíst" + reload_title: "Znovu načíst veškerý kód?" reload_really: "Opravdu chcete resetovat tuto úroveň do počátečního stavu?" reload_confirm: "Znovu načíst vše" -# victory: "Victory" -# victory_title_prefix: "" + victory: "Vítězství" + victory_title_prefix: "" victory_title_suffix: " Hotovo" victory_sign_up: "Přihlásit se pro uložení postupu" victory_sign_up_poke: "Chcete uložit váš kód? Vytvořte si účet zdarma!" victory_rate_the_level: "Ohodnoťte tuto úroveň: " # Only in old-style levels. -# victory_return_to_ladder: "Return to Ladder" -# victory_play_continue: "Continue" -# victory_saving_progress: "Saving Progress" + victory_return_to_ladder: "Vrátit se na Žebřík" + victory_play_continue: "Pokračovat" + victory_saving_progress: "Ukládání postupu" victory_go_home: "Přejít domů" # Only in old-style levels. victory_review: "Připomínky!" # Only in old-style levels. victory_hour_of_code_done: "Skončili jste?" victory_hour_of_code_done_yes: "Ano, pro dnešek jsem skončil!" -# victory_experience_gained: "XP Gained" -# victory_gems_gained: "Gems Gained" + victory_experience_gained: "Získáno zkušeností" + victory_gems_gained: "Získáno drahokamů" guide_title: "Průvodce" tome_minion_spells: "Vaše oblíbená kouzla" # Only in old-style levels. tome_read_only_spells: "Kouzla jen pro čtení" # Only in old-style levels. @@ -243,34 +254,34 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr # tome_cast_button_run: "Run" # tome_cast_button_running: "Running" # tome_cast_button_ran: "Ran" -# tome_submit_button: "Submit" + tome_submit_button: "Odeslat" # tome_reload_method: "Reload original code for this method" # Title text for individual method reload button. -# tome_select_method: "Select a Method" -# tome_see_all_methods: "See all methods you can edit" # Title text for method list selector (shown when there are multiple programmable methdos). + tome_select_method: "Vybrat metodu" + tome_see_all_methods: "Vybrat všechny metody, které mohou být upraveny" # Title text for method list selector (shown when there are multiple programmable methdos). tome_select_a_thang: "Zvolte někoho pro " tome_available_spells: "Dostupná kouzla" -# tome_your_skills: "Your Skills" -# tome_help: "Help" -# tome_current_method: "Current Method" -# hud_continue_short: "Continue" -# code_saved: "Code Saved" -# skip_tutorial: "Skip (esc)" -# keyboard_shortcuts: "Key Shortcuts" -# loading_ready: "Ready!" -# loading_start: "Start Level" -# problem_alert_title: "Fix Your Code" -# time_current: "Now:" -# time_total: "Max:" -# time_goto: "Go to:" -# infinite_loop_try_again: "Try Again" -# infinite_loop_reset_level: "Reset Level" -# infinite_loop_comment_out: "Comment Out My Code" + tome_your_skills: "Vaše dovednosti" + tome_help: "Pomoc" + tome_current_method: "Aktuální metoda" + hud_continue_short: "Pokračovat" + code_saved: "Kód uložen" + skip_tutorial: "Přeskočit (esc)" + keyboard_shortcuts: "Klávesové zkratky" + loading_ready: "Připraven!" + loading_start: "Začít úroveň" + problem_alert_title: "Oprav si kód" + time_current: "Nyní:" + time_total: "Max:" + time_goto: "Jít na:" + infinite_loop_try_again: "Zkusit znovu" + infinite_loop_reset_level: "Resetovat úroveň" + infinite_loop_comment_out: "Zakomentovat můj kód" # 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, inside game menu (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_think_solution: "Think of the solution, not the problem." + tip_scrub_shortcut: "Ctrl+[ a Ctrl+] pro přetočení a rychlý přesun." + tip_guide_exists: "Klikněte na průvode uvnitř herního menu (nahoře na stránce), pro užitečné informace." + tip_open_source: "CodeCombat je 100% open source!" + tip_beta_launch: "CodeCombat spustil svoji beta verzi v Říjnu, 2013." + tip_think_solution: "Myslete na řešení, ne na problém." # tip_theory_practice: "In theory, there is no difference between theory and practice. But in practice, there is. - Yogi Berra" # tip_error_free: "There are two ways to write error-free programs; only the third one works. - Alan Perlis" # tip_debugging_program: "If debugging is the process of removing bugs, then programming must be the process of putting them in. - Edsger W. Dijkstra" @@ -297,87 +308,88 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr # tip_extrapolation: "There are only two kinds of people: those that can extrapolate from incomplete data..." game_menu: -# inventory_tab: "Inventory" -# save_load_tab: "Save/Load" -# options_tab: "Options" -# guide_tab: "Guide" + inventory_tab: "Inventář" + save_load_tab: "Uložit/Načíst" + options_tab: "Možnosti" + guide_tab: "Průvodce" multiplayer_tab: "Multiplayer" -# auth_tab: "Sign Up" -# inventory_caption: "Equip your hero" -# choose_hero_caption: "Choose hero, language" -# save_load_caption: "... and view history" -# options_caption: "Configure settings" -# guide_caption: "Docs and tips" -# multiplayer_caption: "Play with friends!" -# auth_caption: "Save your progress." + auth_tab: "Registrovat se" + inventory_caption: "Vybavte svého hrdinu" + choose_hero_caption: "Vyberte hrdinu, jazyk" + save_load_caption: "... a prohledněte si historii" + options_caption: "Konfigurace nastavení" + guide_caption: "Dokumentace a tipy" + multiplayer_caption: "Hrajte s přáteli!" + auth_caption: "Uložte váš postup." -# inventory: -# choose_inventory: "Equip Items" -# equipped_item: "Equipped" -# available_item: "Available" -# restricted_title: "Restricted" -# should_equip: "(double-click to equip)" -# equipped: "(equipped)" -# locked: "(locked)" -# restricted: "(restricted in this level)" -# equip: "Equip" -# unequip: "Unequip" + inventory: + choose_inventory: "Nasadit předměty" + equipped_item: "Nasazeno" + available_item: "Dostupné" + restricted_title: "Omezeno" + should_equip: "(dvojklik pro nasazení)" + equipped: "(nasazeno)" + locked: "(zamčeno)" + restricted: "(omezeno v této úrovni)" + equip: "Nasadit" + unequip: "Sundat" -# buy_gems: -# few_gems: "A few gems" -# pile_gems: "Pile of gems" -# chest_gems: "Chest of gems" -# purchasing: "Purchasing..." -# declined: "Your card was declined" -# retrying: "Server error, retrying." -# prompt_title: "Not Enough Gems" -# prompt_body: "Do you want to get more?" -# prompt_button: "Enter Shop" + buy_gems: + few_gems: "Pár drahokamů" + pile_gems: "Hromada drahokamů" + chest_gems: "Truhlice drahokamů" + purchasing: "Probíhá nákup..." + declined: "Vaše karta byla odmítnuta" + retrying: "Chyba serveru, obnovování." + prompt_title: "Nedostatek drahokamů" + prompt_body: "Chcete získat více?" + prompt_button: "Vstoupit do obchodu" + recovered: "Obnovení již zakoupených drahokamů proběhlo úspěšně. Aktualizujte stránku prosím." subscribe: subscribe_title: "Předplacení" -# unsubscribe: "Unsubscribe" -# levels: "Get more practice with bonus levels!" -# heroes: "More powerful heroes!" -# gems: "3500 bonus gems every month!" -# items: "Over 250 bonus items!" -# parents: "For Parents" -# parents_title: "Your child will learn to code." -# parents_blurb1: "With CodeCombat, your child learns by writing real code. They start by learning simple commands, and progress to more advanced topics." -# parents_blurb2: "For $9.99 USD/mo, they get new challenges every week and personal email support from professional programmers." -# parents_blurb3: "No Risk: 100% money back guarantee, easy 1-click unsubscribe." + unsubscribe: "Zrušit předplacení" + levels: "Získejte více praxe s bonusovými úrovněmi!" + heroes: "Více silnějších hrdinů!" + gems: "3500 bonusových drahokamů každý měsíc!" + items: "Více než 250 bonusových předmětů!" + parents: "Pro rodiče" + parents_title: "Vaše dítě se naučí programovat." + parents_blurb1: "Pomocí CodeCombat se vaše dítě učí psaním opravdového kódu. Začínají učením se základním příkazů a postupně se přidávají pokročilejší témata." + parents_blurb2: "Za $9.99 USD/měsíc, získají nové výzvy každý týden a osobní emailovou podporu od profesionálních programátorů." + parents_blurb3: "Bez rizika: 100% záruka vrácení peněz, jednoduché zrušení předplatného na 1 kliknutí." subscribe_button: "Předplatit" stripe_description: "Měsíční předplatné" subscription_required_to_play: "Pro hraní této úrovně potřebujete předplatné." -# choose_hero: -# choose_hero: "Choose Your Hero" -# programming_language: "Programming Language" -# programming_language_description: "Which programming language do you want to use?" -# default: "Default" -# experimental: "Experimental" -# python_blurb: "Simple yet powerful, great for beginners and experts." -# javascript_blurb: "The language of the web. (Not the same as Java.)" -# coffeescript_blurb: "Nicer JavaScript syntax." -# clojure_blurb: "A modern Lisp." -# lua_blurb: "Game scripting language." -# io_blurb: "Simple but obscure." -# status: "Status" -# weapons: "Weapons" -# weapons_warrior: "Swords - Short Range, No Magic" -# weapons_ranger: "Crossbows, Guns - Long Range, No Magic" -# weapons_wizard: "Wands, Staffs - Long Range, Magic" -# attack: "Damage" # Can also translate as "Attack" -# health: "Health" -# speed: "Speed" -# regeneration: "Regeneration" -# range: "Range" # As in "attack or visual range" -# blocks: "Blocks" # As in "this shield blocks this much damage" -# backstab: "Backstab" # As in "this dagger does this much backstab damage" -# skills: "Skills" -# available_for_purchase: "Available for Purchase" # Shows up when you have unlocked, but not purchased, a hero in the hero store -# level_to_unlock: "Level to unlock:" # Label for which level you have to beat to unlock a particular hero (click a locked hero in the store to see) -# restricted_to_certain_heroes: "Only certain heroes can play this level." + choose_hero: + choose_hero: "Vyberte vašeho hrdinu" + programming_language: "Programovací jazyk" + programming_language_description: "Jaký programovací jazyk chcete použít?" + default: "Výchozí" + experimental: "Pokusný" + python_blurb: "Jednoduchý byť silný, dobrý pro začátečníky i pokročilé." + javascript_blurb: "Jazyk webových stránek. (Není stejný jako Java.)" + coffeescript_blurb: "Hezčí JavaScript syntaxe." + clojure_blurb: "Moderní Lisp." + lua_blurb: "Jazyk pro skriptování her." + io_blurb: "Jednoduchý ale nejasný." + status: "Stav" + weapons: "Zbraně" + weapons_warrior: "Meče - Krátká vzdálenost, Žádná magie" + weapons_ranger: "Kuše, Zbraně - Dlouhá vzdálenost, Žádná magie" + weapons_wizard: "Hole, Tyče - Dlouhá vzdálenost, Magie" + attack: "Poškození" # Can also translate as "Attack" + health: "Zdraví" + speed: "Rychlost" + regeneration: "Regenerace" + range: "Vzdálenost" # As in "attack or visual range" + blocks: "Blokuje" # As in "this shield blocks this much damage" + backstab: "Zapíchnutí do zad" # As in "this dagger does this much backstab damage" + skills: "Dovednosti" + available_for_purchase: "Dostupné pro zakoupení" # Shows up when you have unlocked, but not purchased, a hero in the hero store + level_to_unlock: "Úrovně pro odemknutí:" # Label for which level you have to beat to unlock a particular hero (click a locked hero in the store to see) + restricted_to_certain_heroes: "Pouze určití hrdinové mohou hrát tuto úroveň." # skill_docs: # writable: "writable" # Hover over "attack" in Your Skills while playing a level to see most of this @@ -397,22 +409,22 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr # returns: "Returns" # granted_by: "Granted by" -# save_load: -# granularity_saved_games: "Saved" -# granularity_change_history: "History" + save_load: + granularity_saved_games: "Uložené" + granularity_change_history: "Historie" -# options: -# general_options: "General Options" # Check out the Options tab in the Game Menu while playing a level -# volume_label: "Volume" -# music_label: "Music" -# music_description: "Turn background music on/off." -# autorun_label: "Autorun" + options: + general_options: "Obecné nastavení" # Check out the Options tab in the Game Menu while playing a level + volume_label: "Hlasitost" + music_label: "Hudba" + music_description: "Vypnout/zapnout hudbu v pozadí." + autorun_label: "Autospuštění" # autorun_description: "Control automatic code execution." # editor_config: "Editor Config" # editor_config_title: "Editor Configuration" -# editor_config_level_language_label: "Language for This Level" + editor_config_level_language_label: "Jazyky pro tuto úroveň" # editor_config_level_language_description: "Define the programming language for this particular level." -# editor_config_default_language_label: "Default Programming Language" + editor_config_default_language_label: "Výchozí programovací jazyk" # editor_config_default_language_description: "Define the programming language you want to code in when starting new levels." # editor_config_keybindings_label: "Key Bindings" # editor_config_keybindings_default: "Default (Ace)" @@ -435,25 +447,25 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr why_paragraph_2_italic_caps: "POČKEJ MAMI, MUSÍM DOKONČIT ÚROVEŇ!" why_paragraph_2_suffix: "Proto je CodeCombat opravdová multiplayer hra, ne lekce kurzu s herními odznáčky. Neskončí, dokud sami nepřestanete, což je tentokrát dobrá věc." why_paragraph_3: "A jestli se máte stát závislými na nějaké hře, pak ať je to hra tato, a staňte se díky tomu kouzelníky a odborníky v této technické době." -# press_title: "Bloggers/Press" + press_title: "Blogeři/Tisk" # press_paragraph_1_prefix: "Want to write about us? Feel free to download and use all of the resources included in our" # press_paragraph_1_link: "press packet" # press_paragraph_1_suffix: ". All logos and images may be used without contacting us directly." -# team: "Team" -# george_title: "CEO" -# george_blurb: "Businesser" -# scott_title: "Programmer" -# scott_blurb: "Reasonable One" -# nick_title: "Programmer" -# nick_blurb: "Motivation Guru" -# michael_title: "Programmer" -# michael_blurb: "Sys Admin" -# matt_title: "Programmer" -# matt_blurb: "Bicyclist" + team: "Tým" + george_title: "Výkonný ředitel" + george_blurb: "Obchodník" + scott_title: "Programátor" + scott_blurb: "Ten potřebný" + nick_title: "Programátor" + nick_blurb: "Motivační guru" + michael_title: "Programátor" + michael_blurb: "Systémový administrátor" + matt_title: "Programátor" + matt_blurb: "Cyklista" versions: - save_version_title: "Uložit novou Verzi" - new_major_version: "Nová hlavní Verze" + save_version_title: "Uložit novou verzi" + new_major_version: "Nová hlavní verze" cla_prefix: "Před uložením musíte souhlasit s" cla_url: "licencí" cla_suffix: "." @@ -463,11 +475,12 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr contact_us: "Konktujte CodeCombat" welcome: "Rádi od vás uslyšíme. Použijte tento formulář pro odeslání emailu. " contribute_prefix: "Chcete-li nám přispět, prohlédněte si naši stránku " - contribute_page: "přispivatelů" + contribute_page: "přispěvatelů" contribute_suffix: "!" forum_prefix: "Pro ostatní veřejné věci, prosím zkuste " forum_page: "naše fórum" forum_suffix: "." +# where_reply: "Where should we reply?" send: "Odeslat připomínku" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -478,19 +491,19 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr autosave: "Automatické ukládání změn" me_tab: "O mne" picture_tab: "Obrázek" -# upload_picture: "Upload a picture" + upload_picture: "Nahrát obrázek" password_tab: "Heslo" emails_tab: "Emaily" -# admin: "Admin" + admin: "Admin" new_password: "Nové heslo" new_password_verify: "Potvrdit" email_subscriptions: "Odebírat emailem" email_subscriptions_none: "Žádné odebírání emailem." email_announcements: "Oznámení" email_announcements_description: "Zasílat emaily o posledních novinkách a o postupu ve vývoji CodeCombat." -# email_notifications: "Notifications" + email_notifications: "Upozornění" # email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." -# email_any_notes: "Any Notifications" + email_any_notes: "Jakékoliv upozornění" # email_any_notes_description: "Disable to stop all activity notification emails." # email_news: "News" # email_recruit_notes: "Job Opportunities" @@ -580,6 +593,9 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" level_some_options: "Volby?" level_tab_thangs: "Thangy" level_tab_scripts: "Skripty" @@ -921,7 +937,7 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr practices_title: "Doporučené postupy" practices_description: "Toto je příslib našeho přístupu v jednoduchém jazyce." privacy_title: "Soukromí" -# privacy_description: "We will not sell any of your personal information." + privacy_description: "Neprodáme žádné vaše osobní informace." security_title: "Zabezpečení" security_description: "Usilujeme o to, abychom udrželi vaše osobní informace v bezpečí. Jako otevřený projekt jsme přístupni komukoliv k provedení kontroly kódu pro zlepšení našich bezpečnostních systémů." email_title: "Email" diff --git a/app/locale/da.coffee b/app/locale/da.coffee index 1c057046b..d4b3886fc 100644 --- a/app/locale/da.coffee +++ b/app/locale/da.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans fork: "Forgren" play: "Spil" # When used as an action verb, like "Play next level" # retry: "Retry" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" general: and: "og" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans # date: "Date" body: "krop" version: "version" +# submitter: "Submitter" +# submitted: "Submitted" commit_msg: "ændringsnotat" +# review: "Review" # version_history: "Version History" version_history_for: "versionhistorie for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" result: "Resultat" results: "resultater" description: "beskrivelse" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans forum_prefix: "For noget offentligt, prøv venligst " forum_page: "vores forum" forum_suffix: " istedet." +# where_reply: "Where should we reply?" send: "Send Feedback" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" diff --git a/app/locale/de-AT.coffee b/app/locale/de-AT.coffee index 176bd46e7..1a8df7e5b 100644 --- a/app/locale/de-AT.coffee +++ b/app/locale/de-AT.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription: fork: "Fork" play: "Abspielen" # When used as an action verb, like "Play next level" retry: "Erneut versuchen" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" submit_patch: "Patch einreichen" +# submit_changes: "Submit Changes" general: and: "und" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription: date: "Datum" body: "Inhalt" version: "Version" +# submitter: "Submitter" +# submitted: "Submitted" commit_msg: "Commit Nachricht" +# review: "Review" version_history: "Versionshistorie" version_history_for: "Versionsgeschichte für: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" result: "Ergebnis" results: "Ergebnisse" description: "Beschreibung" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription: # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription: forum_prefix: "Für alle öffentlichen Themen, benutze stattdessen " forum_page: "unser Forum" forum_suffix: "." +# where_reply: "Where should we reply?" send: "Sende Feedback" contact_candidate: "Kontaktiere Kandidaten" # Deprecated recruitment_reminder: "Benutzen Sie dieses Formular um Kontakt zu Kandidaten aufzunehmen, an denen Sie interessiert sind. Bedenken Sie das CodeCombat 15% des ersten Jahresgehaltes berechnet. Diese Gebühr wird fällig wenn Sie den Kandidaten einstellen und ist für 90 Tage rückerstattungsfähig, sollte der Mitarbeiter nicht eingestellt bleiben. Mitarbeiter die für Teilzeit, Remote oder eine Auftragsarbeit eingestellt werden sind kostenlos, das gilt auch für Praktikanten." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription: more: "Mehr" wiki: "Wiki" live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" level_some_options: "Einige Einstellungsmöglichkeiten?" level_tab_thangs: "Thangs" level_tab_scripts: "Skripte" diff --git a/app/locale/de-CH.coffee b/app/locale/de-CH.coffee index aa57d12e8..494f9df98 100644 --- a/app/locale/de-CH.coffee +++ b/app/locale/de-CH.coffee @@ -1,13 +1,13 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "German (Switzerland)", translation: home: - slogan: "Lern, wiemer JavaScript programmiert indem du es Spiel spielsch!" + slogan: "Lern, wiemer JavaScript programmiert, indem du es Spiel spielsch!" no_ie: "CodeCombat funktioniert uf InternetExplorer 8 und älter nid. Sorry!" # Warning that only shows up in IE8 and older no_mobile: "CodeCombat isch nid für mobili Grät entwicklet worde und funktioniert vilicht nid!" # Warning that shows up on mobile devices play: "Spiele" # The big play button that just starts playing a level # try_it: "Try It" # Alternate wording for Play button old_browser: "Uh oh, din Browser isch z alt zum CodeCombat spiele. Sorry!" # Warning that shows up on really old Firefox/Chrome/Safari old_browser_suffix: "Du chasches gliich probiere, aber es funktioniert worschinli nid." -# ipad_browser: "Bad news: CodeCombat doesn't run on iPad in the browser. Good news: our native iPad app is awaiting Apple approval." + ipad_browser: "Schächti Nachrichte: CodeCombat funktioniert nonig uf em iPad-Browser. Gueti Nachrichte: Oisi iPad-App wartet nur no druf, vo Apple überprüeft z werde." campaign: "Kampagne" for_beginners: "Für Afänger" multiplayer: "Multiplayer" # Not currently shown on home page @@ -21,9 +21,9 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge blog: "Blog" forum: "Forum" account: "Account" -# profile: "Profile" -# stats: "Stats" -# code: "Code" + profile: "Profil" + stats: "Statistike" + code: "Code" admin: "Admin" # Only shows up when you are an admin home: "Home" contribute: "Mitmache" @@ -31,7 +31,7 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge about: "Über" contact: "Kontakt" twitter_follow: "Folge" -# teachers: "Teachers" + teachers: "Lehrer" modal: close: "Beende" @@ -51,22 +51,22 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge play: play_as: "Spiel als" # Ladder page spectate: "Zueluege" # Ladder page -# players: "players" # Hover over a level on /play -# hours_played: "hours played" # Hover over a level on /play -# items: "Items" # Tooltip on item shop button from /play -# unlock: "Unlock" # For purchasing items and heroes -# confirm: "Confirm" -# owned: "Owned" # For items you own -# locked: "Locked" + players: "Spieler" # Hover over a level on /play + hours_played: "Stunde gspilt" # Hover over a level on /play + items: "Items" # Tooltip on item shop button from /play + unlock: "Freischalte" # For purchasing items and heroes + confirm: "Bestätige" + owned: "Scho gkauft" # For items you own + locked: "Nonig freischaltbar" # purchasable: "Purchasable" # For a hero you unlocked but haven't purchased # available: "Available" # skills_granted: "Skills Granted" # Property documentation details -# heroes: "Heroes" # Tooltip on hero shop button from /play -# achievements: "Achievements" # Tooltip on achievement list button from /play -# account: "Account" # Tooltip on account button from /play -# settings: "Settings" # Tooltip on settings button from /play -# next: "Next" # Go from choose hero to choose inventory before playing a level -# change_hero: "Change Hero" # Go back from choose inventory to choose hero + heroes: "Helde" # Tooltip on hero shop button from /play + achievements: "Achievements" # Tooltip on achievement list button from /play + account: "Account" # Tooltip on account button from /play + settings: "Istellige" # Tooltip on settings button from /play + next: "Wiiter" # Go from choose hero to choose inventory before playing a level + change_hero: "Held wächsle" # Go back from choose inventory to choose hero # choose_inventory: "Equip Items" # buy_gems: "Buy Gems" # campaign_desert: "Desert Campaign" @@ -75,8 +75,8 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge # subscription_required: "Subscription Required" # free: "Free" # subscribed: "Subscribed" -# older_campaigns: "Older Campaigns" -# anonymous: "Anonymous Player" + older_campaigns: "Älteri Kampagne" + anonymous: "Anonyme Spieler" level_difficulty: "Schwierigkeit: " campaign_beginner: "Afängerkampagne" # awaiting_levels_adventurer_prefix: "We release five levels per week." @@ -86,7 +86,7 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge adventurer_prefix: "Du chasch zu de untere Level zrugg goh oder die kommende Level diskutiere im " adventurer_forum: "Abentürer-Forum" adventurer_suffix: "." -# campaign_old_beginner: "Old Beginner Campaign" + campaign_old_beginner: "Alti Afängerkampagne" campaign_old_beginner_description: "... i dere du d Zauberkunst vom Programmiere lernsch." campaign_dev: "Zuefälligi schwierigeri Level" campaign_dev_description: "... i dene du s Interface kenne lernsch, während du öppis chli Schwierigers machsch." @@ -102,14 +102,14 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge log_in: "Ilogge" logging_in: "Am Ilogge" log_out: "Uslogge" -# forgot_password: "Forgot your password?" + forgot_password: "Passwort vergässe?" # authenticate_gplus: "Authenticate G+" # load_profile: "Load G+ Profile" # load_email: "Load G+ Email" -# finishing: "Finishing" -# sign_in_with_facebook: "Sign in with Facebook" -# sign_in_with_gplus: "Sign in with G+" -# signup_switch: "Want to create an account?" + finishing: "Fertigstelle" + sign_in_with_facebook: "Mit Facebook aamelde" + sign_in_with_gplus: "Mit G+ aamelde" + signup_switch: "Willsch es Account erstelle?" signup: email_announcements: "Akündigunge per Mail erhalte" @@ -118,7 +118,7 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge log_in: "Mit Passwort ilogge" social_signup: "Du chasch dich au mit Facebook oder G+ registriere:" required: "Du muesch dich zersch ilogge befor du det dure chasch" -# login_switch: "Already have an account?" + login_switch: "Häsch scho es Account?" recover: recover_account_title: "Account wiederherstelle" @@ -146,41 +146,52 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge # fork: "Fork" play: "Spiele" # When used as an action verb, like "Play next level" retry: "nomol versuche" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" submit_patch: "Patch ireiche" +# submit_changes: "Submit Changes" -# general: -# and: "and" -# name: "Name" -# date: "Date" + general: + and: "und" + name: "Name" + date: "Datum" # body: "Body" -# version: "Version" + version: "Version" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" -# version_history: "Version History" +# review: "Review" + version_history: "Versionsverlauf" # version_history_for: "Version History for: " -# result: "Result" +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" + result: "Resultat" # results: "Results" -# description: "Description" -# or: "or" + description: "Beschriibig" + or: "oder" # subject: "Subject" -# email: "Email" -# password: "Password" -# message: "Message" -# code: "Code" -# ladder: "Ladder" -# when: "When" -# opponent: "Opponent" -# rank: "Rank" -# score: "Score" -# win: "Win" -# loss: "Loss" -# tie: "Tie" -# easy: "Easy" -# medium: "Medium" -# hard: "Hard" -# player: "Player" -# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard + email: "E-mail" + password: "Passwort" + message: "Nachricht" + code: "Code" + ladder: "Leitere" + when: "Wänn" + opponent: "Gegner" + rank: "Rang" + score: "Punktzahl" + win: "Gwünn" + loss: "Verlust" + tie: "Unentschide" + easy: "Eifach" + medium: "Mittel" + hard: "Schwer" + player: "Spieler" + player_level: "Stufe" # Like player level 5, not like level: Dungeons of Kithgard units: second: "Sekunde" @@ -201,13 +212,13 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge play_level: done: "Fertig" home: "Home" # Not used any more, will be removed soon. -# level: "Level" # Like "Level: Dungeons of Kithgard" -# skip: "Skip" -# game_menu: "Game Menu" + level: "Level" # Like "Level: Dungeons of Kithgard" + skip: "Überspringe" + game_menu: "Game Menu" guide: "Aleitig" restart: "Neu starte" goals: "Ziel" -# goal: "Goal" + goal: "Goal" # running: "Running..." success: "Erfolg!" incomplete: "Unvollständig" @@ -217,18 +228,18 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge click_to_select: "Klick uf e Einheit zum sie uswähle." # control_bar_multiplayer: "Multiplayer" # control_bar_join_game: "Join Game" -# reload: "Reload" + reload: "Neu lade" reload_title: "De ganze Code neu lade?" reload_really: "Bisch sicher du willsch level neu lade bis zrugg zum Afang?" reload_confirm: "Alles neu lade" -# victory: "Victory" + victory: "Gwunne" # victory_title_prefix: "" victory_title_suffix: " Vollständig" victory_sign_up: "Meld dich ah zum din Fortschritt speichere" victory_sign_up_poke: "Wötsch din Code speichere? Erstell gratis en Account!" victory_rate_the_level: "Bewerte das Level: " # Only in old-style levels. victory_return_to_ladder: "Zrugg zum letzte Level" -# victory_play_continue: "Continue" + victory_play_continue: "Wiiter spile" # victory_saving_progress: "Saving Progress" # victory_go_home: "Go Home" # Only in old-style levels. victory_review: "Verzell üs meh!" # Only in old-style levels. @@ -250,14 +261,14 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge tome_select_a_thang: "Wähl öpper us für" tome_available_spells: "Verfüegbari Zaubersprüch" # tome_your_skills: "Your Skills" -# tome_help: "Help" + tome_help: "Hilf" # tome_current_method: "Current Method" # hud_continue_short: "Continue" -# code_saved: "Code Saved" + code_saved: "Code gpeicheret" skip_tutorial: "Überspringe (esc)" keyboard_shortcuts: "Shortcuts" # loading_ready: "Ready!" -# loading_start: "Start Level" + loading_start: "Level starte" # problem_alert_title: "Fix Your Code" time_current: "Jetzt:" time_total: "Max:" @@ -290,7 +301,7 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge tip_impossible: "Es schiint immer unmöglich bis es gschafft isch. - Nelson Mandela" tip_talk_is_cheap: "Rede isch billig. Zeig mir de Code. - Linus Torvalds" tip_first_language: "S Katastrophalste wo du chasch lerne, isch dini erst Programmiersproch. - Alan Kay" - tip_hardware_problem: "Q: Wie viel Programmierer bruuchts zum e Glüehbire uswechsle? A: Keine, da isch es Hardware Problem." + tip_hardware_problem: "F: Wie viel Programmierer bruuchts zum e Glüehbire uswechsle? A: Keine, da isch es Hardware Problem." # tip_hofstadters_law: "Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law." # tip_premature_optimization: "Premature optimization is the root of all evil. - Donald Knuth" # tip_brute_force: "When in doubt, use brute force. - Ken Thompson" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge forum_prefix: "Für öffentlichi Sache versuechs mol stattdesse i " forum_page: "üsem Forum" forum_suffix: "." +# where_reply: "Where should we reply?" send: "Feedback schicke" contact_candidate: "Kandidat kontaktiere" # Deprecated recruitment_reminder: "Benutz das Formular zum mit Kandidate Kontakt ufneh, i die du interessiert bisch. Bhalt in Erinnerig, dass CodeCombat 15% vom erstjöhrige Lohn verrechnet. De Betrag wird fällig, sobald de Programmierer agstellt wird und chan 90 Täg lang zruggverrechnet werde wenn de Agstellti nid agstellt bliibt. Teilziitarbeit, Fernarbeit und temporäri Agstellti sind chostelos, s gliiche gilt für Interni Mitarbeiter." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/de-DE.coffee b/app/locale/de-DE.coffee index c1e7e78d2..1b43a0b85 100644 --- a/app/locale/de-DE.coffee +++ b/app/locale/de-DE.coffee @@ -69,9 +69,9 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: change_hero: "Held wechseln" # Go back from choose inventory to choose hero choose_inventory: "Gegenstände ausrüsten" buy_gems: "Edelsteine kaufen" -# campaign_desert: "Desert Campaign" - campaign_forest: "Forest Kampagne" - campaign_dungeon: "Dungeon Kampagne" + campaign_desert: "Wüstenkampagne" + campaign_forest: "Waldkampagne" + campaign_dungeon: "Kerkerkampagne" subscription_required: "Abonnement benötigt" free: "Kostenlos" subscribed: "Abonniert" @@ -146,9 +146,13 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: fork: "Fork" play: "Spiel starten" # When used as an action verb, like "Play next level" retry: "Erneut versuchen" +# actions: "Actions" +# info: "Info" +# help: "Help" watch: "Beobachten" unwatch: "Nicht beobachten" submit_patch: "Patch einreichen" +# submit_changes: "Submit Changes" general: and: "und" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: date: "Datum" body: "Inhalt" version: "Version" +# submitter: "Submitter" +# submitted: "Submitted" commit_msg: "Übertrage Nachricht" +# review: "Review" version_history: "Versionshistorie" version_history_for: "Versionsgeschichte für: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" result: "Ergebnis" results: "Ergebnisse" description: "Beschreibung" @@ -234,8 +245,8 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: victory_review: "Erzähl uns davon!" # Only in old-style levels. victory_hour_of_code_done: "Bist Du fertig?" victory_hour_of_code_done_yes: "Ja, ich bin mit meiner Code-Stunde fertig!" -# victory_experience_gained: "XP Gained" -# victory_gems_gained: "Gems Gained" + victory_experience_gained: "Gewonenne XP" + victory_gems_gained: "Gewonnene Edelsteine" guide_title: "Anleitung" tome_minion_spells: "Die Zaubersprüche Deiner Knechte" # Only in old-style levels. tome_read_only_spells: "Nur-lesen Zauberspüche" # Only in old-style levels. @@ -325,14 +336,15 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: buy_gems: few_gems: "Ein paar Edelsteine" - pile_gems: "Stapel von Edelsteinen" - chest_gems: "Kiste von Edelsteinen" + pile_gems: "Ein Stapel Edelsteine" + chest_gems: "Eine Kiste voller Edelsteine" purchasing: "Kaufabwicklung..." declined: "Deine Karte wurde abgelehnt" retrying: "Serverfehler, versuche es erneut." prompt_title: "Nicht genug Edelsteine" prompt_body: "Benötigst du mehr?" prompt_button: "Laden betreten" +# recovered: "Previous gems purchase recovered. Please refresh the page." subscribe: subscribe_title: "Abonnieren" @@ -373,14 +385,14 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: regeneration: "Regeneration" range: "Reichweite" # As in "attack or visual range" blocks: "Blocken" # As in "this shield blocks this much damage" -# backstab: "Backstab" # As in "this dagger does this much backstab damage" + backstab: "Meucheln" # As in "this dagger does this much backstab damage" skills: "Fähigkeiten" available_for_purchase: "Zum Kauf verfügbar" # Shows up when you have unlocked, but not purchased, a hero in the hero store level_to_unlock: "Level freizuschalten:" # Label for which level you have to beat to unlock a particular hero (click a locked hero in the store to see) restricted_to_certain_heroes: "Nur bestimmte Helden können dieses Level spielen." skill_docs: -# writable: "writable" # Hover over "attack" in Your Skills while playing a level to see most of this + writable: "beschreibbar" # Hover over "attack" in Your Skills while playing a level to see most of this read_only: "schreibgeschützt" action_name: "Name" action_cooldown: "Benötigt" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: forum_prefix: "Für alle öffentlichen Themen, benutze stattdessen " forum_page: "unser Forum" forum_suffix: "." +# where_reply: "Where should we reply?" send: "Sende Feedback" contact_candidate: "Kontaktiere Kandidaten" # Deprecated recruitment_reminder: "Benutzen Sie dieses Formular um Kontakt zu Kandidaten aufzunehmen, an denen Sie interessiert sind. Bedenken Sie das CodeCombat 15% des ersten Jahresgehaltes berechnet. Diese Gebühr wird fällig wenn Sie den Kandidaten einstellen und ist für 90 Tage rückerstattungsfähig, sollte der Mitarbeiter nicht eingestellt bleiben. Mitarbeiter die für Teilzeit, Remote oder eine Auftragsarbeit eingestellt werden sind kostenlos, das gilt auch für Praktikanten." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: more: "Mehr" wiki: "Wiki" live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" level_some_options: "Einige Einstellungsmöglichkeiten?" level_tab_thangs: "Thangs" level_tab_scripts: "Skripte" @@ -692,7 +708,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: more_about_scribe: "Erfahre mehr darüber wie du ein Schreiber werden kannst" scribe_subscribe_desc: "Erhalte Emails über Ankündigungen zu schreibenden Artikeln." diplomat_summary: "Es herrscht ein großes Interesse an CodeCombat in anderen Ländern die kein Englisch sprechen! Wir suchen nach Übersetzern die gewillt sind ihre Zeit mit der Übersetzung der Webseite zu verbringen, so dass CodeCombat so schnell wie möglich für alle weltweit zugänglich ist. Wenn du helfen möchtest CodeCombat International zugänglich zu machen, dann ist diese Klasse für dich." - diplomat_introduction_pref: "Also wenn es eines gibt was wir gelernt haben vom " + diplomat_introduction_pref: "Also wenn es eines gibt, was wir gelernt haben vom " diplomat_launch_url: "Launch im Oktober" diplomat_introduction_suf: "dann ist es, dass es ein großes Interesse an CodeCombat in anderen Ländern gibt! Wir stellen eine Truppe von Übersetzern zusammen, die gewillt sind ein Set Worte in ein anderes Set Worte umzuwandeln um CodeCombat der Welt so zugänglich wie möglich zu machen. Wenn du es magst eine Vorschau von zukünftigem Content zu erhalten und diese Level so schnell wie möglich deinen Landsleuten zur Verfügung zu stellen, dann ist diese Klasse vielleicht für dich." diplomat_attribute_1: "Du sprichst/schreibst sowohl Englisch als auch die Sprache deiner Wahl flüssig. Wenn man komplizierte Informationen vermitteln will, muß man BEIDE Sprachen wirklich beherrschen." @@ -811,21 +827,21 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: recently_played: "Kürzlich gespielt" no_recent_games: "Keine Spiele in den letzten zwei Wochen gespielt." payments: "Zahlungen" -# purchased: "Purchased" -# subscription: "Subscription" + purchased: "Gekauft" + subscription: "Abo" service_apple: "Apple" service_web: "Web" paid_on: "Gezahlt am" service: "Service" price: "Preis" gems: "Edelsteine" -# active: "Active" -# subscribed: "Subscribed" -# unsubscribed: "Unsubscribed" -# active_until: "Active Until" -# cost: "Cost" -# next_payment: "Next Payment" -# card: "Card" + active: "Aktive" + subscribed: "Abonniert" + unsubscribed: "Abbestellt" + active_until: "Aktive bis" + cost: "Kosten" + next_payment: "Nächste Zahlung" + card: "Karte" status_unsubscribed_active: "Du hast kein Abo, und bekommst keine Rechnung, aber dein Account ist weiterhin aktiv." status_unsubscribed: "Erhalte Zugang zu neuen Leveln, Helden, Gegenständen und Bonus Edelsteinen mit einem CodeCombat Abo!" @@ -886,7 +902,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: clas: "CLAs" play_counts: "Anzahl Spiele" feedback: "Feedback" -# payment_info: "Payment Info" + payment_info: "Zahlungsinfo" delta: added: "hinzugefügt" @@ -1041,15 +1057,15 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: name_anonymous: "Anonymer Entwickler" name_help: "Name den Arbeitgeber sehen sollen, z.B. 'Nick Winter'." short_description_header: "Schreibe einen kurzen Text über dich" -# short_description_blurb: "Add a tagline to help an employer quickly learn more about you." -# short_description: "Tagline" + short_description_blurb: "Füge eine Tagline hinzu, damit Arbeitgeber schnell mehr über dich erfahren können." + short_description: "Tagline" short_description_help: "Wer bist du und wonach suchst du? 140 Zeichen max." skills_header: "Fähigkeiten" -# skills_help: "Tag relevant developer skills in order of proficiency." + skills_help: "Markiere relevante Entwicklerfähigkeiten in der Reihnfolge deines Niveaus." long_description_header: "Beschreibe deine gewünschte Position" long_description_blurb: "Teile Arbeitgebern mit wie toll du bist und nach welcher Position du suchst." -# long_description: "Self Description" -# long_description_help: "Describe yourself to potential employers. Keep it short and to the point. We recommend outlining the position that would most interest you. Tasteful markdown okay; 600 characters max." + long_description: "Selbstbeschreibung" + long_description_help: "Beschreibe dich selbst für potentielle Arbeitgeber. Fasse dich kurz aber treffend. Wir empfehlen die Position kurz darzustellen, die dich am meisten interessieren würde. Geschmackvoller Preisabschlag ist ok; max. 600 Zeichen." work_experience: "Berufserfahrung" work_header: "Liste deine Berufserfahrung chronologisch auf" work_years: "Jahre der Erfahrung" @@ -1073,13 +1089,13 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: education_duration: "Daten" education_duration_help: "Wann?" education_description: "Beschreibung" -# education_description_help: "Highlight anything about this educational experience. (140 chars; optional)" + education_description_help: "Hebe etwas aus dieser Ausbildung hervor. (140 Zeichen; optional)" our_notes: "CodeCombat's Notizen" remarks: "Kommentare" projects: "Projekte" projects_header: "Füge 3 Projekte hinzu" projects_header_2: "Projekte (Top 3)" - projects_blurb: "Hebe deine Projekte hervor um Arbeitgeber zu verblüffen." + projects_blurb: "Hebe deine Projekte hervor, um Arbeitgeber zu verblüffen." project_name: "Projekt Name" project_name_help: "Wie wurde das Projekt genannt?" project_description: "Beschreibung" @@ -1087,7 +1103,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription: project_picture: "Bild" project_picture_help: "Lade ein 230x115px oder größeres Bild hoch, welches das Projekt darstellt." project_link: "Link" - project_link_help: "Verlinke zu dem Projekt." + project_link_help: "Verlinke das Projekt." player_code: "Spieler Code" employers: diff --git a/app/locale/el.coffee b/app/locale/el.coffee index 26d2baa05..a3993f60c 100644 --- a/app/locale/el.coffee +++ b/app/locale/el.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre # fork: "Fork" # play: "Play" # When used as an action verb, like "Play next level" # retry: "Retry" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" general: and: "και" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre # date: "Date" # body: "Body" version: "Έκδοση" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" +# review: "Review" # version_history: "Version History" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" result: "Αποτέλεσμα" results: "Αποτελέσματα" description: "Περιγραφή" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre forum_prefix: "Για οτιδήποτε δημόσιο, παρακαλούμε δοκίμαστε " forum_page: "το φόρουμ μας" forum_suffix: "" +# where_reply: "Where should we reply?" send: "Αποστολή σχολίων" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/en-AU.coffee b/app/locale/en-AU.coffee index 497534815..6207b8196 100644 --- a/app/locale/en-AU.coffee +++ b/app/locale/en-AU.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English # fork: "Fork" # play: "Play" # When used as an action verb, like "Play next level" # retry: "Retry" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" # general: # and: "and" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English # date: "Date" # body: "Body" # version: "Version" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" +# review: "Review" # version_history: "Version History" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" # result: "Result" # results: "Results" # description: "Description" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English # forum_prefix: "For anything public, please try " # forum_page: "our forum" # forum_suffix: " instead." +# where_reply: "Where should we reply?" # send: "Send Feedback" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/en-GB.coffee b/app/locale/en-GB.coffee index d5adfebbb..dab904528 100644 --- a/app/locale/en-GB.coffee +++ b/app/locale/en-GB.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English # fork: "Fork" # play: "Play" # When used as an action verb, like "Play next level" # retry: "Retry" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" # general: # and: "and" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English # date: "Date" # body: "Body" # version: "Version" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" +# review: "Review" # version_history: "Version History" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" # result: "Result" # results: "Results" # description: "Description" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English # forum_prefix: "For anything public, please try " # forum_page: "our forum" # forum_suffix: " instead." +# where_reply: "Where should we reply?" # send: "Send Feedback" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." archmage_summary: "Interested in working on game graphics, user interface design, database and server organisation, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/en-US.coffee b/app/locale/en-US.coffee index eaccd24a0..01d0c43a4 100644 --- a/app/locale/en-US.coffee +++ b/app/locale/en-US.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English # fork: "Fork" # play: "Play" # When used as an action verb, like "Play next level" # retry: "Retry" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" # general: # and: "and" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English # date: "Date" # body: "Body" # version: "Version" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" +# review: "Review" # version_history: "Version History" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" # result: "Result" # results: "Results" # description: "Description" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English # forum_prefix: "For anything public, please try " # forum_page: "our forum" # forum_suffix: " instead." +# where_reply: "Where should we reply?" # send: "Send Feedback" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/en.coffee b/app/locale/en.coffee index 36eeeb167..89ed43f3e 100644 --- a/app/locale/en.coffee +++ b/app/locale/en.coffee @@ -146,9 +146,13 @@ fork: "Fork" play: "Play" # When used as an action verb, like "Play next level" retry: "Retry" + actions: "Actions" + info: "Info" + help: "Help" watch: "Watch" unwatch: "Unwatch" submit_patch: "Submit Patch" + submit_changes: "Submit Changes" general: and: "and" @@ -156,9 +160,16 @@ date: "Date" body: "Body" version: "Version" + submitter: "Submitter" + submitted: "Submitted" commit_msg: "Commit Message" + review: "Review" version_history: "Version History" version_history_for: "Version History for: " + select_changes: "Select two changes below to see the difference." + undo: "Undo (Ctrl+Z)" + redo: "Redo (Ctrl+Shift+Z)" + play_preview: "Play preview of current level" result: "Result" results: "Results" description: "Description" @@ -259,6 +270,7 @@ loading_ready: "Ready!" loading_start: "Start Level" problem_alert_title: "Fix Your Code" + problem_alert_help: "Help" time_current: "Now:" time_total: "Max:" time_goto: "Go to:" @@ -301,6 +313,8 @@ save_load_tab: "Save/Load" options_tab: "Options" guide_tab: "Guide" + guide_video_tutorial: "Video Tutorial" + guide_tips: "Tips" multiplayer_tab: "Multiplayer" auth_tab: "Sign Up" inventory_caption: "Equip your hero" @@ -333,6 +347,7 @@ prompt_title: "Not Enough Gems" prompt_body: "Do you want to get more?" prompt_button: "Enter Shop" + recovered: "Previous gems purchase recovered. Please refresh the page." subscribe: subscribe_title: "Subscribe" @@ -462,12 +477,14 @@ contact: contact_us: "Contact CodeCombat" welcome: "Good to hear from you! Use this form to send us email. " - contribute_prefix: "If you're interested in contributing, check out our " - contribute_page: "contribute page" - contribute_suffix: "!" forum_prefix: "For anything public, please try " forum_page: "our forum" forum_suffix: " instead." + subscribe_prefix: "If you need help figuring out a level, please" + subscribe: "buy a CodeCombat subscription" + subscribe_suffix: "and we'll be happy to help you with your code." + subscriber_support: "Since you're a CodeCombat subscriber, your email will get our priority support." + where_reply: "Where should we reply?" send: "Send Feedback" contact_candidate: "Contact Candidate" # Deprecated recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +597,9 @@ more: "More" wiki: "Wiki" live_chat: "Live Chat" + thang_main: "Main" + thang_spritesheets: "Spritesheets" + thang_colors: "Colors" level_some_options: "Some Options?" level_tab_thangs: "Thangs" level_tab_scripts: "Scripts" @@ -640,7 +660,7 @@ introduction_desc_github_url: "CodeCombat is totally open source" introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." introduction_desc_ending: "We hope you'll join our party!" - introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" + introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" alert_account_message_intro: "Hey there!" alert_account_message: "To subscribe for class emails, you'll need to be logged in first." archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/es-419.coffee b/app/locale/es-419.coffee index 64cf960c2..a320e18b5 100644 --- a/app/locale/es-419.coffee +++ b/app/locale/es-419.coffee @@ -1,4 +1,4 @@ -module.exports = nativeDescription: "español (América Latina)", englishDescription: "Spanish (Latin America)", translation: +module.exports = nativeDescription: "Español (América Latina)", englishDescription: "Spanish (Latin America)", translation: home: slogan: "Aprende a programar jugando" no_ie: "¡Lo sentimos! CodeCombat no funciona en Internet Explorer 8 o versiones anteriores." # Warning that only shows up in IE8 and older @@ -69,7 +69,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip change_hero: "Cambiar héroe" # Go back from choose inventory to choose hero choose_inventory: "Equipar objetos" buy_gems: "Comprar gemas" -# campaign_desert: "Desert Campaign" + campaign_desert: "Camapaña del Desierto" campaign_forest: "Campaña del Bosque" campaign_dungeon: "Campaña Calabozo" subscription_required: "Requiere Suscripción" @@ -109,7 +109,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip finishing: "Finalizando" sign_in_with_facebook: "Registrarse con Facebook" sign_in_with_gplus: "Registrarse con G+" - signup_switch: "¿Queres crear una cuenta?" + signup_switch: "¿Quieres crear una cuenta?" signup: email_announcements: "Recibe noticias por email" @@ -146,9 +146,13 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip fork: "Bifurcar" play: "Jugar" # When used as an action verb, like "Play next level" retry: "Reintentar" +# actions: "Actions" +# info: "Info" +# help: "Help" watch: "Seguir" unwatch: "No seguir" submit_patch: "Enviar Parche" +# submit_changes: "Submit Changes" general: and: "y" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip date: "Fecha" body: "Cuerpo" version: "Versión" +# submitter: "Submitter" +# submitted: "Submitted" commit_msg: "Enviar mensaje" +# review: "Review" version_history: "Historial de Versiones" version_history_for: "Historial de Versiones para: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" result: "Resultado" results: "Resultados" description: "Descripción" @@ -203,8 +214,8 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip home: "Inicio" # Not used any more, will be removed soon. level: "Nivel" # Like "Level: Dungeons of Kithgard" skip: "Omitir" - game_menu: "Menu del Juego" - guide: "Guia" + game_menu: "Menú del Juego" + guide: "Guía" restart: "Reiniciar" goals: "Objetivos" goal: "Objetivo" @@ -213,7 +224,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip incomplete: "Incompleto" timed_out: "Se te acabo el tiempo" failing: "Fallando" - action_timeline: "Cronologia de Accion" + action_timeline: "Cronología de Acción" click_to_select: "Has click en una unidad para seleccionarla." control_bar_multiplayer: "Multijugador" control_bar_join_game: "Ingresar al juego" @@ -224,7 +235,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip victory: "Victoria" victory_title_prefix: "¡" victory_title_suffix: " Completo!" - victory_sign_up: "Registrate para recibir actualizaciones" + victory_sign_up: "Regístrate para recibir actualizaciones" victory_sign_up_poke: "¿Quieres recibir las ultimas noticias por correo? ¡Crea una cuenta gratuita y te mantendremos informado!" victory_rate_the_level: "Valora el nivel: " # Only in old-style levels. victory_return_to_ladder: "Volver a la escalera" @@ -288,13 +299,13 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip tip_patience: "Paciencia debes tener, joven Padawan. - Yoda" tip_documented_bug: "Un error documentad no es un error; es una característica." tip_impossible: "Siempre parece imposible hasta que se hace. - Nelson Mandela" - tip_talk_is_cheap: "Hablar es barato. Muestrame el código. - Linus Torvalds" - tip_first_language: "La cosa más desastroza que puedes aprender es tu primer lenguaje de programación. - Alan Kay" + tip_talk_is_cheap: "Hablar es barato. Muéstrame el código. - Linus Torvalds" + tip_first_language: "La cosa más desastrosa que puedes aprender es tu primer lenguaje de programación. - Alan Kay" tip_hardware_problem: "P: ¿Cuántos programadores son necesarios para cambiar una bombilla eléctrica? R: Ninguno, es un problema de hardware." - tip_hofstadters_law: "Ley de Hofstadter: Siempre toma más tiempo del que esperas, inclso cuando tienes en cuenta la ley de Hofstadter." + tip_hofstadters_law: "Ley de Hofstadter: Siempre toma más tiempo del que esperas, incluso cuando tienes en cuenta la ley de Hofstadter." tip_premature_optimization: "La optimización prematura es la raíz de la maldad. - Donald Knuth" tip_brute_force: "Cuando tengas duda, usa la fuerza bruta. - Ken Thompson" - tip_extrapolation: "Solo hay dos tipos de personas: Esas que pueden extraplolar dese información incompleta..." + tip_extrapolation: "Solo hay dos tipos de personas: Esas que pueden extrapolar desde información incompleta..." game_menu: inventory_tab: "Inventario" @@ -330,9 +341,10 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip purchasing: "Comprando..." declined: "Su tarjeta fue rechazada" retrying: "Error del servidor, recargando." - prompt_title: "Gemas insuficientess" + prompt_title: "Gemas insuficientes" prompt_body: "¿Quieres obtener más?" prompt_button: "Entrar al mercado" +# recovered: "Previous gems purchase recovered. Please refresh the page." subscribe: subscribe_title: "Suscribirse" @@ -340,13 +352,13 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip levels: "Adquirí más practica con un nivel bonus!" heroes: "Héroes más poderosos!" gems: "Bonus de 3500 todos los meses!" - items: "Más de 250 items de bonus!" + items: "Más de 250 ítems de bonus!" parents: "Para padres" parents_title: "Su hijo aprenderá a programar." parents_blurb1: "Con CodeCombat, su hijo aprenderá a escribiendo código real. Empezaran aprendiendo comandos simples avanzando a tópicos más complejos." parents_blurb2: "Por $9.99 USD/mes, recibirán nuevos desafíos todas las semanas y soporte personal por email de programadores profesionales." parents_blurb3: "Sin Riesgo: Garantía de 100% de devolución, fácil 1-click y desuscribirse." - subscribe_button: "Suscribete Ahora" + subscribe_button: "Suscríbete Ahora" stripe_description: "Suscripción Mensual" subscription_required_to_play: "Necesitas una suscripción para jugar este nivel." @@ -373,7 +385,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip regeneration: "Regeneración" range: "Rango" # As in "attack or visual range" blocks: "Bloqueo" # As in "this shield blocks this much damage" -# backstab: "Backstab" # As in "this dagger does this much backstab damage" + backstab: "Apuñala" # As in "this dagger does this much backstab damage" skills: "Habilidades" available_for_purchase: "Disponible para Comprar" # Shows up when you have unlocked, but not purchased, a hero in the hero store level_to_unlock: "Nivel para desbloquear:" # Label for which level you have to beat to unlock a particular hero (click a locked hero in the store to see) @@ -383,18 +395,18 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip # writable: "writable" # Hover over "attack" in Your Skills while playing a level to see most of this read_only: "Sólo Lectura" action_name: "nombre" -# action_cooldown: "Takes" -# action_specific_cooldown: "Cooldown" + action_cooldown: "Toma" + action_specific_cooldown: "Enfriamiento" action_damage: "Daño" action_range: "Rango" - action_radius: "Radip" + action_radius: "Radio" action_duration: "Duración" example: "Ejemplo" ex: "ej" # Abbreviation of "example" -# current_value: "Current Value" -# default_value: "Default value" + current_value: "Valor actual" + default_value: "Valor por defecto" parameters: "Parámetros" -# returns: "Returns" + returns: "Devoluciones" granted_by: "Concedido por" save_load: @@ -406,7 +418,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip volume_label: "Volumen" music_label: "Música" music_description: "Música encendida/apagada." - autorun_label: "Autoejecutar" + autorun_label: "Auto ejecutar" autorun_description: "Controlar ejecución automática de código." editor_config: "Config. de Editor" editor_config_title: "Configuración del Editor" @@ -433,8 +445,8 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip why_paragraph_2_italic: "bien un premio" why_paragraph_2_center: "pero algo divertido" why_paragraph_2_italic_caps: "¡NO MAMÁ, TENGO QUE FINALIZAR EL NIVEL!" - why_paragraph_2_suffix: "Por tal motivo CodeCombat es un juego multiusuario, no un curso con gamificación. No finalizaremos hasta que terminos--pero en esta ocasión, es una buena cosa." - why_paragraph_3: "si te vas a volver adicto a un juego, hazlo a este y conviértete en un de los magos de la era tecnológica." + why_paragraph_2_suffix: "Por tal motivo CodeCombat es un juego multiusuario, no un curso con gamificación. No finalizaremos hasta que terminemos--pero en esta ocasión, es una buena cosa." + why_paragraph_3: "si te vas a volver adicto a un juego, hazlo a este y conviértete en uno de los magos de la era tecnológica." press_title: "Blogeros/Prensa" press_paragraph_1_prefix: "¿Quieres escribirnos? Descarga y usa con confianza todos los recursos incluídos en nuestro" press_paragraph_1_link: "paquete de prensa" @@ -468,9 +480,10 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip forum_prefix: "Para cualquier cosa pública, por favor prueba " forum_page: "nuestro foro " forum_suffix: "en su lugar." +# where_reply: "Where should we reply?" send: "Enviar Comentario" contact_candidate: "Contacta un Candidato" # Deprecated - recruitment_reminder: "Usa este formulario para llegar a los candidadtos que estés interesado en entrevistar. Recuerda que CodeCombat cobra 18% del primer año de salario. Este honorario se debe a la contratación del empleado y reembolsable por 90 days si el empleado no permanece contratado. Tiempo partcial, remoto, y empleados por contrato son gratiso, como así también internos." # Deprecated + recruitment_reminder: "Usa este formulario para llegar a los candidatos que estés interesado en entrevistar. Recuerda que CodeCombat cobra 18% del primer año de salario. Este honorario se debe a la contratación del empleado y reembolsable por 90 días si el empleado no permanece contratado. Tiempo parcial, remoto, y empleados por contrato son gratis, como así también internos." # Deprecated account_settings: title: "Configuración de la Cuenta" @@ -539,9 +552,9 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip # thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites." # article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the" # article_editor_suffix: "and help CodeCombat players get the most out of their playtime." -# find_us: "Find us on these sites" -# social_blog: "Read the CodeCombat blog on Sett" -# social_discource: "Join the discussion on our Discourse forum" + find_us: "Encuentranos en etsos sitios" + social_blog: "Lee el blog de CodeCombat en Sett" + social_discource: "Unite a la discusión en nuestro foro" social_facebook: "Me Gusta CodeCombat en Facebook" social_twitter: "Sigue a CodeCombat en Twitter" social_gplus: "Únete a CodeCombat con Google+" @@ -573,56 +586,59 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip revert_models: "Revertir Modelos" pick_a_terrain: "Elije un Terreno" small: "Pequeño" -# grassy: "Grassy" + grassy: "Herboso" # fork_title: "Fork New Version" # fork_creating: "Creating Fork..." -# generate_terrain: "Generate Terrain" -# more: "More" -# wiki: "Wiki" -# live_chat: "Live Chat" + generate_terrain: "Generar terreno" + more: "Más" + wiki: "Wiki" + live_chat: "Chat en vivo" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" -# level_tab_settings: "Settings" -# level_tab_components: "Components" -# level_tab_systems: "Systems" -# level_tab_docs: "Documentation" + level_tab_settings: "Opciones" + level_tab_components: "Componentes" + level_tab_systems: "Sistemas" + level_tab_docs: "Documentación" # level_tab_thangs_title: "Current Thangs" -# level_tab_thangs_all: "All" + level_tab_thangs_all: "Todo" # level_tab_thangs_conditions: "Starting Conditions" # level_tab_thangs_add: "Add Thangs" -# delete: "Delete" -# duplicate: "Duplicate" -# rotate: "Rotate" -# level_settings_title: "Settings" -# level_component_tab_title: "Current Components" -# level_component_btn_new: "Create New Component" -# level_systems_tab_title: "Current Systems" -# level_systems_btn_new: "Create New System" -# level_systems_btn_add: "Add System" + delete: "Borrar" + duplicate: "Duplicar" + rotate: "Rotar" + level_settings_title: "Opciones" + level_component_tab_title: "Componentes Actuales" + level_component_btn_new: "Crear Nuevo Componente" + level_systems_tab_title: "Sistemas Actuales Systems" + level_systems_btn_new: "Crear Nuevo Sistema New System" + level_systems_btn_add: "Agregar Sistema" # level_components_title: "Back to All Thangs" -# level_components_type: "Type" -# level_component_edit_title: "Edit Component" + level_components_type: "Tipo" + level_component_edit_title: "Editar Componente" # level_component_config_schema: "Config Schema" -# level_component_settings: "Settings" -# level_system_edit_title: "Edit System" -# create_system_title: "Create New System" -# new_component_title: "Create New Component" -# new_component_field_system: "System" -# new_article_title: "Create a New Article" + level_component_settings: "Opciones" + level_system_edit_title: "Editar Sistema" + create_system_title: "Crear Nuevo Sistema" + new_component_title: "Crear Nuevo Componente" + new_component_field_system: "Sistema" + new_article_title: "Crear un Nuevo Artículo" # new_thang_title: "Create a New Thang Type" -# new_level_title: "Create a New Level" -# new_article_title_login: "Log In to Create a New Article" + new_level_title: "Crear un Nuevo Nivel" + new_article_title_login: "Ingresa para Crear un Nuevo Artículo" # new_thang_title_login: "Log In to Create a New Thang Type" -# new_level_title_login: "Log In to Create a New Level" -# new_achievement_title: "Create a New Achievement" -# new_achievement_title_login: "Log In to Create a New Achievement" -# article_search_title: "Search Articles Here" + new_level_title_login: "Ingresa para Crear un Nuevo Nivel" + new_achievement_title: "Crear un Nuevo Logro" + new_achievement_title_login: "Ingresa para Crear un Nuevo Logro" + article_search_title: "Buscar Artículos aquí" # thang_search_title: "Search Thang Types Here" -# level_search_title: "Search Levels Here" -# achievement_search_title: "Search Achievements" -# read_only_warning2: "Note: you can't save any edits here, because you're not logged in." -# no_achievements: "No achievements have been added for this level yet." + level_search_title: "Buscar Niveles aquí" + achievement_search_title: "Buscar logros" + read_only_warning2: "Nota: no puedes guardar ediciones aquí, porque no estas logeado." + no_achievements: "No hay logros agregados en este nivel por ahora." # achievement_query_misc: "Key achievement off of miscellanea" # achievement_query_goals: "Key achievement off of level goals" # level_completion: "Level Completion" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -807,27 +823,27 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip left_xp_infix: " hasta el nivel " left_xp_postfix: "" -# account: -# recently_played: "Recently Played" -# no_recent_games: "No games played during the past two weeks." + account: + recently_played: "Recientemente jugado" + no_recent_games: "No juegos jugados duramente las últimas dos semanas." # payments: "Payments" # purchased: "Purchased" -# subscription: "Subscription" -# service_apple: "Apple" -# service_web: "Web" + subscription: "Suscripción" + service_apple: "Apple" + service_web: "Web" # paid_on: "Paid On" -# service: "Service" -# price: "Price" -# gems: "Gems" -# active: "Active" -# subscribed: "Subscribed" -# unsubscribed: "Unsubscribed" -# active_until: "Active Until" -# cost: "Cost" -# next_payment: "Next Payment" -# card: "Card" -# status_unsubscribed_active: "You're not subscribed and won't be billed, but your account is still active for now." -# status_unsubscribed: "Get access to new levels, heroes, items, and bonus gems with a CodeCombat subscription!" + service: "Servicio" + price: "Precio" + gems: "Gemas" + active: "Activo" + subscribed: "Suscripto" + unsubscribed: "Insuscripto" + active_until: "Activo Hasta" + cost: "Costo" + next_payment: "Próximo Pago" + card: "Tarjeta" + status_unsubscribed_active: "No estas suscripto y no se te cobrará, pero tu cuenta estar activa por ahora." + status_unsubscribed: "Obtén acceso a nuevos niveles, heroés, items y gemas extras con la suscripción a CodeCombat!" loading_error: could_not_load: "Error cargando del servidor" @@ -843,7 +859,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip unknown: "Error desconocido." resources: -# sessions: "Sessions" + sessions: "Sesiones" your_sessions: "Tus sesiones" level: "Nivel" social_network_apis: "APIs de Redes Sociales" @@ -858,77 +874,77 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip patches: "Parches" # patched_model: "Source Document" model: "Modelo" -# system: "System" -# systems: "Systems" -# component: "Component" -# components: "Components" + system: "Sistema" + systems: "Sistemas" + component: "Componente" + components: "Componentes" # thang: "Thang" # thangs: "Thangs" -# level_session: "Your Session" -# opponent_session: "Opponent Session" -# article: "Article" -# user_names: "User Names" + level_session: "Tu Sesión" + opponent_session: "Sesión del Oponente" + article: "Artícule" + user_names: "Nombres de usuario" # thang_names: "Thang Names" files: "Archivos" # top_simulators: "Top Simulators" # source_document: "Source Document" -# document: "Document" + document: "Documento" # sprite_sheet: "Sprite Sheet" employers: "Empleadores" candidates: "Candidatos" # candidate_sessions: "Candidate Sessions" # user_remark: "User Remark" # user_remarks: "User Remarks" -# versions: "Versions" -# items: "Items" + versions: "Versiones" + items: "Items" heroes: "Héroes" -# achievement: "Achievement" + achievement: "Logros" # clas: "CLAs" # play_counts: "Play Counts" -# feedback: "Feedback" -# payment_info: "Payment Info" + feedback: "Feedback" + payment_info: "Información de pago" -# delta: -# added: "Added" -# modified: "Modified" -# deleted: "Deleted" + delta: + added: "Agregado" + modified: "Modificado" + deleted: "Borrado" # moved_index: "Moved Index" # text_diff: "Text Diff" # merge_conflict_with: "MERGE CONFLICT WITH" -# no_changes: "No Changes" + no_changes: "Sin cambios" -# guide: -# temp: "Temp" + guide: + temp: "Temp" multiplayer: multiplayer_title: "Configuración de Multijugador" # We'll be changing this around significantly soon. Until then, it's not important to translate. -# multiplayer_toggle: "Enable multiplayer" -# multiplayer_toggle_description: "Allow others to join your game." + multiplayer_toggle: "Activar Multijugador" + multiplayer_toggle_description: "Permitir a otros ingresar a tu juego" multiplayer_link_description: "Da este enlace a cualquiera para que se te una." multiplayer_hint_label: "Consejo:" multiplayer_hint: " Cliquea el enlace para seleccionar todo, luego presiona ⌘-C o Ctrl-C para copiar el enlace." multiplayer_coming_soon: "¡Más características de multijugador por venir!" # multiplayer_sign_in_leaderboard: "Sign in or create an account and get your solution on the leaderboard." -# legal: -# page_title: "Legal" -# opensource_intro: "CodeCombat is completely open source." -# opensource_description_prefix: "Check out " -# github_url: "our GitHub" -# opensource_description_center: "and help out if you like! CodeCombat is built on dozens of open source projects, and we love them. See " -# archmage_wiki_url: "our Archmage wiki" -# opensource_description_suffix: "for a list of the software that makes this game possible." + legal: + page_title: "Legal" + opensource_intro: "CodeCombat is completamente open source." + opensource_description_prefix: "Echa un vistazo " + github_url: "nuestro GitHub" + opensource_description_center: "y ayudanos si quieres! CodeCombat esta construido por docenas de proyectos open source, y los amamos. Mira " + archmage_wiki_url: "nuestra wiki de Archimago wiki" + opensource_description_suffix: "Para la lista de softwares que hacen al juego posible." # practices_title: "Respectful Best Practices" # practices_description: "These are our promises to you, the player, in slightly less legalese." -# privacy_title: "Privacy" -# privacy_description: "We will not sell any of your personal information." -# security_title: "Security" + privacy_title: "Privacidad" + privacy_description: "No vederemos nada sobre tu información personalWe will not sell any of your personal information." + security_title: "Seguridad" # security_description: "We strive to keep your personal information safe. As an open source project, our site is freely open to anyone to review and improve our security systems." -# email_title: "Email" -# email_description_prefix: "We will not inundate you with spam. Through" -# email_settings_url: "your email settings" -# email_description_suffix: "or through links in the emails we send, you can change your preferences and easily unsubscribe at any time." -# cost_title: "Cost" + email_title: "Mail" + email_description_prefix: "No te vamos a inundar de Spam. Mediante" + email_settings_url: "tus opciones de mail" + email_description_suffix: "o mediante links en los mails que mandamos, tu puedas cambiar tus preferencias y fácilmente desuscribirte en cualquier momento." + cost_title: "Costo" # cost_description: "CodeCombat is free to play for all of its core levels, with a $9.99 USD/mo subscription for access to extra level branches and 3500 bonus gems per month. You can cancel with a click, and we offer a 100% money-back guarantee." # copyrights_title: "Copyrights and Licenses" # contributor_title: "Contributor License Agreement" @@ -943,8 +959,8 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip # art_description_prefix: "All common content is available under the" # cc_license_url: "Creative Commons Attribution 4.0 International License" # art_description_suffix: "Common content is anything made generally available by CodeCombat for the purpose of creating Levels. This includes:" -# art_music: "Music" -# art_sound: "Sound" + art_music: "Musica" + art_sound: "Sonido" # art_artwork: "Artwork" # art_sprites: "Sprites" # art_other: "Any and all other non-code creative works that are made available when creating Levels." @@ -953,7 +969,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip # use_list_1: "If used in a movie or another game, include codecombat.com in the credits." # use_list_2: "If used on a website, include a link near the usage, for example underneath an image, or in a general attributions page where you might also mention other Creative Commons works and open source software being used on the site. Something that's already clearly referencing CodeCombat, such as a blog post mentioning CodeCombat, does not need some separate attribution." # art_paragraph_2: "If the content being used is created not by CodeCombat but instead by a user of codecombat.com, attribute them instead, and follow attribution directions provided in that resource's description if there are any." -# rights_title: "Rights Reserved" + rights_title: "Derechos Reservados" # rights_desc: "All rights are reserved for Levels themselves. This includes" # rights_scripts: "Scripts" # rights_unit: "Unit configuration" @@ -965,24 +981,24 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip # nutshell_description: "Any resources we provide in the Level Editor are free to use as you like for creating Levels. But we reserve the right to restrict distribution of the Levels themselves (that are created on codecombat.com) so that they may be charged for in the future, if that's what ends up happening." # canonical: "The English version of this document is the definitive, canonical version. If there are any discrepencies between translations, the English document takes precedence." -# ladder_prizes: -# title: "Tournament Prizes" # This section was for an old tournament and doesn't need new translations now. -# blurb_1: "These prizes will be awarded according to" -# blurb_2: "the tournament rules" -# blurb_3: "to the top human and ogre players." -# blurb_4: "Two teams means double the prizes!" -# blurb_5: "(There will be two first place winners, two second-place winners, etc.)" -# rank: "Rank" -# prizes: "Prizes" -# total_value: "Total Value" -# in_cash: "in cash" -# custom_wizard: "Custom CodeCombat Wizard" + ladder_prizes: + title: "Premios de Torneos" # This section was for an old tournament and doesn't need new translations now. + blurb_1: "Estos premios seran dados de acuerdo a " + blurb_2: "las reglas del torneo" + blurb_3: "a los mejores jugadores humanos y ogros." + blurb_4: "Dos equipos significan el doble de premios!" + blurb_5: "(Habrán dos ganadores en el primer puesto, dos en el segundo puesto, etc.)" + rank: "Ranking" + prizes: "Premios" + total_value: "Valor Total" + in_cash: "en dinero" + custom_wizard: "CodeCombat Mago Modificado" # custom_avatar: "Custom CodeCombat avatar" # heap: "for six months of \"Startup\" access" -# credits: "credits" -# one_month_coupon: "coupon: choose either Rails or HTML" -# one_month_discount: "discount, 30% off: choose either Rails or HTML" -# license: "license" + credits: "creditos" + one_month_coupon: "Cupón: elegí entre Rails o HTML." + one_month_discount: "descuento del 30%: elegí entre Rails o HTML" + license: "licencia" # oreilly: "ebook of your choice" account_profile: @@ -1091,8 +1107,8 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip player_code: "Código de Jugador" employers: -# deprecation_warning_title: "Sorry, CodeCombat is not recruiting right now." -# deprecation_warning: "We are focusing on beginner levels instead of finding expert developers for the time being." + deprecation_warning_title: "Lo sentimos, CodeCombat no esta reclutando en estos momentos." + deprecation_warning: "Estamos enfocados en los niveles de principiante en lugar de buscar desarrolladores expertos por el momento." hire_developers_not_credentials: "Contrata desarrolladores, no credenciales." # We are not actively recruiting right now, so there's no need to add new translations for the rest of this section. get_started: "Comenzar" already_screened: "Ya hemos realizado un monitoreo técnico de todos los candidatos" @@ -1123,7 +1139,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip what: "Que es CodeCombat?" what_blurb: "CodeCombat es un juego multijugador de programación para navegadores. Los jugadores escriben un código para medirse en batalla contra otros desarrolladores. Nuestros jugadores cuentan con experiencia en los principales lenguajes técnicos." cost: "¿Cuánto cobramos?" - cost_blurb: "Cobramos un 15% del primer salario anual y ofrecemos una garantía de devolución del 100% del dinero por 90 días. No cobramos por candidatos que actualmente se encuentren siendo entrevistados de forma activa por tu compañia." + cost_blurb: "Cobramos un 15% del primer salario anual y ofrecemos una garantía de devolución del 100% del dinero por 90 días. No cobramos por candidatos que actualmente se encuentren siendo entrevistados de forma activa por tu compañía." candidate_name: "Nombre" candidate_location: "Ubicación" candidate_looking_for: "Buscando" @@ -1137,21 +1153,21 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip inactive_developers: "Desarrolladores Inactivos" admin: -# av_espionage: "Espionage" # Really not important to translate /admin controls. -# av_espionage_placeholder: "Email or username" -# av_usersearch: "User Search" -# av_usersearch_placeholder: "Email, username, name, whatever" -# av_usersearch_search: "Search" + av_espionage: "Espionaje" # Really not important to translate /admin controls. + av_espionage_placeholder: "Mail o usuario" + av_usersearch: "Buscar Usuario" + av_usersearch_placeholder: "Mail, usuario, nombre, lo que sea" + av_usersearch_search: "Buscar" av_title: "Vistas de Admin" av_entities_sub_title: "Entidades" av_entities_users_url: "Usuarios" av_entities_active_instances_url: "Instancias Activas" -# av_entities_employer_list_url: "Employer List" -# av_entities_candidates_list_url: "Candidate List" -# av_entities_user_code_problems_list_url: "User Code Problems List" + av_entities_employer_list_url: "Lista de Empleadores" + av_entities_candidates_list_url: "Lista de Candidatos" + av_entities_user_code_problems_list_url: "Lista de Usuarios con problemas de código" av_other_sub_title: "Otro" av_other_debug_base_url: "Base (para depurar base.jade)" u_title: "Lista de Usuarios" -# ucp_title: "User Code Problems" + ucp_title: "Usuario con problemas de código" lg_title: "Últimos Juegos" clas: "CLAs" diff --git a/app/locale/es-ES.coffee b/app/locale/es-ES.coffee index 8cfe25452..ee1001b59 100644 --- a/app/locale/es-ES.coffee +++ b/app/locale/es-ES.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis fork: "Bifurcar" play: "Jugar" # When used as an action verb, like "Play next level" retry: "Reintentar" +# actions: "Actions" +# info: "Info" +# help: "Help" watch: "Mirar" unwatch: "Pasar" submit_patch: "Mandar Parche" +# submit_changes: "Submit Changes" general: and: "y" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis date: "Fecha" body: "Cuerpo" version: "Versión" +# submitter: "Submitter" +# submitted: "Submitted" commit_msg: "Mensaje de Asignación o Commit" +# review: "Review" version_history: "Historial de versión" version_history_for: "Historial de las versiones de: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" result: "Resultado" results: "Resultados" description: "Descripción" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis prompt_title: "Gemas no suficientes" prompt_body: "¿Quieres obtener más?" prompt_button: "Ingresa a la tienda" +# recovered: "Previous gems purchase recovered. Please refresh the page." subscribe: subscribe_title: "Suscríbete" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis forum_prefix: "Para asuntos públicos, por favor usa " forum_page: "nuestro foro" forum_suffix: " en su lugar." +# where_reply: "Where should we reply?" send: "Envía tu comentario" contact_candidate: "Contactar Candidato" # Deprecated recruitment_reminder: "Usa este formulario para contactar con los candidatos que quieras entrevistar. Recuerda que CodeCombat cobrará el 18% del salario durante el primer año. La cuota es por la contratación del empleado y es reembolsable durante 90 días si el empleado no permanece contratado. A tiempo parcial, a distancia y los empleados de contrato son gratis, como lo son los becarios." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis more: "Más" wiki: "Wiki" live_chat: "Chat en directo" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" level_some_options: "¿Algunas opciones?" level_tab_thangs: "Objetos" level_tab_scripts: "Scripts" diff --git a/app/locale/fa.coffee b/app/locale/fa.coffee index 074da1f23..5f746f160 100644 --- a/app/locale/fa.coffee +++ b/app/locale/fa.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian", # fork: "Fork" play: "سطوح" # When used as an action verb, like "Play next level" # retry: "Retry" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" general: # and: "and" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian", # date: "Date" # body: "Body" # version: "Version" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" +# review: "Review" # version_history: "Version History" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" # result: "Result" # results: "Results" # description: "Description" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian", # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian", forum_prefix: "باری هر چیز عمومی، اینجا را مشاهده کنید " forum_page: "فاروم ما" forum_suffix: " به جای" +# where_reply: "Where should we reply?" send: "ارسال بازخورد" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian", # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian", # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/fi.coffee b/app/locale/fi.coffee index 7ed4adf97..224816f6c 100644 --- a/app/locale/fi.coffee +++ b/app/locale/fi.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran # fork: "Fork" # play: "Play" # When used as an action verb, like "Play next level" # retry: "Retry" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" # general: # and: "and" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran # date: "Date" # body: "Body" # version: "Version" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" +# review: "Review" # version_history: "Version History" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" # result: "Result" # results: "Results" # description: "Description" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran # forum_prefix: "For anything public, please try " # forum_page: "our forum" # forum_suffix: " instead." +# where_reply: "Where should we reply?" # send: "Send Feedback" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/fr.coffee b/app/locale/fr.coffee index 7515efb85..18e7ef221 100644 --- a/app/locale/fr.coffee +++ b/app/locale/fr.coffee @@ -69,7 +69,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t change_hero: "Changer le Héro" # Go back from choose inventory to choose hero choose_inventory: "Équiper des objets" buy_gems: "Acheter des gemmes" -# campaign_desert: "Desert Campaign" + campaign_desert: "Campagne Desert" campaign_forest: "Campagne de la forêt" campaign_dungeon: "Compagne du donjon" subscription_required: "Enregistrement nécessaire" @@ -146,9 +146,13 @@ module.exports = nativeDescription: "français", englishDescription: "French", t fork: "Fork" play: "Jouer" # When used as an action verb, like "Play next level" retry: "Reessayer" + actions: "Actions" + info: "Info" + help: "Aide" watch: "Regarder" unwatch: "Ne plus regarder" submit_patch: "Soumettre un correctif" + submit_changes: "Soumettre des Changements" general: and: "et" @@ -156,10 +160,17 @@ module.exports = nativeDescription: "français", englishDescription: "French", t date: "Date" body: "Corps" version: "Version" + submitter: "Soumissionnaire" + submitted: "Soumis" commit_msg: "Message de mise à jour" + review: "Examen" #review version_history: "Historique des versions" version_history_for: "Historique des versions pour : " - result: "Resultat" + select_changes: "Sélectionner deux changements plus bas pour voir la différence." + undo: "Annuler (Ctrl+Z)" + redo: "Refaire (Ctrl+Shift+Z)" + play_preview: "Jouer un aperçu du niveau actuel" + result: "Résultat" results: "Résultats" description: "Description" or: "ou" @@ -217,10 +228,10 @@ module.exports = nativeDescription: "français", englishDescription: "French", t click_to_select: "Clique sur une unité pour la sélectionner." control_bar_multiplayer: "Multi joueurs" control_bar_join_game: "Rejoindre la partie" - reload: "Recharger" - reload_title: "Recharger tout le code?" - reload_really: "Êtes-vous sûr de vouloir recharger ce niveau et retourner au début?" - reload_confirm: "Tout recharger" + reload: "Recommencer" + reload_title: "Recommencer tout le code?" + reload_really: "Êtes-vous sûr de vouloir recommencer ce niveau et retourner au début?" + reload_confirm: "Tout recommencer" victory: "Victoire" victory_title_prefix: "" victory_title_suffix: " Terminé" @@ -242,7 +253,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t tome_other_units: "Autres unités" # Only in old-style levels. tome_cast_button_run: "Exécuter" tome_cast_button_running: "En cours d'exécution" - tome_cast_button_ran: "Exécuté" + tome_cast_button_ran: "Exécuter" tome_submit_button: "Envoyer" tome_reload_method: "Recharger le code original pour cette méthode" # Title text for individual method reload button. tome_select_method: "Selectionner une méthode" @@ -257,7 +268,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t skip_tutorial: "Passer (esc)" keyboard_shortcuts: "Raccourcis Clavier" loading_ready: "Pret!" - loading_start: "Démarrer le niveau" + loading_start: "Démarrer niveau" problem_alert_title: "Corriger votre Code" time_current: "Maintenant:" time_total: "Max:" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t prompt_title: "Pas assez de gemmes" prompt_body: "En voulez-vous plus?" prompt_button: "Entrer dans la boutique" + recovered: "Gemmes précédemment achetées récupérées. Merci de rafraîchir la page." subscribe: subscribe_title: "Inscription" @@ -354,7 +366,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t choose_hero: "Choisissez votre Héro" programming_language: "Langage de programmation" programming_language_description: "Quel langage de programmation voullez-vous utiliser?" -# default: "Default" + default: "Défaut" experimental: "Expérimental" python_blurb: "Simple mais puissant, idéal pour les débutants et les experts." javascript_blurb: "Le langage du web. (Pas le même que Java.)" @@ -373,17 +385,17 @@ module.exports = nativeDescription: "français", englishDescription: "French", t regeneration: "Régénération" range: "Portée" # As in "attack or visual range" blocks: "Absorbe" # As in "this shield blocks this much damage" -# backstab: "Backstab" # As in "this dagger does this much backstab damage" + backstab: "Poignardé" # As in "this dagger does this much backstab damage" skills: "Compétences" available_for_purchase: "Disponible à l'achat" # Shows up when you have unlocked, but not purchased, a hero in the hero store level_to_unlock: "Niveau à débloquer:" # Label for which level you have to beat to unlock a particular hero (click a locked hero in the store to see) restricted_to_certain_heroes: "Seulement certains héros peuvent jouer ce niveau." skill_docs: -# writable: "writable" # Hover over "attack" in Your Skills while playing a level to see most of this + writable: "éditable" # Hover over "attack" in Your Skills while playing a level to see most of this read_only: "lecture seulement" action_name: "nom" -# action_cooldown: "Takes" + action_cooldown: "Encaisse" action_specific_cooldown: "Rechargement" action_damage: "Dégat" action_range: "Portée" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t forum_prefix: "Pour tout sujet d'ordre publique, merci d'utiliser " forum_page: "notre forum" forum_suffix: " À la place." + where_reply: "Où devons-nous répondre?" send: "Envoyer un commentaire" contact_candidate: "Contacter le candidat" # Deprecated recruitment_reminder: "Utilisez ce formulaire pour entrer en contact avec le candidat qui vous interesse. Souvenez-vous que CodeCombat facture 15% de la première année de salaire. Ces frais sont dues à l'embauche de l'employé, ils sont remboursable pendant 90 jours si l'employé ne reste pas employé. Les employés à temps partiel, à distance ou contractuel sont gratuits en tant que stagiaires." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "français", englishDescription: "French", t more: "Plus" wiki: "Wiki" live_chat: "Chat en live" + thang_main: "Principal" + thang_spritesheets: "Feuilles des sprites" #SpriteSheets + thang_colors: "Couleurs" level_some_options: "Quelques options?" level_tab_thangs: "Thangs" level_tab_scripts: "Scripts" @@ -811,21 +827,21 @@ module.exports = nativeDescription: "français", englishDescription: "French", t recently_played: "Jouées récemment" no_recent_games: "Aucunes parties jouées au cours des deux dernières semaines." payments: "Paiements" -# purchased: "Purchased" -# subscription: "Subscription" + purchased: "Acheté" + subscription: "Souscrit" service_apple: "Apple" service_web: "Web" paid_on: "Payé" service: "Service" price: "Prix" gems: "Gemmes" -# active: "Active" -# subscribed: "Subscribed" -# unsubscribed: "Unsubscribed" -# active_until: "Active Until" -# cost: "Cost" -# next_payment: "Next Payment" -# card: "Card" + active: "Actif" + subscribed: "Inscrit" + unsubscribed: "Désincrit" + active_until: "Actif jusqu'à" + cost: "Coût" + next_payment: "Prochain paiment" + card: "Carte" status_unsubscribed_active: "Vous n'êtes pas inscrit et ne serez pas facturé, mais votre compte est toujours actif." status_unsubscribed: "Obtenez l'accès à de nouveaux niveaux, héros, objets et gemmes en bonu avec une inscription à CodeCombat !" @@ -886,7 +902,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t clas: "CLAs" play_counts: "Nombre de parties" feedback: "Réaction" -# payment_info: "Payment Info" + payment_info: "Info paiement" delta: added: "Ajouté" @@ -1102,14 +1118,14 @@ module.exports = nativeDescription: "français", englishDescription: "French", t filter_visa_no: "Non autorisé" filter_education_top: "Ecole supérieure" filter_education_other: "Autre" - filter_role_web_developer: "Développeur Webr" + filter_role_web_developer: "Développeur Web" filter_role_software_developer: "Développeur logiciel" filter_role_mobile_developer: "Développeur mobile" filter_experience: "Expérience" filter_experience_senior: "Senior" filter_experience_junior: "Junior" # filter_experience_recent_grad: "Recent Grad" -# filter_experience_student: "College Student" + filter_experience_student: "Étudiant" filter_results: "Résultats" start_hiring: "Commencer à embaucher." # reasons: "Three reasons you should hire through us:" diff --git a/app/locale/gl.coffee b/app/locale/gl.coffee index 41590549e..16c900d05 100644 --- a/app/locale/gl.coffee +++ b/app/locale/gl.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "Galego", englishDescription: "Galician", tr fork: "Bifurcar" play: "Xogar" # When used as an action verb, like "Play next level" retry: "Reintentar" +# actions: "Actions" +# info: "Info" +# help: "Help" watch: "Mirar" unwatch: "Pasar" submit_patch: "Mandar Parche" +# submit_changes: "Submit Changes" general: and: "e" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "Galego", englishDescription: "Galician", tr date: "Data" body: "Corpo" version: "Versión" +# submitter: "Submitter" +# submitted: "Submitted" commit_msg: "Mensaxe de Asignación ou Commit" +# review: "Review" version_history: "Historial de versión" version_history_for: "Historial das versións de: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" result: "Resultado" results: "Resultados" description: "Descripción" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "Galego", englishDescription: "Galician", tr # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "Galego", englishDescription: "Galician", tr forum_prefix: "Para asuntos públicos, por favor usa " forum_page: "o noso foro" forum_suffix: " no seu lugar." +# where_reply: "Where should we reply?" send: "Envía o teu comentario" contact_candidate: "Contactar Candidato" # Deprecated recruitment_reminder: "Usa este formulario para contactar cos candidatos que queiras entrevistar. Recorda que CodeCombat cobrará o 18% do salario durante o primeiro ano. A cuota é pola contratación do empregado e é reembolsable durante 90 días si o empregado non permanece contratado. A tempo parcial, a distancia e os empregados de contrato son gratis, como o son os bolseiros." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "Galego", englishDescription: "Galician", tr more: "Máis" wiki: "Wiki" live_chat: "Chat en directo" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" level_some_options: "Algunhas opcións?" level_tab_thangs: "Obxectos" level_tab_scripts: "Scripts" diff --git a/app/locale/he.coffee b/app/locale/he.coffee index b78088918..c9ea5c418 100644 --- a/app/locale/he.coffee +++ b/app/locale/he.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew", fork: "קילשון" play: "שחק" # When used as an action verb, like "Play next level" # retry: "Retry" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" # general: # and: "and" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew", # date: "Date" # body: "Body" # version: "Version" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" +# review: "Review" # version_history: "Version History" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" # result: "Result" # results: "Results" # description: "Description" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew", # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew", forum_prefix: "בשביל דברים ציבוריים, לך ל " forum_page: "פורום שלנו" forum_suffix: " במקום." +# where_reply: "Where should we reply?" send: "שלח אימייל" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew", # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew", # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/hi.coffee b/app/locale/hi.coffee index 6f7b9984f..672a4bc78 100644 --- a/app/locale/hi.coffee +++ b/app/locale/hi.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe # fork: "Fork" # play: "Play" # When used as an action verb, like "Play next level" # retry: "Retry" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" # general: # and: "and" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe # date: "Date" # body: "Body" # version: "Version" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" +# review: "Review" # version_history: "Version History" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" # result: "Result" # results: "Results" # description: "Description" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe # forum_prefix: "For anything public, please try " # forum_page: "our forum" # forum_suffix: " instead." +# where_reply: "Where should we reply?" # send: "Send Feedback" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/hu.coffee b/app/locale/hu.coffee index 02b14899c..18b371c2d 100644 --- a/app/locale/hu.coffee +++ b/app/locale/hu.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t fork: "Villára vesz" play: "Játék" # When used as an action verb, like "Play next level" retry: "Próbáld újra!" +# actions: "Actions" +# info: "Info" +# help: "Help" watch: "Követés" unwatch: "Követés vége" submit_patch: "Kiegészítés bemutatása" +# submit_changes: "Submit Changes" general: and: "és" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t date: "Dátum" body: "Test" version: "Verzió" +# submitter: "Submitter" +# submitted: "Submitted" commit_msg: "Üzenet feladása" +# review: "Review" version_history: "Verzió történet" version_history_for: "Verzió története ennek: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" result: "Eredmény" results: "Eredmények" description: "Leírás" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t prompt_title: "Nincs elég drágaköved" prompt_body: "Szeretnél többet?" prompt_button: "Lépj be a boltba" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t forum_prefix: "Ha publikus dologról van szó, megpróbálhatod a " forum_page: "fórumban" forum_suffix: " is." +# where_reply: "Where should we reply?" send: "Visszajelzés küldése" contact_candidate: "Vedd fel a kapcsolatot a jelölttel" # Deprecated recruitment_reminder: "Használd ezt az űrlapot, hogy tudasd a jelöltekkel, szívesen fogadnád őket egy interjúra. Ne feledd, CodeCombat felszámítja az első évi fizetés 15%-át. A díj a munkavállaló alkalmazásakor esedékes, és 90 napig visszafizetendő, ha a munkavállaó nem marad alkalmazásban. Részidőben, távmunkára és szerződéssel alkalmazottak után nem kell fizetni, valamint gyakornokok után sem." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t more: "Több" wiki: "Tudásbázis" live_chat: "Élő cset" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/id.coffee b/app/locale/id.coffee index 6d6a60d60..72b0245e3 100644 --- a/app/locale/id.coffee +++ b/app/locale/id.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind # fork: "Fork" # play: "Play" # When used as an action verb, like "Play next level" # retry: "Retry" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" # general: # and: "and" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind # date: "Date" # body: "Body" # version: "Version" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" +# review: "Review" # version_history: "Version History" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" # result: "Result" # results: "Results" # description: "Description" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind # forum_prefix: "For anything public, please try " # forum_page: "our forum" # forum_suffix: " instead." +# where_reply: "Where should we reply?" # send: "Send Feedback" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/it.coffee b/app/locale/it.coffee index 9b3af1550..800a48e9a 100644 --- a/app/locale/it.coffee +++ b/app/locale/it.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t fork: "Fork" play: "Gioca" # When used as an action verb, like "Play next level" retry: "Riprova" +# actions: "Actions" +# info: "Info" +# help: "Help" watch: "Guarda" # unwatch: "Unwatch" submit_patch: "Invia Patch" +# submit_changes: "Submit Changes" general: and: "e" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t date: "Data" body: "Testo" version: "Versione" +# submitter: "Submitter" +# submitted: "Submitted" commit_msg: "Messaggio del Commit" +# review: "Review" # version_history: "Version History" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" result: "Risultato" results: "Risultati" description: "Descrizione" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t forum_prefix: "Per discussioni pubbliche, puoi provare " forum_page: "il nostro forum" forum_suffix: " invece." +# where_reply: "Where should we reply?" send: "Invia feedback" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" level_some_options: "Opzioni??" level_tab_thangs: "Thangs" level_tab_scripts: "Script" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/ja.coffee b/app/locale/ja.coffee index 635fec99a..cfefae3e9 100644 --- a/app/locale/ja.coffee +++ b/app/locale/ja.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese", # fork: "Fork" play: "ゲームスタート" # When used as an action verb, like "Play next level" retry: "リトライ" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" # general: # and: "and" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese", # date: "Date" # body: "Body" # version: "Version" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" +# review: "Review" # version_history: "Version History" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" # result: "Result" # results: "Results" # description: "Description" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese", # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese", forum_prefix: "公開で様々な人と議論したい場合は " forum_page: "こちらのフォーラム" forum_suffix: " でお願いします。" +# where_reply: "Where should we reply?" send: "フィードバックを送信" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese", # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese", # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/ko.coffee b/app/locale/ko.coffee index ff222da76..0fe6c0cd1 100644 --- a/app/locale/ko.coffee +++ b/app/locale/ko.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t fork: "Fork" play: "시작" # When used as an action verb, like "Play next level" retry: "재시도" +# actions: "Actions" +# info: "Info" +# help: "Help" watch: "보기" unwatch: "보기 해제" submit_patch: "패치 제출" +# submit_changes: "Submit Changes" general: and: "그리고" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t # date: "Date" body: "구성" version: "버전" +# submitter: "Submitter" +# submitted: "Submitted" commit_msg: "커밋 메세지" +# review: "Review" version_history: "버전 히스토리" version_history_for: "버전 히스토리 : " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" result: "결과" results: "결과들" description: "설명" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t forum_prefix: "공개적으로 논의할 사항이라면 우리 포럼에서 해주세요 : " forum_page: "포럼" forum_suffix: " 대신에." +# where_reply: "Where should we reply?" send: "의견 보내기" contact_candidate: "지원자에게 연락하기" # Deprecated recruitment_reminder: "인터뷰를 원하는 지원자에게 연락하고자 할 때, 이 양식을 사용해주세요. 코드 컴뱃에게 반드시 첫 해 연봉의 15%를 지급해야합니다. 수수료는 직원을 고용하자마자 즉시 지급되어야 합니다. 한편 90일 이내로 채용이 취소된다면 수수료를 환불받을 수 있습니다. 아르바이트, 재택근무, 계약직은 인턴의 경우와 마찬가지로 수수료가 없습니다." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t more: "더 보기" wiki: "위키" live_chat: "실시간 채팅" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" level_some_options: "다른 옵션들?" level_tab_thangs: "Thangs" level_tab_scripts: "스크립트들" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/lt.coffee b/app/locale/lt.coffee index 7260afb7e..1385147d6 100644 --- a/app/locale/lt.coffee +++ b/app/locale/lt.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith # fork: "Fork" # play: "Play" # When used as an action verb, like "Play next level" # retry: "Retry" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" # general: # and: "and" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith # date: "Date" # body: "Body" # version: "Version" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" +# review: "Review" # version_history: "Version History" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" # result: "Result" # results: "Results" # description: "Description" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith # forum_prefix: "For anything public, please try " # forum_page: "our forum" # forum_suffix: " instead." +# where_reply: "Where should we reply?" # send: "Send Feedback" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/ms.coffee b/app/locale/ms.coffee index 24fdb23df..1beb3a9cf 100644 --- a/app/locale/ms.coffee +++ b/app/locale/ms.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # fork: "Fork" play: "Mula" # When used as an action verb, like "Play next level" # retry: "Retry" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" general: and: "dan" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # date: "Date" # body: "Body" version: "Versi" +# submitter: "Submitter" +# submitted: "Submitted" commit_msg: "Mesej Commit" +# review: "Review" # version_history: "Version History" version_history_for: "Versi History untuk: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" result: "Keputusan" results: "Keputusan-keputusan" description: "Deskripsi" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa forum_prefix: "Untuk perkara lain, sila cuba " forum_page: "forum kami" # forum_suffix: " instead." +# where_reply: "Where should we reply?" send: "Hantar Maklumbalas" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/nb.coffee b/app/locale/nb.coffee index 32c18b359..03a823503 100644 --- a/app/locale/nb.coffee +++ b/app/locale/nb.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg # fork: "Fork" play: "Spill" # When used as an action verb, like "Play next level" retry: "Prøv igjen" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" general: and: "og" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg date: "Dato" body: "Kropp" version: "Versjon" +# submitter: "Submitter" +# submitted: "Submitted" commit_msg: "Commit-melding" +# review: "Review" version_history: "Versjonshistorikk" version_history_for: "Versjonshistorikk for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" result: "Resultat" results: "Resultater" description: "Beskrivelse" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg prompt_title: "Ikke nok juveler" prompt_body: "Har du lyst på flere?" prompt_button: "Til Butikken" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg forum_prefix: "For allment tilgjengelige henvendelser, vennligst prøv " forum_page: "forumet vårt" forum_suffix: " i stedet." +# where_reply: "Where should we reply?" send: "Send Tilbakemelding" contact_candidate: "Kontakt kandidat" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg more: "Mer" wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" level_tab_thangs: "Thangs" level_tab_scripts: "Skript" diff --git a/app/locale/nl-BE.coffee b/app/locale/nl-BE.coffee index 60c2641ac..f747c3fd7 100644 --- a/app/locale/nl-BE.coffee +++ b/app/locale/nl-BE.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription: fork: "Fork" play: "Spelen" # When used as an action verb, like "Play next level" retry: "Probeer opnieuw" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" general: and: "en" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription: # date: "Date" body: "Inhoud" version: "Versie" +# submitter: "Submitter" +# submitted: "Submitted" commit_msg: "Commit Bericht" +# review: "Review" version_history: "Versie geschiedenis" version_history_for: "Versie geschiedenis voor: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" result: "Resultaat" results: "Resultaten" description: "Beschrijving" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription: # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription: forum_prefix: "Voor iets publiekelijks, probeer dan " forum_page: "ons forum" forum_suffix: "." +# where_reply: "Where should we reply?" send: "Feedback Verzonden" contact_candidate: "Contacteer Kandidaat" # Deprecated recruitment_reminder: "Gebruik dit formulier om kandidaten te contacteren voor wie je een interesse hebt om te interviewen. Vergeet niet dat CodeCombat een honorarium vraagt van 18% op het eerste-jaarssalaris. Dit honorarium moet betaald worden als de kandidaat wordt aangenomen en kon tot na 90 dagen terugbetaald worden als deze ontslagen wordt in deze periode. Deeltijds-, contract- en thuiswerkers worden van dit honorarium vrijgesteld, alsook interims." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription: more: "Meer" wiki: "Wiki" live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" level_some_options: "Enkele opties?" level_tab_thangs: "Elementen" level_tab_scripts: "Scripts" diff --git a/app/locale/nl-NL.coffee b/app/locale/nl-NL.coffee index 871591122..5b5f36df1 100644 --- a/app/locale/nl-NL.coffee +++ b/app/locale/nl-NL.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription fork: "Fork" play: "Spelen" # When used as an action verb, like "Play next level" retry: "Probeer opnieuw" +# actions: "Actions" +# info: "Info" +# help: "Help" watch: "Volgen" unwatch: "Ontvolgen" submit_patch: "Correctie Opsturen" +# submit_changes: "Submit Changes" general: and: "en" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription # date: "Date" body: "Inhoud" version: "Versie" +# submitter: "Submitter" +# submitted: "Submitted" commit_msg: "Commit Bericht" +# review: "Review" version_history: "Versie geschiedenis" version_history_for: "Versie geschiedenis voor: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" result: "Resultaat" results: "Resultaten" description: "Beschrijving" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription forum_prefix: "Voor iets publiekelijks, probeer dan " forum_page: "ons forum" forum_suffix: "." +# where_reply: "Where should we reply?" send: "Feedback Verzonden" contact_candidate: "Contacteer Kandidaat" # Deprecated recruitment_reminder: "Gebruik dit formulier om kandidaten te contacteren voor wie je een interesse hebt om te interviewen. Vergeet niet dat CodeCombat een honorarium vraagt van 18% op het eerste-jaarssalaris. Dit honorarium moet betaald worden als de kandidaat wordt aangenomen en kon tot na 90 dagen terugbetaald worden als deze ontslagen wordt in deze periode. Deeltijds-, contract- en thuiswerkers worden van dit honorarium vrijgesteld, alsook interims." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription more: "Meer" wiki: "Wiki" live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" level_some_options: "Enkele opties?" level_tab_thangs: "Elementen" level_tab_scripts: "Scripts" diff --git a/app/locale/nn.coffee b/app/locale/nn.coffee index 64c56c63a..7d256e39e 100644 --- a/app/locale/nn.coffee +++ b/app/locale/nn.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No # fork: "Fork" # play: "Play" # When used as an action verb, like "Play next level" # retry: "Retry" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" # general: # and: "and" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No # date: "Date" # body: "Body" # version: "Version" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" +# review: "Review" # version_history: "Version History" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" # result: "Result" # results: "Results" # description: "Description" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No # forum_prefix: "For anything public, please try " # forum_page: "our forum" # forum_suffix: " instead." +# where_reply: "Where should we reply?" # send: "Send Feedback" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/no.coffee b/app/locale/no.coffee index 435580e69..155f18606 100644 --- a/app/locale/no.coffee +++ b/app/locale/no.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr # fork: "Fork" play: "Spill" # When used as an action verb, like "Play next level" # retry: "Retry" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" general: # and: "and" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr # date: "Date" # body: "Body" # version: "Version" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" +# review: "Review" # version_history: "Version History" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" # result: "Result" # results: "Results" # description: "Description" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr forum_prefix: "Du kan også stille spørsmål i våre åpne " forum_page: "diskusjonsgrupper" forum_suffix: " om du ønsker det. For å få flest mulig svar er det lurt å skrive på engelsk" +# where_reply: "Where should we reply?" send: "Send tilbakemelding" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/pl.coffee b/app/locale/pl.coffee index 5c6c9a434..9d72345e8 100644 --- a/app/locale/pl.coffee +++ b/app/locale/pl.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish fork: "Fork" play: "Graj" # When used as an action verb, like "Play next level" # retry: "Retry" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" general: and: "i" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish # date: "Date" body: "Zawartość" version: "Wersja" +# submitter: "Submitter" +# submitted: "Submitted" commit_msg: "Wiadomość do commitu" +# review: "Review" # version_history: "Version History" version_history_for: "Historia wersji dla: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" result: "Wynik" results: "Wyniki" description: "Opis" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish forum_prefix: "W sprawach ogólnych, skorzystaj z " forum_page: "naszego forum" forum_suffix: "." +# where_reply: "Where should we reply?" send: "Wyślij wiadomość" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" level_some_options: "Trochę opcji?" level_tab_thangs: "Obiekty" level_tab_scripts: "Skrypty" diff --git a/app/locale/pt-BR.coffee b/app/locale/pt-BR.coffee index 8abbd70fd..77b45397d 100644 --- a/app/locale/pt-BR.coffee +++ b/app/locale/pt-BR.coffee @@ -60,7 +60,7 @@ module.exports = nativeDescription: "Português do Brasil", englishDescription: locked: "Bloqueado" purchasable: "Comprável" # For a hero you unlocked but haven't purchased available: "Disponível" -# skills_granted: "Skills Granted" # Property documentation details + skills_granted: "Habilidades Concedidas" # Property documentation details heroes: "Heróis" # Tooltip on hero shop button from /play achievements: "Conquistas" # Tooltip on achievement list button from /play account: "Conta" # Tooltip on account button from /play @@ -69,7 +69,7 @@ module.exports = nativeDescription: "Português do Brasil", englishDescription: change_hero: "Alterar Herói" # Go back from choose inventory to choose hero choose_inventory: "Equipar Items" buy_gems: "Comprar Gems" -# campaign_desert: "Desert Campaign" + campaign_desert: "Campanha do Deserto" campaign_forest: "Campanha da Floresta" campaign_dungeon: "Campanha do Calabouço" subscription_required: "Requer assinatura" @@ -102,14 +102,14 @@ module.exports = nativeDescription: "Português do Brasil", englishDescription: log_in: "Entrar" logging_in: "Entrando" log_out: "Sair" -# forgot_password: "Forgot your password?" + forgot_password: "Esqueceu sua senha?" authenticate_gplus: "Autenticar com G+" load_profile: "Carregar Perfil do G+" load_email: "Carregar email do G+" finishing: "Terminando" -# sign_in_with_facebook: "Sign in with Facebook" -# sign_in_with_gplus: "Sign in with G+" -# signup_switch: "Want to create an account?" + sign_in_with_facebook: "Conectar com Facebook" + sign_in_with_gplus: "Conectar com G+" + signup_switch: "Deseja Criar uma Conta?" signup: email_announcements: "Receber notícias por email." @@ -118,7 +118,7 @@ module.exports = nativeDescription: "Português do Brasil", englishDescription: log_in: "Entre com a senha" social_signup: "Ou, você pode fazer login pelo Facebook ou G+:" required: "Você precisa fazer login antes de ir por esse caminho." -# login_switch: "Already have an account?" + login_switch: "Já possui uma conta?" recover: recover_account_title: "Recuperar conta" @@ -146,9 +146,13 @@ module.exports = nativeDescription: "Português do Brasil", englishDescription: fork: "Fork" play: "Jogar" # When used as an action verb, like "Play next level" retry: "Tente novamente" + actions: "Ações" + info: "Info" + help: "Ajuda" watch: "Observar" unwatch: "Não Observar" submit_patch: "Enviar arranjo" + submit_changes: "Enviar mudanças" general: and: "e" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "Português do Brasil", englishDescription: date: "Data" body: "Principal" version: "Versão" +# submitter: "Submitter" + submitted: "Enviado" commit_msg: "Mensagem de Submissão" + review: "Revisão" version_history: "Histórico de Versão" version_history_for: "Histórico de Versão para: " + select_changes: "Selecione duas alterações para ver as diferenças." + undo: "Desfazer (Ctrl+Z)" + redo: "Refazer (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" result: "Resultado" results: "Resultados" description: "Descrição" @@ -221,7 +232,7 @@ module.exports = nativeDescription: "Português do Brasil", englishDescription: reload_title: "Recarregar Todo o Código?" reload_really: "Você tem certeza que quer reiniciar o estágio?" reload_confirm: "Recarregar Tudo" -# victory: "Victory" + victory: "Vitória" victory_title_prefix: " Vitória " victory_title_suffix: " Completado!" victory_sign_up: "Assine para atualizações" @@ -234,8 +245,8 @@ module.exports = nativeDescription: "Português do Brasil", englishDescription: victory_review: "Diga-nos mais!" # Only in old-style levels. victory_hour_of_code_done: "Terminou?" victory_hour_of_code_done_yes: "Sim, eu terminei minha Hora da Programação!" -# victory_experience_gained: "XP Gained" -# victory_gems_gained: "Gems Gained" + victory_experience_gained: "XP ganho" + victory_gems_gained: "Gems ganhas" guide_title: "Guia" tome_minion_spells: "Magias dos seus subordinados" # Only in old-style levels. tome_read_only_spells: "Magias não editáveis" # Only in old-style levels. @@ -333,10 +344,11 @@ module.exports = nativeDescription: "Português do Brasil", englishDescription: prompt_title: "Gemas insulficientes" prompt_body: "Você quer conseguir mais gemas?" prompt_button: "Entrar na loja" + recovered: "Gems de compras anteriores Recuperadas. Por favor atualize a pagina." subscribe: subscribe_title: "Inscrever-se" -# unsubscribe: "Unsubscribe" + unsubscribe: "Desinscrever-se" levels: "Desbloqueie 17 níveis extras! Com 5 novos toda semana!" heroes: "Mais poderosos heróis!" gems: "3500 gemas bônus todo mês!" @@ -373,7 +385,7 @@ module.exports = nativeDescription: "Português do Brasil", englishDescription: regeneration: "Cura" range: "Distância de Ataque" # As in "attack or visual range" blocks: "Bloqueio" # As in "this shield blocks this much damage" -# backstab: "Backstab" # As in "this dagger does this much backstab damage" + backstab: "Dano de volta" # As in "this dagger does this much backstab damage" skills: "Habilidades" available_for_purchase: "Disponível para a Compra" # Shows up when you have unlocked, but not purchased, a hero in the hero store level_to_unlock: "Nível para desbloquear:" # Label for which level you have to beat to unlock a particular hero (click a locked hero in the store to see) @@ -383,7 +395,7 @@ module.exports = nativeDescription: "Português do Brasil", englishDescription: writable: "gravável" # Hover over "attack" in Your Skills while playing a level to see most of this read_only: "apenas leitura" action_name: "nome" -# action_cooldown: "Takes" + action_cooldown: "Demora" action_specific_cooldown: "Recarregando" action_damage: "Dano" action_range: "Distância" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "Português do Brasil", englishDescription: forum_prefix: "Para algo público, por favor acesse " forum_page: "nosso fórum" forum_suffix: " ao invés disso." +# where_reply: "Where should we reply?" send: "Enviar opinião" contact_candidate: "Contactar Candidato" # Deprecated recruitment_reminder: "Utilize esse formulário para entrar em contato com candidatos que você esteja interessado em entrevistar. Lembre-se que o CodeCombat cobra 15% do salário do primeiro ano. A taxa de contratação é cobrada quando da contratação do empregado e é reembolsável por 90 dias, se o empregado não permanece no emprego. Empregados de meio-turno, remotos ou com contrato serão gratuitos como estagiários." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "Português do Brasil", englishDescription: more: "Mais" wiki: "Wiki" live_chat: "Chat Ao Vivo" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" level_some_options: "Algumas Opções?" level_tab_thangs: "Thangs" level_tab_scripts: "Scripts" @@ -811,21 +827,21 @@ module.exports = nativeDescription: "Português do Brasil", englishDescription: recently_played: "Jogos Recentes" no_recent_games: "Não foram feitos jogos durante duas semanas." payments: "Pagamentos" -# purchased: "Purchased" -# subscription: "Subscription" + purchased: "Comprado" + subscription: "Assinatura" service_apple: "Apple" service_web: "Web" paid_on: "Pago" service: "Serviço" price: "Preço" gems: "Gemas" -# active: "Active" -# subscribed: "Subscribed" -# unsubscribed: "Unsubscribed" -# active_until: "Active Until" -# cost: "Cost" -# next_payment: "Next Payment" -# card: "Card" + active: "Ativo" + subscribed: "Inscrito" + unsubscribed: "Desinscrito" + active_until: "Ativo até" + cost: "Custo" + next_payment: "Próximo Pagamento" + card: "Cartão" status_unsubscribed_active: "Você não é um assinante e não será cobrado, mas sua conta ainda está ativa." status_unsubscribed: "Ganhe acesso a novos níveis,heróis,itens, e gems bônus com uma assinatura CodeCombat!" @@ -886,7 +902,7 @@ module.exports = nativeDescription: "Português do Brasil", englishDescription: clas: "CLAs" play_counts: "Contagem de Jogos" feedback: "Comentários" -# payment_info: "Payment Info" + payment_info: "Informação de pagamento" delta: added: "Adicionado" diff --git a/app/locale/pt-PT.coffee b/app/locale/pt-PT.coffee index 7ed374cca..55840a86d 100644 --- a/app/locale/pt-PT.coffee +++ b/app/locale/pt-PT.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: fork: "Bifurcar" play: "Jogar" # When used as an action verb, like "Play next level" retry: "Tentar Novamente" + actions: "Ações" + info: "Informações" + help: "Ajuda" watch: "Vigiar" unwatch: "Desvigiar" submit_patch: "Submeter Versão" + submit_changes: "Submeter Alterações" general: and: "e" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: date: "Data" body: "Corpo" version: "Versão" - commit_msg: "Enviar Mensagem" + submitter: "Submissor" + submitted: "Submeteu" + commit_msg: "Mensagem da Submissão" + review: "Rever" version_history: "Histórico de Versões" version_history_for: "Histórico de Versões para: " + select_changes: "Seleciona duas das alterações abaixo para veres a diferença." + undo: "Desfazer (Ctrl+Z)" + redo: "Refazer (Ctrl+Shift+Z)" + play_preview: "Jogar pré-visualização do nível atual" result: "Resultado" results: "Resultados" description: "Descrição" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: prompt_title: "Sem Gemas Suficientes" prompt_body: "Queres obter mais?" prompt_button: "Entra na Loja" + recovered: "Recuperada a compra de gemas anterior. Por favor atualiza a página." subscribe: subscribe_title: "Subscrever" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: forum_prefix: "Para algo público, por favor usa o " forum_page: "nosso fórum" forum_suffix: " como alternativa." + where_reply: "Para onde devemos enviar a resposta?" send: "Enviar Feedback" contact_candidate: "Contactar Candidato" # Deprecated recruitment_reminder: "Usa este formulário para chegares a candidatos que estejas interessado em entrevistar. Lembra-te que o CodeCombat cobra 15% do salário do primeiro ano. A taxa é cobrada no momento da contratação do empregado e é reembolsável durante 90 dias, no caso de o trabalhador não se manter empregado. A empregados em part-time, no estrangeiro e a contrato não são aplicadas taxas, porque são internos." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: more: "Mais" wiki: "Wiki" live_chat: "Chat Ao Vivo" + thang_main: "Principal" + thang_spritesheets: "Spritesheets" + thang_colors: "Cores" level_some_options: "Algumas Opções?" level_tab_thangs: "Thangs" level_tab_scripts: "Scripts" @@ -640,11 +656,11 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: introduction_desc_github_url: "o CodeCombat é totalmente open source" introduction_desc_suf: " e queremos oferecer tantas maneiras quanto possível para que possas participar e fazer deste projeto tanto teu quanto nosso." introduction_desc_ending: "Esperamos que te juntes a nós!" - introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy e Matt" + introduction_desc_signature: "- Nick, George, Scott, Michael, e Matt" alert_account_message_intro: "Hey, tu!" alert_account_message: "Para te subscreveres para receber e-mails de classes, necessitarás de iniciar sessão." -# archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." -# archmage_introduction: "One of the best parts about building games is they synthesize so many different things. Graphics, sound, real-time networking, social networking, and of course many of the more common aspects of programming, from low-level database management, and server administration to user facing design and interface building. There's a lot to do, and if you're an experienced programmer with a hankering to really dive into the nitty-gritty of CodeCombat, this class might be for you. We would love to have your help building the best programming game ever." + archmage_summary: "Interessado em trabalhar em gráficos de jogos, no design da interface do utilizador, em bases de dados e organização de servidores, em redes multijogador, em física, em som ou no desempenho do motor do jogo? Queres ajudar a construir um jogo para ajudar outras pessoas a aprender aquilo em que és bom? Temos muito para fazer e se és um programador experiente e queres desenvolver para o CodeCombat, esta classe é para ti. Gostaríamos muito da tua ajuda para construir o melhor jogo de programação de sempre." + archmage_introduction: "Uma das melhores partes da construção de jogos é que eles sintetizam muitas coisas diferentes. Gráficos, som, rede em tempo real, redes sociais, e, claro, muitos dos aspectos mais comuns da programação, desde a gestão de bases de dados de baixo nível, e administração do servidor até à construção do design e da interface do utilizador. Há muito a fazer, e se és um programador experiente com um verdadeiro desejo de mergulhar nas entranhas do CodeCombat, esta classe pode ser para ti. Gostaríamos muito de ter a tua ajuda para construir o melhor jogo de programação de sempre." class_attributes: "Atributos da Classe" archmage_attribute_1_pref: "Conhecimento em " archmage_attribute_1_suf: ", ou vontade de aprender. A maioria do nosso código está nesta linguagem. Se és um fã de Ruby ou Python, vais sentir-te em casa. É igual ao JavaScript, mas com uma sintaxe melhor." @@ -658,10 +674,10 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: join_url_hipchat: "sala HipChat pública" more_about_archmage: "Aprende Mais Sobre Tornares-te um Arcomago" archmage_subscribe_desc: "Receber e-mails relativos a novas oportunidades de programação e anúncios." -# artisan_summary_pref: "Want to design levels and expand CodeCombat's arsenal? People are playing through our content at a pace faster than we can build! Right now, our level editor is barebone, so be wary. Making levels will be a little challenging and buggy. If you have visions of campaigns spanning for-loops to" -# artisan_summary_suf: ", then this class is for you." -# artisan_introduction_pref: "We must construct additional levels! People be clamoring for more content, and we can only build so many ourselves. Right now your workstation is level one; our level editor is barely usable even by its creators, so be wary. If you have visions of campaigns spanning for-loops to" -# artisan_introduction_suf: ", then this class might be for you." + artisan_summary_pref: "Queres fazer níveis e expandir o arsenal do CodeCombat? As pessoas estão a jogar o nosso conteúdo a um ritmo mais rápido do que podemos construir! Neste momento, o nosso editor de níveis é um esqueleto, por isso fica atento. Fazer níveis será um pouco desafiador e conterá erros. Se tens visões de campanhas que abranjam 'for-loops' para o" + artisan_summary_suf: ", então esta classe é para ti." + artisan_introduction_pref: "Temos de construir mais níveis! As pessoas estão a pedir mais conteúdo, e nós mesmos só podemos construir estes tantos. Neste momento, a tua estação de trabalho é o nível um; o nosso editor de nível é pouco utilizável, até mesmo pelos seus criadores, por isso fica atento. Se tens visões de campanhas que abranjam 'for-loops' para o" + artisan_introduction_suf: ", então esta classe pode ser para ti." # artisan_attribute_1: "Any experience in building content like this would be nice, such as using Blizzard's level editors. But not required!" # artisan_attribute_2: "A hankering to do a whole lot of testing and iteration. To make good levels, you need to take it to others and watch them play it, and be prepared to find a lot of things to fix." # artisan_attribute_3: "For the time being, endurance en par with an Adventurer. Our Level Editor is super preliminary and frustrating to use. You have been warned!" diff --git a/app/locale/ro.coffee b/app/locale/ro.coffee index 13f4bb18b..47ff38d0d 100644 --- a/app/locale/ro.coffee +++ b/app/locale/ro.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman fork: "Fork" play: "Joacă" # When used as an action verb, like "Play next level" retry: "Reîncearca" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" submit_patch: "Înainteaza Patch" +# submit_changes: "Submit Changes" general: and: "și" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman # date: "Date" body: "Corp" version: "Versiune" +# submitter: "Submitter" +# submitted: "Submitted" commit_msg: "Înregistrează Mesajul" +# review: "Review" # version_history: "Version History" version_history_for: "Versiune istorie pentru: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" result: "Rezultat" results: "Resultate" description: "Descriere" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman forum_prefix: "Pentru orice altceva vă rugăm sa incercați " forum_page: "forumul nostru" forum_suffix: " în schimb." +# where_reply: "Where should we reply?" send: "Trimite Feedback" contact_candidate: "Contacteaza Candidatul" # Deprecated recruitment_reminder: "Folosiți acest formular pentru a ajunge la candidații care va intereseaza pentru interviu. CodeCombat percepe 15% din salariu în primul an. Taxa este datorată la angajare și este rambursabilă pentru 90 de zile în cazul în care salariatul nu rămâne angajat. Cele part time, și angajați cu contract la distanță sunt gratuite, așa cum sunt stagiari." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" level_some_options: "Opțiuni?" level_tab_thangs: "Thangs" level_tab_scripts: "Script-uri" diff --git a/app/locale/ru.coffee b/app/locale/ru.coffee index 73a701b3c..d4f154c7e 100644 --- a/app/locale/ru.coffee +++ b/app/locale/ru.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi fork: "Форк" play: "Играть" # When used as an action verb, like "Play next level" retry: "Повторить" + actions: "Действия" + info: "Информация" + help: "Помощь" watch: "Следить" unwatch: "Не следить" submit_patch: "Отослать патч" + submit_changes: "Отослать изменения" general: and: "и" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi date: "Дата" body: "Содержание" version: "Версия" + submitter: "Податель" + submitted: "Представлено" commit_msg: "Сопроводительное сообщение" + review: "Обзор" version_history: "История версий" version_history_for: "История версий для: " + select_changes: "Выберите два изменения ниже, чтобы увидеть различия." + undo: "Отменить (Ctrl+Z)" + redo: "Повторить (Ctrl+Shift+Z)" + play_preview: "Предварительный просмотр текущего уровня" result: "Результат" results: "Результаты" description: "Описание" @@ -259,6 +270,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi loading_ready: "Готово!" loading_start: "Начать уровень" problem_alert_title: "Исправьте ваш Код" + problem_alert_help: "Помощь" time_current: "Текущее:" time_total: "Максимальное:" time_goto: "Перейти на:" @@ -333,6 +345,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi prompt_title: "Не хватает самоцветов" prompt_body: "Хотите еще?" prompt_button: "Войти в магазин" + recovered: "Предыдущие покупки самоцветов восстановлены. Пожалуйста, обновите страницу." subscribe: subscribe_title: "Подпишись" @@ -468,6 +481,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi forum_prefix: "Для любых публичных обсуждений, пожалуйста, используйте " forum_page: "наш форум" forum_suffix: "." + where_reply: "Куда мы должны ответить?" send: "Отправить отзыв" contact_candidate: "Связаться с кандидатом" # Deprecated recruitment_reminder: "Используйте эту форму, чтобы обратиться к кандидатам, если вы заинтересованы в интервью. Помните, что CodeCombat взимает 18% от первого года зарплаты. Плата производится по найму сотрудника и подлежит возмещению в течение 90 дней, если работник не остаётся на рабочем месте. Работники с частичной занятостью, работаюие удалённо и по контракту свободны, как стажёры." # Deprecated @@ -580,6 +594,9 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi more: "Ещё" wiki: "Вики" live_chat: "Онлайн-чат" + thang_main: "Главное" + thang_spritesheets: "Таблицы спрайтов" + thang_colors: "Цвета" level_some_options: "Ещё опции" level_tab_thangs: "Объекты" level_tab_scripts: "Скрипты" diff --git a/app/locale/sk.coffee b/app/locale/sk.coffee index 33c7e57c0..4a8dd525f 100644 --- a/app/locale/sk.coffee +++ b/app/locale/sk.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak", # fork: "Fork" play: "Hraj" # When used as an action verb, like "Play next level" # retry: "Retry" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" general: # and: "and" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak", # date: "Date" # body: "Body" # version: "Version" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" +# review: "Review" # version_history: "Version History" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" # result: "Result" # results: "Results" # description: "Description" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak", # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak", forum_prefix: "Pre všetky ostatné verejné záležitosti, prosím vyskúšajte " forum_page: "naše fórum" forum_suffix: "." +# where_reply: "Where should we reply?" send: "Poslať odozvu" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak", # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak", # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/sl.coffee b/app/locale/sl.coffee index 7e6ed46a5..542938415 100644 --- a/app/locale/sl.coffee +++ b/app/locale/sl.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven # fork: "Fork" # play: "Play" # When used as an action verb, like "Play next level" # retry: "Retry" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" # general: # and: "and" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven # date: "Date" # body: "Body" # version: "Version" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" +# review: "Review" # version_history: "Version History" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" # result: "Result" # results: "Results" # description: "Description" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven # forum_prefix: "For anything public, please try " # forum_page: "our forum" # forum_suffix: " instead." +# where_reply: "Where should we reply?" # send: "Send Feedback" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/sr.coffee b/app/locale/sr.coffee index cbb24aff6..2e7e40921 100644 --- a/app/locale/sr.coffee +++ b/app/locale/sr.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian # fork: "Fork" play: "Нивои" # When used as an action verb, like "Play next level" # retry: "Retry" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" general: # and: "and" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian # date: "Date" # body: "Body" # version: "Version" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" +# review: "Review" # version_history: "Version History" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" # result: "Result" # results: "Results" # description: "Description" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian forum_prefix: "За било шта јавно, посети " forum_page: "наш форум." # forum_suffix: " instead." +# where_reply: "Where should we reply?" send: "Пошаљи повратну информацију" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/sv.coffee b/app/locale/sv.coffee index 07713d635..6ed902892 100644 --- a/app/locale/sv.coffee +++ b/app/locale/sv.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr fork: "Förgrena" play: "Spela" # When used as an action verb, like "Play next level" retry: "Försök igen" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" general: and: "och" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr date: "Datum" body: "Kropp" version: "Version" +# submitter: "Submitter" +# submitted: "Submitted" commit_msg: "Förbindelsemeddelande" +# review: "Review" # version_history: "Version History" version_history_for: "Versionshistorik för: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" result: "Resultat" results: "Resultat" description: "Beskrivning" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr forum_prefix: "För någonting offentligt, var vänlig testa " forum_page: "vårt forum" forum_suffix: " istället." +# where_reply: "Where should we reply?" send: "Skicka Feedback" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" level_some_options: "Några inställningar?" level_tab_thangs: "Enheter" level_tab_scripts: "Skript" diff --git a/app/locale/th.coffee b/app/locale/th.coffee index 840bed0d0..2a8fdce92 100644 --- a/app/locale/th.coffee +++ b/app/locale/th.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra # fork: "Fork" play: "เล่น" # When used as an action verb, like "Play next level" # retry: "Retry" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" # general: # and: "and" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra # date: "Date" # body: "Body" # version: "Version" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" +# review: "Review" # version_history: "Version History" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" # result: "Result" # results: "Results" # description: "Description" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra # forum_prefix: "For anything public, please try " # forum_page: "our forum" # forum_suffix: " instead." +# where_reply: "Where should we reply?" # send: "Send Feedback" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/tr.coffee b/app/locale/tr.coffee index 10920b1b0..323e4af1c 100644 --- a/app/locale/tr.coffee +++ b/app/locale/tr.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t fork: "Çatalla" play: "Oyna" # When used as an action verb, like "Play next level" retry: "Yeniden Dene" +# actions: "Actions" +# info: "Info" +# help: "Help" watch: "İzle" unwatch: "İzlemeyi Bırak" submit_patch: "Yama Gönder" +# submit_changes: "Submit Changes" general: and: "ve" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t date: "Tarih" body: "Gövde" version: "Sürüm" +# submitter: "Submitter" +# submitted: "Submitted" commit_msg: "Gönderme İletisi" +# review: "Review" version_history: "Geçmiş" version_history_for: "Sürüm Geçmişi: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" result: "Sonuç" results: "Sonuçlar" description: "Açıklama" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t forum_prefix: "Daha kamuya açık soru ve görüşleriniz için " forum_page: "forumumuzu" forum_suffix: " kullanabilirsiniz." +# where_reply: "Where should we reply?" send: "Gönder" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t more: "Daha Fazla" wiki: "Viki" live_chat: "Canlı Sohbet" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" level_some_options: "Bazı Seçenekler?" level_tab_thangs: "Nesneler" level_tab_scripts: "Betikler" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t introduction_desc_github_url: "CodeCombat tümüyle açık kaynaklıdır" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" alert_account_message_intro: "Merhaba!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/uk.coffee b/app/locale/uk.coffee index a355a9bde..bae22878f 100644 --- a/app/locale/uk.coffee +++ b/app/locale/uk.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "Українська", englishDescription: fork: "Форк" play: "Грати" # When used as an action verb, like "Play next level" retry: "Повтор" +# actions: "Actions" +# info: "Info" +# help: "Help" watch: "Стежити" unwatch: "Не стежити" submit_patch: "Надіслати патч" +# submit_changes: "Submit Changes" general: and: "та" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "Українська", englishDescription: date: "Дата" body: "Тіло" version: "Версія" +# submitter: "Submitter" +# submitted: "Submitted" commit_msg: "Доручити повідомлення" +# review: "Review" version_history: "Історія" version_history_for: "Історія версій для: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" result: "Результат" results: "Результати" description: "Опис" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "Українська", englishDescription: prompt_title: "Недостатньо самоцвітів" prompt_body: "Хочете отримати ще?" prompt_button: "Увійти до крамниці" +# recovered: "Previous gems purchase recovered. Please refresh the page." subscribe: subscribe_title: "Взяти абонемент" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "Українська", englishDescription: forum_prefix: "Для будь-яких публічних обговорень, будь ласка, використовуйте " forum_page: "наш форум" forum_suffix: "." +# where_reply: "Where should we reply?" send: "Надіслати відгук" contact_candidate: "Сконтактуватися з кандидатом" # Deprecated recruitment_reminder: "Використовуйте цю форму, щоб перейти до кандидатів, з котрими Ви б хотіли провести співбесіду. Пам'ятайте, що CodeCombat знімає 18% ЗП за перший рік. Плата проводиться за наймом співробітника і підлягає відшкодуванню протягом 90 днів якщо працівник не залишить роботу. Часткова зайнятість, дистанційна робота та наймані працівники не оплачуються, так само як інтерни." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "Українська", englishDescription: more: "Більше" wiki: "Вікі" live_chat: "Online чат" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" level_some_options: "Якісь опції?" level_tab_thangs: "Об'єкти" level_tab_scripts: "Скрипти" diff --git a/app/locale/ur.coffee b/app/locale/ur.coffee index 9d751713b..334e1ad81 100644 --- a/app/locale/ur.coffee +++ b/app/locale/ur.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu", # fork: "Fork" # play: "Play" # When used as an action verb, like "Play next level" # retry: "Retry" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" # general: # and: "and" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu", # date: "Date" # body: "Body" # version: "Version" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" +# review: "Review" # version_history: "Version History" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" # result: "Result" # results: "Results" # description: "Description" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu", # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu", # forum_prefix: "For anything public, please try " # forum_page: "our forum" # forum_suffix: " instead." +# where_reply: "Where should we reply?" # send: "Send Feedback" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu", # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu", # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/vi.coffee b/app/locale/vi.coffee index 576f21fe7..957c31b0f 100644 --- a/app/locale/vi.coffee +++ b/app/locale/vi.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn # fork: "Fork" play: "Các cấp độ" # When used as an action verb, like "Play next level" # retry: "Retry" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" # general: # and: "and" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn # date: "Date" # body: "Body" # version: "Version" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" +# review: "Review" # version_history: "Version History" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" # result: "Result" # results: "Results" # description: "Description" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn # forum_prefix: "For anything public, please try " forum_page: "Diễn đàn của chúng tôi" # forum_suffix: " instead." +# where_reply: "Where should we reply?" send: "Gởi phản hồi" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/zh-HANS.coffee b/app/locale/zh-HANS.coffee index 4c36a48b0..d73d862a2 100644 --- a/app/locale/zh-HANS.coffee +++ b/app/locale/zh-HANS.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese fork: "派生" play: "开始" # When used as an action verb, like "Play next level" retry: "重试" +# actions: "Actions" +# info: "Info" +# help: "Help" watch: "关注" unwatch: "取消关注" submit_patch: "提交补丁" +# submit_changes: "Submit Changes" general: and: "与" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese date: "日期" body: "正文" version: "版本" +# submitter: "Submitter" +# submitted: "Submitted" commit_msg: "提交信息" +# review: "Review" version_history: "版本历史" version_history_for: "版本历史: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" result: "结果" results: "结果" description: "描述" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese prompt_title: "没有足够数量的宝石" prompt_body: "还需要更多吗?" prompt_button: "进入商店" +# recovered: "Previous gems purchase recovered. Please refresh the page." subscribe: subscribe_title: "订阅" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese forum_prefix: "如果你想发布任何公开的东西, 可以试试" forum_page: "我们的论坛" forum_suffix: "" +# where_reply: "Where should we reply?" send: "反馈意见" contact_candidate: "联系参选人" # Deprecated recruitment_reminder: "用这张表格来联系你希望面试的求职者。但请记住如果成功雇佣,CodeCombat会收取与这位员工第一年工资的15%等值的佣金。佣金需在雇佣此员工时就付清并且在之后的90天内如果此员工离职则可退款。兼职,远程办公员工,合同工以及实习生都可免除此费用。" # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese more: "更多" wiki: "维基" live_chat: "在线聊天" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" level_some_options: "有哪些选项?" level_tab_thangs: "物体" level_tab_scripts: "脚本" @@ -1015,79 +1031,79 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese example_blog: "你的博客" # example_personal_site: "Personal Site" links_header: "个人网站链接" -# links_blurb: "Link any other sites or profiles you want to highlight, like your GitHub, your LinkedIn, or your blog." -# links_name: "Link Name" -# links_name_help: "What are you linking to?" -# links_link_blurb: "Link URL" -# basics_header: "Update basic info" -# basics_active: "Open to Offers" -# basics_active_help: "Want interview offers right now?" -# basics_job_title: "Desired Job Title" -# basics_job_title_help: "What role are you looking for?" -# basics_city: "City" -# basics_city_help: "City you want to work in (or live in now)." -# basics_country: "Country" -# basics_country_help: "Country you want to work in (or live in now)." -# basics_visa: "US Work Status" -# basics_visa_help: "Are you authorized to work in the US, or do you need visa sponsorship? (If you live in Canada or Australia, mark authorized.)" -# basics_looking_for: "Looking For" -# basics_looking_for_full_time: "Full-time" -# basics_looking_for_part_time: "Part-time" -# basics_looking_for_remote: "Remote" -# basics_looking_for_contracting: "Contracting" -# basics_looking_for_internship: "Internship" -# basics_looking_for_help: "What kind of developer position do you want?" -# name_header: "Fill in your name" -# name_anonymous: "Anonymous Developer" -# name_help: "Name you want employers to see, like 'Nick Winter'." -# short_description_header: "Write a short description of yourself" -# short_description_blurb: "Add a tagline to help an employer quickly learn more about you." -# short_description: "Tagline" -# short_description_help: "Who are you, and what are you looking for? 140 characters max." -# skills_header: "Skills" -# skills_help: "Tag relevant developer skills in order of proficiency." -# long_description_header: "Describe your desired position" -# long_description_blurb: "Tell employers how awesome you are and what role you want." -# long_description: "Self Description" -# long_description_help: "Describe yourself to potential employers. Keep it short and to the point. We recommend outlining the position that would most interest you. Tasteful markdown okay; 600 characters max." + links_blurb: "链接任何你希望展示的网站或介绍,例如你的Github,你的领英档案,或是你的博客。" + links_name: "链接名称" + links_name_help: "你希望链接到什么?" + links_link_blurb: "链接的URL" + basics_header: "更新基本信息" + basics_active: "接受工作邀请" + basics_active_help: "希望现在就接到面试邀请?" + basics_job_title: "期望职位" + basics_job_title_help: "你希望在工作中扮演何种角色?" + basics_city: "城市" + basics_city_help: "你希望在哪座城市工作(或现在居住在哪座城市)。" + basics_country: "国家" + basics_country_help: "你希望在哪个国家工作(或现在居住在哪个国家)。" + basics_visa: "美国工作签证状态" + basics_visa_help: "你是否有权在美国合法地工作,或者你是否需要公司资助办理美国工作签证?" + basics_looking_for: "寻找" + basics_looking_for_full_time: "全职" + basics_looking_for_part_time: "兼职" + basics_looking_for_remote: "远程工作" + basics_looking_for_contracting: "合同制工作" + basics_looking_for_internship: "实习" + basics_looking_for_help: "你希望找到哪种开发者职位?" + name_header: "请填写你的姓名" + name_anonymous: "匿名开发者" + name_help: "你希望雇主看到的名字,例如‘Nick Winter'。" + short_description_header: "写一段简短的自我介绍" + short_description_blurb: "在此添加一段简介让雇主一眼就发现你是否是他们正在寻找的开发者." + short_description: "简短介绍" + short_description_help: "你是谁,你在寻求什么?请勿超过140个字符。" + skills_header: "技能" + skills_help: "按照熟练程度列出你所掌握的与开发有关的技能。" + long_description_header: "详细描述你所期望的职位" + long_description_blurb_1: "在此稍微详细地描述一下你接下来希望从事的角色。" + long_description_blurb_2: "描述一下你有多厉害以及为什么雇佣你会是一个好选择。" + long_description: "描述" + long_description_help: "向潜在的雇主描述你自己。尽量简明扼要。我们建议你列出你最感兴趣的职位。请勿超过600个字符。" work_experience: "工作经验" -# work_header: "Chronicle your work history" -# work_years: "Years of Experience" -# work_years_help: "How many years of professional experience (getting paid) developing software do you have?" -# work_blurb: "List your relevant work experience, most recent first." -# work_employer: "Employer" -# work_employer_help: "Name of your employer." -# work_role: "Job Title" -# work_role_help: "What was your job title or role?" -# work_duration: "Duration" -# work_duration_help: "When did you hold this gig?" -# work_description: "Description" -# work_description_help: "What did you do there? (140 chars; optional)" + work_header: "按时间顺序列出你的工作经历" + work_years: "工作年限" + work_years_help: "你有多少年职业的(有正常收入)软件开发经验?" + work_blurb: "列出相关的工作经验,从最近的开始。" + work_employer: "雇主" + work_employer_help: "你雇主的名字。" + work_role: "职称" + work_role_help: "你的职称是什么或者说你扮演何种角色?" + work_duration: "起止时间" + work_duration_help: "你在什么时间段在职?" + work_description: "描述" + work_description_help: "你在那里主要的工作是什么?(140个字符;选填)" education: "教育程度" -# education_header: "Recount your academic ordeals" -# education_blurb: "List your academic ordeals." -# education_school: "School" -# education_school_help: "Name of your school." -# education_degree: "Degree" -# education_degree_help: "What was your degree and field of study?" -# education_duration: "Dates" -# education_duration_help: "When?" -# education_description: "Description" -# education_description_help: "Highlight anything about this educational experience. (140 chars; optional)" -# our_notes: "CodeCombat's Notes" -# remarks: "Remarks" + education_header: "列出你的教育经历。" + education_blurb: "列出你在校学习的经历。" + education_school: "学校" + education_school_help: "你就读的学校的名字。" + education_degree: "学位" + education_degree_help: "你的学位以及你学习的方向是什么?" + education_duration: "时间" + education_duration_help: "什么时候?" + education_description: "描述" + education_description_help: "展示任何与你的教育经历相关的信息。(140个字符;选填)" + our_notes: "我们的评注" projects: "项目" -# projects_header: "Add 3 projects" -# projects_header_2: "Projects (Top 3)" -# projects_blurb: "Highlight your projects to amaze employers." -# project_name: "Project Name" -# project_name_help: "What was the project called?" -# project_description: "Description" -# project_description_help: "Briefly describe the project." -# project_picture: "Picture" -# project_picture_help: "Upload a 230x115px or larger image showing off the project." -# project_link: "Link" -# project_link_help: "Link to the project." + projects_header: "添加3个项目" + projects_header_2: "项目(前3个)" + projects_blurb: "展示你所参加的可以让雇主感到惊叹的项目。" + project_name: "项目名称" + project_name_help: "项目被称作什么?" + project_description: "描述" + project_description_help: "简短的介绍一下这个项目。" + project_picture: "图片" + project_picture_help: "上传一站230x115像素或更大的图片来展示这个项目。" + project_link: "链接" + project_link_help: "项目的链接。" # player_code: "Player Code" employers: diff --git a/app/locale/zh-HANT.coffee b/app/locale/zh-HANT.coffee index 0b8d6e723..f8ee1eaf4 100644 --- a/app/locale/zh-HANT.coffee +++ b/app/locale/zh-HANT.coffee @@ -4,11 +4,11 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese no_ie: "抱歉!Internet Explorer 8 等舊的瀏覽器打不開此網站" # Warning that only shows up in IE8 and older no_mobile: "CodeCombat 不是針對手機設備設計的,所以可能會出問題!" # Warning that shows up on mobile devices play: "開始遊戲" # The big play button that just starts playing a level -# try_it: "Try It" # Alternate wording for Play button -# old_browser: "Uh oh, your browser is too old to run CodeCombat. Sorry!" # Warning that shows up on really old Firefox/Chrome/Safari -# old_browser_suffix: "You can try anyway, but it probably won't work." -# ipad_browser: "Bad news: CodeCombat doesn't run on iPad in the browser. Good news: our native iPad app is awaiting Apple approval." -# campaign: "Campaign" + try_it: "試試看" # Alternate wording for Play button + old_browser: "嗯…您的瀏覽器太老了跑不動'程式之戰',抱歉!" # Warning that shows up on really old Firefox/Chrome/Safari + old_browser_suffix: "您還是可以試試看,但它應該不能運行。" + ipad_browser: "壞消息: 「程式之戰」不能在iPad上的瀏覽器運行。好消息:我們的iPad APP正在等待蘋果公司驗證。" + campaign: "戰役" # for_beginners: "For Beginners" # multiplayer: "Multiplayer" # Not currently shown on home page # for_developers: "For Developers" # Not currently shown on home page. @@ -16,14 +16,14 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese nav: play: "開始遊戲" # The top nav bar entry where players choose which levels to play -# community: "Community" + community: "社群" editor: "編輯" blog: "官方部落格" forum: "論壇" -# account: "Account" -# profile: "Profile" -# stats: "Stats" -# code: "Code" + account: "帳號" + profile: "帳號資料" + stats: "記錄" + code: "程式碼" admin: "系統管理員" # Only shows up when you are an admin home: "首頁" contribute: "貢獻" @@ -31,7 +31,7 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese about: "關於" contact: "聯繫我們" twitter_follow: "在Twitter關注" -# teachers: "Teachers" + teachers: "教師" modal: close: "關閉" @@ -69,14 +69,14 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese # change_hero: "Change Hero" # Go back from choose inventory to choose hero # choose_inventory: "Equip Items" # buy_gems: "Buy Gems" -# campaign_desert: "Desert Campaign" -# campaign_forest: "Forest Campaign" -# campaign_dungeon: "Dungeon Campaign" + campaign_desert: "沙漠戰役" + campaign_forest: "森林戰役" + campaign_dungeon: "地牢戰役" # subscription_required: "Subscription Required" # free: "Free" # subscribed: "Subscribed" -# older_campaigns: "Older Campaigns" -# anonymous: "Anonymous Player" + older_campaigns: "舊戰役" + anonymous: "匿名玩家" level_difficulty: "難度" campaign_beginner: "新手指南" # awaiting_levels_adventurer_prefix: "We release five levels per week." @@ -100,10 +100,10 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese login: sign_up: "註冊" log_in: "登入" -# logging_in: "Logging In" + logging_in: "登入中" log_out: "登出" -# forgot_password: "Forgot your password?" -# authenticate_gplus: "Authenticate G+" + forgot_password: "忘記密碼?" + authenticate_gplus: "以G+帳號登入" # load_profile: "Load G+ Profile" # load_email: "Load G+ Email" # finishing: "Finishing" @@ -116,7 +116,7 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese creating: "帳號建立中..." sign_up: "註冊" log_in: "登入" -# social_signup: "Or, you can sign up through Facebook or G+:" + social_signup: "您也可以使用G+或Facebook帳號註冊:" # required: "You need to log in before you can go that way." # login_switch: "Already have an account?" @@ -134,31 +134,42 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese # books: "Books" common: - loading: "Loading..." + loading: "載入中..." saving: "儲存中..." sending: "發送中...." -# send: "Send" + send: "送出" cancel: "取消" save: "存檔" -# publish: "Publish" -# create: "Create" + publish: "發佈" + create: "創造" manual: "手動發動" - fork: "Fork" + fork: "分支" play: "播放" # When used as an action verb, like "Play next level" -# retry: "Retry" + retry: "重試" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" general: # and: "and" name: "名字" -# date: "Date" + date: "日期" # body: "Body" -# version: "Version" + version: "版本" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" +# review: "Review" # version_history: "Version History" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" # result: "Result" # results: "Results" # description: "Description" @@ -201,41 +212,41 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese play_level: done: "完成" home: "首頁" # Not used any more, will be removed soon. -# level: "Level" # Like "Level: Dungeons of Kithgard" -# skip: "Skip" -# game_menu: "Game Menu" + level: "關卡" # Like "Level: Dungeons of Kithgard" + skip: "跳過" + game_menu: "遊戲選單" guide: "指南" restart: "重新開始" goals: "目標" -# goal: "Goal" + goal: "目標" # running: "Running..." -# success: "Success!" -# incomplete: "Incomplete" -# timed_out: "Ran out of time" -# failing: "Failing" + success: "成功!" + incomplete: "未完成" + timed_out: "時間用盡" + failing: "失敗" action_timeline: "行動時間軸" click_to_select: "點擊選擇一個單元。" -# control_bar_multiplayer: "Multiplayer" -# control_bar_join_game: "Join Game" -# reload: "Reload" + control_bar_multiplayer: "多人遊戲" + control_bar_join_game: "加入遊戲" + reload: "重新載入" reload_title: "重新載入程式碼?" reload_really: "確定重設所有的程式碼?" reload_confirm: "重設所有程式碼" -# victory: "Victory" + victory: "勝利" # victory_title_prefix: "" victory_title_suffix: " 完成" victory_sign_up: "保存進度" victory_sign_up_poke: "想保存你的程式碼?建立一個免費帳號吧!" victory_rate_the_level: "評估關卡: " # Only in old-style levels. # victory_return_to_ladder: "Return to Ladder" -# victory_play_continue: "Continue" -# victory_saving_progress: "Saving Progress" + victory_play_continue: "繼續" + victory_saving_progress: "儲存進度" victory_go_home: "返回首頁" # Only in old-style levels. victory_review: "給我們回饋!" # Only in old-style levels. victory_hour_of_code_done: "你完成了嗎?" victory_hour_of_code_done_yes: "是的,我完成了我的程式碼!" -# victory_experience_gained: "XP Gained" -# victory_gems_gained: "Gems Gained" + victory_experience_gained: "取得經驗值" + victory_gems_gained: "取得寶石" guide_title: "指南" tome_minion_spells: "助手的咒語" # Only in old-style levels. tome_read_only_spells: "唯讀的咒語" # Only in old-style levels. @@ -249,27 +260,27 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese # tome_see_all_methods: "See all methods you can edit" # Title text for method list selector (shown when there are multiple programmable methdos). tome_select_a_thang: "選擇一個人物來施放" tome_available_spells: "可用的法術" -# tome_your_skills: "Your Skills" -# tome_help: "Help" + tome_your_skills: "您的技能" + tome_help: "幫助" # tome_current_method: "Current Method" -# hud_continue_short: "Continue" + hud_continue_short: "繼續" # code_saved: "Code Saved" -# skip_tutorial: "Skip (esc)" -# keyboard_shortcuts: "Key Shortcuts" + skip_tutorial: "跳過 (esc)" + keyboard_shortcuts: "快捷鍵" # loading_ready: "Ready!" # loading_start: "Start Level" -# problem_alert_title: "Fix Your Code" + problem_alert_title: "修正您的程式碼" # time_current: "Now:" # time_total: "Max:" # time_goto: "Go to:" -# infinite_loop_try_again: "Try Again" -# infinite_loop_reset_level: "Reset Level" -# infinite_loop_comment_out: "Comment Out My Code" -# tip_toggle_play: "Toggle play/paused with Ctrl+P." -# tip_scrub_shortcut: "Ctrl+[ and Ctrl+] rewind and fast-forward." + infinite_loop_try_again: "再試一次" + infinite_loop_reset_level: "重置關卡" + infinite_loop_comment_out: "在我的程式碼中加入注解" + tip_toggle_play: "使用 Ctrl+P 切換 播放/暫停." + tip_scrub_shortcut: "Ctrl+[ 快退; Ctrl+] 快進." # tip_guide_exists: "Click the guide, inside game menu (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_open_source: "「程式之戰」100% 開源!" + tip_beta_launch: "「程式之戰」在2013年10月進入BETA測試。" # tip_think_solution: "Think of the solution, not the problem." # tip_theory_practice: "In theory, there is no difference between theory and practice. But in practice, there is. - Yogi Berra" # tip_error_free: "There are two ways to write error-free programs; only the third one works. - Alan Perlis" @@ -297,42 +308,43 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese # tip_extrapolation: "There are only two kinds of people: those that can extrapolate from incomplete data..." game_menu: -# inventory_tab: "Inventory" -# save_load_tab: "Save/Load" -# options_tab: "Options" + inventory_tab: "倉庫" + save_load_tab: "保存/載入" + options_tab: "選項" # guide_tab: "Guide" multiplayer_tab: "多人遊戲" -# auth_tab: "Sign Up" -# inventory_caption: "Equip your hero" -# choose_hero_caption: "Choose hero, language" + auth_tab: "註冊" + inventory_caption: "裝備您的英雄" + choose_hero_caption: "選擇英雄, 語言" # save_load_caption: "... and view history" -# options_caption: "Configure settings" -# guide_caption: "Docs and tips" -# multiplayer_caption: "Play with friends!" -# auth_caption: "Save your progress." + options_caption: "設置設定" + guide_caption: "文件與小撇步" + multiplayer_caption: "跟朋友一起玩!" + auth_caption: "儲存進度." -# inventory: -# choose_inventory: "Equip Items" -# equipped_item: "Equipped" -# available_item: "Available" + inventory: + choose_inventory: "裝備物品" + equipped_item: "已裝備" + available_item: "可使用" # restricted_title: "Restricted" # should_equip: "(double-click to equip)" -# equipped: "(equipped)" + equipped: "(已裝備)" # locked: "(locked)" # restricted: "(restricted in this level)" -# equip: "Equip" -# unequip: "Unequip" + equip: "裝備" + unequip: "脫下" -# buy_gems: -# few_gems: "A few gems" -# pile_gems: "Pile of gems" -# chest_gems: "Chest of gems" -# purchasing: "Purchasing..." + buy_gems: + few_gems: "一些寶石" + pile_gems: "一堆寶石" + chest_gems: "一箱寶石" + purchasing: "購買中..." # declined: "Your card was declined" -# retrying: "Server error, retrying." -# prompt_title: "Not Enough Gems" -# prompt_body: "Do you want to get more?" -# prompt_button: "Enter Shop" + retrying: "伺服器錯誤, 正在重試." + prompt_title: "寶石不足" + prompt_body: "想要取得更多?" + prompt_button: "進入商店" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese forum_prefix: "如果有任何問題, 請至" forum_page: "論壇" forum_suffix: "討論。" +# where_reply: "Where should we reply?" send: "意見反饋" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -478,10 +491,10 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese autosave: "自動保存修改" me_tab: "我" picture_tab: "頭像" -# upload_picture: "Upload a picture" + upload_picture: "上傳圖片" password_tab: "密碼" emails_tab: "郵件" -# admin: "Admin" + admin: "管理員" new_password: "新密碼" new_password_verify: "確認密碼" email_subscriptions: "訂閱" @@ -580,6 +593,9 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." @@ -810,18 +826,18 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese account: recently_played: "最近玩過" no_recent_games: "在過去兩個星期沒有遊戲玩過。" -# payments: "Payments" -# purchased: "Purchased" -# subscription: "Subscription" + payments: "付款" + purchased: "已購買" + subscription: "訂閱" # service_apple: "Apple" # service_web: "Web" # paid_on: "Paid On" # service: "Service" -# price: "Price" -# gems: "Gems" + price: "價格" + gems: "寶石" # active: "Active" -# subscribed: "Subscribed" -# unsubscribed: "Unsubscribed" + subscribed: "已訂閱" + unsubscribed: "取消訂閱" # active_until: "Active Until" # cost: "Cost" # next_payment: "Next Payment" @@ -902,8 +918,8 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese multiplayer: multiplayer_title: "多人遊戲設定" # We'll be changing this around significantly soon. Until then, it's not important to translate. -# multiplayer_toggle: "Enable multiplayer" -# multiplayer_toggle_description: "Allow others to join your game." + multiplayer_toggle: "開啟多人模式" + multiplayer_toggle_description: "允許他人加入遊戲。" multiplayer_link_description: "把這個連結告訴同伴們,一起玩吧。" multiplayer_hint_label: "提示:" multiplayer_hint: " 點擊全選,然後按 ⌘-C 或 Ctrl-C 複製連結。" @@ -986,7 +1002,7 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese # oreilly: "ebook of your choice" account_profile: -# settings: "Settings" # We are not actively recruiting right now, so there's no need to add new translations for this section. + settings: "設定" # We are not actively recruiting right now, so there's no need to add new translations for this section. # edit_profile: "Edit Profile" # done_editing: "Done Editing" profile_for_prefix: "關於" diff --git a/app/locale/zh-WUU-HANS.coffee b/app/locale/zh-WUU-HANS.coffee index 660cd97ef..d300d75e6 100644 --- a/app/locale/zh-WUU-HANS.coffee +++ b/app/locale/zh-WUU-HANS.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi # fork: "Fork" # play: "Play" # When used as an action verb, like "Play next level" # retry: "Retry" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" # general: # and: "and" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi # date: "Date" # body: "Body" # version: "Version" +# submitter: "Submitter" +# submitted: "Submitted" # commit_msg: "Commit Message" +# review: "Review" # version_history: "Version History" # version_history_for: "Version History for: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" # result: "Result" # results: "Results" # description: "Description" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi # forum_prefix: "For anything public, please try " # forum_page: "our forum" # forum_suffix: " instead." +# where_reply: "Where should we reply?" # send: "Send Feedback" # contact_candidate: "Contact Candidate" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi # more: "More" # wiki: "Wiki" # live_chat: "Live Chat" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" # level_some_options: "Some Options?" # level_tab_thangs: "Thangs" # level_tab_scripts: "Scripts" @@ -640,7 +656,7 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi # introduction_desc_github_url: "CodeCombat is totally open source" # introduction_desc_suf: ", and we aim to provide as many ways as possible for you to take part and make this project as much yours as ours." # introduction_desc_ending: "We hope you'll join our party!" -# introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt" +# introduction_desc_signature: "- Nick, George, Scott, Michael, and Matt" # alert_account_message_intro: "Hey there!" # alert_account_message: "To subscribe for class emails, you'll need to be logged in first." # archmage_summary: "Interested in working on game graphics, user interface design, database and server organization, multiplayer networking, physics, sound, or game engine performance? Want to help build a game to help other people learn what you are good at? We have a lot to do and if you are an experienced programmer and want to develop for CodeCombat, this class is for you. We would love your help building the best programming game ever." diff --git a/app/locale/zh-WUU-HANT.coffee b/app/locale/zh-WUU-HANT.coffee index 15262da71..12a02b3b3 100644 --- a/app/locale/zh-WUU-HANT.coffee +++ b/app/locale/zh-WUU-HANT.coffee @@ -146,9 +146,13 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio fork: "派生" play: "開來" # When used as an action verb, like "Play next level" retry: "轉試" +# actions: "Actions" +# info: "Info" +# help: "Help" # watch: "Watch" # unwatch: "Unwatch" # submit_patch: "Submit Patch" +# submit_changes: "Submit Changes" general: and: "搭" @@ -156,9 +160,16 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio # date: "Date" body: "正文" version: "版本" +# submitter: "Submitter" +# submitted: "Submitted" commit_msg: "提交訊息" +# review: "Review" version_history: "版本歷史" version_history_for: "版本歷史: " +# select_changes: "Select two changes below to see the difference." +# undo: "Undo (Ctrl+Z)" +# redo: "Redo (Ctrl+Shift+Z)" +# play_preview: "Play preview of current level" result: "結果" results: "結果" description: "描述" @@ -333,6 +344,7 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio # prompt_title: "Not Enough Gems" # prompt_body: "Do you want to get more?" # prompt_button: "Enter Shop" +# recovered: "Previous gems purchase recovered. Please refresh the page." # subscribe: # subscribe_title: "Subscribe" @@ -468,6 +480,7 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio forum_prefix: "假使爾想發佈弗管何物開放個物事, 好試試相" forum_page: "我裏個論壇" forum_suffix: "" +# where_reply: "Where should we reply?" send: "提出意見" contact_candidate: "搭參選人聯繫" # Deprecated # recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated @@ -580,6 +593,9 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio more: "無數" wiki: "維基" live_chat: "上線白嗒" +# thang_main: "Main" +# thang_spritesheets: "Spritesheets" +# thang_colors: "Colors" level_some_options: "有解某條目?" level_tab_thangs: "物事" level_tab_scripts: "腳本" diff --git a/app/models/AnalyticsLogEvent.coffee b/app/models/AnalyticsLogEvent.coffee new file mode 100644 index 000000000..7b631ef3d --- /dev/null +++ b/app/models/AnalyticsLogEvent.coffee @@ -0,0 +1,6 @@ +CocoModel = require './CocoModel' + +module.exports = class AnalyticsLogEvent extends CocoModel + @className: 'AnalyticsLogEvent' + @schema: require 'schemas/models/analytics_log_event' + urlRoot: '/db/analytics.log.event' diff --git a/app/models/User.coffee b/app/models/User.coffee index 2907d203a..2f0779d9c 100644 --- a/app/models/User.coffee +++ b/app/models/User.coffee @@ -115,17 +115,6 @@ module.exports = class User extends CocoModel application.tracker.identify announcesActionAudioGroup: @announcesActionAudioGroup unless me.isAdmin() @announcesActionAudioGroup - getFastVictoryModalGroup: -> - # A/B Testing no delay showing the signup and continue buttons in hero victory modal - return @fastVictoryModalGroup if @fastVictoryModalGroup - group = me.get('testGroupNumber') % 2 - @fastVictoryModalGroup = switch group - when 0 then 'normal' - when 1 then 'fast' - @fastVictoryModalGroup = 'fast' if me.isAdmin() - application.tracker.identify fastVictoryModalGroup: @fastVictoryModalGroup unless me.isAdmin() - @fastVictoryModalGroup - getGemPromptGroup: -> # A/B Testing whether extra prompt when low gems leads to more gem purchases # TODO: Rename gem purchase event in BuyGemsModal to 'Started gem purchase' after this test is over @@ -150,18 +139,13 @@ module.exports = class User extends CocoModel else @subscribeCopyGroup = 'original' @subscribeCopyGroup - - getSubscribePriceGroup: -> - # Testing alternate displayed subscription price of 1499 - # NOTE: This grouping logic lives in server/payments/subscription_handler.coffee too. - return @subscribePriceGroup if @subscribePriceGroup - testStartTime = new Date("2014-12-11T01:00:00.000Z") # 12/10/14 5pm PST time - if new Date(me.get('dateCreated')) >= testStartTime - @subscribePriceGroup = '1499' - application.tracker.identify subscribePriceGroup: @subscribePriceGroup - else - @subscribePriceGroup = 'control' - @subscribePriceGroup + + getVideoTutorialStylesIndex: (numVideos=0)-> + # A/B Testing video tutorial styles + # Not a constant number of videos available (e.g. could be 0, 1, 3, or 4 currently) + # TODO: Do we need to call identify() still? trackEvent will have a style property. + return 0 unless numVideos > 0 + return me.get('testGroupNumber') % numVideos isPremium: -> return false unless stripe = @get('stripe') diff --git a/app/schemas/models/analytics_log_event.coffee b/app/schemas/models/analytics_log_event.coffee new file mode 100644 index 000000000..60705cd50 --- /dev/null +++ b/app/schemas/models/analytics_log_event.coffee @@ -0,0 +1,16 @@ +c = require './../schemas' + +AnalyticsLogEventSchema = c.object { + title: 'Analytics Log Event' + description: 'Analytics event logs.' +} + +_.extend AnalyticsLogEventSchema.properties, + created: c.date({title: 'Created', readOnly: true}) + user: c.objectId(links: [{rel: 'extra', href: '/db/user/{($)}'}]) + event: {type: 'string'} + properties: {type: 'object'} + +c.extendBasicProperties AnalyticsLogEventSchema, 'analytics.log.event' + +module.exports = AnalyticsLogEventSchema diff --git a/app/styles/contribute.sass b/app/styles/contribute.sass new file mode 100644 index 000000000..717129d94 --- /dev/null +++ b/app/styles/contribute.sass @@ -0,0 +1,25 @@ +#contribute-view + .class_tile + position: relative + width: 330px + padding: 5px + float: left + + &:hover img + outline: 3px solid #161a9e + + .class_text + position: absolute + bottom: 5px + width: 300px + padding: 12px + z-index: 1 + background-color: rgba(255,255,255,.5) + + p + color: black + + h3 + color: black + padding-top: 0px + margin-top: 0px \ No newline at end of file diff --git a/app/styles/contribute_classes.sass b/app/styles/contribute_classes.sass index e4b8ff7fb..88fd6aa9a 100644 --- a/app/styles/contribute_classes.sass +++ b/app/styles/contribute_classes.sass @@ -2,6 +2,13 @@ #homepage_screenshot margin: 20px 0px + + .class_detail + float: left + + img + width: 360px + .signature text-align: right @@ -13,21 +20,9 @@ width: 150px margin: 10px 10px 20px 20px - #contribute-nav - float: left - max-width: 20% - width: 250px - box-sizing: border-box - margin-left: 20px - padding-top: 40px - - li - float: none - width: 100% - .class-main - margin-left: 25% - padding: 40px + margin-left: 33% + padding: 0px 40px 40px 40px box-sizing: border-box .header-scrolling-fix diff --git a/app/styles/play/modal/subscribe-modal.sass b/app/styles/modal/subscribe-modal.sass similarity index 100% rename from app/styles/play/modal/subscribe-modal.sass rename to app/styles/modal/subscribe-modal.sass diff --git a/app/styles/play/level.sass b/app/styles/play/level.sass index f0a44d523..5d1e315fb 100644 --- a/app/styles/play/level.sass +++ b/app/styles/play/level.sass @@ -206,16 +206,8 @@ $level-resize-transition-time: 0.5s @include opacity(1) @media screen and (min-aspect-ratio: 17/10) - display: none - - .hour-of-code-explanation - margin-top: 5px - color: white - font-size: 12px - - a - color: white - text-decoration: underline + &:not(.premium) + display: none #fullscreen-editor-background-screen background-color: black diff --git a/app/styles/play/level/tome/problem_alert.sass b/app/styles/play/level/tome/problem_alert.sass index 5c2f2027c..d58a12dd1 100644 --- a/app/styles/play/level/tome/problem_alert.sass +++ b/app/styles/play/level/tome/problem_alert.sass @@ -63,6 +63,9 @@ &.alert-info border-image-source: url(/images/level/code_editor_info_background.png) + + #problem-alert-help-button + float: right html.no-borderimage .problem-alert diff --git a/app/styles/play/level/tome/spell_palette.sass b/app/styles/play/level/tome/spell_palette.sass index 64755f641..c9f54760f 100644 --- a/app/styles/play/level/tome/spell_palette.sass +++ b/app/styles/play/level/tome/spell_palette.sass @@ -61,6 +61,9 @@ display: inline-block margin-right: 3px vertical-align: top + + #spell-palette-help-button + margin: 16px 0px 4px &.hero .properties @include flexbox() diff --git a/app/styles/play/spectate.sass b/app/styles/play/spectate.sass index d102a7197..ce7458c80 100644 --- a/app/styles/play/spectate.sass +++ b/app/styles/play/spectate.sass @@ -104,13 +104,6 @@ &.btn-#{nth($tuple, 1)} @include banner-button(nth($tuple, 2), #FFF) - .footer .footer-link-text a - @include opacity(0.75) - @include transition(opacity .10s linear) - - &:hover, &:active - @include opacity(1) - $GI: 0.5 // gradient intensity; can tweak this 0-1 .gradient @@ -152,22 +145,3 @@ top: 0 height: 100% width: 2% - - .footer - @media screen and (min-aspect-ratio: 17/10) - display: none - - &:not(:hover) - @include opacity(0.6) - - .hour-of-code-explanation - margin-top: 5px - color: white - font-size: 12px - - &:not(:hover) - @include opacity(0.75) - - a - color: white - text-decoration: underline diff --git a/app/styles/play/world-map-view.sass b/app/styles/play/world-map-view.sass index 4b4022784..4c3fa96a3 100644 --- a/app/styles/play/world-map-view.sass +++ b/app/styles/play/world-map-view.sass @@ -308,8 +308,8 @@ $gameControlMargin: 30px transform: scaleY(-1.5) scaleX(1.5) forest-back-link - left: 4% - top: 74.5% + left: 2% + top: 70.5% transform: rotate(216deg) forest-link diff --git a/app/templates/account/subscription-view.jade b/app/templates/account/subscription-view.jade index 1ceedb788..48f5873b8 100644 --- a/app/templates/account/subscription-view.jade +++ b/app/templates/account/subscription-view.jade @@ -20,7 +20,7 @@ block content .panel-body table.table.table-striped tr - th Status + th(data-i18n="user.status") Status td if subscribed strong(data-i18n="account.subscribed") diff --git a/app/templates/contribute/adventurer.jade b/app/templates/contribute/adventurer.jade index 3b9367620..8be546672 100644 --- a/app/templates/contribute/adventurer.jade +++ b/app/templates/contribute/adventurer.jade @@ -4,12 +4,11 @@ block content div.contribute_class - include /templates/contribute/contribute_nav + .class_detail + + img(src="/images/pages/contribute/class_detail_adventurer.png", alt="") div.class-main#adventurer-main - - .class_image - img.img-responsive(src="/images/pages/contribute/adventurer.png", alt="") h2 span(data-i18n="classes.adventurer_title") Adventurer diff --git a/app/templates/contribute/ambassador.jade b/app/templates/contribute/ambassador.jade index 735355fa6..346100849 100644 --- a/app/templates/contribute/ambassador.jade +++ b/app/templates/contribute/ambassador.jade @@ -4,12 +4,11 @@ block content div.contribute_class - include /templates/contribute/contribute_nav + .class_detail + + img(src="/images/pages/contribute/class_detail_ambassador.png", alt="") div.class-main#ambassador-main - - .class_image - img.img-responsive(src="/images/pages/contribute/ambassador.png", alt="") h2 span(data-i18n="classes.ambassador_title") Ambassador diff --git a/app/templates/contribute/archmage.jade b/app/templates/contribute/archmage.jade index 2518d93fc..ad5728d63 100644 --- a/app/templates/contribute/archmage.jade +++ b/app/templates/contribute/archmage.jade @@ -4,13 +4,12 @@ block content div.contribute_class - include /templates/contribute/contribute_nav + .class_detail + + img(src="/images/pages/contribute/class_detail_archmage.png", alt="") div.class-main#archmage-main - .class_image - img.img-responsive(src="/images/pages/contribute/archmage.png", alt="") - h2 span(data-i18n="classes.archmage_title") Archmage span diff --git a/app/templates/contribute/artisan.jade b/app/templates/contribute/artisan.jade index 54a27327b..47a9438be 100644 --- a/app/templates/contribute/artisan.jade +++ b/app/templates/contribute/artisan.jade @@ -4,12 +4,11 @@ block content div.contribute_class - include /templates/contribute/contribute_nav + .class_detail + + img(src="/images/pages/contribute/class_detail_artisan.png", alt="") div.class-main#artisan-main - - .class_image - img.img-responsive(src="/images/pages/contribute/artisan.png", alt="") h2 span(data-i18n="classes.artisan_title") Artisan diff --git a/app/templates/contribute/contribute.jade b/app/templates/contribute/contribute.jade index 5fdb19698..5a27681f8 100644 --- a/app/templates/contribute/contribute.jade +++ b/app/templates/contribute/contribute.jade @@ -2,181 +2,77 @@ extends /templates/base block content - div.contribute_class + h2 Contributing + p CodeCombat is 100% open source and hundreds of dedicated players have helped us build the games + | into what it is today. Join us and write the next chapter in CodeCombat's quest to teach the + | world to code! - include /templates/contribute/contribute_nav + a(href="/contribute/archmage") + div.class_tile + img(src="/images/pages/contribute/tile_archmage.png", alt="") - div#contribute-main.class-main - div#intro + div.class_text + h3 Archmage - h2(data-i18n="contribute.page_title") Contributing + p(data-i18n="contribute.short_archmage") + | If you are a developer interested in coding educational games, become an archmage + | to help us build CodeCombat! - #homepage_screenshot - img.img-responsive(src="/images/pages/contribute/contribute_header.png", alt="") + a(href="/contribute/artisan") + div.class_tile + img.tile-img(src="/images/pages/contribute/tile_artisan.png", alt="") - p - strong(data-i18n="contribute.introduction_desc_intro") - | We have high hopes for CodeCombat. - | - span(data-i18n="contribute.introduction_desc_pref") - | We want to be where programmers of all stripes come to learn and play together, - | introduce others to the wonderful world of coding, - | and reflect the best parts of the community. - | We can't and don't want to do that alone; - | what makes projects like GitHub, Stack Overflow and Linux great are the people who - | use them and build on them. - | To that end, - a(href="https://github.com/codecombat/codecombat", data-i18n="contribute.introduction_desc_github_url") - | CodeCombat is totally open source - span(data-i18n="contribute.introduction_desc_suf") - | , and we aim to provide as many ways as possible for you to take part and - | make this project as much yours as ours. - p(data-i18n="contribute.introduction_desc_ending") - | We hope you'll join our party! - p(data-i18n="contribute.introduction_desc_signature").signature - | - Nick, George, Scott, Michael, Jeremy and Glen - hr + div.class_text + h3 Artisan - .contributor-signup-anonymous + p(data-i18n="contribute.short_artisan") + | Build and share levels for you and your friends to play. Become an Artisan to learn + | the art of teaching others to program. - #archmage.header-scrolling-fix - .class_image - img.img-responsive(src="/images/pages/contribute/archmage.png", alt="") + a(href="/contribute/adventurer") + div.class_tile + img.tile-img(src="/images/pages/contribute/tile_adventurer.png", alt="") - h3.header-scrolling-fix - span(data-i18n="classes.archmage_title") Archmage - span - span(data-i18n="classes.archmage_title_description") (Coder) - p(data-i18n="contribute.archmage_summary") - | Interested in working on game graphics, user interface design, database and server organization, - | multiplayer networking, physics, sound, or game engine performance? Want to help build a game to - | help other people learn what you are good at? We have a lot to do and if you are an experienced - | programmer and want to develop for CodeCombat, this class is for you. We would love your help - | building the best programming game ever. + div.class_text + h3 Adventurer - a(href="/contribute/archmage") - p.lead(data-i18n="contribute.more_about_archmage") - | Learn More About Becoming an Archmage + p(data-i18n="contribute.short_adventurer") + | Get our new levels (even our subscriber content) for free one week early and help us + | work out bugs before our public release. - .contributor-signup(data-contributor-class-id="developer", data-contributor-class-name="archmage") + a(href="/contribute/scribe") + div.class_tile + img.tile-img(src="/images/pages/contribute/tile_scribe.png", alt="") - #artisan.header-scrolling-fix + div.class_text + h3 Scribe - .class_image - img.img-responsive(src="/images/pages/contribute/artisan.png", alt="") + p(data-i18n="contribute.short_scribe") + | Good code needs good documentation. Write, + | edit, and improve the docs read by millions of players across the globe. - h3.header-scrolling-fix - span(data-i18n="classes.artisan_title") Artisan - span - span(data-i18n="classes.artisan_title_description") (Level Builder) - p - span(data-i18n="contribute.artisan_summary_pref") - | Want to design levels and expand CodeCombat's arsenal? People are playing through our - | content at a pace faster than we can build! Right now, our level editor is barebone, - | so be wary. Making levels will be a little challenging and buggy. If you have visions - | of campaigns spanning for-loops to - span - a(href="http://stackoverflow.com/questions/758088/seeking-contrived-example-code-continuations/758105#758105") - | Mondo Bizzaro - span(data-i18n="contribute.artisan_summary_suf") - | , then this class is for you. - a(href="/contribute/artisan") - p.lead(data-i18n="contribute.more_about_artisan") - | Learn More About Becoming An Artisan + a(href="/contribute/diplomat") - .contributor-signup(data-contributor-class-id="level_creator", data-contributor-class-name="artisan") + div.class_tile + img.tile-img(src="/images/pages/contribute/tile_diplomat.png", alt="") - #adventurer.header-scrolling-fix + div.class_text + h3 Diplomat - .class_image - img.img-responsive(src="/images/pages/contribute/adventurer.png", alt="") + p(data-i18n="contribute.short_diplomat") + | CodeCombat is localized in 39 languages by our Diplomats. Help them + | out and contribute translations. - h3.header-scrolling-fix - span(data-i18n="classes.adventurer_title") Adventurer - span - span(data-i18n="classes.adventurer_title_description") (Level Playtester) - p(data-i18n="contribute.adventurer_summary") - | Let us be clear about your role: you are the tank. You are going to take heavy damage. - | We need people to try out brand-new levels and help identify how to make things better. - | The pain will be enormous; making good games is a long process and no one gets - | it right the first time. - | If you can endure and have a high constitution score, then this class is for you. - - a(href="/contribute/adventurer") - p.lead(data-i18n="contribute.more_about_adventurer") - | Learn More About Becoming an Adventurer + a(href="/contribute/ambassador") + div.class_tile + img.tile-img(src="/images/pages/contribute/tile_ambassador.png", alt="") - .contributor-signup(data-contributor-class-id="tester", data-contributor-class-name="adventurer") - - #scribe.header-scrolling-fix + div.class_text + h3 Ambassador - .class_image - img.img-responsive(src="/images/pages/contribute/scribe.png", alt="") + p(data-i18n="contribute.short_ambassador") + | Tame our forum users and provide direction for those with questions. Our ambassadors + | represent CodeCombat to the world. - h3.header-scrolling-fix - span(data-i18n="classes.scribe_title") Scribe - span - span(data-i18n="classes.scribe_title_description") (Article Editor) - p - span(data-i18n="contribute.scribe_summary_pref") - | CodeCombat is not just going to be a bunch of levels. It will also be a resource of - | programming knowledge that players can hook into. That way, each Artisan can link - | to a detailed article that for the player's edification: - | documentation akin to what the - a(href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide", data-i18n="contribute.scribe_introduction_url_mozilla") - | Mozilla Developer Network - span(data-i18n="contribute.scribe_summary_suf") - | has built. If you enjoy explaining programming concepts, then this class is for you. - - a(href="/contribute/scribe") - p.lead(data-i18n="contribute.more_about_scribe") - | Learn More About Becoming a Scribe - - .contributor-signup(data-contributor-class-id="article_editor", data-contributor-class-name="scribe") - - #diplomat.header-scrolling-fix - - .class_image - img.img-responsive(src="/images/pages/contribute/diplomat.png", alt="") - - h3.header-scrolling-fix - span(data-i18n="classes.diplomat_title") Diplomat - span - span(data-i18n="classes.diplomat_title_description") (Translator) - p - span(data-i18n="contribute.diplomat_summary") - | There is a large interest in CodeCombat in other countries that do not speak English! - | We are looking for translators who are willing to spend their time translating the - | site's corpus of words so that CodeCombat is accessible across the world as soon as - | possible. If you'd like to help getting CodeCombat international, then this class is - | for you. - - a(href="/contribute/diplomat") - p.lead(data-i18n="contribute.more_about_diplomat") - | Learn More About Becoming a Diplomat - - .contributor-signup(data-contributor-class-id="translator", data-contributor-class-name="diplomat") - - #ambassador.header-scrolling-fix - - .class_image - img.img-responsive(src="/images/pages/contribute/ambassador.png", alt="") - - h3.header-scrolling-fix - span(data-i18n="classes.ambassador_title") Ambassador - span - span(data-i18n="classes.ambassador_title_description") (Support) - p(data-i18n="contribute.ambassador_summary") - | We are trying to build a community, and every community needs a support team when - | there are troubles. We have got chats, emails, and social networks so that our users - | can get acquainted with the game. If you want to help people get involved, have fun, - | and learn some programming, then this c lass is for you. - - a(href="/contribute/ambassador") - p.lead(data-i18n="contribute.more_about_ambassador") - | Learn More About Becoming an Ambassador - - .contributor-signup(data-contributor-class-id="support", data-contributor-class-name="ambassador") - - div.clearfix \ No newline at end of file + div.clearfix \ No newline at end of file diff --git a/app/templates/contribute/diplomat.jade b/app/templates/contribute/diplomat.jade index be8183a5e..5704509ad 100644 --- a/app/templates/contribute/diplomat.jade +++ b/app/templates/contribute/diplomat.jade @@ -4,12 +4,11 @@ block content div.contribute_class - include /templates/contribute/contribute_nav + .class_detail + + img(src="/images/pages/contribute/class_detail_diplomat.png", alt="") div.class-main#diplomat-main - - .class_image - img.img-responsive(src="/images/pages/contribute/diplomat.png", alt="") h2 span(data-i18n="classes.diplomat_title") Diplomat diff --git a/app/templates/contribute/scribe.jade b/app/templates/contribute/scribe.jade index 6e752c421..f6f73a779 100644 --- a/app/templates/contribute/scribe.jade +++ b/app/templates/contribute/scribe.jade @@ -4,13 +4,12 @@ block content div.contribute_class - include /templates/contribute/contribute_nav + .class_detail + + img(src="/images/pages/contribute/class_detail_scribe.png", alt="") div.class-main#scribe-main - .class_image - img.img-responsive(src="/images/pages/contribute/scribe.png", alt="") - h2 span(data-i18n="classes.scribe_title") Scribe span diff --git a/app/templates/core/contact.jade b/app/templates/core/contact.jade index 53192fb01..517a4b41b 100644 --- a/app/templates/core/contact.jade +++ b/app/templates/core/contact.jade @@ -6,17 +6,20 @@ block modal-header-content block modal-body-content p span(data-i18n="contact.welcome") Good to hear from you! Use this form to send us email. - span(data-i18n="contact.contribute_prefix") If you're interested in contributing, check out our - a(href="/contribute", data-dismiss="modal", data-i18n="contact.contribute_page") contribute page - span(data-i18n="contact.contribute_suffix") ! - p - span(data-i18n="contact.forum_prefix") For anything public, please try + span.spl(data-i18n="contact.forum_prefix") For anything public, please try a(href="http://discourse.codecombat.com/", data-i18n="contact.forum_page") our forum span(data-i18n="contact.forum_suffix") instead. + if me.isPremium() + p(data-i18n="contact.subscriber_support") Since you're a CodeCombat subscriber, your email will get our priority support. + else + p + span(data-i18n="contact.subscribe_prefix") If you need help figuring out a level, please + a.spl.spr(data-toggle="coco-modal", data-target="core/SubscribeModal", data-i18n="contact.subscribe") buy a CodeCombat subscription + span(data-i18n="contact.subscribe_suffix") and we'll be happy to help you with your code. .form .form-group label.control-label(for="contact-email", data-i18n="general.email") Email - input#contact-email.form-control(name="email", type="email", value="#{me.get('anonymous') ? '' : me.get('email')}", placeholder="Where should we reply?") + input#contact-email.form-control(name="email", type="email", value="#{me.get('anonymous') ? '' : me.get('email')}", data-i18n="[placeholder]contact.where_reply", placeholder="Where should we reply?") .form-group label.control-label(for="contact-message", data-i18n="general.message") Message textarea#contact-message.form-control(name="message", rows=8) diff --git a/app/templates/play/modal/subscribe-modal.jade b/app/templates/core/subscribe-modal.jade similarity index 100% rename from app/templates/play/modal/subscribe-modal.jade rename to app/templates/core/subscribe-modal.jade diff --git a/app/templates/editor/article/edit.jade b/app/templates/editor/article/edit.jade index 48f610ce2..63c0d85d3 100644 --- a/app/templates/editor/article/edit.jade +++ b/app/templates/editor/article/edit.jade @@ -23,7 +23,7 @@ block content #article-view - h3 Patches + h3(data-i18n="resources.patches") Patches .patches-view hr diff --git a/app/templates/editor/level/edit.jade b/app/templates/editor/level/edit.jade index 8a2a65458..8716b0c62 100644 --- a/app/templates/editor/level/edit.jade +++ b/app/templates/editor/level/edit.jade @@ -44,10 +44,10 @@ block header span.navbar-brand #{level.attributes.name} ul.nav.navbar-nav.navbar-right - li#undo-button(title="Undo (Ctrl+Z)") + li#undo-button(data-i18n="[title]general.undo", title="Undo (Ctrl+Z)") a span.glyphicon-arrow-left.glyphicon - li#redo-button(title="Redo (Ctrl+Shift+Z)") + li#redo-button(data-i18n="[title]general.redo", title="Redo (Ctrl+Shift+Z)") a span.glyphicon-arrow-right.glyphicon if authorized @@ -72,14 +72,14 @@ block header a.play-with-team-button(data-team=match.yourTeam, data-opponent=match.opponentSessionID)= match.yourTeam + ' vs. ' + match.opponentName else - li(title="⌃↩ or ⌘↩: Play preview of current level")#play-button + li(data-i18n="[title]general.play_preview", title="Play preview of current level")#play-button a span.glyphicon-play.glyphicon li.dropdown a(data-toggle='dropdown') span.glyphicon-chevron-down.glyphicon ul.dropdown-menu - li.dropdown-header Actions + li.dropdown-header(data-i18n="common.actions") Actions li a#level-watch-button span.watch @@ -98,11 +98,11 @@ block header li(class=anonymous ? "disabled": "") a(data-i18n="editor.pop_i18n")#pop-level-i18n-button Populate i18n li.divider - li.dropdown-header Info + li.dropdown-header(data-i18n="common.info") Info li#level-history-button a(href='#', data-i18n="general.version_history") Version History li.divider - li.dropdown-header Help + li.dropdown-header(data-i18n="common.help") Help li a(href='https://github.com/codecombat/codecombat/wiki/Artisan-Home', data-i18n="editor.wiki", target="_blank") Wiki li diff --git a/app/templates/editor/modal/versions-modal.jade b/app/templates/editor/modal/versions-modal.jade index 7c9f7cc5c..bf38149e6 100755 --- a/app/templates/editor/modal/versions-modal.jade +++ b/app/templates/editor/modal/versions-modal.jade @@ -5,7 +5,7 @@ block modal-header-content h3 span(data-i18n="general.version_history_for") Version History for: |"#{dataList[0].name}" - p + p(data-i18n="general.select_changes") |Select two changes below to see the difference. div.delta-container @@ -30,4 +30,4 @@ block modal-body-content td= data.creator td #{data.commitMessage} -block modal-footer-content \ No newline at end of file +block modal-footer-content diff --git a/app/templates/editor/patches.jade b/app/templates/editor/patches.jade index 872788e7d..d5e63bb00 100644 --- a/app/templates/editor/patches.jade +++ b/app/templates/editor/patches.jade @@ -13,14 +13,14 @@ | Withdrawn if patches.loading - p Loading + p(data-i18n="common.loading") Loading... else table.table.table-condensed.table-bordered tr - th Submitter - th Submitted - th Commit Message - th Review + th(data-i18n="general.submitter") Submitter + th(data-i18n="general.submitted") Submitted + th(data-i18n="general.commit_msg") Commit Message + th(data-i18n="general.review") Review for patch in patches tr td= patch.userName diff --git a/app/templates/editor/thang/thang-type-edit-view.jade b/app/templates/editor/thang/thang-type-edit-view.jade index 013410d3d..f9c5b1231 100644 --- a/app/templates/editor/thang/thang-type-edit-view.jade +++ b/app/templates/editor/thang/thang-type-edit-view.jade @@ -15,13 +15,13 @@ block header span.glyphicon-home.glyphicon ul.nav.navbar-nav.nav-tabs li.active - a(href="#editor-thang-main-tab-view", data-toggle="tab") Main + a(href="#editor-thang-main-tab-view", data-toggle="tab", data-i18n="editor.thang_main") Main li - a(href="#editor-thang-components-tab-view", data-toggle="tab") Components + a(href="#editor-thang-components-tab-view", data-toggle="tab", data-i18n="editor.level_tab_components") Components li - a(href="#editor-thang-spritesheets-view", data-toggle="tab") Spritesheets + a(href="#editor-thang-spritesheets-view", data-toggle="tab", data-i18n="editor.thang_spritesheets") Spritesheets li - a(href="#editor-thang-colors-tab-view", data-toggle="tab")#color-tab Colors + a(href="#editor-thang-colors-tab-view", data-toggle="tab", data-i18n="editor.thang_colors")#color-tab Colors li a(href="#editor-thang-patches-view", data-toggle="tab")#patches-tab span(data-i18n="resources.patches").spr Patches @@ -51,7 +51,7 @@ block header a(data-toggle='dropdown') span.glyphicon-chevron-down.glyphicon ul.dropdown-menu - li.dropdown-header Actions + li.dropdown-header(data-i18n="common.actions") Actions li(class=anonymous ? "disabled": "") a(data-i18n="common.fork")#fork-start-button Fork li(class=anonymous ? "disabled": "") @@ -59,11 +59,11 @@ block header li(class=anonymous ? "disabled": "") a(data-i18n="editor.pop_i18n")#pop-level-i18n-button Populate i18n li.divider - li.dropdown-header Info + li.dropdown-header(data-i18n="common.info") Info li#history-button a(href='#', data-i18n="general.version_history") Version History li.divider - li.dropdown-header Help + li.dropdown-header(data-i18n="common.help") Help li a(href='https://github.com/codecombat/codecombat/wiki/Artisan-Home', data-i18n="editor.wiki", target="_blank") Wiki li diff --git a/app/templates/i18n/i18n-edit-model-view.jade b/app/templates/i18n/i18n-edit-model-view.jade index 596650e01..318438045 100644 --- a/app/templates/i18n/i18n-edit-model-view.jade +++ b/app/templates/i18n/i18n-edit-model-view.jade @@ -21,7 +21,7 @@ block header ul.nav.navbar-nav.navbar-right li - button.btn.btn-info.btn-sm.pull-right#patch-submit(disabled=model.hasLocalChanges() ? null : 'disabled', value=model.id) Submit Changes + button.btn.btn-info.btn-sm.pull-right#patch-submit(disabled=model.hasLocalChanges() ? null : 'disabled', value=model.id, data-i18n="common.submit_changes") Submit Changes li.dropdown @@ -29,17 +29,17 @@ block header span.glyphicon-chevron-down.glyphicon ul.dropdown-menu - li.dropdown-header Actions + li.dropdown-header(data-i18n="common.actions") Actions li(class=anonymous ? "disabled": "") a(data-toggle="coco-modal", data-target="modal/RevertModal", data-i18n="editor.revert")#revert-button Revert li.divider - li.dropdown-header Info + li.dropdown-header(data-i18n="common.info") Info li#history-button a(href='#', data-i18n="general.version_history") Version History li.divider - li.dropdown-header Help + li.dropdown-header(data-i18n="common.help") Help li a(href='https://github.com/codecombat/codecombat/wiki', data-i18n="editor.wiki", target="_blank") Wiki li diff --git a/app/templates/play/level.jade b/app/templates/play/level.jade index d9bccdf51..de3dbe5dc 100644 --- a/app/templates/play/level.jade +++ b/app/templates/play/level.jade @@ -34,6 +34,7 @@ button.btn.btn-lg.btn-warning.banner.header-font#stop-real-time-playback-button(title="Stop real-time playback", data-i18n="play_level.skip") Skip -#play-footer - p(class='footer-link-text') - a(title='Send CodeCombat a message', tabindex=-1, data-toggle="coco-modal", data-target="core/ContactModal", data-i18n="nav.contact") Contact +if !me.get('anonymous') + #play-footer(class=me.isPremium() ? "premium" : "") + p(class='footer-link-text') + a(title='Send CodeCombat a message', tabindex=-1, data-toggle="coco-modal", data-target="core/ContactModal", data-i18n="nav.contact") Contact diff --git a/app/templates/play/level/tome/problem_alert.jade b/app/templates/play/level/tome/problem_alert.jade index 6951145b8..a227658c3 100644 --- a/app/templates/play/level/tome/problem_alert.jade +++ b/app/templates/play/level/tome/problem_alert.jade @@ -6,3 +6,4 @@ if hint span.problem-subtitle!= message else span.problem-title!= message +button.btn.btn-lg.btn-info.banner#problem-alert-help-button(data-i18n="play_level.problem_alert_help") diff --git a/app/templates/play/level/tome/spell_palette.jade b/app/templates/play/level/tome/spell_palette.jade index fd8ca6423..904b8dc1a 100644 --- a/app/templates/play/level/tome/spell_palette.jade +++ b/app/templates/play/level/tome/spell_palette.jade @@ -13,7 +13,6 @@ if entryGroupSlugs div(class="properties properties-" + slug + " nano-content") else // Hero; group by items, no tabs. - //h4(data-i18n="play_level.tome_your_skills") - h4(data-i18n="play_level.tome_help") + button.btn.btn-sm.btn-info.banner#spell-palette-help-button(data-i18n="play_level.tome_help") .properties diff --git a/app/templates/play/menu/guide-view.jade b/app/templates/play/menu/guide-view.jade index 81c2613e5..1bfbc1f8e 100644 --- a/app/templates/play/menu/guide-view.jade +++ b/app/templates/play/menu/guide-view.jade @@ -1,7 +1,15 @@ -ul.nav.nav-tabs - for doc in docs - li - a(data-target="#docs_tab_#{doc.slug}", data-toggle="tab") #{doc.name} -div.tab-content - for doc in docs - div.tab-pane(id="docs_tab_#{doc.slug}")!= doc.html +if docs.length === 1 + if showVideo + h3(id='help-video-heading', data-i18n="game_menu.guide_video_tutorial") + div(id="help-video-player") + h3(data-i18n="game_menu.guide_tips") + div + != docs[0].html +else + ul.nav.nav-tabs + for doc in docs + li + a(data-target="#docs_tab_#{doc.slug}", data-toggle="tab") #{doc.name} + div.tab-content + for doc in docs + div.tab-pane(id="docs_tab_#{doc.slug}")!= doc.html diff --git a/app/templates/play/modal/buy-gems-modal.jade b/app/templates/play/modal/buy-gems-modal.jade index 78255af54..701ecc0aa 100644 --- a/app/templates/play/modal/buy-gems-modal.jade +++ b/app/templates/play/modal/buy-gems-modal.jade @@ -29,3 +29,9 @@ span(aria-hidden="true") × p(data-i18n="loading_error.unknown") p= stateMessage + + if state === 'recovered_charge' + #recovered-alert.alert.alert-danger.alert-dismissible + span(data-i18n="buy_gems.recovered") + button.close(type="button" data-dismiss="alert") + span(aria-hidden="true") × diff --git a/app/templates/play/spectate.jade b/app/templates/play/spectate.jade index a8b6e8cf9..432c8ad4d 100644 --- a/app/templates/play/spectate.jade +++ b/app/templates/play/spectate.jade @@ -11,7 +11,3 @@ #level-chat-view #playback-view #thang-hud -.footer - .content - p(class='footer-link-text') - a(title='Send CodeCombat a message', tabindex=-1, data-toggle="coco-modal", data-target="core/ContactModal", data-i18n="nav.contact") Contact \ No newline at end of file diff --git a/app/templates/play/world-map-view.jade b/app/templates/play/world-map-view.jade index 68c601450..2a88a63d9 100644 --- a/app/templates/play/world-map-view.jade +++ b/app/templates/play/world-map-view.jade @@ -83,6 +83,9 @@ else span.player-name.spr= me.get('name') button#logout-button.btn.btn-illustrated.btn-warning(data-i18n="login.log_out") Log Out + if me.isPremium() + button.btn.btn-illustrated.btn-primary(data-i18n="nav.contact", data-toggle="coco-modal", data-target="core/ContactModal") Contact + button.btn.btn-lg.btn-inverse#volume-button(title="Adjust volume") .glyphicon.glyphicon-volume-off diff --git a/app/templates/test.jade b/app/templates/test-view.jade similarity index 98% rename from app/templates/test.jade rename to app/templates/test-view.jade index 2a46af58a..9851af483 100644 --- a/app/templates/test.jade +++ b/app/templates/test-view.jade @@ -21,4 +21,4 @@ ol.breadcrumb if child.type == 'folder' strong (#{child.size}) -.clearfix \ No newline at end of file +.clearfix diff --git a/app/views/TestView.coffee b/app/views/TestView.coffee index 6e05509c6..903020b6f 100644 --- a/app/views/TestView.coffee +++ b/app/views/TestView.coffee @@ -1,5 +1,5 @@ RootView = require 'views/core/RootView' -template = require 'templates/test' +template = require 'templates/test-view' requireUtils = require 'lib/requireUtils' require 'vendor/jasmine-bundle' diff --git a/app/views/account/SubscriptionView.coffee b/app/views/account/SubscriptionView.coffee index 2109ac6eb..0501f535d 100644 --- a/app/views/account/SubscriptionView.coffee +++ b/app/views/account/SubscriptionView.coffee @@ -1,7 +1,7 @@ RootView = require 'views/core/RootView' template = require 'templates/account/subscription-view' CocoCollection = require 'collections/CocoCollection' -SubscribeModal = require 'views/play/modal/SubscribeModal' +SubscribeModal = require 'views/core/SubscribeModal' module.exports = class SubscriptionView extends RootView id: "subscription-view" @@ -33,7 +33,7 @@ module.exports = class SubscriptionView extends RootView c.cost = "$#{(subscription.plan.amount/100).toFixed(2)}" if card = @stripeInfo.cards?.data?[0] c.card = "#{card.brand}: x#{card.last4}" - + c.stripeInfo = @stripeInfo c.subscribed = me.get('stripe')?.planID c.active = me.isPremium() @@ -42,7 +42,6 @@ module.exports = class SubscriptionView extends RootView onClickStartSubscription: (e) -> @openModalView new SubscribeModal() window.tracker?.trackEvent 'Show subscription modal', category: 'Subscription', label: 'account subscription view' - window.tracker?.trackPageView "subscription/show-modal", ['Google Analytics'] onSubscribed: -> document.location.reload() diff --git a/app/views/core/AuthModal.coffee b/app/views/core/AuthModal.coffee index 5c28e8c62..6d2e38ad5 100644 --- a/app/views/core/AuthModal.coffee +++ b/app/views/core/AuthModal.coffee @@ -91,7 +91,6 @@ module.exports = class AuthModal extends ModalView return forms.applyErrorsToForm(@$el, res.errors) unless res.valid Backbone.Mediator.publish "auth:signed-up", {} window.tracker?.trackEvent 'Finished Signup', label: 'CodeCombat' - window.tracker?.trackPageView "signup/finished", ['Google Analytics'] @enableModalInProgress(@$el) createUser userObject, null, window.nextLevelURL diff --git a/app/views/core/RootView.coffee b/app/views/core/RootView.coffee index a1d095f96..a4f153390 100644 --- a/app/views/core/RootView.coffee +++ b/app/views/core/RootView.coffee @@ -37,6 +37,7 @@ module.exports = class RootView extends CocoView showNewAchievement: (achievement, earnedAchievement) -> return if achievement.get('collection') is 'level.sessions' + return if @isIE() # Some bugs in IE right now, TODO fix soon! popup = new AchievementPopup achievement: achievement, earnedAchievement: earnedAchievement handleNewAchievements: (e) -> @@ -55,14 +56,11 @@ module.exports = class RootView extends CocoView switch @id when 'home-view' window.tracker?.trackEvent 'Started Signup', category: 'Homepage', label: 'Homepage' - window.tracker?.trackPageView "signup/start", ['Google Analytics'] when 'world-map-view' # TODO: add campaign data window.tracker?.trackEvent 'Started Signup', category: 'World Map', label: 'World Map' - window.tracker?.trackPageView "signup/start", ['Google Analytics'] else window.tracker?.trackEvent 'Started Signup', label: @id - window.tracker?.trackPageView "signup/start", ['Google Analytics'] @openModalView new AuthModal {mode: 'signup'} onClickLoginButton: -> diff --git a/app/views/play/modal/SubscribeModal.coffee b/app/views/core/SubscribeModal.coffee similarity index 76% rename from app/views/play/modal/SubscribeModal.coffee rename to app/views/core/SubscribeModal.coffee index 9aa2caa25..1567eb194 100644 --- a/app/views/play/modal/SubscribeModal.coffee +++ b/app/views/core/SubscribeModal.coffee @@ -1,5 +1,5 @@ ModalView = require 'views/core/ModalView' -template = require 'templates/play/modal/subscribe-modal' +template = require 'templates/core/subscribe-modal' stripeHandler = require 'core/services/stripe' utils = require 'core/utils' AuthModal = require 'views/core/AuthModal' @@ -28,15 +28,12 @@ module.exports = class SubscribeModal extends ModalView c = super() c.state = @state c.stateMessage = @stateMessage - - # Testing alternate displayed subscription price of 1499 - unless me.getSubscribePriceGroup() is 'control' - c.price = 14.99 - else - c.price = @product.amount / 100 + c.price = @product.amount / 100 + #c.price = 3.99 # Sale # A/B Testing alternate subscription copy c.BTest = me.getSubscribeCopyGroup() is 'new' + return c afterRender: -> @@ -45,8 +42,7 @@ module.exports = class SubscribeModal extends ModalView popoverContent = "
" + $.i18n.t('subscribe.parents_blurb1') + "
" popoverContent += "" + $.i18n.t('subscribe.parents_blurb2') + "
" popoverContent += "" + $.i18n.t('subscribe.parents_blurb3') + "
" - unless me.getSubscribePriceGroup() is 'control' - popoverContent = popoverContent.replace /9[.,]99/g, '14.99' + #popoverContent = popoverContent.replace /9[.,]99/g, '3.99' # Sale window.popoverContent = popoverContent @$el.find('#parents-info').popover( animation: true @@ -58,13 +54,11 @@ module.exports = class SubscribeModal extends ModalView container: @$el ).on 'shown.bs.popover', => application.tracker?.trackEvent 'Subscription parent hover', {} - application.tracker?.trackPageView "subscription/parent-hover", ['Google Analytics'] onClickPurchaseButton: (e) -> @playSound 'menu-button-click' return @openModalView new AuthModal() if me.get('anonymous') application.tracker?.trackEvent 'Started subscription purchase', {} - application.tracker?.trackPageView "subscription/start-purchase", ['Google Analytics'] options = { description: $.i18n.t('subscribe.stripe_description') amount: @product.amount @@ -74,17 +68,11 @@ module.exports = class SubscribeModal extends ModalView # overwrite amount with sale price # maybe also put in another description with details about how long it lasts, etc # NOTE: Do not change this price without updating the context.price in getRenderData - # options = { - # description: 'Monthly Subscription (HoC sale)' - # amount: 599 - # } - - # Testing alternate displayed subscription price of 1499 - unless me.getSubscribePriceGroup() is 'control' - options = { - description: $.i18n.t('subscribe.stripe_description') - amount: 1499 - } + # NOTE: And, the popover content if necessary + #options = { + # description: 'Monthly Subscription (HoC sale)' + # amount: 399 + #} @purchasedAmount = options.amount @@ -105,7 +93,6 @@ module.exports = class SubscribeModal extends ModalView onSubscriptionSuccess: -> application.tracker?.trackEvent 'Finished subscription purchase', revenue: @purchasedAmount / 100 - application.tracker?.trackPageView "subscription/finish-purchase", ['Google Analytics'] Backbone.Mediator.publish 'subscribe-modal:subscribed', {} @playSound 'victory' @hide() diff --git a/app/views/editor/level/modals/GenerateTerrainModal.coffee b/app/views/editor/level/modals/GenerateTerrainModal.coffee index 3c6b8de2e..4159014cf 100644 --- a/app/views/editor/level/modals/GenerateTerrainModal.coffee +++ b/app/views/editor/level/modals/GenerateTerrainModal.coffee @@ -87,6 +87,18 @@ clusters = { 'thangs': ['Bookshelf', 'Chair', 'Table', 'Candle', 'Treasure Chest'] 'margin': -1 } + 'desert_walls': { + 'thangs': ['Desert Wall 1', 'Desert Wall 2', 'Desert Wall 3', 'Desert Wall 4', 'Desert Wall 5', 'Desert Wall 6', 'Desert Wall 7', 'Desert Wall 8'] + 'margin': 6 + } + 'desert_floor': { + 'thangs': ['Sand 01', 'Sand 02', 'Sand 03', 'Sand 04', 'Sand 05', 'Sand 06'] + 'margin': -1 + } + 'oases': { + 'thangs': ['Oasis 1', 'Oasis 2', 'Oasis 3'] + 'margin': 4 + } } presets = { @@ -207,6 +219,35 @@ presets = { } } } + 'desert': { + 'terrainName': 'Desert' + 'type':'desert' + 'borders':'desert_walls' + 'borderNoise':2 + 'borderSize':4 + 'borderThickness':4 + 'floors':'desert_floor' + 'decorations': { + 'hero': { + 'num': [1, 1] + 'width': 2 + 'height': 2 + 'clusters': { + 'hero': [1, 1] + } + } + 'oasis': { + 'num':[1,2] #min-max + 'width': 10 + 'height': 10 + 'clusters': { + 'oases':[1,1] + 'shrubs':[0,5] + 'rocks':[0,2] + } + } + } + } } presetSizes = { diff --git a/app/views/play/WorldMapView.coffee b/app/views/play/WorldMapView.coffee index f68ea0a36..a1f8b3f73 100644 --- a/app/views/play/WorldMapView.coffee +++ b/app/views/play/WorldMapView.coffee @@ -9,7 +9,7 @@ ThangType = require 'models/ThangType' MusicPlayer = require 'lib/surface/MusicPlayer' storage = require 'core/storage' AuthModal = require 'views/core/AuthModal' -SubscribeModal = require 'views/play/modal/SubscribeModal' +SubscribeModal = require 'views/core/SubscribeModal' Level = require 'models/Level' trackedHourOfCode = false @@ -234,7 +234,6 @@ module.exports = class WorldMapView extends RootView if level.requiresSubscription and @requiresSubscription and not @levelStatusMap[level.id] and not level.adventurer @openModalView new SubscribeModal() window.tracker?.trackEvent 'Show subscription modal', category: 'Subscription', label: 'map level clicked', level: levelID - window.tracker?.trackPageView "subscription/show-modal", ['Google Analytics'] else if $(e.target).attr('disabled') Backbone.Mediator.publish 'router:navigate', route: '/contribute/adventurer' return @@ -243,13 +242,11 @@ module.exports = class WorldMapView extends RootView else @startLevel levelElement window.tracker?.trackEvent 'Clicked Level', category: 'World Map', levelID: levelID, ['Google Analytics'] - window.tracker?.trackPageView "world-map/clicked-level/#{levelID}", ['Google Analytics'] onClickStartLevel: (e) -> levelElement = $(e.target).parents('.level-info-container') @startLevel levelElement window.tracker?.trackEvent 'Clicked Start Level', category: 'World Map', levelID: levelElement.data('level-id'), ['Google Analytics'] - window.tracker?.trackPageView "world-map/clicked-start-level/#{levelElement.data('level-id')}", ['Google Analytics'] startLevel: (levelElement) -> @setupManager?.destroy() @@ -640,6 +637,7 @@ dungeon = [ description: 'Stay alive longer than your opponent amidst hordes of ogres!' x: 17.54 y: 78.39 + adventurer: true } ] @@ -676,8 +674,7 @@ forest = [ continue: 'thornbush-farm' x: 34 y: 25 - adventurer: true - } + } { name: 'Endangered Burl' type: 'hero' @@ -940,7 +937,6 @@ forest = [ continue: 'the-dunes' x: 85.5 y: 83.5 - adventurer: true } { name: 'Multiplayer Treasure Grove' @@ -974,7 +970,6 @@ desert = [ continue: 'the-mighty-sand-yak' x: 8.47 y: 21.93 - adventurer: true requiresSubscription: true } { @@ -987,7 +982,6 @@ desert = [ continue: 'oasis' x: 16.56 y: 27.77 - adventurer: true requiresSubscription: false } { @@ -996,13 +990,160 @@ desert = [ id: 'oasis' original: '5480ba761bf0b10000711c64' description: 'Run a gauntlet of sand yaks to reach oasis and quench your thirst!' - #nextLevels: - # continue: '' + nextLevels: + continue: 'sarven-road' x: 23.35 y: 31.60 + requiresSubscription: false + } + { + name: 'Sarven Road' + type: 'hero' + id: 'sarven-road' + original: '548c82360ffdc235e80ef04b' + description: 'Watch out for ogre scouts on the road as you search for water.' + nextLevels: + continue: 'sarven-gaps' + x: 28.36 + y: 24.59 adventurer: true requiresSubscription: false } + { + name: 'Sarven Gaps' + type: 'hero' + id: 'sarven-gaps' + original: '548c8f4a0ffdc235e80ef0a8' + description: 'Keep the oasis safe by building fences to hold back the enemy.' + nextLevels: + continue: 'thunderhooves' + x: 21.13 + y: 9.29 + adventurer: true + requiresSubscription: true + } + { + name: 'Thunderhooves' + type: 'hero' + id: 'thunderhooves' + original: '548c90020ffdc235e80ef0ad' + description: 'Fence off the stampeding sand yaks to reach the next watering hole.' + nextLevels: + continue: 'medical-attention' + x: 35.08 + y: 20.48 + adventurer: true + requiresSubscription: false + } + { + name: 'Medical Attention' + type: 'hero' + id: 'medical-attention' + original: '548ce3300ffdc235e80ef0b2' + description: 'Get help from a helpful wizard while you fend off an ogre attack.' + nextLevels: + continue: 'minesweeper' + x: 42.84 + y: 21.82 + adventurer: true + requiresSubscription: false + } + { + name: 'Minesweeper' + type: 'hero' + id: 'minesweeper' + original: '5490cb7c623b972aa26b25a3' + description: 'Lead a band of hapless peasants through a treacherous canyon while you heroically trigger the mines.' + nextLevels: + continue: 'sarven-sentry' + x: 47.64 + y: 12.40 + adventurer: true + requiresSubscription: true + } + { + name: 'Sarven Sentry' + type: 'hero' + id: 'sarven-sentry' + original: '548cef7f0ffdc235e80ef0cc' + description: 'Coming Soon' + nextLevels: + continue: 'keeping-time' + x: 51.48 + y: 26.09 + adventurer: true + requiresSubscription: false + disabled: not me.isAdmin() + } + { + name: 'Keeping Time' + type: 'hero' + id: 'keeping-time' + original: '548cf1a90ffdc235e80ef0d1' + description: 'Coming Soon' + nextLevels: + continue: 'hoarding-gold' + x: 58.42 + y: 34.14 + adventurer: true + requiresSubscription: false + disabled: not me.isAdmin() + } + { + name: 'Hoarding Gold' + type: 'hero' + id: 'hoarding-gold' + original: '' + description: 'Coming Soon' + nextLevels: + continue: 'decoy-drill' + x: 61.73 + y: 29.51 + adventurer: true + requiresSubscription: false + disabled: not me.isAdmin() + } + { + name: 'Decoy Drill' + type: 'hero' + id: 'decoy-drill' + original: '' + description: 'Coming Soon' + nextLevels: + continue: 'yakstraction' + x: 62.05 + y: 40.44 + adventurer: true + requiresSubscription: false + disabled: not me.isAdmin() + } + { + name: 'Yakstraction' + type: 'hero' + id: 'yakstraction' + original: '' + description: 'Coming Soon' + nextLevels: + continue: 'sarven-brawl' + x: 66.46 + y: 48.87 + adventurer: true + requiresSubscription: true + } + { + name: 'Sarven Brawl' + type: 'hero' + id: 'sarven-brawl' + original: '548cf2850ffdc235e80ef0d6' + description: 'Coming Soon' + #nextLevels: + # continue: '' + x: 69.01 + y: 33.80 + adventurer: true + requiresSubscription: false + disabled: not me.isAdmin() + } ] diff --git a/app/views/play/level/ControlBarView.coffee b/app/views/play/level/ControlBarView.coffee index e044d142a..518c2bb6a 100644 --- a/app/views/play/level/ControlBarView.coffee +++ b/app/views/play/level/ControlBarView.coffee @@ -99,7 +99,6 @@ module.exports = class ControlBarView extends CocoView onClickSignupButton: -> window.tracker?.trackEvent 'Started Signup', category: 'Play Level', label: 'Control Bar', level: @levelID - window.tracker?.trackPageView "signup/start", ['Google Analytics'] onDisableControls: (e) -> @toggleControls e, false onEnableControls: (e) -> @toggleControls e, true diff --git a/app/views/play/level/LevelLoadingView.coffee b/app/views/play/level/LevelLoadingView.coffee index 3c45d6ab4..5e59cf816 100644 --- a/app/views/play/level/LevelLoadingView.coffee +++ b/app/views/play/level/LevelLoadingView.coffee @@ -1,7 +1,7 @@ CocoView = require 'views/core/CocoView' template = require 'templates/play/level/level_loading' utils = require 'core/utils' -SubscribeModal = require 'views/play/modal/SubscribeModal' +SubscribeModal = require 'views/core/SubscribeModal' module.exports = class LevelLoadingView extends CocoView id: 'level-loading-view' @@ -110,8 +110,7 @@ module.exports = class LevelLoadingView extends CocoView onClickStartSubscription: (e) -> @openModalView new SubscribeModal() - window.tracker?.trackEvent 'Show subscription modal', category: 'Subscription', label: 'level loading', level: @options.level ? 'unknown' - window.tracker?.trackPageView "subscription/show-modal", ['Google Analytics'] + window.tracker?.trackEvent 'Show subscription modal', category: 'Subscription', label: 'level loading', level: @options.level.get('name') ? 'unknown' onSubscribed: -> document.location.reload() diff --git a/app/views/play/level/PlayLevelView.coffee b/app/views/play/level/PlayLevelView.coffee index e852c38f8..b0960438c 100644 --- a/app/views/play/level/PlayLevelView.coffee +++ b/app/views/play/level/PlayLevelView.coffee @@ -134,7 +134,6 @@ module.exports = class PlayLevelView extends RootView loadDuration = @loadEndTime - @loadStartTime console.debug "Level unveiled after #{(loadDuration / 1000).toFixed(2)}s" application.tracker?.trackEvent 'Finished Level Load', category: 'Play Level', label: @levelID, level: @levelID, loadDuration: loadDuration, ['Google Analytics'] - application.tracker?.trackPageView "level-loaded/#{@levelID}", ['Google Analytics'] application.tracker?.trackTiming loadDuration, 'Level Load Time', @levelID, @levelID # CocoView overridden methods ############################################### @@ -241,7 +240,7 @@ module.exports = class PlayLevelView extends RootView @insertSubView new HUDView {level: @level} @insertSubView new LevelDialogueView {level: @level} @insertSubView new ChatView levelID: @levelID, sessionID: @session.id, session: @session - @insertSubView new ProblemAlertView {} + @insertSubView new ProblemAlertView session: @session, level: @level, supermodel: @supermodel worldName = utils.i18n @level.attributes, 'name' @controlBar = @insertSubView new ControlBarView {worldName: worldName, session: @session, level: @level, supermodel: @supermodel} #_.delay (=> Backbone.Mediator.publish('level:set-debug', debug: true)), 5000 if @isIPadApp() # if me.displayName() is 'Nick' @@ -259,6 +258,8 @@ module.exports = class PlayLevelView extends RootView @bus = LevelBus.get(@levelID, @session.id) @bus.setSession(@session) @bus.setSpells @tome.spells + if @session.get('multiplayer') and not me.isAdmin() + @session.set 'multiplayer', false # Temp: multiplayer has bugged out some sessions, so ignoring it. @bus.connect() if @session.get('multiplayer') # Load Completed Setup ###################################################### @@ -415,7 +416,6 @@ module.exports = class PlayLevelView extends RootView category: 'Play Level' level: @level.get('name') label: @level.get('name') - application.tracker?.trackPageView "level-completed/#{@levelID}", ['Google Analytics'] application.tracker?.trackTiming victoryTime, 'Level Victory Time', @levelID, @levelID, 100 showVictory: -> diff --git a/app/views/play/level/modal/HeroVictoryModal.coffee b/app/views/play/level/modal/HeroVictoryModal.coffee index 04434e77a..6a61dc28d 100644 --- a/app/views/play/level/modal/HeroVictoryModal.coffee +++ b/app/views/play/level/modal/HeroVictoryModal.coffee @@ -283,8 +283,6 @@ module.exports = class HeroVictoryModal extends ModalView Backbone.Mediator.publish 'music-player:enter-menu', terrain: @level.get('terrain', true) updateSavingProgressStatus: -> - # A/B Testing no delay showing the signup and continue buttons in hero victory modal - return unless @animationComplete or me.getFastVictoryModalGroup() is 'fast' @$el.find('#saving-progress-label').toggleClass('hide', @readyToContinue) @$el.find('.next-level-button').toggleClass('hide', not @readyToContinue) @$el.find('.sign-up-poke').toggleClass('hide', not @readyToContinue) @@ -342,5 +340,4 @@ module.exports = class HeroVictoryModal extends ModalView onClickSignupButton: (e) -> e.preventDefault() window.tracker?.trackEvent 'Started Signup', category: 'Play Level', label: 'Hero Victory Modal', level: @level.get('slug') - window.tracker?.trackPageView "signup/start", ['Google Analytics'] @openModalView new AuthModal {mode: 'signup'} diff --git a/app/views/play/level/modal/VictoryModal.coffee b/app/views/play/level/modal/VictoryModal.coffee index 2cc03bd7e..b55d4e24d 100644 --- a/app/views/play/level/modal/VictoryModal.coffee +++ b/app/views/play/level/modal/VictoryModal.coffee @@ -73,7 +73,6 @@ module.exports = class VictoryModal extends ModalView onClickSignupButton: (e) -> e.preventDefault() window.tracker?.trackEvent 'Started Signup', category: 'Play Level', label: 'Victory Modal', level: @level.get('slug') - window.tracker?.trackPageView "signup/start", ['Google Analytics'] @openModalView new AuthModal {mode: 'signup'} onGameSubmitted: (e) -> diff --git a/app/views/play/level/tome/ProblemAlertView.coffee b/app/views/play/level/tome/ProblemAlertView.coffee index 2460454d5..b53d0ea1f 100644 --- a/app/views/play/level/tome/ProblemAlertView.coffee +++ b/app/views/play/level/tome/ProblemAlertView.coffee @@ -1,4 +1,5 @@ CocoView = require 'views/core/CocoView' +GameMenuModal = require 'views/play/menu/GameMenuModal' template = require 'templates/play/level/tome/problem_alert' {me} = require 'core/auth' @@ -17,9 +18,13 @@ module.exports = class ProblemAlertView extends CocoView events: 'click .close': 'onRemoveClicked' + 'click #problem-alert-help-button': 'onClickProblemAlertHelp' constructor: (options) -> super options + @level = options.level + @session = options.session + @supermodel = options.supermodel if options.problem? @problem = options.problem @onWindowResize() @@ -69,6 +74,7 @@ module.exports = class ProblemAlertView extends CocoView @onWindowResize() @render() @onJiggleProblemAlert() + application.tracker?.trackEvent 'Show problem alert', levelID: @level.get('slug') onJiggleProblemAlert: -> return unless @problem? @@ -83,6 +89,10 @@ module.exports = class ProblemAlertView extends CocoView return unless @$el.is(':visible') @onRemoveClicked() + onClickProblemAlertHelp: -> + application.tracker?.trackEvent 'Problem alert help clicked', levelID: @level.get('slug') + @openModalView new GameMenuModal showTab: 'guide', level: @level, session: @session, supermodel: @supermodel + onRemoveClicked: -> @playSound 'menu-button-click' @$el.hide() diff --git a/app/views/play/level/tome/SpellPaletteView.coffee b/app/views/play/level/tome/SpellPaletteView.coffee index 0317e6a33..f7403befa 100644 --- a/app/views/play/level/tome/SpellPaletteView.coffee +++ b/app/views/play/level/tome/SpellPaletteView.coffee @@ -6,6 +6,7 @@ SpellPaletteEntryView = require './SpellPaletteEntryView' LevelComponent = require 'models/LevelComponent' ThangType = require 'models/ThangType' LevelOptions = require 'lib/LevelOptions' +GameMenuModal = require 'views/play/menu/GameMenuModal' N_ROWS = 4 @@ -20,8 +21,14 @@ module.exports = class SpellPaletteView extends CocoView 'surface:frame-changed': 'onFrameChanged' 'tome:change-language': 'onTomeChangedLanguage' + events: + 'click #spell-palette-help-button': 'onClickHelp' + constructor: (options) -> super options + @level = options.level + @session = options.session + @supermodel = options.supermodel @thang = options.thang @createPalette() $(window).on 'resize', @onResize @@ -277,6 +284,10 @@ module.exports = class SpellPaletteView extends CocoView entry.destroy() for entry in @entries @createPalette() @render() + + onClickHelp: (e) -> + application.tracker?.trackEvent 'Spell palette help clicked', levelID: @level.get('slug') + @openModalView new GameMenuModal showTab: 'guide', level: @level, session: @session, supermodel: @supermodel destroy: -> entry.destroy() for entry in @entries diff --git a/app/views/play/level/tome/SpellView.coffee b/app/views/play/level/tome/SpellView.coffee index d0d422c15..49800668b 100644 --- a/app/views/play/level/tome/SpellView.coffee +++ b/app/views/play/level/tome/SpellView.coffee @@ -417,7 +417,7 @@ module.exports = class SpellView extends CocoView meta: 'press enter' name: doc.name tabTrigger: doc.snippets[e.language].tab - if doc.name is 'findNearestEnemy' + if doc.name is 'findNearestEnemy' or doc.name is 'findNearest' # Remember if we have findNearestEnemy so attack snippet can be updated haveFindNearestEnemy = true if doc.name is 'attack' diff --git a/app/views/play/menu/GameMenuModal.coffee b/app/views/play/menu/GameMenuModal.coffee index 85cf63ab0..316b3a52f 100644 --- a/app/views/play/menu/GameMenuModal.coffee +++ b/app/views/play/menu/GameMenuModal.coffee @@ -34,6 +34,7 @@ module.exports = class GameMenuModal extends ModalView submenus = ["options", "save-load", "guide", "multiplayer"] submenus = _.without submenus, 'guide' unless docs.specificArticles?.length or docs.generalArticles?.length submenus = _.without submenus, 'save-load' unless me.isAdmin() or /https?:\/\/localhost/.test(window.location.href) + submenus = _.without submenus, 'multiplayer' unless me.isAdmin() or @level?.get('type') in ['ladder', 'hero-ladder'] context.showTab = @options.showTab ? submenus[0] context.submenus = submenus context.iconMap = @@ -49,6 +50,7 @@ module.exports = class GameMenuModal extends ModalView if @options.showTab firstView = switch @options.showTab when 'multiplayer' then @subviews.multiplayer_view + when 'guide' then @subviews.guide_view unless firstView? firstView = (@subviews.options_view) firstView.$el.addClass 'active' @@ -58,7 +60,9 @@ module.exports = class GameMenuModal extends ModalView onTabShown: (e) -> @playSound 'game-menu-tab-switch' - @subviews[e.target.hash.substring(1).replace(/-/g, '_')].onShown?() + shownSubviewKey = e.target.hash.substring(1).replace(/-/g, '_') + @subviews[shownSubviewKey].onShown?() + subview.onHidden?() for subviewKey, subview of @subviews when subviewKey isnt shownSubviewKey onHidden: -> super() @@ -68,7 +72,6 @@ module.exports = class GameMenuModal extends ModalView onClickSignupButton: (e) -> window.tracker?.trackEvent 'Started Signup', category: 'Play Level', label: 'Game Menu', level: @options.levelID - window.tracker?.trackPageView "signup/start", ['Google Analytics'] # TODO: Default already seems to be prevented. Need to be explicit? e.preventDefault() @openModalView new AuthModal {mode: 'signup'} diff --git a/app/views/play/menu/GuideView.coffee b/app/views/play/menu/GuideView.coffee index 973b31ba3..cdc3d8995 100644 --- a/app/views/play/menu/GuideView.coffee +++ b/app/views/play/menu/GuideView.coffee @@ -2,6 +2,7 @@ CocoView = require 'views/core/CocoView' template = require 'templates/play/menu/guide-view' Article = require 'models/Article' utils = require 'core/utils' +LevelOptions = require 'lib/LevelOptions' # let's implement this once we have the docs database schema set up @@ -9,8 +10,17 @@ module.exports = class LevelGuideView extends CocoView template: template id: 'guide-view' className: 'tab-pane' + helpVideoHeight: '295' + helpVideoWidth: '471' constructor: (options) -> + @levelID = options.level.get('slug') + @helpVideos = LevelOptions[@levelID]?.helpVideos ? [] + @trackedHelpVideoStart = @trackedHelpVideoFinish = false + + # A/B Testing video tutorial styles + @helpVideosIndex = me.getVideoTutorialStylesIndex(@helpVideos.length) + @firstOnly = options.firstOnly @docs = options?.docs ? options.level.get('documentation') ? {} general = @docs.generalArticles or [] @@ -30,15 +40,26 @@ module.exports = class LevelGuideView extends CocoView doc.slug = _.string.slugify(doc.name) for doc in @docs super() + destroy: -> + if @vimeoListenerAttached + if window.addEventListener + window.removeEventListener('message', @onMessageReceived, false) + else + window.detachEvent('onmessage', @onMessageReceived, false) + if window.onYouTubeIframeAPIReady + window.onYouTubeIframeAPIReady = null + super() + getRenderData: -> c = super() c.docs = @docs + c.showVideo = @helpVideos.length > 0 c afterRender: -> super() - if @docs.length is 1 - @$el.html(@docs[0].html) + if @docs.length is 1 and @helpVideos.length > 0 + @setupVideoPlayer() else # incredible hackiness. Getting bootstrap tabs to work shouldn't be this complex @$el.find('.nav-tabs li:first').addClass('active') @@ -55,4 +76,107 @@ module.exports = class LevelGuideView extends CocoView Backbone.Mediator.publish 'level:docs-shown', {} onHidden: -> + createjs?.Sound?.setVolume?(@volume ? 1.0) Backbone.Mediator.publish 'level:docs-hidden', {} + + onShown: -> + # TODO: Disable sound only when video is playing? + @volume ?= me.get('volume') ? 1.0 + createjs?.Sound?.setVolume(0.0) + + onStartHelpVideo: -> + unless @trackedHelpVideoStart + window.tracker?.trackEvent 'Start help video', level: @levelID, style: @helpVideos[@helpVideosIndex].style + @trackedHelpVideoStart = true + + onFinishHelpVideo: -> + unless @trackedHelpVideoFinish + window.tracker?.trackEvent 'Finish help video', level: @levelID, style: @helpVideos[@helpVideosIndex].style + @trackedHelpVideoFinish = true + + setupVideoPlayer: () -> + return unless @helpVideos.length > 0 + + # TODO: run A/B test for different video styles + + helpVideoURL = @helpVideos[@helpVideosIndex].URL + if helpVideoURL.toLowerCase().indexOf('youtube') >= 0 + @setupYouTubeVideoPlayer helpVideoURL + else if helpVideoURL.toLowerCase().indexOf('vimeo') >= 0 + @setupVimeoVideoPlayer helpVideoURL + + setupYouTubeVideoPlayer: (helpVideoURL) -> + # Setup YouTube iframe player + # https://developers.google.com/youtube/iframe_api_reference + # TODO: Can't load a YouTube video twice in one level + # TODO: window.onYouTubeIframeAPIReady is only called once + # TODO: Consider ripping out YouTube support and migrating all videos to Vimeo + + onPlayerStateChange = (e) => + if e.data is 1 + @onStartHelpVideo() + else if e.data is 0 + @onFinishHelpVideo() + + createPlayer = => + new YT.Player 'help-video-player', { + height: @helpVideoHeight, + width: @helpVideoWidth, + videoId: videoID, + events: { + 'onStateChange': onPlayerStateChange + } + } + + if matchVideoID = helpVideoURL.match /www\.youtube\.com\/embed\/(bHaeKdMPZrA)/ + videoID = matchVideoID[1] + else + console.warn "Unable to read video ID from help video." + # TODO: Default to dungeons-of-kithgard? + videoID = 'bHaeKdMPZrA' + + # Add method that will be called by YouTube iframe player when ready + window.onYouTubeIframeAPIReady = => + createPlayer() + + # Add YouTube video player iframe script if necessary + if YT?.Player? + createPlayer() + else + tag = document.createElement('script') + tag.src = "https://www.youtube.com/iframe_api" + @$el.find('#help-video-heading').after(tag) + + setupVimeoVideoPlayer: (helpVideoURL) -> + # Setup Vimeo player + # https://developer.vimeo.com/player/js-api#universal-with-postmessage + + # Create Vimeo iframe player + tag = document.createElement('iframe') + tag.id = 'help-video-player' + tag.src = helpVideoURL + "?api=1&badge=0&byline=0&portrait=0&title=0" + tag.height = @helpVideoHeight + tag.width = @helpVideoWidth + tag.frameborder = '0' + @$el.find('#help-video-player').replaceWith(tag) + + @onMessageReceived = (e) => + data = JSON.parse(e.data) + if data.event is 'ready' + # Vimeo player is ready, can now hook up other events + # https://developer.vimeo.com/player/js-api#events + player = $('#help-video-player')[0] + helpVideoURL = 'http:' + helpVideoURL unless helpVideoURL.indexOf('http') is 0 + player.contentWindow.postMessage JSON.stringify(method: 'addEventListener', value: 'play'), helpVideoURL + player.contentWindow.postMessage JSON.stringify(method: 'addEventListener', value: 'finish'), helpVideoURL + else if data.event is 'play' + @onStartHelpVideo?() + else if data.event is 'finish' + @onFinishHelpVideo?() + + # Listen for Vimeo player 'ready' + if window.addEventListener + window.addEventListener('message', @onMessageReceived, false) + else + window.attachEvent('onmessage', @onMessageReceived, false) + @vimeoListenerAttached = true diff --git a/app/views/play/menu/InventoryModal.coffee b/app/views/play/menu/InventoryModal.coffee index 0a06212ac..7a231b982 100644 --- a/app/views/play/menu/InventoryModal.coffee +++ b/app/views/play/menu/InventoryModal.coffee @@ -379,26 +379,27 @@ module.exports = class InventoryModal extends ModalView console.log 'Unequipping restricted item', restrictedGear[slot], 'for', slot, 'before level', @options.levelID @unequipItemFromSlot @$el.find(".item-slot[data-slot='#{slot}']") delete equipment[slot] - if (heroClass is 'Warrior' or - (heroClass is 'Ranger' and @options.levelID in ['swift-dagger', 'shrapnel']) or - (heroClass is 'Wizard' and @options.levelID in ['touch-of-death', 'bonemender'])) - # After they switch to a ranger or wizard, we stop being so finicky about gear. - for slot, item of requiredGear - continue if item is 'tarnished-bronze-breastplate' and inWorldMap and @options.levelID is 'the-raised-sword' # Don't tell them they need it until they need it in the level - equipped = equipment[slot] - continue if equipped and not ( - (item is 'crude-builders-hammer' and equipped in [gear['simple-sword'], gear['long-sword'], gear['sharpened-sword'], gear['roughedge']]) or - (item in ['simple-sword', 'long-sword', 'roughedge', 'sharpened-sword'] and equipped is gear['crude-builders-hammer']) or - (item is 'leather-boots' and equipped is gear['simple-boots']) or - (item is 'simple-boots' and equipped is gear['leather-boots']) - ) - itemModel = @items.findWhere {slug: item} - continue unless itemModel - availableSlotSelector = "#unequipped .item[data-item-id='#{itemModel.id}']" - @highlightElement availableSlotSelector, delay: 500, sides: ['right'], rotation: Math.PI / 2 - @$el.find(availableSlotSelector).addClass 'should-equip' - @$el.find("#equipped div[data-slot='#{slot}']").addClass 'should-equip' - @remainingRequiredEquipment.push slot: slot, item: gear[item] + for slot, item of requiredGear + if (slot in ['right-hand', 'left-hand', 'head', 'torso']) and not (heroClass is 'Warrior' or + (heroClass is 'Ranger' and @options.levelID in ['swift-dagger', 'shrapnel']) or + (heroClass is 'Wizard' and @options.levelID in ['touch-of-death', 'bonemender'])) and item isnt 'crude-builders-hammer' + # After they switch to a ranger or wizard, we stop being so finicky about class-specific gear. + continue + continue if item is 'tarnished-bronze-breastplate' and inWorldMap and @options.levelID is 'the-raised-sword' # Don't tell them they need it until they need it in the level + equipped = equipment[slot] + continue if equipped and not ( + (item is 'crude-builders-hammer' and equipped in [gear['simple-sword'], gear['long-sword'], gear['sharpened-sword'], gear['roughedge']]) or + (item in ['simple-sword', 'long-sword', 'roughedge', 'sharpened-sword'] and equipped is gear['crude-builders-hammer']) or + (item is 'leather-boots' and equipped is gear['simple-boots']) or + (item is 'simple-boots' and equipped is gear['leather-boots']) + ) + itemModel = @items.findWhere {slug: item} + continue unless itemModel + availableSlotSelector = "#unequipped .item[data-item-id='#{itemModel.id}']" + @highlightElement availableSlotSelector, delay: 500, sides: ['right'], rotation: Math.PI / 2 + @$el.find(availableSlotSelector).addClass 'should-equip' + @$el.find("#equipped div[data-slot='#{slot}']").addClass 'should-equip' + @remainingRequiredEquipment.push slot: slot, item: gear[item] if hadRequired and not @remainingRequiredEquipment.length @endHighlight() @highlightElement '#play-level-button', duration: 5000 @@ -626,3 +627,5 @@ gear = 'enchanted-stick': '544d87188494308424f564f1' 'unholy-tome-i': '546374bc3839c6e02811d308' 'book-of-life-i': '546375653839c6e02811d30b' + 'rough-sense-stone': '54693140a2b1f53ce79443bc' + 'polished-sense-stone': '53e215a253457600003e3eaf' diff --git a/app/views/play/modal/BuyGemsModal.coffee b/app/views/play/modal/BuyGemsModal.coffee index 3dabb85d9..2a3539b50 100644 --- a/app/views/play/modal/BuyGemsModal.coffee +++ b/app/views/play/modal/BuyGemsModal.coffee @@ -24,12 +24,17 @@ module.exports = class BuyGemsModal extends ModalView constructor: (options) -> super(options) + @timestampForPurchase = new Date().getTime() @state = 'standby' if application.isIPadApp @products = [] Backbone.Mediator.publish 'buy-gems-modal:update-products' else @products = @originalProducts + $.post '/db/payment/check-stripe-charges', (something, somethingElse, jqxhr) => + if jqxhr.status is 201 + @state = 'recovered_charge' + @render() getRenderData: -> c = super() @@ -67,7 +72,6 @@ module.exports = class BuyGemsModal extends ModalView @productBeingPurchased = product onStripeReceivedToken: (e) -> - @timestampForPurchase = new Date().getTime() data = { productID: @productBeingPurchased.id stripe: { diff --git a/config.coffee b/config.coffee index 0c9eb3081..bfe7fd781 100644 --- a/config.coffee +++ b/config.coffee @@ -4,6 +4,7 @@ _.str = require 'underscore.string' sysPath = require 'path' fs = require('fs') commonjsHeader = fs.readFileSync('node_modules/brunch/node_modules/commonjs-require-definition/require.js', {encoding: 'utf8'}) +TRAVIS = process.env.COCO_TRAVIS_TEST #- regJoin replace a single '/' with '[\/\\]' so it can handle either forward or backslash @@ -59,6 +60,9 @@ exports.config = 'app/lib/sprites/SpriteBuilder.coffee' # loaded by ThangType ] + #- Karma is a bit more tricky to get to work. For now just dump everything into one file so it doesn't need to load anything through ModuleLoader. + 'javascripts/whole-app.js': if TRAVIS then regJoin('^app') else [] + #- Wads. Groups of modules by folder which are loaded as a group when needed. 'javascripts/app/lib.js': regJoin('^app/lib') 'javascripts/app/views/play.js': regJoin('^app/views/play') @@ -80,6 +84,10 @@ exports.config = regJoin('^bower_components/(?!(aether|d3|treema))') 'bower_components/treema/treema-utils.js' ] + 'javascripts/whole-vendor.js': if TRAVIS then [ + regJoin('^vendor/scripts/(?!(Box2d|jasmine))') + regJoin('^bower_components/(?!aether)') + ] else [] #- Other vendor libraries in separate bunches @@ -103,6 +111,7 @@ exports.config = 'javascripts/app/vendor/diffview.js': 'vendor/scripts/diffview.js' 'javascripts/app/vendor/treema.js': 'bower_components/treema/treema.js' 'javascripts/app/vendor/jasmine-bundle.js': regJoin('^vendor/scripts/jasmine') + 'javascripts/app/vendor/jasmine-mock-ajax.js': 'vendor/scripts/jasmine-mock-ajax.js' #- test, demo libraries 'javascripts/app/tests.js': regJoin('^test/app/') @@ -157,6 +166,7 @@ exports.config = 'javascripts/app/views/play.js': regJoin('^app/templates/play') 'javascripts/app/views/game-menu.js': regJoin('^app/templates/game-menu') 'javascripts/app/views/editor.js': regJoin('^app/templates/editor') + 'javascripts/whole-app.js': if TRAVIS then regJoin('^app/templates') else [] framework: 'backbone' @@ -190,6 +200,7 @@ exports.config = needHeaders = [ 'public/javascripts/app.js' 'public/javascripts/world.js' + 'public/javascripts/whole-app.js' ] defn = if path in needHeaders then commonjsHeader else '' return defn diff --git a/karma.conf.js b/karma.conf.js index 5a4224edf..00ba3af7f 100644 --- a/karma.conf.js +++ b/karma.conf.js @@ -1,5 +1,3 @@ -// Testacular configuration -// Generated on Fri Feb 15 2013 18:38:33 GMT-0500 (EST) module.exports = function(config) { @@ -11,18 +9,18 @@ module.exports = function(config) { // list of files / patterns to load in the browser files : [ - 'public/javascripts/vendor.js', + 'public/javascripts/whole-vendor.js', 'public/lib/ace/ace.js', 'public/javascripts/aether.js', - 'public/javascripts/app.js', - 'public/javascripts/mock-ajax.js', - 'public/javascripts/test-app.js', + 'public/javascripts/whole-app.js', + 'public/javascripts/app/vendor/jasmine-mock-ajax.js', + 'public/javascripts/app/tests.js', 'public/javascripts/run-tests.js' ], preprocessors : { '**/*.coffee': 'coffee', - '**/javascripts/app.js': 'coverage' + '**/javascripts/whole-app.js': 'coverage' }, // list of files to exclude diff --git a/package.json b/package.json index 96f1415fa..4b74dae1d 100644 --- a/package.json +++ b/package.json @@ -52,7 +52,6 @@ "underscore.string": "2.3.x", "async": "0.2.x", "connect": "2.7.x", - "nodemailer": "0.4.x", "coffee-script": "1.7.x", "graceful-fs": "~2.0.1", "node-force-domain": "~0.1.0", diff --git a/scripts/analytics/mixpanel.py b/scripts/analytics/mixpanel.py new file mode 100644 index 000000000..9a6067a93 --- /dev/null +++ b/scripts/analytics/mixpanel.py @@ -0,0 +1,135 @@ +#! /usr/bin/env python +# +# Mixpanel, Inc. -- http://mixpanel.com/ +# +# Python API client library to consume mixpanel.com analytics data. +# +# Copyright 2010-2013 Mixpanel, Inc +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import hashlib +import urllib +import urllib2 +import time +try: + import json +except ImportError: + import simplejson as json + +class Mixpanel(object): + + # https right? + ENDPOINT = 'http://mixpanel.com/api' + DATA_ENDPOINT = 'http://data.mixpanel.com/api' + VERSION = '2.0' + + def __init__(self, api_key, api_secret): + self.api_key = api_key + self.api_secret = api_secret + + def request(self, methods, params, format='json'): + """ + methods - List of methods to be joined, e.g. ['events', 'properties', 'values'] + will give us http://mixpanel.com/api/2.0/events/properties/values/ + params - Extra parameters associated with method + """ + params['api_key'] = self.api_key + params['expire'] = int(time.time()) + 600 # Grant this request 10 minutes. + params['format'] = format + + if 'sig' in params: del params['sig'] + params['sig'] = self.hash_args(params) + + if 'export' in methods: + request_url = '/'.join([self.DATA_ENDPOINT, str(self.VERSION)] + methods) + '/?' + self.unicode_urlencode(params) + else: + request_url = '/'.join([self.ENDPOINT, str(self.VERSION)] + methods) + '/?' + self.unicode_urlencode(params) + request = urllib2.urlopen(request_url, timeout=120) + data = request.read() + # return json.loads(data) + return data + + def unicode_urlencode(self, params): + """ + Convert lists to JSON encoded strings, and correctly handle any + unicode URL parameters. + """ + if isinstance(params, dict): + params = params.items() + for i, param in enumerate(params): + if isinstance(param[1], list): + params[i] = (param[0], json.dumps(param[1]),) + + return urllib.urlencode( + [(k, isinstance(v, unicode) and v.encode('utf-8') or v) for k, v in params] + ) + + def hash_args(self, args, secret=None): + """ + Hashes arguments by joining key=value pairs, appending a secret, and + then taking the MD5 hex digest. + """ + for a in args: + if isinstance(args[a], list): args[a] = json.dumps(args[a]) + + args_joined = '' + for a in sorted(args.keys()): + if isinstance(a, unicode): + args_joined += a.encode('utf-8') + else: + args_joined += str(a) + + args_joined += '=' + + if isinstance(args[a], unicode): + args_joined += args[a].encode('utf-8') + else: + args_joined += str(args[a]) + + hash = hashlib.md5(args_joined) + + if secret: + hash.update(secret) + elif self.api_secret: + hash.update(self.api_secret) + return hash.hexdigest() + +if __name__ == '__main__': + api = Mixpanel( + api_key = 'YOUR_API_KEY', + api_secret = 'YOUR_API_SECRET' + ) + # data = api.request(['events'], { + # 'event' : ['Finished subscription purchase',], + # 'unit' : 'hour', + # 'interval' : 24, + # 'type': 'general' + # }) + + # data = api.request(['funnels', 'list'], {}) + + data = api.request(['export'], { + 'event' : ['Finished subscription purchase',], + 'from_date' : '2014-14-05', + 'to_date' : '2014-14-06' + }) + for line in data.split('\n'): + try: + if len(line): + event = json.loads(line) + print event['event'], event['properties']['distinct_id'] + except: + print 'error' + print line + diff --git a/scripts/analytics/mixpanelABSubscribeCopy.py b/scripts/analytics/mixpanelABSubscribeCopy.py new file mode 100644 index 000000000..d6ca6801c --- /dev/null +++ b/scripts/analytics/mixpanelABSubscribeCopy.py @@ -0,0 +1,130 @@ +# Calculate subscribe copy A/B test results + +import sys +from mixpanel import Mixpanel + +try: + import json +except ImportError: + import simplejson as json + +# NOTE: mixpanel dates are by day and inclusive +# E.g. '2014-12-08' is any date that day, up to 2014-12-09 12am + +if __name__ == '__main__': + if not len(sys.argv) is 3: + print "Script format: