From c5319c4d9ad4260102f69de8e7f907a8f0912c39 Mon Sep 17 00:00:00 2001 From: JuhoKang Date: Sat, 5 Dec 2015 22:30:24 +0900 Subject: [PATCH 1/4] Updated index.js's Korean translation The Korean index was pretty outdated. So I updated Korean displays and fixed some indentions of uk translation --- src/levels/index.js | 46 ++++++++++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/src/levels/index.js b/src/levels/index.js index 7076a58e..c67007f6 100644 --- a/src/levels/index.js +++ b/src/levels/index.js @@ -62,9 +62,9 @@ var sequenceInfo = exports.sequenceInfo = { 'pt_BR': 'Sequência introdutória', 'zh_CN': '基础篇', 'zh_TW': '基礎篇', - 'ko': '기본 명령어', + 'ko' : 'git 기본', 'ru_RU': 'Введение', - 'uk': 'Вступ' + 'uk' : 'Вступ' }, about: { 'en_US': 'A nicely paced introduction to the majority of git commands', @@ -75,7 +75,7 @@ var sequenceInfo = exports.sequenceInfo = { 'pt_BR': 'Uma breve introdução à maioria dos comandos do git', 'zh_CN': '循序渐进介绍git主要命令', 'zh_TW': '循序漸進地介紹 git 主要命令', - 'ko': '브랜치 관련 주요 git 명령어를 깔끔하게 알려드립니다', + 'ko' : 'git의 주요 명령어를 깔끔하게 알려드립니다', 'ru_RU': 'Хорошо подобранное введение в основные команды git', 'uk': 'Гарно підібране введення в основні команди git' } @@ -91,19 +91,21 @@ var sequenceInfo = exports.sequenceInfo = { 'zh_CN': '进阶篇', 'zh_TW': '進階篇', 'ru_RU': 'Едем дальше', - 'uk': 'Їдемо далі' + 'uk' : 'Їдемо далі', + 'ko' : '다음 단계로' }, about: { 'en_US': 'The next serving of 100% git awesomes-ness. Hope you\'re hungry', 'de_DE': 'Eine Portion Git-Wahnsinn zum Thema Navigation', 'ja' : '更にgitの素晴らしさを堪能しよう', - 'fr_FR' : 'Le prochain excellent plat de pur git. J\'espère que vous êtes affamés', + 'fr_FR': 'Le prochain excellent plat de pur git. J\'espère que vous êtes affamés', 'es_AR': 'La próxima porción de 100% maravillas git. Espero que estés hambriento', 'pt_BR': 'A próxima porção de maravilhas do git. Faminto?', 'zh_CN': '接下来是git的超赞特性。迫不及待了吧!', 'zh_TW': '接下來是 git 非常厲害的地方!相信你已經迫不及待了吧!', 'ru_RU': 'Следующая порция абсолютной git-крутотенюшки. Проголодались?', - 'uk': 'Наступна порція абсолютної git-дивожнечі. Зголодніли?' + 'uk' : 'Наступна порція абсолютної git-дивожнечі. Зголодніли?', + 'ko' : 'git은 아주 멋져요. 왜 멋진지 알려드립니다' } }, remote: { @@ -118,7 +120,8 @@ var sequenceInfo = exports.sequenceInfo = { 'zh_CN': 'Push & Pull -- Git Remotes!', 'zh_TW': 'Push & Pull -- Git Remotes!', 'ru_RU': 'Push & Pull - удалённые репозитории в Git!', - 'uk': 'Push & Pull -- віддалені репозиторії в Git!' + 'uk' : 'Push & Pull -- віддалені репозиторії в Git!', + 'ko' : 'Push & Pull -- Git 원격 저장소!' }, about: { 'en_US': 'Time to share your 1\'s and 0\'s kids; coding just got social', @@ -130,7 +133,8 @@ var sequenceInfo = exports.sequenceInfo = { 'zh_CN': '是时候分享你的代码了', 'zh_TW': '是時候分享你的程式碼了', 'ru_RU': 'Настало время поделиться своими единичками и нулями. Время коллективного программирования', - 'uk': 'Настав час поділитися своїми нулями та одиничками; соціальне програмування' + 'uk' : 'Настав час поділитися своїми нулями та одиничками; соціальне програмування', + 'ko' : '내 코드를 공개할 때가 되었습니다. 코드를 공개해봅시다!' } }, remoteAdvanced: { @@ -145,7 +149,8 @@ var sequenceInfo = exports.sequenceInfo = { 'zh_CN': '关于origin 和 其它仓库 -- Git Gemotes 高级命令', 'zh_TW': '關於 origin 和其它 repo,git remote 的進階指令', 'ru_RU': 'Через origin – к звёздам. Продвинутое использование Git Remotes', - 'uk': 'Через origin – до зірок. Продвинуте використання Git Remotes' + 'uk' : 'Через origin – до зірок. Продвинуте використання Git Remotes', + 'ko' : '"origin"그 너머로 -- 고급 Git 원격 저장소' }, about: { 'en_US': 'And you thought being a benevolent dictator would be fun...', @@ -157,7 +162,8 @@ var sequenceInfo = exports.sequenceInfo = { 'zh_TW': '而且你會覺得做一個仁慈的獨裁者會很有趣...', 'de_DE': 'Git Remotes für Fortgeschrittene', 'ru_RU': 'Весело было быть всесильным мудрым правителем...', - 'uk': 'Й ти думав що бути всесильним диктатором буде весело...' + 'uk' : 'Й ти думав що бути всесильним диктатором буде весело...' + 'ko' : '자비로운 독재자가 되는게 재밌을 줄 알았겠지만...' } }, move: { @@ -168,12 +174,12 @@ var sequenceInfo = exports.sequenceInfo = { 'es_AR': 'Moviendo el trabajo por ahí', 'pt_BR': 'Movendo trabalho por aí', 'ja' : 'コードの移動', + 'ko': '코드 이리저리 옮기기', // INTL out of sync :( 'zh_CN': '精通 rebase!', 'zh_TW': '精通 rebase!', - 'ko': '리베이스 완전정복!', 'ru_RU': 'Перемещаем труды туда-сюда', - 'uk': 'Переміщуємо роботу туди-сюди' + 'uk' : 'Переміщуємо роботу туди-сюди' }, about: { 'en_US': 'Get comfortable with modifying the source tree', @@ -181,13 +187,13 @@ var sequenceInfo = exports.sequenceInfo = { 'fr_FR': 'Soyez alaise de modifier l\'arbre Git', 'es_AR': 'Ponete cómodo con modificar el directorio fuente', 'pt_BR': 'Fique confortável em modificar a árvore de códigos', + 'ko' : '작업 트리를 수정하는건 식은죽 먹기지요 이제', // INTL out of sync :( 'ja' : '話題のrebaseってどんなものだろう?って人にオススメ', - 'ko': '그 좋다고들 말하는 rebase에 대해 알아봅시다!', 'zh_CN': '大家都在说的 rebase 究竟是神马?看看吧!', 'zh_TW': '大家都在說的 rebase 到底是什麼啊?來看看吧!', 'ru_RU': 'Не стесняйтесь менять историю', - 'uk': 'Не соромимось змінювати історію' + 'uk' : 'Не соромимось змінювати історію' } }, mixed: { @@ -202,7 +208,7 @@ var sequenceInfo = exports.sequenceInfo = { 'zh_CN': '大杂烩?', 'zh_TW': '活用 git 的指令', 'ru_RU': 'Сборная солянка', - 'uk': 'Всяке' + 'uk' : 'Всяке' }, about: { 'en_US': 'A mixed bag of Git techniques, tricks, and tips', @@ -211,11 +217,11 @@ var sequenceInfo = exports.sequenceInfo = { 'fr_FR': 'Un assortiment de techniques et astuces pour utiliser Git', 'es_AR': 'Un rejunte de técnicas, trucos y tips sobre Git', 'pt_BR': 'Técnicas, truques e dicas sortidas sobre Git', - 'ko': 'Git을 다루는 다양한 팁과 테크닉을 다양하게 알아봅니다', + 'ko' : 'Git을 다루는 다양한 팁과 테크닉을 다양하게 알아봅니다', 'zh_CN': 'Git技术、技巧与贴士杂烩', 'zh_TW': 'git 的技術,招數與技巧', 'ru_RU': 'Ассорти из приёмов работы с Git, хитростей и советов', - 'uk': 'Різні прийоми роботи з Git, хитрості та поради' + 'uk' : 'Різні прийоми роботи з Git, хитрості та поради' } }, advanced: { @@ -229,7 +235,8 @@ var sequenceInfo = exports.sequenceInfo = { 'zh_CN': '高级主题', 'zh_TW': '進階主題', 'ru_RU': 'Продвинутый уровень', - 'uk': 'Досвідчений рівень' + 'uk' : 'Досвідчений рівень', + 'ko' : '고급 문제' }, about: { 'en_US': 'For the truly brave!', @@ -241,7 +248,8 @@ var sequenceInfo = exports.sequenceInfo = { 'zh_CN': '只为真正的勇士!', 'zh_TW': '來成為真正的強者吧!', 'ru_RU': 'Если ты смелый, ловкий, умелый – потренируйся тут', - 'uk': 'Для хоробрих' + 'uk' : 'Для хоробрих', + 'ko' : '용기있는 도전자를 위해 준비한 문제입니다' } } }; From 482bc1a3c6efa1e8ce0284dbbd4ea3de028dd820 Mon Sep 17 00:00:00 2001 From: JuhoKang Date: Sat, 5 Dec 2015 23:51:49 +0900 Subject: [PATCH 2/4] Added a semicolon which was missing in index.js should have test before committing --- src/levels/index.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/levels/index.js b/src/levels/index.js index c67007f6..2c4c6ad3 100644 --- a/src/levels/index.js +++ b/src/levels/index.js @@ -162,7 +162,7 @@ var sequenceInfo = exports.sequenceInfo = { 'zh_TW': '而且你會覺得做一個仁慈的獨裁者會很有趣...', 'de_DE': 'Git Remotes für Fortgeschrittene', 'ru_RU': 'Весело было быть всесильным мудрым правителем...', - 'uk' : 'Й ти думав що бути всесильним диктатором буде весело...' + 'uk' : 'Й ти думав що бути всесильним диктатором буде весело...', 'ko' : '자비로운 독재자가 되는게 재밌을 줄 알았겠지만...' } }, @@ -174,7 +174,7 @@ var sequenceInfo = exports.sequenceInfo = { 'es_AR': 'Moviendo el trabajo por ahí', 'pt_BR': 'Movendo trabalho por aí', 'ja' : 'コードの移動', - 'ko': '코드 이리저리 옮기기', + 'ko' : '코드 이리저리 옮기기', // INTL out of sync :( 'zh_CN': '精通 rebase!', 'zh_TW': '精通 rebase!', @@ -204,7 +204,7 @@ var sequenceInfo = exports.sequenceInfo = { 'fr_FR': 'Un assortiment', 'es_AR': 'Bolsa de gatos', 'pt_BR': 'Sortidos', - 'ko': '종합선물세트', + 'ko' : '종합선물세트', 'zh_CN': '大杂烩?', 'zh_TW': '活用 git 的指令', 'ru_RU': 'Сборная солянка', From 2bff1321801f3ad06023c22f8882428ae8d5e0f3 Mon Sep 17 00:00:00 2001 From: JuhoKang Date: Sat, 5 Dec 2015 23:55:12 +0900 Subject: [PATCH 3/4] Translated fetchRebase.js into Korean --- src/levels/remote/fetchRebase.js | 149 ++++++++++++++++++++++++++++++- 1 file changed, 147 insertions(+), 2 deletions(-) diff --git a/src/levels/remote/fetchRebase.js b/src/levels/remote/fetchRebase.js index 9f56de59..55abb650 100644 --- a/src/levels/remote/fetchRebase.js +++ b/src/levels/remote/fetchRebase.js @@ -12,7 +12,8 @@ exports.level = { "fr_FR": "Historique divergent", "ja" : "履歴の分岐", "ru_RU": "Расхождение в истории", - "uk" : "Розходження в історії" + "uk" : "Розходження в історії", + "ko" : "엇갈린 히스토리" }, "hint": { "en_US": "check out the ordering from the goal visualization", @@ -24,7 +25,8 @@ exports.level = { "ja" : "ゴールのツリーの順番を参考にすること", "fr_FR": "regardez l'ordre dans la fenêtre de visualisation d'objectif", "ru_RU": "проверьте сортировку в визуализации цели", - "uk" : "перевірте порядок в візуалізації цілі" + "uk" : "перевірте порядок в візуалізації цілі", + "ko" : "순서는 goal을 참고하세요" }, "startDialog": { "en_US": { @@ -1456,6 +1458,149 @@ exports.level = { } } ] + }, + "ko": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## 엇갈린 작업", + "", + "지금까지 우리는 다른곳에서 커밋을 `pull`해서 내려받고 우리가 만든 변경들을 `push`하는 방법을 배웠습니다. 간단해보이는데, 왜 사람들이 이것 때문에 곤란해 할까요?", + "", + "어려움은 저장소의 히스토리가 *엇갈릴 때* 찾아옵니다. 자세히 살펴보기 전에 예제를 확인해봅시다...", + "" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "상상을 해봅시다. 여러분은 월요일에 저장소를 clone해서 부가기능을 만들기 시작했습니다. 금요일쯤 기능을 공개할 준비가 되었습니다 -- 그런데 오 이런! 동료들이 주중에 코딩을 잔뜩해서 여러분이 만든 기능은 프로젝트에 뒤떨어져서 무용지물이 되었습니다. 이 사람들이 그 커밋들을 공유하고있는 원격 저장소에도 공개했습니다, 이제 *여러분의* 작업은 이제 의미가 없는 *구*버전의 프로젝트를 기반으로한 작업이 되어버렸습니다.", + "", + "이런 경우, 명령어 `git push`가 할 일이 애매해집니다. `git push`를 수행했을때, git은 원격 저장소를 여러분이 작업했던 월요일의 상태로 되돌려야 할까요? 아니면 새 코드를 건들지 않고 여러분의 코드만 추가해야 되나요? 아니면 여러분의 작업은 뒤 떨어졌기 때문에 완전히 무시해야되나요?", + "", + "이렇게 상황이 애매모호하기 때문에(히스토리가 엇갈렸기 때문이죠), git은 여러분이 `push`하지 못하게 합니다. 사실 여러분이 작업을 공유하기전에 원격 저장소의 최신 상태를 합치도록 강제합니다." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "너무 떠든거같습니다! 이 상황을 직접 눈으로 확인해봅시다" + ], + "afterMarkdowns": [ + "보이죠? 명령어가 실행되지 않아서 아무것도 잃어나지 않습니다. 여러분의 최근 커밋 `C3`가 원격저장소의 `C1`을 기반으로 하기 때문에 `git push`가 실패합니다. 원격 저장소는 `C2`까지 갱신된 상태기때문에 git은 여러분의 push를 거부하게됩니다." + ], + "command": "git push", + "beforeCommand": "git clone; git fakeTeamwork; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "그러면 이 상황을 어떻게 해결할까요? 쉽습니다, 여러분의 작업을 원격 브랜치의 최신상태를 기반으로 하게 만들면 됩니다.", + "", + "이렇게 하기위한 방법이 여러가지가 있는데, 가장 간결한 방법은 리베이스를 통해 작업을 옮기는 방법입니다. 예제를 통해 눈으로 확인해 봅시다." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "push를 하기전에 리베이스를 하면..." + ], + "afterMarkdowns": [ + "Boom! `git fetch`로 원격 저장소의 변경정보를 가져오고, 새 변경들로 우리 작업을 리베이스 했습니다, 이제 `git push`하면 끝!" + ], + "command": "git fetch; git rebase o/master; git push", + "beforeCommand": "git clone; git fakeTeamwork; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "다른 방법은 없냐고요? 당연히 있습니다! 같은것을 `merge`로 대신 해봅시다.", + "", + "`git merge`가 여러분의 작업을 옮기지는 않지만(merge 커밋을 생성합니다). git에게 원격 저장소의 변경을 합쳤다고 알려주는 방법중에 하나입니다. 이제 원격 브랜치가 여러분 브랜치의 *부모*기 되었기때문입니다, 여러분의 커밋이 원격 브랜치의 모든 커밋을 반영했다는 뜻이죠.", + "", + "눈으로 확인해봅시다..." + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "리베이스대신 병합을하면..." + ], + "afterMarkdowns": [ + "Boom! `git fetch`로 원격 저장소의 변경정보를 가져오고, 새 작업을 우리 작업으로 *병합*했습니다 (원격 저장소의 변경을 반영하기 위해서죠), 이제 `git push`하면 끝!" + ], + "command": "git fetch; git merge o/master; git push", + "beforeCommand": "git clone; git fakeTeamwork; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "멋집니다! 명령어를 좀더 적게써서 하는 방법은 없나요?", + "", + "물론 있습니다 -- 여러분은 `git pull`이 fetch와 merge의 줄임 명령어라는 것은 이미 알고 있을 것입니다. 아주 간단하게, `git pull --rebase`를 하면 fetch와 리베이스를 하는 작업의 줄임 명령어 입니다", + "", + "이 줄임 명령어가 잘 작동하는지 확인해 봅시다" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "먼저 `--rebase`와 함께하면..." + ], + "afterMarkdowns": [ + "이전과 같습니다! 간결하고요." + ], + "command": "git pull --rebase; git push", + "beforeCommand": "git clone; git fakeTeamwork; git commit" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "일반의 `pull`과 사용했을 때는" + ], + "afterMarkdowns": [ + "또다시, 이전과 같습니다!" + ], + "command": "git pull; git push", + "beforeCommand": "git clone; git fakeTeamwork; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "fetch를 하고 리베이스/병합을 하고 push를 하는 이런 작업흐름은 꽤 흔합니다. 앞으로의 레슨에서는 이런 작업흐름의 복잡한 버전들을 확인해볼 것입니다. 일단은 이것부터 연습해 보죠.", + "", + "이번 레벨을 통과하려면, 다음의 단계를 거쳐야 합니다:", + "", + "* 여러분의 저장소를 clone 하세요", + "* 가짜 팀워크를 만드세요 (1개의 커밋)", + "* 여러분의 작업도 커밋하세요 (1개의 커밋)", + "* 여러분의 작업을 *리베이스*를 통해 공유하세요" + ] + } + } + ] } } }; From 1082a6d0f282ac75c893dc11ba8fa4dcf11ab8c2 Mon Sep 17 00:00:00 2001 From: JuhoKang Date: Sun, 6 Dec 2015 00:04:56 +0900 Subject: [PATCH 4/4] Translated pushManyFeatures.js into Korean --- src/levels/remote/pushManyFeatures.js | 59 ++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/src/levels/remote/pushManyFeatures.js b/src/levels/remote/pushManyFeatures.js index 92cbb177..aa41c278 100644 --- a/src/levels/remote/pushManyFeatures.js +++ b/src/levels/remote/pushManyFeatures.js @@ -11,7 +11,8 @@ exports.level = { "de_DE": "Denk dran, du kannst immer undo oder reset benutzen, um deine Befehle zurück zu nehmen.", "ja" : "undoやresetコマンドをいつでも使用することができるのをお忘れなく", "fr_FR": "Rappelez-vous que vous pouvez toujours utiliser les commandes undo et reset.", - "ru_RU": "Помни - ты всегда можешь отменить команды с помощью undo или reset" + "ru_RU": "Помни - ты всегда можешь отменить команды с помощью undo или reset", + "ko" : "명령어를 undo와 reset으로 되돌릴 수 있다는 것을 잊지마세요" }, "name": { "en_US": "Push Master!", @@ -22,7 +23,8 @@ exports.level = { "de_DE": "Push Master!", "ja" : "Push Master!", "fr_FR": "Maître du push !", - "ru_RU": "Push Мастер!" + "ru_RU": "Push Мастер!", + "ko" : "Push Master!" }, "compareOnlyMasterHashAgnostic": true, "startDialog": { @@ -502,6 +504,59 @@ exports.level = { } } ] + }, + "ko": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## feature 브랜치 병합하기", + "", + "이제 여러분은 fetch, pull, push하는데에 익숙해졌을겁니다. 연마한 기술들을 새로운 상황에서 시험 해봅시다.", + "", + "개발자들은 주로 큰 프로젝트를 개발할때 작업을 feature 브랜치(=토픽브랜치 / `master`브랜치가 아닌 작업을위해 임시로 만든 브랜치를 말합니다)들에 하고 준비가 되면 그 작업을 통합합니다. 이전 강의와 비슷한 모습인데(사이드 브랜치들을 원격저장소로 push한것), 여기서 한 단계 더 나아가 봅시다. ", + "", + "어떤 개발자들은 `master` 브랜치에 있을때만 push와 pull을 수행합니다 -- 이렇게하면 `master`는 항상 원격 브랜치 (`o/master`)의 상태와 항상 최신의 상태로 유지될 수 있습니다.", + "", + "이런 작업흐름은 두가지 작업을 같이하게됩니다 :", + "", + "* feature 브랜치의 작업을 master로 통합하는것과", + "* 원격저장소에서 push하고 pull하는 작업입니다" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "다음을 보고 `master`를 갱신하고 작업을 push하는 방법을 다시 떠올려봅시다." + ], + "afterMarkdowns": [ + "여기서 우리는 두개의 명령어를 실행 했습니다 :", + "", + "* 우리의 작업을 원격 저장소의 새 커밋들로 리베이스한 후", + "* 우리 작업을 원격저장소로 push했습니다." + ], + "command": "git pull --rebase; git push", + "beforeCommand": "git clone; git commit; git fakeTeamwork" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "이번 레벨은 꽤 덩치가 큽니다 -- 문제에대한 대략적인 설명을 해드리겠습니다 :", + "", + "* 세개의 feature 브랜치가 있습니다 -- `side1`, `side2` 그리고 `side3` 가 있습니다.", + "* 각각의 브랜치를 순서에 맞게 원격 저장소로 push하고 싶습니다.", + "* 원격 저장소가 최근에 갱신된적이 있기때문에 그 작업또한 포함시켜야 합니다.", + "", + ":O 이야 할게 많습니다! 행운을 빕니다, 이번 레벨은 많은걸 요구합니다." + ] + } + } + ] } } };