From 1cc3e79db98c035bba47fd46ca68fdc8aa1a7ad9 Mon Sep 17 00:00:00 2001 From: Mikhail Koltsov Date: Wed, 19 Mar 2014 01:21:11 +0400 Subject: [PATCH 01/21] fixed thang editor appearance: components view was overlapping with tabs. Now looks neat, but still unclickable. --- app/styles/editor/components/main.sass | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/styles/editor/components/main.sass b/app/styles/editor/components/main.sass index d1c678e18..7efde9cfd 100644 --- a/app/styles/editor/components/main.sass +++ b/app/styles/editor/components/main.sass @@ -7,7 +7,7 @@ .column position: absolute - top: 0 + top: 70px bottom: 0 padding: 5px box-sizing: border-box @@ -20,7 +20,7 @@ .treema position: absolute - top: 70px + top: 100px left: 0 right: 10px bottom: 0 @@ -32,7 +32,7 @@ .treema position: absolute - top: 70px + top: 100px left: 10px right: 0px bottom: 0 From 62a170106303f8fc12e88e7e690b095f4acc4595 Mon Sep 17 00:00:00 2001 From: Mikhail Koltsov Date: Wed, 19 Mar 2014 01:26:41 +0400 Subject: [PATCH 02/21] even better positioning --- app/styles/editor/components/main.sass | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/styles/editor/components/main.sass b/app/styles/editor/components/main.sass index 7efde9cfd..a01df7bd5 100644 --- a/app/styles/editor/components/main.sass +++ b/app/styles/editor/components/main.sass @@ -20,7 +20,7 @@ .treema position: absolute - top: 100px + top: 80px left: 0 right: 10px bottom: 0 @@ -32,7 +32,7 @@ .treema position: absolute - top: 100px + top: 80px left: 10px right: 0px bottom: 0 From c9a08a0b257e36d6e0c73acc9e7416eb644a05c2 Mon Sep 17 00:00:00 2001 From: Mikhail Koltsov Date: Wed, 19 Mar 2014 01:43:27 +0400 Subject: [PATCH 03/21] thang editor: added i18n binding to 'Save' button --- app/styles/editor/components/main.sass | 2 +- app/templates/editor/thang/edit.jade | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/styles/editor/components/main.sass b/app/styles/editor/components/main.sass index a01df7bd5..53c082bfb 100644 --- a/app/styles/editor/components/main.sass +++ b/app/styles/editor/components/main.sass @@ -1,6 +1,6 @@ #thang-components-edit-view position: absolute - top: 40px + top: 100px bottom: 0 left: 0 right: 0 diff --git a/app/templates/editor/thang/edit.jade b/app/templates/editor/thang/edit.jade index 650f3843f..09326f99c 100644 --- a/app/templates/editor/thang/edit.jade +++ b/app/templates/editor/thang/edit.jade @@ -13,7 +13,7 @@ block content img#portrait.img-thumbnail button.btn.btn-secondary#history-button(data-i18n="general.history") History - button.btn.btn-primary#save-button(data-toggle="coco-modal", data-target="modal/save_version", disabled=authorized === true ? undefined : "true") Save + button.btn.btn-primary#save-button(data-toggle="coco-modal", data-target="modal/save_version", data-i18n="common.save", disabled=authorized === true ? undefined : "true") Save button.btn.btn-primary#revert-button(data-toggle="coco-modal", data-target="modal/revert", data-i18n="editor.revert", disabled=authorized === true ? undefined : "true") Revert h3 Edit Thang Type: "#{thangType.attributes.name}" From dfe5cd8f415c325af62bfa7ebc40f55fd50f927e Mon Sep 17 00:00:00 2001 From: Mikhail Koltsov Date: Wed, 19 Mar 2014 03:29:53 +0400 Subject: [PATCH 04/21] Polished ru.coffee a bit --- app/locale/ru.coffee | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/app/locale/ru.coffee b/app/locale/ru.coffee index b1cafeea7..2839363bb 100644 --- a/app/locale/ru.coffee +++ b/app/locale/ru.coffee @@ -315,26 +315,26 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi hard: "Сложно" about: - who_is_codecombat: "Кто есть CodeCombat?" + who_is_codecombat: "Кто стоит за CodeCombat?" why_codecombat: "Почему CodeCombat?" - who_description_prefix: "вместе начали CodeCombat in 2013. Также мы создали " - who_description_suffix: "в 2008, вывели его на первую строчку среди web и iOS приложений для обучения письму китайскими и японскими иероглифами." + who_description_prefix: "вместе начали CodeCombat в 2013 году. Также мы создали " + who_description_suffix: "в 2008 году, вывели его на первую строчку среди web и iOS приложений для обучения письму китайскими и японскими иероглифами." who_description_ending: "Теперь пришло время научить людей написанию кода." - why_paragraph_1: "При создании Skritter, Джордж не знал, как программировать и постоянно расстраивался из-за того, что не мог реализовать свои идеи. После этого он пытался учиться, но уроки были слишком медленными. Его сосед по дому, желая переквалифицироваться и прекратить преподавать, пробовал Codecademy, но \"наскучивало.\" Каждую неделю другой друг начинал Codecademy, затем бросал. Мы поняли, что это была та же проблема, которую мы решали со Skritter: люди получают навык через медленные, интенсивные уроки, когда то, что им нужно - быстрая, обширная практика. Мы знаем, как это исправить." + why_paragraph_1: "При создании Skritter, Джордж не знал, как программировать и постоянно расстраивался из-за того, что не мог реализовать свои идеи. После этого он пытался учиться, но уроки были слишком медленными. Его сосед, желая переквалифицироваться и прекратить преподавать, пробовал Codecademy, но \"потерял интерес.\" Каждую неделю очередной товарищ начинал Codecademy, затем бросал. Мы поняли, что это была та же проблема, которую мы решили со Skritter: люди получают навык через медленные, интенсивные уроки, в то время как то, что им нужно - быстрая, обширная практика. Мы знаем, как это исправить." why_paragraph_2: "Нужно научиться программировать? Вам не нужны уроки. Вам нужно написать много кода и прекрасно провести время, делая это." - why_paragraph_3_prefix: "Вот, о чём программирование. Это должно быть весело. Не вроде" + why_paragraph_3_prefix: "Вот где программирование. Это должно быть весело. Не забавно, вроде" why_paragraph_3_italic: "вау, значок," why_paragraph_3_center: "а" why_paragraph_3_italic_caps: "НЕТ, МАМ, Я ДОЛЖЕН ПРОЙТИ УРОВЕНЬ!" - why_paragraph_3_suffix: "Вот, почему CodeCombat - мультиплеерная игра, а не курс уроков в игровой форме. Мы не остановимся, пока вы не сможете остановиться--в данном случае, это хорошо." + why_paragraph_3_suffix: "Вот, почему CodeCombat - мультиплеерная игра, а не курс уроков в игровой форме. Мы не остановимся, пока вы не потеряете голову - в данном случае, это хорошо." why_paragraph_4: "Если вы собираетесь увлечься какой-нибудь игрой, увлекитесь этой и станьте одним из волшебников века информационных технологий." - why_ending: "Эй, это бесплатно. " + why_ending: "И да, это бесплатно. " why_ending_url: "Начни волшебство сейчас!" - george_description: "Генеральный директор, бизнес-парень, веб-дизайнер, геймдизайнер, и чемпион начинающих программистов во всём мире." - scott_description: "Экстраординарный программист, архитектор программного обеспечения, кухонный волшебник, и мастер финансов. Скотт является разумным." - nick_description: "Маг программирования, эксцентрично мотивированный волшебник, и экспериментатор вверх ногами. Ник может делать всё и хочет построить CodeCombat." + george_description: "Генеральный директор, бизнес-парень, веб-дизайнер, геймдизайнер и чемпион начинающих программистов во всём мире." + scott_description: "Экстраординарный программист, архитектор программного обеспечения, кухонный волшебник и мастер финансов. Скотт рассудителен." + nick_description: "Маг программирования, мудрец эксцентричного мотивирования и чудаковатый экспериментатор. Ник может всё и хочет построить CodeCombat." jeremy_description: "Маг клиентской поддержки, юзабилити-тестер, и организатор сообщества; вы наверняка уже говорили с Джереми." - michael_description: "Программист, сисадмин и непризнанный технический гений, Михаэль является лицом, поддерживающим наши серверы онлайн." + michael_description: "Программист, сисадмин и непризнанный технический гений, Михаэль является лицом, поддерживающим наши серверы в доступности." legal: page_title: "Юридическая информация" @@ -342,26 +342,26 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi opensource_description_prefix: "Посмотрите " github_url: "наш GitHub" opensource_description_center: "и посодействуйте, если вам понравилось! CodeCombat построен на десятках проектов с открытым кодом, и мы любим их. Загляните в " - archmage_wiki_url: "нашу вики Архимагов" + archmage_wiki_url: "наш вики-портал для Архимагов" opensource_description_suffix: ", чтобы увидеть список программного обеспечения, делающего игру возможной." - practices_title: "Лучшие уважаемые практики" - practices_description: "Это наши обещания тебе, игрок, менее юридическим языком." + practices_title: "Почтительные лучшие практики" + practices_description: "Это наши обещания тебе, игроку, менее юридическим языком." privacy_title: "Конфиденциальность" privacy_description: "Мы не будем продавать какой-либо личной информации. Мы намерены заработать деньги с помощью рекрутинга в конечном счёте, но будьте уверены, мы не будем распространять вашу личную информацию заинтересованным компаниям без вашего явного согласия." security_title: "Безопасность" - security_description: "Мы стремимся сохранить вашу личную информацию в безопасности. Как проект с открытым исходным кодом, наш сайт в свободном доступе для всех для пересмотра и совершенствования систем безопасности." + security_description: "Мы стремимся сохранить вашу личную информацию в безопасности. Как проект с открытым исходным кодом, наш сайт открыт для всех в вопросах пересмотра и совершенствования систем безопасности." email_title: "Email" email_description_prefix: "Мы не наводним вас спамом. Через" email_settings_url: "ваши email настройки" email_description_suffix: "или через ссылки в email-ах, которые мы отправляем, вы можете изменить предпочтения и легко отписаться в любой момент." cost_title: "Стоимость" - cost_description: "В настоящее время, CodeCombat 100% бесплатен! Одной из наших главных целей является сохранить его таким, так, чтобы как можно больше людей могли играть, независимо от места в жизни. Если небо потемнеет, мы, возможно, введём подписки, возможно, только на некоторый контент, но нам не хотелось бы. Если повезёт, мы сможем поддерживать компанию, используя" + cost_description: "В настоящее время, CodeCombat 100% бесплатен! Одной из наших главных целей является сохранить его таким, чтобы как можно больше людей могли играть, независимо от места в жизни. Если небо потемнеет, мы, возможно, введём подписки, возможно, только на некоторый контент, но нам не хотелось бы. Если повезёт, мы сможем поддерживать компанию, используя" recruitment_title: "Рекрутинг" recruitment_description_prefix: "Здесь, в CodeCombat, вы собираетесь стать могущественным волшебником не только в игре, но и в реальной жизни." url_hire_programmers: "Никто не может нанять программистов достаточно быстро" recruitment_description_suffix: "поэтому, как только вы улучшите свои навыки и будете согласны, мы начнём демонстрировать ваши лучшие программистские достижения тысячам работодателей, пускающих слюни на возможность нанять вас. Они платят нам немного, они платят вам" recruitment_description_italic: "много" - recruitment_description_ending: ", сайт остаётся бесплатным и все счастливы. Таков план." + recruitment_description_ending: "сайт остаётся бесплатным и все счастливы. Таков план." copyrights_title: "Авторские права и лицензии" contributor_title: "Лицензионное соглашение соавторов" contributor_description_prefix: "Все вклады, как на сайте, так и на нашем репозитории GitHub, подпадают под наше" @@ -394,7 +394,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi rights_media: "Медиа (звуки, музыка) и любой другой творческий контент, созданный специально для этого уровня и не являющийся общедоступным при создании уровней." rights_clarification: "Чтобы уточнить, всё, что становится доступным в Редакторе уровней для целей создания уровней под CC, в то время как контент, созданный с помощью Редактора уровней или загруженный в ходе создания уровней - нет." nutshell_title: "В двух словах" - nutshell_description: "Любые ресурсы, которые мы предоставляем в Редакторе уровней можно свободно использовать как вам нравится для создания уровней. Но мы оставляем за собой право ограничивать распространение уровней самих по себе (которые создаются на codecombat.com), чтобы за них могла взиматься плата в будущем, если это то, что в конечном итоге происходит." + nutshell_description: "Любые ресурсы, которые мы предоставляем в Редакторе уровней можно свободно использовать как вам нравится для создания уровней. Но мы оставляем за собой право ограничивать распространение уровней самих по себе (которые создаются на codecombat.com), чтобы за них могла взиматься плата в будущем, если до этого дойдёт." canonical: "Английская версия этого документа является определяющей и канонической. Если есть какие-либо расхождения между переводами, документ на английском имеет приоритет." contribute: From a8716000a43c1bb6724b486e95e33083b0a3fbdc Mon Sep 17 00:00:00 2001 From: TigroTigro Date: Thu, 20 Mar 2014 22:16:26 +0100 Subject: [PATCH 05/21] Update pl.coffee --- app/locale/pl.coffee | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/app/locale/pl.coffee b/app/locale/pl.coffee index 4773db823..2ac043808 100644 --- a/app/locale/pl.coffee +++ b/app/locale/pl.coffee @@ -66,12 +66,12 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish no_ie: "CodeCombat nie działa na Internet Explorer 9 lub starszym. Przepraszamy!" no_mobile: "CodeCombat nie został zaprojektowany dla użądzeń przenośnych więc może nie działać!" play: "Graj" -# old_browser: "Uh oh, your browser is too old to run CodeCombat. Sorry!" -# old_browser_suffix: "You can try anyway, but it probably won't work." -# campaign: "Campaign" -# for_beginners: "For Beginners" + old_browser: "Wygląda na to, że twoja przeglądarka jest zbyt stara, by obsłużyć CodeCombat. Wybacz!" + old_browser_suffix: "Możesz spróbowac mimo tego, ale prawdopodobnie gra nie będzie działać." + campaign: "Kampania" + for_beginners: "Dla początkujących" # multiplayer: "Multiplayer" -# for_developers: "For Developers" + for_developers: "Dla developerów" play: choose_your_level: "Wybierz poziom" @@ -88,7 +88,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish campaign_player_created_description: "... w których walczysz przeciwko dziełom Czarodziejów Rękodzielnictwa" level_difficulty: "Poziom trudności: " play_as: "Graj jako " -# spectate: "Spectate" + spectate: "Oglądaj" contact: contact_us: "Kontakt z CodeCombat" @@ -541,15 +541,15 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish # vs: "VS" # multiplayer_launch: -# introducing_dungeon_arena: "Introducing Dungeon Arena" -# new_way: "March 17, 2014: The new way to compete with code." -# to_battle: "To Battle, Developers!" -# modern_day_sorcerer: "You know how to code? That's badass. You're a modern-day sorcerer! Isn't about time that you used your magic coding powers to command your minions in epic combat? And we're not talking robots here." -# arenas_are_here: "CodeCombat head-to-head multiplayer arenas are here." -# ladder_explanation: "Choose your heroes, enchant your human or ogre armies, and climb your way over defeated fellow Wizards to reach the top of the ladders–then challenge your friends in our glorious, asynchronous multiplayer coding arenas. If you're feeling creative, you can even" -# fork_our_arenas: "fork our arenas" -# create_worlds: "and create your own worlds." -# javascript_rusty: "JavaScript a bit rusty? Don't worry; there's a" -# tutorial: "tutorial" -# new_to_programming: ". New to programming? Hit our beginner campaign to skill up." -# so_ready: "I Am So Ready for This" + introducing_dungeon_arena: "Oto Dungeon Arena" + new_way: "17. marca 2014: Nowy sposób, by współzawodniczyć dzięki programowaniu." + to_battle: "Do broni, developerzy!" + modern_day_sorcerer: "Wiesz, jak programować? Super. Jesteś współczesnym czarodziejem. Czy nie najwyższy czas, aby użyć swoich mocy, by dowodzić jednostkami w epickiej batalii? I nie mamy tutaj na myśli robotów." + arenas_are_here: "Areny wieloosobowych potyczek CodeCombat właśnie nastały." + ladder_explanation: "Wybierz swoich herosów, ulepsz swą armię ludzi lub ogrów i wespnij się po pokonanych Czarodziejach, by osiągnąć szczyty rankingów - wówczas, wyzwij swoich przyjaciół w naszych wspaniałych, asynchronicznych arenach programowania multiplayer. Jeśli czujesz w sobie moc twórczą, możesz nawet" + fork_our_arenas: "forkować nasze areny" + create_worlds: "i tworzyć swoje własne światy." + javascript_rusty: "JavaScript wyleciała ci z głowy? Nie martw się, czeka na ciebie" + tutorial: "samouczek" + new_to_programming: ". Jesteś nowy w świecie programowania? Zagraj w naszą kampanię dla początkujących, aby zyskać nowe umiejętności." + so_ready: "Już nie mogę się doczekać" From 6eccb459cf5651b8acc4495810393c133a2712e9 Mon Sep 17 00:00:00 2001 From: Muhammad Nuzaihan Bin Kamal Luddin Date: Fri, 21 Mar 2014 09:28:39 +0800 Subject: [PATCH 06/21] Additions to Bahasa Malaysia --- app/locale/ms.coffee | 555 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 555 insertions(+) create mode 100644 app/locale/ms.coffee diff --git a/app/locale/ms.coffee b/app/locale/ms.coffee new file mode 100644 index 000000000..7adfd458e --- /dev/null +++ b/app/locale/ms.coffee @@ -0,0 +1,555 @@ +module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa Malaysia", translation: + common: + loading: "Pemuatan..." + saving: "Menyimpan data..." + sending: "Menghantar maklumat.." + cancel: "Batal" +# save: "Save" +# delay_1_sec: "1 second" +# delay_3_sec: "3 seconds" +# delay_5_sec: "5 seconds" +# manual: "Manual" +# fork: "Fork" + play: "Mula Main" + + modal: + close: "Tutup" + okay: "Ok" + + not_found: + page_not_found: "Halaman tidak ditemui" + + nav: + play: "Mula Main" + editor: "Editor" + blog: "Blog" + forum: "Forum" + admin: "Admin" + home: "Halaman" + contribute: "Sumbangan" + legal: "Undang-undang" + about: "Tentang" + contact: "Hubungi" + twitter_follow: "Ikuti" + employers: "Majikan" + + versions: + save_version_title: "Simpan versi baru" + new_major_version: "Versi utama yang baru" +# cla_prefix: "To save changes, first you must agree to our" +# cla_url: "CLA" +# cla_suffix: "." +# cla_agree: "I AGREE" + + login: + sign_up: "Buat Akaun" + log_in: "Log Masuk" + log_out: "Log Keluar" + recover: "Perbaharui Akaun" + + recover: + recover_account_title: "Dapatkan Kembali Akaun" + send_password: "Hantar kembali kata laluan" + + signup: +# create_account_title: "Create Account to Save Progress" + description: "Ianya percuma. Hanya berberapa langkah sahaja:" + email_announcements: "Terima pengesahan melalui Emel" + coppa: "13+ atau bukan- USA" + coppa_why: "(Kenapa?)" + creating: "Sedang membuat Akaun..." + sign_up: "Daftar" + log_in: "Log Masuk" + +# home: +# slogan: "Learn to Code JavaScript by Playing a Game" +# no_ie: "CodeCombat does not run in Internet Explorer 9 or older. Sorry!" +# no_mobile: "CodeCombat wasn't designed for mobile devices and may not work!" +# play: "Play" +# old_browser: "Uh oh, your browser is too old to run CodeCombat. Sorry!" +# old_browser_suffix: "You can try anyway, but it probably won't work." +# campaign: "Campaign" +# for_beginners: "For Beginners" +# multiplayer: "Multiplayer" +# for_developers: "For Developers" + +# play: +# choose_your_level: "Choose Your Level" +# adventurer_prefix: "You can jump to any level below, or discuss the levels on " +# adventurer_forum: "the Adventurer forum" +# adventurer_suffix: "." +# campaign_beginner: "Beginner Campaign" +# campaign_beginner_description: "... in which you learn the wizardry of programming." +# campaign_dev: "Random Harder Levels" +# campaign_dev_description: "... in which you learn the interface while doing something a little harder." +# campaign_multiplayer: "Multiplayer Arenas" +# campaign_multiplayer_description: "... in which you code head-to-head against other players." +# campaign_player_created: "Player-Created" +# campaign_player_created_description: "... in which you battle against the creativity of your fellow Artisan Wizards." +# level_difficulty: "Difficulty: " +# play_as: "Play As " +# spectate: "Spectate" + + contact: + contact_us: "Hubungi 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." + send: "Hantar Maklumbalas" + + diplomat_suggestion: +# title: "Help translate CodeCombat!" +# sub_heading: "We need your language skills." + pitch_body: "We develop CodeCombat in English, but we already have players all over the world. Many of them want to play in Bahasa Melayu but don't speak English, so if you can speak both, please consider signing up to be a Diplomat and help translate both the CodeCombat website and all the levels into Bahasa Melayu." + missing_translations: "Until we can translate everything into Bahasa Melayu, you'll see English when Bahasa Melayu isn't available." +# learn_more: "Learn more about being a Diplomat" +# subscribe_as_diplomat: "Subscribe as a Diplomat" + +# wizard_settings: +# title: "Wizard Settings" +# customize_avatar: "Customize Your Avatar" +# clothes: "Clothes" +# trim: "Trim" +# cloud: "Cloud" +# spell: "Spell" +# boots: "Boots" +# hue: "Hue" +# saturation: "Saturation" +# lightness: "Lightness" + +# account_settings: +# title: "Account Settings" +# not_logged_in: "Log in or create an account to change your settings." +# autosave: "Changes Save Automatically" +# me_tab: "Me" +# picture_tab: "Picture" +# wizard_tab: "Wizard" +# password_tab: "Password" +# emails_tab: "Emails" +# admin: "Admin" +# gravatar_select: "Select which Gravatar photo to use" +# gravatar_add_photos: "Add thumbnails and photos to a Gravatar account for your email to choose an image." +# gravatar_add_more_photos: "Add more photos to your Gravatar account to access them here." +# wizard_color: "Wizard Clothes Color" +# new_password: "New Password" +# new_password_verify: "Verify" +# email_subscriptions: "Email Subscriptions" +# email_announcements: "Announcements" +# email_notifications: "Notifications" +# email_notifications_description: "Get periodic notifications for your account." +# email_announcements_description: "Get emails on the latest news and developments at CodeCombat." +# contributor_emails: "Contributor Class Emails" +# contribute_prefix: "We're looking for people to join our party! Check out the " +# contribute_page: "contribute page" +# contribute_suffix: " to find out more." +# email_toggle: "Toggle All" +# error_saving: "Error Saving" +# saved: "Changes Saved" +# password_mismatch: "Password does not match." + +# account_profile: +# edit_settings: "Edit Settings" +# profile_for_prefix: "Profile for " +# profile_for_suffix: "" +# profile: "Profile" +# user_not_found: "No user found. Check the URL?" +# gravatar_not_found_mine: "We couldn't find your profile associated with:" +# gravatar_not_found_email_suffix: "." +# gravatar_signup_prefix: "Sign up at " +# gravatar_signup_suffix: " to get set up!" +# gravatar_not_found_other: "Alas, there's no profile associated with this person's email address." +# gravatar_contact: "Contact" +# gravatar_websites: "Websites" +# gravatar_accounts: "As Seen On" +# gravatar_profile_link: "Full Gravatar Profile" + +# play_level: +# level_load_error: "Level could not be loaded: " +# done: "Done" +# grid: "Grid" +# customize_wizard: "Customize Wizard" +# home: "Home" +# guide: "Guide" +# multiplayer: "Multiplayer" +# restart: "Restart" +# goals: "Goals" +# action_timeline: "Action Timeline" +# click_to_select: "Click on a unit to select it." +# reload_title: "Reload All Code?" +# reload_really: "Are you sure you want to reload this level back to the beginning?" +# reload_confirm: "Reload All" +# victory_title_prefix: "" +# victory_title_suffix: " Complete" +# victory_sign_up: "Sign Up to Save Progress" +# victory_sign_up_poke: "Want to save your code? Create a free account!" +# victory_rate_the_level: "Rate the level: " +# victory_rank_my_game: "Rank My Game" +# victory_ranking_game: "Submitting..." +# victory_return_to_ladder: "Return to Ladder" +# victory_play_next_level: "Play Next Level" +# victory_go_home: "Go Home" +# victory_review: "Tell us more!" +# victory_hour_of_code_done: "Are You Done?" +# victory_hour_of_code_done_yes: "Yes, I'm finished with my Hour of Code™!" +# multiplayer_title: "Multiplayer Settings" +# multiplayer_link_description: "Give this link to anyone to have them join you." +# multiplayer_hint_label: "Hint:" +# multiplayer_hint: " Click the link to select all, then press ⌘-C or Ctrl-C to copy the link." +# multiplayer_coming_soon: "More multiplayer features to come!" +# guide_title: "Guide" +# tome_minion_spells: "Your Minions' Spells" +# tome_read_only_spells: "Read-Only Spells" +# tome_other_units: "Other Units" +# tome_cast_button_castable: "Cast Spell" +# tome_cast_button_casting: "Casting" +# tome_cast_button_cast: "Spell Cast" +# tome_autocast_delay: "Autocast Delay" +# tome_select_spell: "Select a Spell" +# tome_select_a_thang: "Select Someone for " +# tome_available_spells: "Available Spells" +# hud_continue: "Continue (shift+space)" +# spell_saved: "Spell Saved" +# skip_tutorial: "Skip (esc)" +# editor_config: "Editor Config" +# editor_config_title: "Editor Configuration" +# editor_config_keybindings_label: "Key Bindings" +# editor_config_keybindings_default: "Default (Ace)" +# editor_config_keybindings_description: "Adds additional shortcuts known from the common editors." +# editor_config_invisibles_label: "Show Invisibles" +# editor_config_invisibles_description: "Displays invisibles such as spaces or tabs." +# editor_config_indentguides_label: "Show Indent Guides" +# editor_config_indentguides_description: "Displays vertical lines to see indentation better." +# editor_config_behaviors_label: "Smart Behaviors" +# editor_config_behaviors_description: "Autocompletes brackets, braces, and quotes." + +# admin: +# av_title: "Admin Views" +# av_entities_sub_title: "Entities" +# av_entities_users_url: "Users" +# av_entities_active_instances_url: "Active Instances" +# av_other_sub_title: "Other" +# av_other_debug_base_url: "Base (for debugging base.jade)" +# u_title: "User List" +# lg_title: "Latest Games" + +# editor: +# main_title: "CodeCombat Editors" +# main_description: "Build your own levels, campaigns, units and educational content. We provide all the tools you need!" +# article_title: "Article Editor" +# article_description: "Write articles that give players overviews of programming concepts which can be used across a variety of levels and campaigns." +# thang_title: "Thang Editor" +# thang_description: "Build units, defining their default logic, graphics and audio. Currently only supports importing Flash exported vector graphics." +# level_title: "Level Editor" +# level_description: "Includes the tools for scripting, uploading audio, and constructing custom logic to create all sorts of levels. Everything we use ourselves!" +# security_notice: "Many major features in these editors are not currently enabled by default. As we improve the security of these systems, they will be made generally available. If you'd like to use these features sooner, " +# contact_us: "contact us!" +# hipchat_prefix: "You can also find us in our" +# hipchat_url: "HipChat room." +# revert: "Revert" +# revert_models: "Revert Models" +# 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_thangs_title: "Current Thangs" +# level_tab_thangs_conditions: "Starting Conditions" +# level_tab_thangs_add: "Add Thangs" +# 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" +# level_components_title: "Back to All Thangs" +# level_components_type: "Type" +# level_component_edit_title: "Edit Component" +# 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" +# new_thang_title: "Create a New Thang Type" +# new_level_title: "Create a New Level" +# article_search_title: "Search Articles Here" +# thang_search_title: "Search Thang Types Here" +# level_search_title: "Search Levels Here" + +# article: +# edit_btn_preview: "Preview" +# edit_article_title: "Edit Article" + + general: +# and: "and" + name: "Nama" +# body: "Body" +# version: "Version" +# commit_msg: "Commit Message" +# history: "History" +# version_history_for: "Version History for: " +# result: "Result" +# results: "Results" +# description: "Description" + or: "atau" + email: "Emel" +# password: "Password" + message: "Mesej" +# code: "Code" +# ladder: "Ladder" +# when: "When" +# opponent: "Opponent" +# rank: "Rank" +# score: "Score" +# win: "Win" +# loss: "Loss" +# tie: "Tie" +# easy: "Easy" +# medium: "Medium" +# hard: "Hard" + +# about: +# who_is_codecombat: "Who is CodeCombat?" +# why_codecombat: "Why CodeCombat?" +# who_description_prefix: "together started CodeCombat in 2013. We also created " +# who_description_suffix: "in 2008, growing it to the #1 web and iOS application for learning to write Chinese and Japanese characters." +# who_description_ending: "Now it's time to teach people to write code." +# why_paragraph_1: "When making Skritter, George didn't know how to program and was constantly frustrated by his inability to implement his ideas. Afterwards, he tried learning, but the lessons were too slow. His housemate, wanting to reskill and stop teaching, tried Codecademy, but \"got bored.\" Each week another friend started Codecademy, then dropped off. We realized it was the same problem we'd solved with Skritter: people learning a skill via slow, intensive lessons when what they need is fast, extensive practice. We know how to fix that." +# why_paragraph_2: "Need to learn to code? You don't need lessons. You need to write a lot of code and have a great time doing it." +# why_paragraph_3_prefix: "That's what programming is about. It's gotta be fun. Not fun like" +# why_paragraph_3_italic: "yay a badge" +# why_paragraph_3_center: "but fun like" +# why_paragraph_3_italic_caps: "NO MOM I HAVE TO FINISH THE LEVEL!" +# why_paragraph_3_suffix: "That's why CodeCombat is a multiplayer game, not a gamified lesson course. We won't stop until you can't stop--but this time, that's a good thing." +# why_paragraph_4: "If you're going to get addicted to some game, get addicted to this one and become one of the wizards of the tech age." +# why_ending: "And hey, it's free. " +# why_ending_url: "Start wizarding now!" +# george_description: "CEO, business guy, web designer, game designer, and champion of beginning programmers everywhere." +# scott_description: "Programmer extraordinaire, software architect, kitchen wizard, and master of finances. Scott is the reasonable one." +# nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." +# jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." +# michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." +# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that mather. The word impossible can't be found in his dictionary. Learning new skills is his joy!" + +# legal: +# page_title: "Legal" +# opensource_intro: "CodeCombat is free to play and completely open source." +# opensource_description_prefix: "Check out " +# github_url: "our GitHub" +# opensource_description_center: "and help out if you like! CodeCombat is built on dozens of open source projects, and we love them. See " +# archmage_wiki_url: "our Archmage wiki" +# opensource_description_suffix: "for a list of the software that makes this game possible." +# 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. We intend to make money through recruitment eventually, but rest assured we will not distribute your personal information to interested companies without your explicit consent." +# security_title: "Security" +# 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" +# cost_description: "Currently, CodeCombat is 100% free! One of our main goals is to keep it that way, so that as many people can play as possible, regardless of place in life. If the sky darkens, we might have to charge subscriptions or for some content, but we'd rather not. With any luck, we'll be able to sustain the company with:" +# recruitment_title: "Recruitment" +# recruitment_description_prefix: "Here on CodeCombat, you're going to become a powerful wizard–not just in the game, but also in real life." +# url_hire_programmers: "No one can hire programmers fast enough" +# recruitment_description_suffix: "so once you've sharpened your skills and if you agree, we will demo your best coding accomplishments to the thousands of employers who are drooling for the chance to hire you. They pay us a little, they pay you" +# recruitment_description_italic: "a lot" +# recruitment_description_ending: "the site remains free and everybody's happy. That's the plan." +# copyrights_title: "Copyrights and Licenses" +# contributor_title: "Contributor License Agreement" +# contributor_description_prefix: "All contributions, both on the site and on our GitHub repository, are subject to our" +# cla_url: "CLA" +# contributor_description_suffix: "to which you should agree before contributing." +# code_title: "Code - MIT" +# code_description_prefix: "All code owned by CodeCombat or hosted on codecombat.com, both in the GitHub repository or in the codecombat.com database, is licensed under the" +# mit_license_url: "MIT license" +# code_description_suffix: "This includes all code in Systems and Components that are made available by CodeCombat for the purpose of creating levels." +# art_title: "Art/Music - Creative Commons " +# 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_artwork: "Artwork" +# art_sprites: "Sprites" +# art_other: "Any and all other non-code creative works that are made available when creating Levels." +# art_access: "Currently there is no universal, easy system for fetching these assets. In general, fetch them from the URLs as used by the site, contact us for assistance, or help us in extending the site to make these assets more easily accessible." +# art_paragraph_1: "For attribution, please name and link to codecombat.com near where the source is used or where appropriate for the medium. For example:" +# 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_desc: "All rights are reserved for Levels themselves. This includes" +# rights_scripts: "Scripts" +# rights_unit: "Unit configuration" +# rights_description: "Description" +# rights_writings: "Writings" +# rights_media: "Media (sounds, music) and any other creative content made specifically for that Level and not made generally available when creating Levels." +# rights_clarification: "To clarify, anything that is made available in the Level Editor for the purpose of making levels is under CC, whereas the content created with the Level Editor or uploaded in the course of creation of Levels is not." +# nutshell_title: "In a Nutshell" +# 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." + +# contribute: +# page_title: "Contributing" +# character_classes_title: "Character Classes" +# introduction_desc_intro: "We have high hopes for CodeCombat." +# 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, " +# 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, and Jeremy" +# alert_account_message_intro: "Hey there!" +# alert_account_message_pref: "To subscribe for class emails, you'll need to " +# alert_account_message_suf: "first." +# alert_account_message_create_url: "create an account" +# 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." +# class_attributes: "Class Attributes" +# archmage_attribute_1_pref: "Knowledge in " +# archmage_attribute_1_suf: ", or a desire to learn. Most of our code is in this language. If you're a fan of Ruby or Python, you'll feel right at home. It's JavaScript, but with a nicer syntax." +# archmage_attribute_2: "Some experience in programming and personal initiative. We'll help you get oriented, but we can't spend much time training you." +# how_to_join: "How To Join" +# join_desc_1: "Anyone can help out! Just check out our " +# join_desc_2: "to get started, and check the box below to mark yourself as a brave Archmage and get the latest news by email. Want to chat about what to do or how to get more deeply involved? " +# join_desc_3: ", or find us in our " +# join_desc_4: "and we'll go from there!" +# join_url_email: "Email us" +# join_url_hipchat: "public HipChat room" +# more_about_archmage: "Learn More About Becoming an Archmage" +# archmage_subscribe_desc: "Get emails on new coding opportunities and announcements." +# 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_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!" +# artisan_join_desc: "Use the Level Editor in these steps, give or take:" +# artisan_join_step1: "Read the documentation." +# artisan_join_step2: "Create a new level and explore existing levels." +# artisan_join_step3: "Find us in our public HipChat room for help." +# artisan_join_step4: "Post your levels on the forum for feedback." +# more_about_artisan: "Learn More About Becoming an Artisan" +# artisan_subscribe_desc: "Get emails on level editor updates and announcements." +# 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." +# adventurer_introduction: "Let's be clear about your role: you are the tank. You're 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 might be for you." +# adventurer_attribute_1: "A thirst for learning. You want to learn how to code and we want to teach you how to code. You'll probably be doing most of the teaching in this case, though." +# adventurer_attribute_2: "Charismatic. Be gentle but articulate about what needs improving, and offer suggestions on how to improve." +# adventurer_join_pref: "Either get together with (or recruit!) an Artisan and work with them, or check the box below to receive emails when there are new levels to test. We'll also be posting about levels to review on our networks like" +# adventurer_forum_url: "our forum" +# adventurer_join_suf: "so if you prefer to be notified those ways, sign up there!" +# more_about_adventurer: "Learn More About Becoming an Adventurer" +# adventurer_subscribe_desc: "Get emails when there are new levels to test." +# 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 " +# scribe_summary_suf: " has built. If you enjoy explaining programming concepts, then this class is for you." +# scribe_introduction_pref: "CodeCombat isn't just going to be a bunch of levels. It will also include a resource for knowledge, a wiki of programming concepts that levels can hook into. That way rather than each Artisan having to describe in detail what a comparison operator is, they can simply link their level to the Article describing them that is already written for the player's edification. Something along the lines of what the " +# scribe_introduction_url_mozilla: "Mozilla Developer Network" +# scribe_introduction_suf: " has built. If your idea of fun is articulating the concepts of programming in Markdown form, then this class might be for you." +# scribe_attribute_1: "Skill in words is pretty much all you need. Not only grammar and spelling, but able to convey complicated ideas to others." +# contact_us_url: "Contact us" +# scribe_join_description: "tell us a little about yourself, your experience with programming and what sort of things you'd like to write about. We'll go from there!" +# more_about_scribe: "Learn More About Becoming a Scribe" +# scribe_subscribe_desc: "Get emails about article writing announcements." +# 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." +# diplomat_introduction_pref: "So, if there's one thing we learned from the " +# diplomat_launch_url: "launch in October" +# diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." +# diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" +# diplomat_join_pref_github: "Find your language locale file " +# diplomat_github_url: "on GitHub" +# diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" +# more_about_diplomat: "Learn More About Becoming a Diplomat" +# diplomat_subscribe_desc: "Get emails about i18n developments and levels to translate." +# 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 class is for you." +# ambassador_introduction: "This is a community we're building, and you are the connections. We've got Olark chats, emails, and social networks with lots of people to talk with and help get acquainted with the game and learn from. If you want to help people get involved and have fun, and get a good feel of the pulse of CodeCombat and where we're going, then this class might be for you." +# ambassador_attribute_1: "Communication skills. Be able to identify the problems players are having and help them solve them. Also, keep the rest of us informed about what players are saying, what they like and don't like and want more of!" +# ambassador_join_desc: "tell us a little about yourself, what you've done and what you'd be interested in doing. We'll go from there!" +# ambassador_join_note_strong: "Note" +# ambassador_join_note_desc: "One of our top priorities is to build multiplayer where players having difficulty solving levels can summon higher level wizards to help them. This will be a great way for ambassadors to do their thing. We'll keep you posted!" +# more_about_ambassador: "Learn More About Becoming an Ambassador" +# ambassador_subscribe_desc: "Get emails on support updates and multiplayer developments." +# counselor_summary: "None of the above roles fit what you are interested in? Do not worry, we are on the lookout for anybody who wants a hand in the development of CodeCombat! If you are interested in teaching, game development, open source management, or anything else that you think will be relevant to us, then this class is for you." +# counselor_introduction_1: "Do you have life experience? A different perspective on things that can help us decide how to shape CodeCombat? Of all these roles, this will probably take the least time, but individually you may make the most difference. We're on the lookout for wisened sages, particularly in areas like: teaching, game development, open source project management, technical recruiting, entrepreneurship, or design." +# counselor_introduction_2: "Or really anything that is relevant to the development of CodeCombat. If you have knowledge and want to share it to help grow this project, then this class might be for you." +# counselor_attribute_1: "Experience, in any of the areas above or something you think might be helpful." +# counselor_attribute_2: "A little bit of free time!" +# counselor_join_desc: "tell us a little about yourself, what you've done and what you'd be interested in doing. We'll put you in our contact list and be in touch when we could use advice (not too often)." +# more_about_counselor: "Learn More About Becoming a Counselor" +# changes_auto_save: "Changes are saved automatically when you toggle checkboxes." +# diligent_scribes: "Our Diligent Scribes:" +# powerful_archmages: "Our Powerful Archmages:" +# creative_artisans: "Our Creative Artisans:" +# brave_adventurers: "Our Brave Adventurers:" +# translating_diplomats: "Our Translating Diplomats:" +# helpful_ambassadors: "Our Helpful Ambassadors:" + +# classes: +# archmage_title: "Archmage" +# archmage_title_description: "(Coder)" +# artisan_title: "Artisan" +# artisan_title_description: "(Level Builder)" +# adventurer_title: "Adventurer" +# adventurer_title_description: "(Level Playtester)" +# scribe_title: "Scribe" +# scribe_title_description: "(Article Editor)" +# diplomat_title: "Diplomat" +# diplomat_title_description: "(Translator)" +# ambassador_title: "Ambassador" +# ambassador_title_description: "(Support)" +# counselor_title: "Counselor" +# counselor_title_description: "(Expert/Teacher)" + +# ladder: +# please_login: "Please log in first before playing a ladder game." +# my_matches: "My Matches" +# simulate: "Simulate" +# simulation_explanation: "By simulating games you can get your game ranked faster!" +# simulate_games: "Simulate Games!" +# simulate_all: "RESET AND SIMULATE GAMES" +# leaderboard: "Leaderboard" +# battle_as: "Battle as " +# summary_your: "Your " +# summary_matches: "Matches - " +# summary_wins: " Wins, " +# summary_losses: " Losses" +# rank_no_code: "No New Code to Rank" +# rank_my_game: "Rank My Game!" +# rank_submitting: "Submitting..." +# rank_submitted: "Submitted for Ranking" +# rank_failed: "Failed to Rank" +# rank_being_ranked: "Game Being Ranked" +# code_being_simulated: "Your new code is being simulated by other players for ranking. This will refresh as new matches come in." +# no_ranked_matches_pre: "No ranked matches for the " +# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." +# choose_opponent: "Choose an Opponent" +# tutorial_play: "Play Tutorial" +# tutorial_recommended: "Recommended if you've never played before" +# tutorial_skip: "Skip Tutorial" +# tutorial_not_sure: "Not sure what's going on?" +# tutorial_play_first: "Play the Tutorial first." +# simple_ai: "Simple AI" +# warmup: "Warmup" +# vs: "VS" + +# multiplayer_launch: +# introducing_dungeon_arena: "Introducing Dungeon Arena" +# new_way: "March 17, 2014: The new way to compete with code." +# to_battle: "To Battle, Developers!" +# modern_day_sorcerer: "You know how to code? That's badass. You're a modern-day sorcerer! Isn't about time that you used your magic coding powers to command your minions in epic combat? And we're not talking robots here." +# arenas_are_here: "CodeCombat head-to-head multiplayer arenas are here." +# ladder_explanation: "Choose your heroes, enchant your human or ogre armies, and climb your way over defeated fellow Wizards to reach the top of the ladders–then challenge your friends in our glorious, asynchronous multiplayer coding arenas. If you're feeling creative, you can even" +# fork_our_arenas: "fork our arenas" +# create_worlds: "and create your own worlds." +# javascript_rusty: "JavaScript a bit rusty? Don't worry; there's a" +# tutorial: "tutorial" +# new_to_programming: ". New to programming? Hit our beginner campaign to skill up." +# so_ready: "I Am So Ready for This" From 282fd50b3c1315bd96f096f09b18485bef23d69e Mon Sep 17 00:00:00 2001 From: Muhammad Nuzaihan Bin Kamal Luddin Date: Fri, 21 Mar 2014 09:58:52 +0800 Subject: [PATCH 07/21] Major additions to MS locale in Codecombat --- app/locale/ms-BA.coffee | 555 ---------------------------------------- app/locale/ms.coffee | 66 ++--- 2 files changed, 33 insertions(+), 588 deletions(-) delete mode 100644 app/locale/ms-BA.coffee diff --git a/app/locale/ms-BA.coffee b/app/locale/ms-BA.coffee deleted file mode 100644 index 9855cb92a..000000000 --- a/app/locale/ms-BA.coffee +++ /dev/null @@ -1,555 +0,0 @@ -module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa Malaysia", translation: - common: -# loading: "Loading..." -# saving: "Saving..." -# sending: "Sending..." - cancel: "Batal" -# save: "Save" -# delay_1_sec: "1 second" -# delay_3_sec: "3 seconds" -# delay_5_sec: "5 seconds" -# manual: "Manual" -# fork: "Fork" - play: "bermain" - - modal: - close: "Tutup" - okay: "Ok" - - not_found: - page_not_found: "Halaman tidak ditemui" - - nav: - play: "bermain" -# editor: "Editor" -# blog: "Blog" -# forum: "Forum" -# admin: "Admin" - home: "Halaman" - contribute: "Sumbangan" - legal: "Undang- undang" - about: "Tentang" - contact: "Hubungi" -# twitter_follow: "Follow" -# employers: "Employers" - -# versions: -# save_version_title: "Save New Version" -# new_major_version: "New Major Version" -# cla_prefix: "To save changes, first you must agree to our" -# cla_url: "CLA" -# cla_suffix: "." -# cla_agree: "I AGREE" - - login: - sign_up: "Buat Akaun" - log_in: "Log Masuk" - log_out: "Log Keluar" - recover: "perbaharui akaun" - -# recover: -# recover_account_title: "Recover Account" -# send_password: "Send Recovery Password" - - signup: -# create_account_title: "Create Account to Save Progress" - description: "Ianya percuma. Hanya berberapa langkah sahaja:" - email_announcements: "Terima pengesahan melalui Emel" - coppa: "13+ atau bukan- USA" - coppa_why: "(Kenapa?)" - creating: "Membuat Akaun..." - sign_up: "Daftar" - log_in: "log masuk" - -# home: -# slogan: "Learn to Code JavaScript by Playing a Game" -# no_ie: "CodeCombat does not run in Internet Explorer 9 or older. Sorry!" -# no_mobile: "CodeCombat wasn't designed for mobile devices and may not work!" -# play: "Play" -# old_browser: "Uh oh, your browser is too old to run CodeCombat. Sorry!" -# old_browser_suffix: "You can try anyway, but it probably won't work." -# campaign: "Campaign" -# for_beginners: "For Beginners" -# multiplayer: "Multiplayer" -# for_developers: "For Developers" - -# play: -# choose_your_level: "Choose Your Level" -# adventurer_prefix: "You can jump to any level below, or discuss the levels on " -# adventurer_forum: "the Adventurer forum" -# adventurer_suffix: "." -# campaign_beginner: "Beginner Campaign" -# campaign_beginner_description: "... in which you learn the wizardry of programming." -# campaign_dev: "Random Harder Levels" -# campaign_dev_description: "... in which you learn the interface while doing something a little harder." -# campaign_multiplayer: "Multiplayer Arenas" -# campaign_multiplayer_description: "... in which you code head-to-head against other players." -# campaign_player_created: "Player-Created" -# campaign_player_created_description: "... in which you battle against the creativity of your fellow Artisan Wizards." -# level_difficulty: "Difficulty: " -# play_as: "Play As " -# spectate: "Spectate" - -# 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." -# send: "Send Feedback" - - diplomat_suggestion: -# title: "Help translate CodeCombat!" -# sub_heading: "We need your language skills." - pitch_body: "We develop CodeCombat in English, but we already have players all over the world. Many of them want to play in Bahasa Melayu but don't speak English, so if you can speak both, please consider signing up to be a Diplomat and help translate both the CodeCombat website and all the levels into Bahasa Melayu." - missing_translations: "Until we can translate everything into Bahasa Melayu, you'll see English when Bahasa Melayu isn't available." -# learn_more: "Learn more about being a Diplomat" -# subscribe_as_diplomat: "Subscribe as a Diplomat" - -# wizard_settings: -# title: "Wizard Settings" -# customize_avatar: "Customize Your Avatar" -# clothes: "Clothes" -# trim: "Trim" -# cloud: "Cloud" -# spell: "Spell" -# boots: "Boots" -# hue: "Hue" -# saturation: "Saturation" -# lightness: "Lightness" - -# account_settings: -# title: "Account Settings" -# not_logged_in: "Log in or create an account to change your settings." -# autosave: "Changes Save Automatically" -# me_tab: "Me" -# picture_tab: "Picture" -# wizard_tab: "Wizard" -# password_tab: "Password" -# emails_tab: "Emails" -# admin: "Admin" -# gravatar_select: "Select which Gravatar photo to use" -# gravatar_add_photos: "Add thumbnails and photos to a Gravatar account for your email to choose an image." -# gravatar_add_more_photos: "Add more photos to your Gravatar account to access them here." -# wizard_color: "Wizard Clothes Color" -# new_password: "New Password" -# new_password_verify: "Verify" -# email_subscriptions: "Email Subscriptions" -# email_announcements: "Announcements" -# email_notifications: "Notifications" -# email_notifications_description: "Get periodic notifications for your account." -# email_announcements_description: "Get emails on the latest news and developments at CodeCombat." -# contributor_emails: "Contributor Class Emails" -# contribute_prefix: "We're looking for people to join our party! Check out the " -# contribute_page: "contribute page" -# contribute_suffix: " to find out more." -# email_toggle: "Toggle All" -# error_saving: "Error Saving" -# saved: "Changes Saved" -# password_mismatch: "Password does not match." - -# account_profile: -# edit_settings: "Edit Settings" -# profile_for_prefix: "Profile for " -# profile_for_suffix: "" -# profile: "Profile" -# user_not_found: "No user found. Check the URL?" -# gravatar_not_found_mine: "We couldn't find your profile associated with:" -# gravatar_not_found_email_suffix: "." -# gravatar_signup_prefix: "Sign up at " -# gravatar_signup_suffix: " to get set up!" -# gravatar_not_found_other: "Alas, there's no profile associated with this person's email address." -# gravatar_contact: "Contact" -# gravatar_websites: "Websites" -# gravatar_accounts: "As Seen On" -# gravatar_profile_link: "Full Gravatar Profile" - -# play_level: -# level_load_error: "Level could not be loaded: " -# done: "Done" -# grid: "Grid" -# customize_wizard: "Customize Wizard" -# home: "Home" -# guide: "Guide" -# multiplayer: "Multiplayer" -# restart: "Restart" -# goals: "Goals" -# action_timeline: "Action Timeline" -# click_to_select: "Click on a unit to select it." -# reload_title: "Reload All Code?" -# reload_really: "Are you sure you want to reload this level back to the beginning?" -# reload_confirm: "Reload All" -# victory_title_prefix: "" -# victory_title_suffix: " Complete" -# victory_sign_up: "Sign Up to Save Progress" -# victory_sign_up_poke: "Want to save your code? Create a free account!" -# victory_rate_the_level: "Rate the level: " -# victory_rank_my_game: "Rank My Game" -# victory_ranking_game: "Submitting..." -# victory_return_to_ladder: "Return to Ladder" -# victory_play_next_level: "Play Next Level" -# victory_go_home: "Go Home" -# victory_review: "Tell us more!" -# victory_hour_of_code_done: "Are You Done?" -# victory_hour_of_code_done_yes: "Yes, I'm finished with my Hour of Code™!" -# multiplayer_title: "Multiplayer Settings" -# multiplayer_link_description: "Give this link to anyone to have them join you." -# multiplayer_hint_label: "Hint:" -# multiplayer_hint: " Click the link to select all, then press ⌘-C or Ctrl-C to copy the link." -# multiplayer_coming_soon: "More multiplayer features to come!" -# guide_title: "Guide" -# tome_minion_spells: "Your Minions' Spells" -# tome_read_only_spells: "Read-Only Spells" -# tome_other_units: "Other Units" -# tome_cast_button_castable: "Cast Spell" -# tome_cast_button_casting: "Casting" -# tome_cast_button_cast: "Spell Cast" -# tome_autocast_delay: "Autocast Delay" -# tome_select_spell: "Select a Spell" -# tome_select_a_thang: "Select Someone for " -# tome_available_spells: "Available Spells" -# hud_continue: "Continue (shift+space)" -# spell_saved: "Spell Saved" -# skip_tutorial: "Skip (esc)" -# editor_config: "Editor Config" -# editor_config_title: "Editor Configuration" -# editor_config_keybindings_label: "Key Bindings" -# editor_config_keybindings_default: "Default (Ace)" -# editor_config_keybindings_description: "Adds additional shortcuts known from the common editors." -# editor_config_invisibles_label: "Show Invisibles" -# editor_config_invisibles_description: "Displays invisibles such as spaces or tabs." -# editor_config_indentguides_label: "Show Indent Guides" -# editor_config_indentguides_description: "Displays vertical lines to see indentation better." -# editor_config_behaviors_label: "Smart Behaviors" -# editor_config_behaviors_description: "Autocompletes brackets, braces, and quotes." - -# admin: -# av_title: "Admin Views" -# av_entities_sub_title: "Entities" -# av_entities_users_url: "Users" -# av_entities_active_instances_url: "Active Instances" -# av_other_sub_title: "Other" -# av_other_debug_base_url: "Base (for debugging base.jade)" -# u_title: "User List" -# lg_title: "Latest Games" - -# editor: -# main_title: "CodeCombat Editors" -# main_description: "Build your own levels, campaigns, units and educational content. We provide all the tools you need!" -# article_title: "Article Editor" -# article_description: "Write articles that give players overviews of programming concepts which can be used across a variety of levels and campaigns." -# thang_title: "Thang Editor" -# thang_description: "Build units, defining their default logic, graphics and audio. Currently only supports importing Flash exported vector graphics." -# level_title: "Level Editor" -# level_description: "Includes the tools for scripting, uploading audio, and constructing custom logic to create all sorts of levels. Everything we use ourselves!" -# security_notice: "Many major features in these editors are not currently enabled by default. As we improve the security of these systems, they will be made generally available. If you'd like to use these features sooner, " -# contact_us: "contact us!" -# hipchat_prefix: "You can also find us in our" -# hipchat_url: "HipChat room." -# revert: "Revert" -# revert_models: "Revert Models" -# 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_thangs_title: "Current Thangs" -# level_tab_thangs_conditions: "Starting Conditions" -# level_tab_thangs_add: "Add Thangs" -# 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" -# level_components_title: "Back to All Thangs" -# level_components_type: "Type" -# level_component_edit_title: "Edit Component" -# 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" -# new_thang_title: "Create a New Thang Type" -# new_level_title: "Create a New Level" -# article_search_title: "Search Articles Here" -# thang_search_title: "Search Thang Types Here" -# level_search_title: "Search Levels Here" - -# article: -# edit_btn_preview: "Preview" -# edit_article_title: "Edit Article" - - general: -# and: "and" - name: "Nama" -# body: "Body" -# version: "Version" -# commit_msg: "Commit Message" -# history: "History" -# version_history_for: "Version History for: " -# result: "Result" -# results: "Results" -# description: "Description" - or: "atau" - email: "Emel" -# password: "Password" - message: "Mesej" -# code: "Code" -# ladder: "Ladder" -# when: "When" -# opponent: "Opponent" -# rank: "Rank" -# score: "Score" -# win: "Win" -# loss: "Loss" -# tie: "Tie" -# easy: "Easy" -# medium: "Medium" -# hard: "Hard" - -# about: -# who_is_codecombat: "Who is CodeCombat?" -# why_codecombat: "Why CodeCombat?" -# who_description_prefix: "together started CodeCombat in 2013. We also created " -# who_description_suffix: "in 2008, growing it to the #1 web and iOS application for learning to write Chinese and Japanese characters." -# who_description_ending: "Now it's time to teach people to write code." -# why_paragraph_1: "When making Skritter, George didn't know how to program and was constantly frustrated by his inability to implement his ideas. Afterwards, he tried learning, but the lessons were too slow. His housemate, wanting to reskill and stop teaching, tried Codecademy, but \"got bored.\" Each week another friend started Codecademy, then dropped off. We realized it was the same problem we'd solved with Skritter: people learning a skill via slow, intensive lessons when what they need is fast, extensive practice. We know how to fix that." -# why_paragraph_2: "Need to learn to code? You don't need lessons. You need to write a lot of code and have a great time doing it." -# why_paragraph_3_prefix: "That's what programming is about. It's gotta be fun. Not fun like" -# why_paragraph_3_italic: "yay a badge" -# why_paragraph_3_center: "but fun like" -# why_paragraph_3_italic_caps: "NO MOM I HAVE TO FINISH THE LEVEL!" -# why_paragraph_3_suffix: "That's why CodeCombat is a multiplayer game, not a gamified lesson course. We won't stop until you can't stop--but this time, that's a good thing." -# why_paragraph_4: "If you're going to get addicted to some game, get addicted to this one and become one of the wizards of the tech age." -# why_ending: "And hey, it's free. " -# why_ending_url: "Start wizarding now!" -# george_description: "CEO, business guy, web designer, game designer, and champion of beginning programmers everywhere." -# scott_description: "Programmer extraordinaire, software architect, kitchen wizard, and master of finances. Scott is the reasonable one." -# nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." -# jeremy_description: "Customer support mage, usability tester, and community organizer; you've probably already spoken with Jeremy." -# michael_description: "Programmer, sys-admin, and undergrad technical wunderkind, Michael is the person keeping our servers online." -# glen_description: "Programmer and passionate game developer, with the motivation to make this world a better place, by developing things that mather. The word impossible can't be found in his dictionary. Learning new skills is his joy!" - -# legal: -# page_title: "Legal" -# opensource_intro: "CodeCombat is free to play and completely open source." -# opensource_description_prefix: "Check out " -# github_url: "our GitHub" -# opensource_description_center: "and help out if you like! CodeCombat is built on dozens of open source projects, and we love them. See " -# archmage_wiki_url: "our Archmage wiki" -# opensource_description_suffix: "for a list of the software that makes this game possible." -# 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. We intend to make money through recruitment eventually, but rest assured we will not distribute your personal information to interested companies without your explicit consent." -# security_title: "Security" -# 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" -# cost_description: "Currently, CodeCombat is 100% free! One of our main goals is to keep it that way, so that as many people can play as possible, regardless of place in life. If the sky darkens, we might have to charge subscriptions or for some content, but we'd rather not. With any luck, we'll be able to sustain the company with:" -# recruitment_title: "Recruitment" -# recruitment_description_prefix: "Here on CodeCombat, you're going to become a powerful wizard–not just in the game, but also in real life." -# url_hire_programmers: "No one can hire programmers fast enough" -# recruitment_description_suffix: "so once you've sharpened your skills and if you agree, we will demo your best coding accomplishments to the thousands of employers who are drooling for the chance to hire you. They pay us a little, they pay you" -# recruitment_description_italic: "a lot" -# recruitment_description_ending: "the site remains free and everybody's happy. That's the plan." -# copyrights_title: "Copyrights and Licenses" -# contributor_title: "Contributor License Agreement" -# contributor_description_prefix: "All contributions, both on the site and on our GitHub repository, are subject to our" -# cla_url: "CLA" -# contributor_description_suffix: "to which you should agree before contributing." -# code_title: "Code - MIT" -# code_description_prefix: "All code owned by CodeCombat or hosted on codecombat.com, both in the GitHub repository or in the codecombat.com database, is licensed under the" -# mit_license_url: "MIT license" -# code_description_suffix: "This includes all code in Systems and Components that are made available by CodeCombat for the purpose of creating levels." -# art_title: "Art/Music - Creative Commons " -# 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_artwork: "Artwork" -# art_sprites: "Sprites" -# art_other: "Any and all other non-code creative works that are made available when creating Levels." -# art_access: "Currently there is no universal, easy system for fetching these assets. In general, fetch them from the URLs as used by the site, contact us for assistance, or help us in extending the site to make these assets more easily accessible." -# art_paragraph_1: "For attribution, please name and link to codecombat.com near where the source is used or where appropriate for the medium. For example:" -# 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_desc: "All rights are reserved for Levels themselves. This includes" -# rights_scripts: "Scripts" -# rights_unit: "Unit configuration" -# rights_description: "Description" -# rights_writings: "Writings" -# rights_media: "Media (sounds, music) and any other creative content made specifically for that Level and not made generally available when creating Levels." -# rights_clarification: "To clarify, anything that is made available in the Level Editor for the purpose of making levels is under CC, whereas the content created with the Level Editor or uploaded in the course of creation of Levels is not." -# nutshell_title: "In a Nutshell" -# 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." - -# contribute: -# page_title: "Contributing" -# character_classes_title: "Character Classes" -# introduction_desc_intro: "We have high hopes for CodeCombat." -# 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, " -# 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, and Jeremy" -# alert_account_message_intro: "Hey there!" -# alert_account_message_pref: "To subscribe for class emails, you'll need to " -# alert_account_message_suf: "first." -# alert_account_message_create_url: "create an account" -# 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." -# class_attributes: "Class Attributes" -# archmage_attribute_1_pref: "Knowledge in " -# archmage_attribute_1_suf: ", or a desire to learn. Most of our code is in this language. If you're a fan of Ruby or Python, you'll feel right at home. It's JavaScript, but with a nicer syntax." -# archmage_attribute_2: "Some experience in programming and personal initiative. We'll help you get oriented, but we can't spend much time training you." -# how_to_join: "How To Join" -# join_desc_1: "Anyone can help out! Just check out our " -# join_desc_2: "to get started, and check the box below to mark yourself as a brave Archmage and get the latest news by email. Want to chat about what to do or how to get more deeply involved? " -# join_desc_3: ", or find us in our " -# join_desc_4: "and we'll go from there!" -# join_url_email: "Email us" -# join_url_hipchat: "public HipChat room" -# more_about_archmage: "Learn More About Becoming an Archmage" -# archmage_subscribe_desc: "Get emails on new coding opportunities and announcements." -# 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_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!" -# artisan_join_desc: "Use the Level Editor in these steps, give or take:" -# artisan_join_step1: "Read the documentation." -# artisan_join_step2: "Create a new level and explore existing levels." -# artisan_join_step3: "Find us in our public HipChat room for help." -# artisan_join_step4: "Post your levels on the forum for feedback." -# more_about_artisan: "Learn More About Becoming an Artisan" -# artisan_subscribe_desc: "Get emails on level editor updates and announcements." -# 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." -# adventurer_introduction: "Let's be clear about your role: you are the tank. You're 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 might be for you." -# adventurer_attribute_1: "A thirst for learning. You want to learn how to code and we want to teach you how to code. You'll probably be doing most of the teaching in this case, though." -# adventurer_attribute_2: "Charismatic. Be gentle but articulate about what needs improving, and offer suggestions on how to improve." -# adventurer_join_pref: "Either get together with (or recruit!) an Artisan and work with them, or check the box below to receive emails when there are new levels to test. We'll also be posting about levels to review on our networks like" -# adventurer_forum_url: "our forum" -# adventurer_join_suf: "so if you prefer to be notified those ways, sign up there!" -# more_about_adventurer: "Learn More About Becoming an Adventurer" -# adventurer_subscribe_desc: "Get emails when there are new levels to test." -# 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 " -# scribe_summary_suf: " has built. If you enjoy explaining programming concepts, then this class is for you." -# scribe_introduction_pref: "CodeCombat isn't just going to be a bunch of levels. It will also include a resource for knowledge, a wiki of programming concepts that levels can hook into. That way rather than each Artisan having to describe in detail what a comparison operator is, they can simply link their level to the Article describing them that is already written for the player's edification. Something along the lines of what the " -# scribe_introduction_url_mozilla: "Mozilla Developer Network" -# scribe_introduction_suf: " has built. If your idea of fun is articulating the concepts of programming in Markdown form, then this class might be for you." -# scribe_attribute_1: "Skill in words is pretty much all you need. Not only grammar and spelling, but able to convey complicated ideas to others." -# contact_us_url: "Contact us" -# scribe_join_description: "tell us a little about yourself, your experience with programming and what sort of things you'd like to write about. We'll go from there!" -# more_about_scribe: "Learn More About Becoming a Scribe" -# scribe_subscribe_desc: "Get emails about article writing announcements." -# 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." -# diplomat_introduction_pref: "So, if there's one thing we learned from the " -# diplomat_launch_url: "launch in October" -# diplomat_introduction_suf: "it's that there is sizeable interest in CodeCombat in other countries! We're building a corps of translators eager to turn one set of words into another set of words to get CodeCombat as accessible across the world as possible. If you like getting sneak peeks at upcoming content and getting these levels to your fellow nationals ASAP, then this class might be for you." -# diplomat_attribute_1: "Fluency in English and the language you would like to translate to. When conveying complicated ideas, it's important to have a strong grasp in both!" -# diplomat_join_pref_github: "Find your language locale file " -# diplomat_github_url: "on GitHub" -# diplomat_join_suf_github: ", edit it online, and submit a pull request. Also, check this box below to keep up-to-date on new internationalization developments!" -# more_about_diplomat: "Learn More About Becoming a Diplomat" -# diplomat_subscribe_desc: "Get emails about i18n developments and levels to translate." -# 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 class is for you." -# ambassador_introduction: "This is a community we're building, and you are the connections. We've got Olark chats, emails, and social networks with lots of people to talk with and help get acquainted with the game and learn from. If you want to help people get involved and have fun, and get a good feel of the pulse of CodeCombat and where we're going, then this class might be for you." -# ambassador_attribute_1: "Communication skills. Be able to identify the problems players are having and help them solve them. Also, keep the rest of us informed about what players are saying, what they like and don't like and want more of!" -# ambassador_join_desc: "tell us a little about yourself, what you've done and what you'd be interested in doing. We'll go from there!" -# ambassador_join_note_strong: "Note" -# ambassador_join_note_desc: "One of our top priorities is to build multiplayer where players having difficulty solving levels can summon higher level wizards to help them. This will be a great way for ambassadors to do their thing. We'll keep you posted!" -# more_about_ambassador: "Learn More About Becoming an Ambassador" -# ambassador_subscribe_desc: "Get emails on support updates and multiplayer developments." -# counselor_summary: "None of the above roles fit what you are interested in? Do not worry, we are on the lookout for anybody who wants a hand in the development of CodeCombat! If you are interested in teaching, game development, open source management, or anything else that you think will be relevant to us, then this class is for you." -# counselor_introduction_1: "Do you have life experience? A different perspective on things that can help us decide how to shape CodeCombat? Of all these roles, this will probably take the least time, but individually you may make the most difference. We're on the lookout for wisened sages, particularly in areas like: teaching, game development, open source project management, technical recruiting, entrepreneurship, or design." -# counselor_introduction_2: "Or really anything that is relevant to the development of CodeCombat. If you have knowledge and want to share it to help grow this project, then this class might be for you." -# counselor_attribute_1: "Experience, in any of the areas above or something you think might be helpful." -# counselor_attribute_2: "A little bit of free time!" -# counselor_join_desc: "tell us a little about yourself, what you've done and what you'd be interested in doing. We'll put you in our contact list and be in touch when we could use advice (not too often)." -# more_about_counselor: "Learn More About Becoming a Counselor" -# changes_auto_save: "Changes are saved automatically when you toggle checkboxes." -# diligent_scribes: "Our Diligent Scribes:" -# powerful_archmages: "Our Powerful Archmages:" -# creative_artisans: "Our Creative Artisans:" -# brave_adventurers: "Our Brave Adventurers:" -# translating_diplomats: "Our Translating Diplomats:" -# helpful_ambassadors: "Our Helpful Ambassadors:" - -# classes: -# archmage_title: "Archmage" -# archmage_title_description: "(Coder)" -# artisan_title: "Artisan" -# artisan_title_description: "(Level Builder)" -# adventurer_title: "Adventurer" -# adventurer_title_description: "(Level Playtester)" -# scribe_title: "Scribe" -# scribe_title_description: "(Article Editor)" -# diplomat_title: "Diplomat" -# diplomat_title_description: "(Translator)" -# ambassador_title: "Ambassador" -# ambassador_title_description: "(Support)" -# counselor_title: "Counselor" -# counselor_title_description: "(Expert/Teacher)" - -# ladder: -# please_login: "Please log in first before playing a ladder game." -# my_matches: "My Matches" -# simulate: "Simulate" -# simulation_explanation: "By simulating games you can get your game ranked faster!" -# simulate_games: "Simulate Games!" -# simulate_all: "RESET AND SIMULATE GAMES" -# leaderboard: "Leaderboard" -# battle_as: "Battle as " -# summary_your: "Your " -# summary_matches: "Matches - " -# summary_wins: " Wins, " -# summary_losses: " Losses" -# rank_no_code: "No New Code to Rank" -# rank_my_game: "Rank My Game!" -# rank_submitting: "Submitting..." -# rank_submitted: "Submitted for Ranking" -# rank_failed: "Failed to Rank" -# rank_being_ranked: "Game Being Ranked" -# code_being_simulated: "Your new code is being simulated by other players for ranking. This will refresh as new matches come in." -# no_ranked_matches_pre: "No ranked matches for the " -# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." -# choose_opponent: "Choose an Opponent" -# tutorial_play: "Play Tutorial" -# tutorial_recommended: "Recommended if you've never played before" -# tutorial_skip: "Skip Tutorial" -# tutorial_not_sure: "Not sure what's going on?" -# tutorial_play_first: "Play the Tutorial first." -# simple_ai: "Simple AI" -# warmup: "Warmup" -# vs: "VS" - -# multiplayer_launch: -# introducing_dungeon_arena: "Introducing Dungeon Arena" -# new_way: "March 17, 2014: The new way to compete with code." -# to_battle: "To Battle, Developers!" -# modern_day_sorcerer: "You know how to code? That's badass. You're a modern-day sorcerer! Isn't about time that you used your magic coding powers to command your minions in epic combat? And we're not talking robots here." -# arenas_are_here: "CodeCombat head-to-head multiplayer arenas are here." -# ladder_explanation: "Choose your heroes, enchant your human or ogre armies, and climb your way over defeated fellow Wizards to reach the top of the ladders–then challenge your friends in our glorious, asynchronous multiplayer coding arenas. If you're feeling creative, you can even" -# fork_our_arenas: "fork our arenas" -# create_worlds: "and create your own worlds." -# javascript_rusty: "JavaScript a bit rusty? Don't worry; there's a" -# tutorial: "tutorial" -# new_to_programming: ". New to programming? Hit our beginner campaign to skill up." -# so_ready: "I Am So Ready for This" diff --git a/app/locale/ms.coffee b/app/locale/ms.coffee index 7adfd458e..b3d1afb91 100644 --- a/app/locale/ms.coffee +++ b/app/locale/ms.coffee @@ -4,7 +4,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa saving: "Menyimpan data..." sending: "Menghantar maklumat.." cancel: "Batal" -# save: "Save" + save: "Simpan data" # delay_1_sec: "1 second" # delay_3_sec: "3 seconds" # delay_5_sec: "5 seconds" @@ -21,10 +21,10 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa nav: play: "Mula Main" - editor: "Editor" - blog: "Blog" - forum: "Forum" - admin: "Admin" +# editor: "Editor" +# blog: "Blog" +# forum: "Forum" +# admin: "Admin" home: "Halaman" contribute: "Sumbangan" legal: "Undang-undang" @@ -151,9 +151,9 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # saved: "Changes Saved" # password_mismatch: "Password does not match." -# account_profile: + account_profile: # edit_settings: "Edit Settings" -# profile_for_prefix: "Profile for " + profile_for_prefix: "Profil untuk " # profile_for_suffix: "" # profile: "Profile" # user_not_found: "No user found. Check the URL?" @@ -290,46 +290,46 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # and: "and" name: "Nama" # body: "Body" -# version: "Version" + version: "Versi" # commit_msg: "Commit Message" # history: "History" # version_history_for: "Version History for: " -# result: "Result" -# results: "Results" -# description: "Description" + result: "Keputusan" + results: "Keputusan-keputusan" + description: "Deskripsi" or: "atau" email: "Emel" # password: "Password" message: "Mesej" -# code: "Code" -# ladder: "Ladder" -# when: "When" -# opponent: "Opponent" + code: "Kod" +# ladder: "Tangga" + when: "Bila" +# opponent: "Penentang" # rank: "Rank" -# score: "Score" -# win: "Win" -# loss: "Loss" -# tie: "Tie" + score: "Mata" + win: "Menang" +# loss: "Kalah" + tie: "Seri" # easy: "Easy" # medium: "Medium" # hard: "Hard" # about: -# who_is_codecombat: "Who is CodeCombat?" -# why_codecombat: "Why CodeCombat?" -# who_description_prefix: "together started CodeCombat in 2013. We also created " -# who_description_suffix: "in 2008, growing it to the #1 web and iOS application for learning to write Chinese and Japanese characters." -# who_description_ending: "Now it's time to teach people to write code." + who_is_codecombat: "Siapa adalah CodeCombat?" + why_codecombat: "Kenapa CodeCombat?" + who_description_prefix: "bersama memulai CodeCombat in 2013. Kami juga membuat (mengaturcara) " + who_description_suffix: "dalam 2008, mengembangkan ia kepada applikasi iOS dan applikasi web #1 untuk belajar menaip dalam karakter Cina dan Jepun." + who_description_ending: "Sekarang, sudah tiba masanya untuk mengajar orang untuk menaip kod." # why_paragraph_1: "When making Skritter, George didn't know how to program and was constantly frustrated by his inability to implement his ideas. Afterwards, he tried learning, but the lessons were too slow. His housemate, wanting to reskill and stop teaching, tried Codecademy, but \"got bored.\" Each week another friend started Codecademy, then dropped off. We realized it was the same problem we'd solved with Skritter: people learning a skill via slow, intensive lessons when what they need is fast, extensive practice. We know how to fix that." -# why_paragraph_2: "Need to learn to code? You don't need lessons. You need to write a lot of code and have a great time doing it." -# why_paragraph_3_prefix: "That's what programming is about. It's gotta be fun. Not fun like" -# why_paragraph_3_italic: "yay a badge" -# why_paragraph_3_center: "but fun like" -# why_paragraph_3_italic_caps: "NO MOM I HAVE TO FINISH THE LEVEL!" -# why_paragraph_3_suffix: "That's why CodeCombat is a multiplayer game, not a gamified lesson course. We won't stop until you can't stop--but this time, that's a good thing." -# why_paragraph_4: "If you're going to get addicted to some game, get addicted to this one and become one of the wizards of the tech age." -# why_ending: "And hey, it's free. " -# why_ending_url: "Start wizarding now!" + why_paragraph_2: "Mahu belajar untuk membina kod? Anda tidak perlu membaca dan belajar. Anda perlu menaip kod yang banyak dan bersuka-suka dengan masa yang terluang." + why_paragraph_3_prefix: "Itulah semua tentang pengaturcaraan. Ia harus membuat anda gembira dan rasa berpuas hati. Tidak seperti" + why_paragraph_3_italic: "yay satu badge" +# why_paragraph_3_center: "tapi bersukaria seperti" + why_paragraph_3_italic_caps: "TIDAK MAK SAYA PERLU HABISKAN LEVEL!" + why_paragraph_3_suffix: "Itulah kenapa CodeCombat adalah permainan multiplayer, tapi bukan sebuah khursus dibuat sebagai permainan. Kami tidak akan berhenti sehingga kamu tidak akan--tetapi buat masa kini, itulah perkara yang baik." +# why_paragraph_4: "Jika kamu mahu berasa ketagih terhadap sesuatu permainan komputer, jadilah ketagih kepada permainan ini dan jadilah seorang pakar dalam zaman teknologi terkini." + why_ending: "Dan ia adalah percuma! " + why_ending_url: "Mulalah bermain sekarang!" # george_description: "CEO, business guy, web designer, game designer, and champion of beginning programmers everywhere." # scott_description: "Programmer extraordinaire, software architect, kitchen wizard, and master of finances. Scott is the reasonable one." # nick_description: "Programming wizard, eccentric motivation mage, and upside-down experimenter. Nick can do anything and chooses to build CodeCombat." From 9e4908ade2eb85e5a364ee711e474eae00e8b1f9 Mon Sep 17 00:00:00 2001 From: Nick Winter Date: Thu, 20 Mar 2014 19:18:46 -0700 Subject: [PATCH 08/21] A couple ladder tweaks. --- app/lib/simulator/Simulator.coffee | 2 ++ app/templates/play/ladder.jade | 2 +- app/templates/play/ladder/ladder_tab.jade | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/lib/simulator/Simulator.coffee b/app/lib/simulator/Simulator.coffee index 6dad97a9a..a91ec2306 100644 --- a/app/lib/simulator/Simulator.coffee +++ b/app/lib/simulator/Simulator.coffee @@ -101,6 +101,8 @@ module.exports = class Simulator extends CocoClass handleTaskResultsTransferSuccess: (result) => console.log "Task registration result: #{JSON.stringify result}" @trigger 'statusUpdate', 'Results were successfully sent back to server!' + simulatedBy = parseInt($('#simulated-by-you').text(), 10) + 1 + $('#simulated-by-you').text(simulatedBy) handleTaskResultsTransferError: (error) => @trigger 'statusUpdate', 'There was an error sending the results back to the server.' diff --git a/app/templates/play/ladder.jade b/app/templates/play/ladder.jade index 6c0c68790..d9f8bd6c0 100644 --- a/app/templates/play/ladder.jade +++ b/app/templates/play/ladder.jade @@ -54,6 +54,6 @@ block content span#simulated-by-you= me.get('simulatedBy') || 0 p.simulation-count - span(data-i18n="ladder.games_simulated_by") Games simulated for you: + span(data-i18n="ladder.games_simulated_for") Games simulated for you: | span#simulated-for-you= me.get('simulatedFor') || 0 \ No newline at end of file diff --git a/app/templates/play/ladder/ladder_tab.jade b/app/templates/play/ladder/ladder_tab.jade index 092e60372..3d41c4ec5 100644 --- a/app/templates/play/ladder/ladder_tab.jade +++ b/app/templates/play/ladder/ladder_tab.jade @@ -27,7 +27,7 @@ div#columns.row a(href="/play/level/#{level.get('slug') || level.id}/?team=#{team.otherTeam}&opponent=#{session.id}") span(data-i18n="ladder.fight") Fight! - if !inTheTop + if !inTheTop && ! me.get('anonymous') tr(class="active") td(colspan=4).ellipsis-row ... for session in team.leaderboard.nearbySessions() From cf4f8dc9b744dd5a1eef0c11d0c6ce76ef01a9ff Mon Sep 17 00:00:00 2001 From: Muhammad Nuzaihan Bin Kamal Luddin Date: Fri, 21 Mar 2014 10:45:11 +0800 Subject: [PATCH 09/21] Add some must-have information in translation --- app/locale/ms.coffee | 74 ++++++++++++++++++++++---------------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/app/locale/ms.coffee b/app/locale/ms.coffee index b3d1afb91..2161a2df7 100644 --- a/app/locale/ms.coffee +++ b/app/locale/ms.coffee @@ -10,7 +10,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # delay_5_sec: "5 seconds" # manual: "Manual" # fork: "Fork" - play: "Mula Main" + play: "Mula" modal: close: "Tutup" @@ -20,7 +20,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa page_not_found: "Halaman tidak ditemui" nav: - play: "Mula Main" + play: "Mula" # editor: "Editor" # blog: "Blog" # forum: "Forum" @@ -36,10 +36,10 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa versions: save_version_title: "Simpan versi baru" new_major_version: "Versi utama yang baru" -# cla_prefix: "To save changes, first you must agree to our" + cla_prefix: "Untuk menyimpan pengubahsuaian, anda perlu setuju dengan" # cla_url: "CLA" # cla_suffix: "." -# cla_agree: "I AGREE" + cla_agree: "SAYA SETUJU" login: sign_up: "Buat Akaun" @@ -61,13 +61,13 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa sign_up: "Daftar" log_in: "Log Masuk" -# home: -# slogan: "Learn to Code JavaScript by Playing a Game" -# no_ie: "CodeCombat does not run in Internet Explorer 9 or older. Sorry!" -# no_mobile: "CodeCombat wasn't designed for mobile devices and may not work!" -# play: "Play" -# old_browser: "Uh oh, your browser is too old to run CodeCombat. Sorry!" -# old_browser_suffix: "You can try anyway, but it probably won't work." + home: + slogan: "Belajar Kod JavaScript Dengan Permainan" + no_ie: "CodeCombat tidak berfungsi dalam Internet Explorer 9 dan terdahulu. Maaf!" + no_mobile: "CodeCombat tidak dibangunkan untuk telefon mudah-alih dan tablet and tidak akan berfungsi!" + play: "Mula" + old_browser: "Uh oh, browser anda terlalu lama untuk CodeCombat berfungsi. Maaf!" + old_browser_suffix: "Anda boleh mencuba, tapi mungkin ia tidak akan berfungsi." # campaign: "Campaign" # for_beginners: "For Beginners" # multiplayer: "Multiplayer" @@ -92,21 +92,21 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa contact: contact_us: "Hubungi 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" + welcome: "Kami suka mendengar dari anda! Gunakan form ini dan hantar kami emel. " + contribute_prefix: "Jikalau anda berasa besar hati untuk menyumbang, sila lihat " + contribute_page: "laman kami untuk menyumbang" # contribute_suffix: "!" -# forum_prefix: "For anything public, please try " -# forum_page: "our forum" -# forum_suffix: " instead." + forum_prefix: "Untuk perkara lain, sila cuba " + forum_page: "forum kami" +# forum_suffix: "." send: "Hantar Maklumbalas" diplomat_suggestion: -# title: "Help translate CodeCombat!" -# sub_heading: "We need your language skills." - pitch_body: "We develop CodeCombat in English, but we already have players all over the world. Many of them want to play in Bahasa Melayu but don't speak English, so if you can speak both, please consider signing up to be a Diplomat and help translate both the CodeCombat website and all the levels into Bahasa Melayu." - missing_translations: "Until we can translate everything into Bahasa Melayu, you'll see English when Bahasa Melayu isn't available." -# learn_more: "Learn more about being a Diplomat" + title: "Kami perlu menterjemahkan CodeCombat!" + sub_heading: "Kami memerlukan kemahiran bahasa anda." + pitch_body: "Kami membina CodeCombat dalam inggeris, tetapi kami sudah ada pemain dari seluruh dunia. Kebanyakan mereka mahu bermain dalam Bahasa Melayu dan tidak memahami bahasa Inggeris, jikalau anda boleh tertutur dalam kedua-dua bahasa, harap anda boleh daftar untuk menjadi Diplomat dan menolong menterjemahkan laman CodeCombat dan kesemua level kepada Bahasa Melayu." + missing_translations: "Sehingga kami dalam menterjemahkan kesemua kepada Bahasa Melayu, anda akan melihat Inggeris apabila Bahasa Melayu tiada dalam penterjemahan." + learn_more: "Ketahui lebih lanjut untuk menjadi ahli Diplomat" # subscribe_as_diplomat: "Subscribe as a Diplomat" # wizard_settings: @@ -155,17 +155,17 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # edit_settings: "Edit Settings" profile_for_prefix: "Profil untuk " # profile_for_suffix: "" -# profile: "Profile" -# user_not_found: "No user found. Check the URL?" -# gravatar_not_found_mine: "We couldn't find your profile associated with:" + profile: "Profil" + user_not_found: "Pengguna tiada. Semak kembali URL?" + gravatar_not_found_mine: "Kami tidak dapat mencari profil anda yang mengenai dengan:" # gravatar_not_found_email_suffix: "." -# gravatar_signup_prefix: "Sign up at " -# gravatar_signup_suffix: " to get set up!" + gravatar_signup_prefix: "Daftar di " + gravatar_signup_suffix: " untuk mula!" # gravatar_not_found_other: "Alas, there's no profile associated with this person's email address." -# gravatar_contact: "Contact" -# gravatar_websites: "Websites" -# gravatar_accounts: "As Seen On" -# gravatar_profile_link: "Full Gravatar Profile" + gravatar_contact: "Hubungi" + gravatar_websites: "Lelaman" +# gravatar_accounts: "Juga didapati di" + gravatar_profile_link: "Profil Penuh Gravatar" # play_level: # level_load_error: "Level could not be loaded: " @@ -287,11 +287,11 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # edit_article_title: "Edit Article" general: -# and: "and" + and: "dan" name: "Nama" # body: "Body" version: "Versi" -# commit_msg: "Commit Message" + commit_msg: "Mesej Commit" # history: "History" # version_history_for: "Version History for: " result: "Keputusan" @@ -299,12 +299,12 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa description: "Deskripsi" or: "atau" email: "Emel" -# password: "Password" + password: "Kata Laluan" message: "Mesej" code: "Kod" -# ladder: "Tangga" + ladder: "Tangga" when: "Bila" -# opponent: "Penentang" + opponent: "Penentang" # rank: "Rank" score: "Mata" win: "Menang" @@ -314,7 +314,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa # medium: "Medium" # hard: "Hard" -# about: + about: who_is_codecombat: "Siapa adalah CodeCombat?" why_codecombat: "Kenapa CodeCombat?" who_description_prefix: "bersama memulai CodeCombat in 2013. Kami juga membuat (mengaturcara) " From 6e32b79921a2abf3eca3829dd7f1a39dfea52025 Mon Sep 17 00:00:00 2001 From: Muhammad Nuzaihan Bin Kamal Luddin Date: Fri, 21 Mar 2014 10:46:27 +0800 Subject: [PATCH 10/21] and to dan --- app/locale/ms.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/locale/ms.coffee b/app/locale/ms.coffee index 2161a2df7..a9c2bcf4f 100644 --- a/app/locale/ms.coffee +++ b/app/locale/ms.coffee @@ -64,7 +64,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa home: slogan: "Belajar Kod JavaScript Dengan Permainan" no_ie: "CodeCombat tidak berfungsi dalam Internet Explorer 9 dan terdahulu. Maaf!" - no_mobile: "CodeCombat tidak dibangunkan untuk telefon mudah-alih dan tablet and tidak akan berfungsi!" + no_mobile: "CodeCombat tidak dibangunkan untuk telefon mudah-alih dan tablet dan tidak akan berfungsi!" play: "Mula" old_browser: "Uh oh, browser anda terlalu lama untuk CodeCombat berfungsi. Maaf!" old_browser_suffix: "Anda boleh mencuba, tapi mungkin ia tidak akan berfungsi." From 3047d5c696555873dcfde20d4eb2f067c9071844 Mon Sep 17 00:00:00 2001 From: Muhammad Nuzaihan Bin Kamal Luddin Date: Fri, 21 Mar 2014 10:47:46 +0800 Subject: [PATCH 11/21] Minor changes --- app/locale/ms.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/locale/ms.coffee b/app/locale/ms.coffee index a9c2bcf4f..bf8046901 100644 --- a/app/locale/ms.coffee +++ b/app/locale/ms.coffee @@ -104,7 +104,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa diplomat_suggestion: title: "Kami perlu menterjemahkan CodeCombat!" sub_heading: "Kami memerlukan kemahiran bahasa anda." - pitch_body: "Kami membina CodeCombat dalam inggeris, tetapi kami sudah ada pemain dari seluruh dunia. Kebanyakan mereka mahu bermain dalam Bahasa Melayu dan tidak memahami bahasa Inggeris, jikalau anda boleh tertutur dalam kedua-dua bahasa, harap anda boleh daftar untuk menjadi Diplomat dan menolong menterjemahkan laman CodeCombat dan kesemua level kepada Bahasa Melayu." + pitch_body: "Kami membina CodeCombat dalam Bahasa Inggeris, tetapi kami sudah ada pemain dari seluruh dunia. Kebanyakan mereka mahu bermain dalam Bahasa Melayu dan tidak memahami bahasa Inggeris, jikalau anda boleh tertutur dalam kedua-dua bahasa, harap anda boleh daftar untuk menjadi Diplomat dan menolong menterjemahkan laman CodeCombat dan kesemua level kepada Bahasa Melayu." missing_translations: "Sehingga kami dalam menterjemahkan kesemua kepada Bahasa Melayu, anda akan melihat Inggeris apabila Bahasa Melayu tiada dalam penterjemahan." learn_more: "Ketahui lebih lanjut untuk menjadi ahli Diplomat" # subscribe_as_diplomat: "Subscribe as a Diplomat" From 53f39e9cc7b9f587c56c9eb9681f9a32fa8dbe6b Mon Sep 17 00:00:00 2001 From: Nick Winter Date: Thu, 20 Mar 2014 21:25:20 -0700 Subject: [PATCH 12/21] Pointed locale at correct file. --- app/locale/locale.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/locale/locale.coffee b/app/locale/locale.coffee index fb32c09c1..e53b3b1d6 100644 --- a/app/locale/locale.coffee +++ b/app/locale/locale.coffee @@ -50,4 +50,4 @@ module.exports = uk: require './uk' # українська мова, Ukranian hi: require './hi' # मानक हिन्दी, Hindi ur: require './ur' # اُردُو, Urdu - 'ms-BA': require './ms-BA' # Bahasa Melayu, Bahasa Malaysia + ms: require './ms' # Bahasa Melayu, Bahasa Malaysia From 89d720dc30968af1ab57b4df2dfb8ad98aa4035f Mon Sep 17 00:00:00 2001 From: Nick Winter Date: Thu, 20 Mar 2014 21:29:03 -0700 Subject: [PATCH 13/21] Uncommented multiplayer modal i18n section for Polish. --- app/locale/pl.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/locale/pl.coffee b/app/locale/pl.coffee index 2ac043808..470f7f3c7 100644 --- a/app/locale/pl.coffee +++ b/app/locale/pl.coffee @@ -540,7 +540,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish warmup: "Rozgrzewka" # vs: "VS" -# multiplayer_launch: + multiplayer_launch: introducing_dungeon_arena: "Oto Dungeon Arena" new_way: "17. marca 2014: Nowy sposób, by współzawodniczyć dzięki programowaniu." to_battle: "Do broni, developerzy!" From f52dced0ce440b8c598db2da82ccd218575c618a Mon Sep 17 00:00:00 2001 From: Karthig Date: Wed, 19 Mar 2014 00:11:11 -0400 Subject: [PATCH 14/21] - initial implementation of antiscroll, squashed --- app/assets/index.html | 18 +- vendor/scripts/antiscroll.js | 471 +++++++++++++++++++++++++++++++++++ vendor/styles/antiscroll.css | 63 +++++ 3 files changed, 548 insertions(+), 4 deletions(-) create mode 100644 vendor/scripts/antiscroll.js create mode 100644 vendor/styles/antiscroll.css diff --git a/app/assets/index.html b/app/assets/index.html index 0bb824a1b..bd763c341 100644 --- a/app/assets/index.html +++ b/app/assets/index.html @@ -31,8 +31,7 @@ - - + @@ -112,8 +111,12 @@
-
- +
+
+
+
+
+ @@ -155,5 +158,12 @@ (function(a){if(window.filepicker){return}var b=a.createElement("script");b.type="text/javascript";b.async=!0;b.src=("https:"===a.location.protocol?"https:":"http:")+"//api.filepicker.io/v1/filepicker.js";var c=a.getElementsByTagName("script")[0];c.parentNode.insertBefore(b,c);var d={};d._queue=[];var e="pick,pickMultiple,pickAndStore,read,write,writeUrl,export,convert,store,storeUrl,remove,stat,setKey,constructWidget,makeDropPane".split(",");var f=function(a,b){return function(){b.push([a,arguments])}};for(var g=0;g + + + diff --git a/vendor/scripts/antiscroll.js b/vendor/scripts/antiscroll.js new file mode 100644 index 000000000..2de1812d6 --- /dev/null +++ b/vendor/scripts/antiscroll.js @@ -0,0 +1,471 @@ +(function ($) { + + /** + * Augment jQuery prototype. + */ + + $.fn.antiscroll = function (options) { + return this.each(function () { + if ($(this).data('antiscroll')) { + $(this).data('antiscroll').destroy(); + } + + $(this).data('antiscroll', new $.Antiscroll(this, options)); + }); + }; + + /** + * Expose constructor. + */ + + $.Antiscroll = Antiscroll; + + /** + * Antiscroll pane constructor. + * + * @param {Element|jQuery} main pane + * @parma {Object} options + * @api public + */ + + function Antiscroll (el, opts) { + this.el = $(el); + this.options = opts || {}; + + this.x = (false !== this.options.x) || this.options.forceHorizontal; + this.y = (false !== this.options.y) || this.options.forceVertical; + this.autoHide = false !== this.options.autoHide; + this.padding = undefined == this.options.padding ? 2 : this.options.padding; + + this.inner = this.el.find('.antiscroll-inner'); + this.inner.css({ + 'width': '+=' + (this.y ? scrollbarSize() : 0) + , 'height': '+=' + (this.x ? scrollbarSize() : 0) + }); + + this.refresh(); + }; + + /** + * refresh scrollbars + * + * @api public + */ + + Antiscroll.prototype.refresh = function() { + var needHScroll = this.inner.get(0).scrollWidth > this.el.width() + (this.y ? scrollbarSize() : 0), + needVScroll = this.inner.get(0).scrollHeight > this.el.height() + (this.x ? scrollbarSize() : 0); + + if (this.x) { + if (!this.horizontal && needHScroll) { + this.horizontal = new Scrollbar.Horizontal(this); + } else if (this.horizontal && !needHScroll) { + this.horizontal.destroy(); + this.horizontal = null; + } else if (this.horizontal) { + this.horizontal.update(); + } + } + + if (this.y) { + if (!this.vertical && needVScroll) { + this.vertical = new Scrollbar.Vertical(this); + } else if (this.vertical && !needVScroll) { + this.vertical.destroy(); + this.vertical = null; + } else if (this.vertical) { + this.vertical.update(); + } + } + }; + + /** + * Cleans up. + * + * @return {Antiscroll} for chaining + * @api public + */ + + Antiscroll.prototype.destroy = function () { + if (this.horizontal) { + this.horizontal.destroy(); + this.horizontal = null + } + if (this.vertical) { + this.vertical.destroy(); + this.vertical = null + } + return this; + }; + + /** + * Rebuild Antiscroll. + * + * @return {Antiscroll} for chaining + * @api public + */ + + Antiscroll.prototype.rebuild = function () { + this.destroy(); + this.inner.attr('style', ''); + Antiscroll.call(this, this.el, this.options); + return this; + }; + + /** + * Scrollbar constructor. + * + * @param {Element|jQuery} element + * @api public + */ + + function Scrollbar (pane) { + this.pane = pane; + this.pane.el.append(this.el); + this.innerEl = this.pane.inner.get(0); + + this.dragging = false; + this.enter = false; + this.shown = false; + + // hovering + this.pane.el.mouseenter($.proxy(this, 'mouseenter')); + this.pane.el.mouseleave($.proxy(this, 'mouseleave')); + + // dragging + this.el.mousedown($.proxy(this, 'mousedown')); + + // scrolling + this.innerPaneScrollListener = $.proxy(this, 'scroll'); + this.pane.inner.scroll(this.innerPaneScrollListener); + + // wheel -optional- + this.innerPaneMouseWheelListener = $.proxy(this, 'mousewheel'); + this.pane.inner.bind('mousewheel', this.innerPaneMouseWheelListener); + + // show + var initialDisplay = this.pane.options.initialDisplay; + + if (initialDisplay !== false) { + this.show(); + if (this.pane.autoHide) { + this.hiding = setTimeout($.proxy(this, 'hide'), parseInt(initialDisplay, 10) || 3000); + } + } + }; + + /** + * Cleans up. + * + * @return {Scrollbar} for chaining + * @api public + */ + + Scrollbar.prototype.destroy = function () { + this.el.remove(); + this.pane.inner.unbind('scroll', this.innerPaneScrollListener); + this.pane.inner.unbind('mousewheel', this.innerPaneMouseWheelListener); + return this; + }; + + /** + * Called upon mouseenter. + * + * @api private + */ + + Scrollbar.prototype.mouseenter = function () { + this.enter = true; + this.show(); + }; + + /** + * Called upon mouseleave. + * + * @api private + */ + + Scrollbar.prototype.mouseleave = function () { + this.enter = false; + + if (!this.dragging) { + if (this.pane.autoHide) { + this.hide(); + } + } + }; + + /** + * Called upon wrap scroll. + * + * @api private + */ + + Scrollbar.prototype.scroll = function () { + if (!this.shown) { + this.show(); + if (!this.enter && !this.dragging) { + if (this.pane.autoHide) { + this.hiding = setTimeout($.proxy(this, 'hide'), 1500); + } + } + } + + this.update(); + }; + + /** + * Called upon scrollbar mousedown. + * + * @api private + */ + + Scrollbar.prototype.mousedown = function (ev) { + ev.preventDefault(); + + this.dragging = true; + + this.startPageY = ev.pageY - parseInt(this.el.css('top'), 10); + this.startPageX = ev.pageX - parseInt(this.el.css('left'), 10); + + // prevent crazy selections on IE + this.el[0].ownerDocument.onselectstart = function () { return false; }; + + var pane = this.pane, + move = $.proxy(this, 'mousemove'), + self = this + + $(this.el[0].ownerDocument) + .mousemove(move) + .mouseup(function () { + self.dragging = false; + this.onselectstart = null; + + $(this).unbind('mousemove', move); + + if (!self.enter) { + self.hide(); + } + }); + }; + + /** + * Show scrollbar. + * + * @api private + */ + + Scrollbar.prototype.show = function (duration) { + if (!this.shown && this.update()) { + this.el.addClass('antiscroll-scrollbar-shown'); + if (this.hiding) { + clearTimeout(this.hiding); + this.hiding = null; + } + this.shown = true; + } + }; + + /** + * Hide scrollbar. + * + * @api private + */ + + Scrollbar.prototype.hide = function () { + if (this.pane.autoHide !== false && this.shown) { + // check for dragging + this.el.removeClass('antiscroll-scrollbar-shown'); + this.shown = false; + } + }; + + /** + * Horizontal scrollbar constructor + * + * @api private + */ + + Scrollbar.Horizontal = function (pane) { + this.el = $('
', pane.el); + Scrollbar.call(this, pane); + }; + + /** + * Inherits from Scrollbar. + */ + + inherits(Scrollbar.Horizontal, Scrollbar); + + /** + * Updates size/position of scrollbar. + * + * @api private + */ + + Scrollbar.Horizontal.prototype.update = function () { + var paneWidth = this.pane.el.width(), + trackWidth = paneWidth - this.pane.padding * 2, + innerEl = this.pane.inner.get(0) + + this.el + .css('width', trackWidth * paneWidth / innerEl.scrollWidth) + .css('left', trackWidth * innerEl.scrollLeft / innerEl.scrollWidth); + + return paneWidth < innerEl.scrollWidth; + }; + + /** + * Called upon drag. + * + * @api private + */ + + Scrollbar.Horizontal.prototype.mousemove = function (ev) { + var trackWidth = this.pane.el.width() - this.pane.padding * 2, + pos = ev.pageX - this.startPageX, + barWidth = this.el.width(), + innerEl = this.pane.inner.get(0) + + // minimum top is 0, maximum is the track height + var y = Math.min(Math.max(pos, 0), trackWidth - barWidth); + + innerEl.scrollLeft = (innerEl.scrollWidth - this.pane.el.width()) + * y / (trackWidth - barWidth); + }; + + /** + * Called upon container mousewheel. + * + * @api private + */ + + Scrollbar.Horizontal.prototype.mousewheel = function (ev, delta, x, y) { + if ((x < 0 && 0 == this.pane.inner.get(0).scrollLeft) || + (x > 0 && (this.innerEl.scrollLeft + Math.ceil(this.pane.el.width()) + == this.innerEl.scrollWidth))) { + ev.preventDefault(); + return false; + } + }; + + /** + * Vertical scrollbar constructor + * + * @api private + */ + + Scrollbar.Vertical = function (pane) { + this.el = $('
', pane.el); + Scrollbar.call(this, pane); + }; + + /** + * Inherits from Scrollbar. + */ + + inherits(Scrollbar.Vertical, Scrollbar); + + /** + * Updates size/position of scrollbar. + * + * @api private + */ + + Scrollbar.Vertical.prototype.update = function () { + var paneHeight = this.pane.el.height(), + trackHeight = paneHeight - this.pane.padding * 2, + innerEl = this.innerEl; + + var scrollbarHeight = trackHeight * paneHeight / innerEl.scrollHeight; + scrollbarHeight = scrollbarHeight < 20 ? 20 : scrollbarHeight; + + var topPos = trackHeight * innerEl.scrollTop / innerEl.scrollHeight; + + if((topPos + scrollbarHeight) > trackHeight) { + var diff = (topPos + scrollbarHeight) - trackHeight; + topPos = topPos - diff - 3; + } + + this.el + .css('height', scrollbarHeight) + .css('top', topPos); + + return paneHeight < innerEl.scrollHeight; + }; + + /** + * Called upon drag. + * + * @api private + */ + + Scrollbar.Vertical.prototype.mousemove = function (ev) { + var paneHeight = this.pane.el.height(), + trackHeight = paneHeight - this.pane.padding * 2, + pos = ev.pageY - this.startPageY, + barHeight = this.el.height(), + innerEl = this.innerEl + + // minimum top is 0, maximum is the track height + var y = Math.min(Math.max(pos, 0), trackHeight - barHeight); + + innerEl.scrollTop = (innerEl.scrollHeight - paneHeight) + * y / (trackHeight - barHeight); + }; + + /** + * Called upon container mousewheel. + * + * @api private + */ + + Scrollbar.Vertical.prototype.mousewheel = function (ev, delta, x, y) { + if ((y > 0 && 0 == this.innerEl.scrollTop) || + (y < 0 && (this.innerEl.scrollTop + Math.ceil(this.pane.el.height()) + == this.innerEl.scrollHeight))) { + ev.preventDefault(); + return false; + } + }; + + /** + * Cross-browser inheritance. + * + * @param {Function} constructor + * @param {Function} constructor we inherit from + * @api private + */ + + function inherits (ctorA, ctorB) { + function f() {}; + f.prototype = ctorB.prototype; + ctorA.prototype = new f; + }; + + /** + * Scrollbar size detection. + */ + + var size; + + function scrollbarSize () { + if (size === undefined) { + var div = $( + '
' + + '
' + ); + + $('body').append(div); + var w1 = $(div).innerWidth(); + var w2 = $('div', div).innerWidth(); + $(div).remove(); + + size = w1 - w2; + } + + return size; + }; + +})(jQuery); diff --git a/vendor/styles/antiscroll.css b/vendor/styles/antiscroll.css new file mode 100644 index 000000000..29626295a --- /dev/null +++ b/vendor/styles/antiscroll.css @@ -0,0 +1,63 @@ +.antiscroll-wrap { + display: inline-block; + position: relative; + overflow: hidden; +} + +.antiscroll-scrollbar { + background: gray; + background: rgba(0, 0, 0, 0.5); + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + border-radius: 7px; + -webkit-box-shadow: 0 0 1px #fff; + -moz-box-shadow: 0 0 1px #fff; + box-shadow: 0 0 1px #fff; + position: absolute; + opacity: 0; + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=0); + -webkit-transition: linear 300ms opacity; + -moz-transition: linear 300ms opacity; + -o-transition: linear 300ms opacity; +} + +.antiscroll-scrollbar-shown { + opacity: 1; + filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100); +} + +.antiscroll-scrollbar-horizontal { + height: 7px; + margin-left: 2px; + bottom: 2px; + left: 0; +} + +.antiscroll-scrollbar-vertical { + width: 7px; + margin-top: 2px; + right: 2px; + top: 0; +} + +.antiscroll-inner { + overflow: scroll; +} + +/** A bug in Chrome 25 on Lion requires each selector to have their own + blocks. E.g. the following: + + .antiscroll-inner::-webkit-scrollbar, .antiscroll-inner::scrollbar {...} + + causes the width and height rules to be ignored by the browser resulting + in both native and antiscroll scrollbars appearing at the same time. + */ +.antiscroll-inner::-webkit-scrollbar { + width: 0; + height: 0; +} + +.antiscroll-inner::scrollbar { + width: 0; + height: 0; +} From 424390ae8464eaccea184244e831a53f06cf26c5 Mon Sep 17 00:00:00 2001 From: Nick Winter Date: Thu, 20 Mar 2014 22:00:34 -0700 Subject: [PATCH 15/21] Moved antiscroll init; disabled it for now because of bugginess. --- app/assets/index.html | 10 +++------- app/views/kinds/RootView.coffee | 3 ++- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/app/assets/index.html b/app/assets/index.html index bd763c341..24d9d600a 100644 --- a/app/assets/index.html +++ b/app/assets/index.html @@ -111,11 +111,14 @@
+
+ @@ -158,12 +161,5 @@ (function(a){if(window.filepicker){return}var b=a.createElement("script");b.type="text/javascript";b.async=!0;b.src=("https:"===a.location.protocol?"https:":"http:")+"//api.filepicker.io/v1/filepicker.js";var c=a.getElementsByTagName("script")[0];c.parentNode.insertBefore(b,c);var d={};d._queue=[];var e="pick,pickMultiple,pickAndStore,read,write,writeUrl,export,convert,store,storeUrl,remove,stat,setKey,constructWidget,makeDropPane".split(",");var f=function(a,b){return function(){b.push([a,arguments])}};for(var g=0;g - - - diff --git a/app/views/kinds/RootView.coffee b/app/views/kinds/RootView.coffee index b27ebb92f..87752cebf 100644 --- a/app/views/kinds/RootView.coffee +++ b/app/views/kinds/RootView.coffee @@ -38,7 +38,8 @@ module.exports = class RootView extends CocoView location.hash = '' location.hash = hash @buildLanguages() - + #@$('.antiscroll-wrap').antiscroll() # not yet, buggy + afterRender: -> super(arguments...) @chooseTab(location.hash.replace('#','')) if location.hash From 75138cb67b14c2fda96d35b5aa31ed853561909f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Hallberg=20J=C3=B6nsson?= Date: Fri, 21 Mar 2014 08:40:37 +0100 Subject: [PATCH 16/21] Update sv.coffee Updated some existing translations, mostly grammar corrections. --- app/locale/sv.coffee | 88 ++++++++++++++++++++++---------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/app/locale/sv.coffee b/app/locale/sv.coffee index 8c4b6fd56..a78a31df5 100644 --- a/app/locale/sv.coffee +++ b/app/locale/sv.coffee @@ -42,9 +42,9 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr cla_agree: "JAG GODKÄNNER" login: - sign_up: "Skapa Konto" - log_in: "Logga In" - log_out: "Logga Ut" + sign_up: "Skapa konto" + log_in: "Logga in" + log_out: "Logga ut" recover: "glömt lösenord" recover: @@ -56,15 +56,15 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr description: "Det är gratis. Vi behöver bara lite information och sen är du redo att börja:" email_announcements: "Mottag nyheter via e-post" coppa: "13+ eller ej i USA" - coppa_why: "(Varför?)" - creating: "Skapar Konto..." - sign_up: "Skapa Konto" + coppa_why: " (Varför?)" + creating: "Skapar konto..." + sign_up: "Skapa konto" log_in: "logga in med lösenord" home: slogan: "Lär dig att koda Javascript genom att spela ett spel." no_ie: "CodeCombat fungerar tyvärr inte i IE8 eller äldre." - no_mobile: "CodeCombat är inte designat för mobila enhter och kanske inte fungerar!" + no_mobile: "CodeCombat är inte designat för mobila enhter och fungerar kanske inte!" play: "Spela" old_browser: "Oj då, din webbläsare är för gammal för att köra CodeCombat. Förlåt!" old_browser_suffix: "Du kan försöka ändå, men det kommer nog inte fungera." @@ -80,23 +80,23 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr adventurer_suffix: "." campaign_beginner: "Nybörjarkampanj" campaign_beginner_description: "... i vilken du lär dig programmerandets magi." - campaign_dev: "Slumpmässig Svårare Nivå" + campaign_dev: "Slumpad svårare nivå" campaign_dev_description: "... där du lär dig att hantera gränssnittet medan du gör något lite svårare." campaign_multiplayer: "Flerspelararenor" campaign_multiplayer_description: "... i vilken du tävlar i kodande mot andra spelare" campaign_player_created: "Spelarskapade" - campaign_player_created_description: "... i vilken du tävlar mot kreativiteten hos andra Hantverkartrollkarlar." + campaign_player_created_description: "... i vilken du tävlar mot kreativiteten hos andra Hantverkare." level_difficulty: "Svårighetsgrad: " play_as: "Spela som " spectate: "Titta på" contact: contact_us: "Kontakta CodeCombat" - welcome: "Kul att höra från dig! Använd formuläret för att skicka e-post till oss." + welcome: "Kul att höra från dig! Använd formuläret för att skicka e-post till oss. " contribute_prefix: "Om du är intresserad av att bidra, koll in vår " contribute_page: "bidragarsida" contribute_suffix: "!" - forum_prefix: "För någonting offentlig, var vänlig testa " + forum_prefix: "För någonting offentligt, var vänlig testa " forum_page: "vårt forum" forum_suffix: " istället." send: "Skicka Feedback" @@ -124,40 +124,40 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr account_settings: title: "Kontoinställningar" not_logged_in: "Logga in eller skapa ett konto för att ändra dina inställningar." - autosave: "Ändringar Sparas Automatiskt" + autosave: "Ändringar sparas automatiskt" me_tab: "Jag" picture_tab: "Profilbild" wizard_tab: "Trollkarl" password_tab: "Lösenord" emails_tab: "E-postadresser" admin: "Administratör" - gravatar_select: "Välj ett Gravatar foto att använda" - gravatar_add_photos: "Lägg till miniatyrbilder och fotografier i ett Gravatar konto kopplat till din mail för att välja profilbild." - gravatar_add_more_photos: "Lägg till mer fotografier till i ditt Gravatar konto för att använda dem här." - wizard_color: "Trollkarlens Klädfärg" - new_password: "Nytt Lösenord" + gravatar_select: "Välj ett Gravatar-foto att använda" + gravatar_add_photos: "Lägg till miniatyrbilder och fotografier i ett Gravatar-konto kopplat till din e-postadress för att välja profilbild." + gravatar_add_more_photos: "Lägg till mer fotografier till i ditt Gravatar-konto för att använda dem här." + wizard_color: "Trollkarlens klädfärg" + new_password: "Nytt lösenord" new_password_verify: "Verifiera" - email_subscriptions: "E-post Prenumerationer" + email_subscriptions: "E-postsprenumerationer" email_announcements: "Meddelanden" email_notifications: "Påminnelser" email_notifications_description: "Få periodiska påminnelser för ditt konto." email_announcements_description: "Få e-post med de senaste nyheterna och utvecklingen på CodeCombat." - contributor_emails: "Bidragarmail" + contributor_emails: "E-post för bidragare" contribute_prefix: "Vi söker mer folk som vill var med och hjälpa till! Kolla in " - contribute_page: "bidragarsida" - contribute_suffix: " tför att få veta mer." - email_toggle: "Växla Alla" - error_saving: "Ett Fel Uppstod Vid Sparningen" - saved: "Ändringar Sparade" + contribute_page: " bidragarsidan " + contribute_suffix: " för att få veta mer." + email_toggle: "Växla alla" + error_saving: "Ett fel uppstod när ändringarna skulle sparas" + saved: "Ändringar sparade" password_mismatch: "De angivna lösenorden stämmer inte överens." account_profile: - edit_settings: "Ändra Inställningar" + edit_settings: "Ändra inställningar" profile_for_prefix: "Profil för " # profile_for_suffix: "" profile: "Profil" - user_not_found: "Användaren du söker verkar inte finnas. Kolla adressen?" - gravatar_not_found_mine: "Vi kunde inte hitta en profil associerad med:" + user_not_found: "Användaren du söker verkar inte finnas. Stämmer adressen?" + gravatar_not_found_mine: "Vi kunde inte hitta en profil associerad med: " # gravatar_not_found_email_suffix: "." gravatar_signup_prefix: "Registrera dig på " gravatar_signup_suffix: " för att komma igång!" @@ -165,13 +165,13 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr gravatar_contact: "Kontakt" gravatar_websites: "Hemsidor" # gravatar_accounts: "As Seen On" - gravatar_profile_link: "Hela Gravatar profilen" + gravatar_profile_link: "Hela Gravatar-profilen" play_level: level_load_error: "Nivån kunde inte laddas: " done: "Klar" grid: "Rutnät" - customize_wizard: "Finjustera Trollkarl" + customize_wizard: "Skräddarsy trollkarl" home: "Hem" guide: "Guide" multiplayer: "Flerspelareläge" @@ -185,32 +185,32 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr # victory_title_prefix: "" victory_title_suffix: " Genomförd" victory_sign_up: "Registrera dig för att få uppdateringar" - victory_sign_up_poke: "Vill du ha de senaste nyheterna vi e-post? Skapa ett gratiskonto så håller vi dig informerad!" + victory_sign_up_poke: "Vill du ha de senaste nyheterna via e-post? Skapa ett gratiskonto så håller vi dig informerad!" victory_rate_the_level: "Betygsätt nivån: " victory_rank_my_game: "Ranka min match" victory_ranking_game: "Skickar..." victory_return_to_ladder: "Gå tillbaka till stegen" - victory_play_next_level: "Spela Nästa Nivå" - victory_go_home: "Gå Hem" + victory_play_next_level: "Spela nästa nivå" + victory_go_home: "Gå hem" victory_review: "Berätta mer!" - victory_hour_of_code_done: "Är Du Klar?" + victory_hour_of_code_done: "Är du klar?" victory_hour_of_code_done_yes: "Ja, jag är klar med min Hour of Code!" multiplayer_title: "Flerspelarinställningar" multiplayer_link_description: "Dela den här länken med alla som du vill spela med." multiplayer_hint_label: "Tips:" multiplayer_hint: " Klicka på länken för att välja allt, tryck sedan på Cmd-C eller Ctrl-C för att kopiera länken." - multiplayer_coming_soon: "Mer flerspelarlägen kommer!" + multiplayer_coming_soon: "Fler flerspelarlägen kommer!" guide_title: "Guide" - tome_minion_spells: "Dina Soldaters Förmågor" - tome_read_only_spells: "Skrivskyddade Förmågor" - tome_other_units: "Andra Enheter" + tome_minion_spells: "Dina soldaters förmågor" + tome_read_only_spells: "Skrivskyddade förmågor" + tome_other_units: "Andra enheter" tome_cast_button_castable: "Använd besvärjelse" tome_cast_button_casting: "Besvärjer" tome_cast_button_cast: "Besvärjelse använd" tome_autocast_delay: "Autoanvändningsfördröjning" - tome_select_spell: "Välj en Förmåga" - tome_select_a_thang: "Välj Någon för " - tome_available_spells: "Tillgängliga Förmågor" + tome_select_spell: "Välj en förmåga" + tome_select_a_thang: "Välj någon för " + tome_available_spells: "Tillgängliga förmågor" hud_continue: "Fortsätt (skift+mellanslag)" spell_saved: "Besvärjelse sparad" skip_tutorial: "Hoppa över (esc)" @@ -237,7 +237,7 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr lg_title: "Senaste matcher" editor: - main_title: "CodeCombatredigerar" + main_title: "CodeCombatredigerare" main_description: "Bygg dina egna banor, kampanjer, enheter och undervisningsinnehåll. Vi tillhandahåller alla verktyg du behöver!" article_title: "Artikelredigerare" article_description: "Skriv artiklar som ger spelare en överblick över programmeringskoncept som kan användas i många olika nivåer och kampanjer." @@ -298,7 +298,7 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr results: "Resultat" description: "Beskrivning" or: "eller" - email: "Email" + email: "E-post" password: "Lösenord" message: "Meddelande" code: "Kod" @@ -549,7 +549,7 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr ladder_explanation: "Välj dina hjältar, förtrolla dina människo- eller orch-arméer och klättra över besegrade trollkarlar, för att nå toppen av stegen - och utmana sedan dina vänner i våra ärorika, asynkrona flerspelararenor. Om du känner dig kreativ kan du till och med" fork_our_arenas: "förgrena våra arenor" create_worlds: "och skapa dina egna världer." - javascript_rusty: "JavaScript lite rostigt? Oroa dig inte, det finns en" + javascript_rusty: "Är din JavaScript lite rostigt? Oroa dig inte, det finns en" tutorial: "tutorial" - new_to_programming: ". Ny till programmering? Gå till vår nybörjarkampanj för att öva upp dina färdigheter." + new_to_programming: ". Ny på programmering? Gå till vår nybörjarkampanj för att öva upp dina färdigheter." so_ready: "Jag är så redo för det här." From 0ece400a180c5a138deca3a6071201b3fa608041 Mon Sep 17 00:00:00 2001 From: Mikhail Koltsov Date: Fri, 21 Mar 2014 11:54:55 +0400 Subject: [PATCH 17/21] Level editor: selecting a thang now moves the scroll in existant-thang list --- app/locale/ru.coffee | 4 ---- app/views/editor/level/thangs_tab_view.coffee | 4 +++- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/app/locale/ru.coffee b/app/locale/ru.coffee index 52fc935d1..39e6055ee 100644 --- a/app/locale/ru.coffee +++ b/app/locale/ru.coffee @@ -334,12 +334,8 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi scott_description: "Экстраординарный программист, архитектор программного обеспечения, кухонный волшебник и мастер финансов. Скотт рассудителен." nick_description: "Маг программирования, мудрец эксцентричного мотивирования и чудаковатый экспериментатор. Ник может всё и хочет построить CodeCombat." jeremy_description: "Маг клиентской поддержки, юзабилити-тестер, и организатор сообщества; вы наверняка уже говорили с Джереми." -<<<<<<< HEAD michael_description: "Программист, сисадмин и непризнанный технический гений, Михаэль является лицом, поддерживающим наши серверы в доступности." -======= - michael_description: "Программист, сисадмин и непризнанный технический гений, Михаэль является лицом, поддерживающим наши серверы онлайн." glen_description: "Программист и страстный разработчик игр, с мотивацией сделать этот мир лучше путём разработки действительно значащих вещей. Слова \"невозможно\" нет в его словаре. Освоение новых навыков его развлечение!" ->>>>>>> 034a18c960c7fc14478ea285c9130c57645a3631 legal: page_title: "Юридическая информация" diff --git a/app/views/editor/level/thangs_tab_view.coffee b/app/views/editor/level/thangs_tab_view.coffee index fd0633877..4baf833d6 100644 --- a/app/views/editor/level/thangs_tab_view.coffee +++ b/app/views/editor/level/thangs_tab_view.coffee @@ -228,7 +228,9 @@ module.exports = class ThangsTabView extends View @selectedExtantThangClickTime = new Date() treemaThang = _.find @thangsTreema.childrenTreemas, (treema) => treema.data.id is @selectedExtantThang.id if treemaThang - treemaThang.select() unless treemaThang.isSelected() + if not treemaThang.isSelected() + treemaThang.select() + @thangsTreema.$el.scrollTop(treemaThang.$el.scrollTop()) else if @addThangSprite # We clicked on the background when we had an add Thang selected, so add it @addThang @addThangType, @addThangSprite.thang.pos From 45b87ed38ec0ef4299c7bd9476923d2cd531dc26 Mon Sep 17 00:00:00 2001 From: Mikhail Koltsov Date: Fri, 21 Mar 2014 13:45:56 +0400 Subject: [PATCH 18/21] finally got it right --- app/views/editor/level/thangs_tab_view.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/editor/level/thangs_tab_view.coffee b/app/views/editor/level/thangs_tab_view.coffee index 4baf833d6..cd4614f3b 100644 --- a/app/views/editor/level/thangs_tab_view.coffee +++ b/app/views/editor/level/thangs_tab_view.coffee @@ -230,7 +230,7 @@ module.exports = class ThangsTabView extends View if treemaThang if not treemaThang.isSelected() treemaThang.select() - @thangsTreema.$el.scrollTop(treemaThang.$el.scrollTop()) + @thangsTreema.$el.scrollTop(@thangsTreema.$el.find('.treema-children .treema-selected')[0].offsetTop) else if @addThangSprite # We clicked on the background when we had an add Thang selected, so add it @addThang @addThangType, @addThangSprite.thang.pos From af18e7a27e081bc009a77105b725e8a841721f8d Mon Sep 17 00:00:00 2001 From: Mikhail Koltsov Date: Fri, 21 Mar 2014 15:40:32 +0400 Subject: [PATCH 19/21] Thang editor: components tab finally looks good and does not overlay other tabs --- app/styles/editor/components/main.sass | 6 +++--- app/styles/editor/thang/edit.sass | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/styles/editor/components/main.sass b/app/styles/editor/components/main.sass index 53c082bfb..148943844 100644 --- a/app/styles/editor/components/main.sass +++ b/app/styles/editor/components/main.sass @@ -1,13 +1,13 @@ #thang-components-edit-view position: absolute - top: 100px + top: 40px bottom: 0 left: 0 right: 0 .column position: absolute - top: 70px + top: 0 bottom: 0 padding: 5px box-sizing: border-box @@ -32,7 +32,7 @@ .treema position: absolute - top: 80px + top: 70px left: 10px right: 0px bottom: 0 diff --git a/app/styles/editor/thang/edit.sass b/app/styles/editor/thang/edit.sass index 304dd1a59..871cab229 100644 --- a/app/styles/editor/thang/edit.sass +++ b/app/styles/editor/thang/edit.sass @@ -59,7 +59,7 @@ #thang-components-edit-view position: absolute - top: 130px + top: 200px bottom: 0 .treema-root From 096c59b6cfe173d1620c16cd6fe003fb1431bcf0 Mon Sep 17 00:00:00 2001 From: Mikhail Koltsov Date: Fri, 21 Mar 2014 15:42:29 +0400 Subject: [PATCH 20/21] fix some assymetry --- app/styles/editor/components/main.sass | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/styles/editor/components/main.sass b/app/styles/editor/components/main.sass index 148943844..bb8e437d6 100644 --- a/app/styles/editor/components/main.sass +++ b/app/styles/editor/components/main.sass @@ -32,7 +32,7 @@ .treema position: absolute - top: 70px + top: 75px left: 10px right: 0px bottom: 0 From b30bf35945f3ef516ab59580c691b7d9ce38a244 Mon Sep 17 00:00:00 2001 From: Nick Winter Date: Fri, 21 Mar 2014 08:09:08 -0700 Subject: [PATCH 21/21] Fixed #638, I hope. --- app/locale/en.coffee | 2 +- app/templates/play/ladder.jade | 1 + app/templates/play/ladder/ladder_tab.jade | 2 +- app/views/play/ladder/ladder_tab.coffee | 10 +++++----- 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/app/locale/en.coffee b/app/locale/en.coffee index 69cd93343..3e19adc57 100644 --- a/app/locale/en.coffee +++ b/app/locale/en.coffee @@ -87,7 +87,7 @@ module.exports = nativeDescription: "English", englishDescription: "English", tr campaign_player_created: "Player-Created" campaign_player_created_description: "... in which you battle against the creativity of your fellow Artisan Wizards." level_difficulty: "Difficulty: " - play_as: "Play As " + play_as: "Play As" spectate: "Spectate" contact: diff --git a/app/templates/play/ladder.jade b/app/templates/play/ladder.jade index d9f8bd6c0..1fe679657 100644 --- a/app/templates/play/ladder.jade +++ b/app/templates/play/ladder.jade @@ -13,6 +13,7 @@ block content div.column.col-md-4 a(style="background-color: #{team.primaryColor}", data-team=team.id).play-button.btn.btn-danger.btn-block.btn-lg span(data-i18n="play.play_as") Play As + | span= team.name div.column.col-md-2 diff --git a/app/templates/play/ladder/ladder_tab.jade b/app/templates/play/ladder/ladder_tab.jade index 3d41c4ec5..1af06860b 100644 --- a/app/templates/play/ladder/ladder_tab.jade +++ b/app/templates/play/ladder/ladder_tab.jade @@ -27,7 +27,7 @@ div#columns.row a(href="/play/level/#{level.get('slug') || level.id}/?team=#{team.otherTeam}&opponent=#{session.id}") span(data-i18n="ladder.fight") Fight! - if !inTheTop && ! me.get('anonymous') + if !inTheTop && team.leaderboard.nearbySessions().length tr(class="active") td(colspan=4).ellipsis-row ... for session in team.leaderboard.nearbySessions() diff --git a/app/views/play/ladder/ladder_tab.coffee b/app/views/play/ladder/ladder_tab.coffee index 226ab5f54..9faf5049e 100644 --- a/app/views/play/ladder/ladder_tab.coffee +++ b/app/views/play/ladder/ladder_tab.coffee @@ -69,7 +69,7 @@ class LeaderboardData level = "#{level.get('original')}.#{level.get('version').major}" success = (@myRank) => promises.push $.ajax "/db/level/#{level}/leaderboard_rank?scoreOffset=#{@session.get('totalScore')}&team=#{@team}", {success} - + $.when(promises...).then @onLoad onLoad: => @@ -77,12 +77,12 @@ class LeaderboardData @trigger 'sync' # TODO: cache user ids -> names mapping, and load them here as needed, # and apply them to sessions. Fetching each and every time is too costly. - + inTopSessions: -> return me.id in (session.attributes.creator for session in @topPlayers.models) - + nearbySessions: -> - return unless @session + return [] unless @session l = [] above = @playersAbove.models above.reverse() @@ -92,4 +92,4 @@ class LeaderboardData if @myRank startRank = @myRank - 4 session.rank = startRank + i for session, i in l - l \ No newline at end of file + l