From 3a1096094113fdd1ea78346ae43640f450ba3afb Mon Sep 17 00:00:00 2001 From: "Carl X. Su" Date: Sat, 7 Dec 2013 02:23:19 +0800 Subject: [PATCH 01/33] Add zh-TW l10n --- src/js/dialogs/confirmShowSolution.js | 10 +++ src/js/dialogs/levelBuilder.js | 19 ++++++ src/js/dialogs/nextLevel.js | 10 +++ src/js/dialogs/sandbox.js | 52 ++++++++++++++ src/js/intl/strings.js | 68 +++++++++++++++++++ src/js/views/index.js | 14 +++- src/levels/advanced/multipleParents.js | 93 +++++++++++++++++++++++++- src/levels/index.js | 10 +++ src/levels/intro/branching.js | 82 ++++++++++++++++++++++- src/levels/intro/commits.js | 46 +++++++++++++ src/levels/intro/merging.js | 73 +++++++++++++++++++- src/levels/intro/rebasing.js | 73 +++++++++++++++++++- src/levels/mixed/grabbingOneCommit.js | 44 +++++++++++- src/levels/mixed/jugglingCommits.js | 45 ++++++++++++- src/levels/mixed/jugglingCommits2.js | 47 ++++++++++++- src/levels/rampup/detachedHead.js | 84 ++++++++++++++++++++++- src/levels/rampup/relativeRefs.js | 81 +++++++++++++++++++++- src/levels/rampup/relativeRefs2.js | 60 ++++++++++++++++- src/levels/rampup/reversingChanges.js | 67 ++++++++++++++++++- src/levels/rebase/manyRebases.js | 24 ++++++- src/levels/rebase/selectiveRebase.js | 26 ++++++- 21 files changed, 1003 insertions(+), 25 deletions(-) diff --git a/src/js/dialogs/confirmShowSolution.js b/src/js/dialogs/confirmShowSolution.js index 86ec1636..7f95ae84 100644 --- a/src/js/dialogs/confirmShowSolution.js +++ b/src/js/dialogs/confirmShowSolution.js @@ -19,6 +19,16 @@ exports.dialog = { ] } }], + 'zh_TW': [{ + type: 'ModalAlert', + options: { + markdowns: [ + '## 确定要看答案吗?', + '', + '哥相信你!你可以的' + ] + } + }], 'fr_FR': [{ type: 'ModalAlert', options: { diff --git a/src/js/dialogs/levelBuilder.js b/src/js/dialogs/levelBuilder.js index a597756c..764d4992 100644 --- a/src/js/dialogs/levelBuilder.js +++ b/src/js/dialogs/levelBuilder.js @@ -37,6 +37,25 @@ exports.dialog = { ] } }], + 'zh_TW': [{ + type: 'ModalAlert', + options: { + markdowns: [ + '## 欢迎使用关卡生成器!', + '', + '主要步骤如下:', + '', + ' * 使用 git 命令布置好初始环境', + ' * 使用 ```define start``` 命令定义起始树', + ' * 输入一系列 git 命令,编好答案', + ' * 使用 ```define goal``` 命令定义目标树。定义目标的同时定义答案', + ' * 还可以用 ```define hint``` 命令定义一个提示', + ' * 用 ```define name``` 修改名称', + ' * 还可以用 ```edit dialog``` 定义一个漂亮的开始对话框', + ' * 输入 ```finish``` 就可以输出你的关卡数据(JSON)了!' + ] + } + }], 'fr_FR': [{ type: 'ModalAlert', options: { diff --git a/src/js/dialogs/nextLevel.js b/src/js/dialogs/nextLevel.js index c6e3cf75..7f37248c 100644 --- a/src/js/dialogs/nextLevel.js +++ b/src/js/dialogs/nextLevel.js @@ -31,6 +31,16 @@ exports.dialog = { ] } }], + 'zh_TW': [{ + type: 'ModalAlert', + options: { + markdowns: [ + '## 碉堡了!', + '', + '你用 *{numCommands}* 条命令搞定了这一关;我们的答案要用 {best}。' + ] + } + }], 'fr_FR': [{ type: 'ModalAlert', options: { diff --git a/src/js/dialogs/sandbox.js b/src/js/dialogs/sandbox.js index e745d8d9..e011e5ef 100644 --- a/src/js/dialogs/sandbox.js +++ b/src/js/dialogs/sandbox.js @@ -161,6 +161,58 @@ exports.dialog = { ] } }], + 'zh_TW': [{ + type: 'ModalAlert', + options: { + markdowns: [ + '## 欢迎光临 LearnGitBranching!', + '', + '本应用旨在帮助初学者领会 git 分支背后的强大概念。', + '希望你能喜欢这个应用,并学到知识!', + '', + '# 演示!', + '', + '如果你还没看过演示,请到此查看:', + '', + '[http://pcottle.github.io/learnGitBranching/?demo](http://pcottle.github.io/learnGitBranching/?demo)', + '', + '厌烦这个对话框? 在 URL 后头加上 `?NODEMO` 就看不到它了,也可以直接点下边这个链接:', + '', + '[http://pcottle.github.io/learnGitBranching/?NODEMO](http://pcottle.github.io/learnGitBranching/?NODEMO)' + ] + } + }, { + type: 'ModalAlert', + options: { + markdowns: [ + '## Git 命令', + '', + '在沙盒模式里,你有好多命令可用。 包括:', + '', + ' * commit', + ' * branch', + ' * checkout', + ' * cherry-pick', + ' * reset', + ' * revert', + ' * rebase', + ' * merge' + ] + } + }, { + type: 'ModalAlert', + options: { + markdowns: [ + '## 分享即关怀', + '', + '使用 `export tree` 和 `import tree` 与朋友分享 Git 树', + '', + '有个好课程可以分享?试试用 `build level` 创建一个关卡,或者 `import level` 试试朋友的。', + '', + '言归正传,让我们先从 `levels` 开始……' + ] + } + }], 'ko': [{ type: 'ModalAlert', options: { diff --git a/src/js/intl/strings.js b/src/js/intl/strings.js index b8f2a9ab..23ab7a4d 100644 --- a/src/js/intl/strings.js +++ b/src/js/intl/strings.js @@ -5,6 +5,7 @@ exports.strings = { 'ja': '最後のレベルをクリアしました!すごい!!', 'en_US': 'Wow! You finished the last level, great!', 'zh_CN': '我的个天!你完成了最后一关,碉堡了!', + 'zh_TW': '我的个天!你完成了最后一关,碉堡了!', 'fr_FR': 'Félicitations, vous avez réussi le dernier niveau !' }, /////////////////////////////////////////////////////////////////////////// @@ -13,6 +14,7 @@ exports.strings = { 'en_US': 'Would you like to move on to *"{nextLevel}"*, the next level?', 'ja': '次の章 *"{nextLevel}"* へ進みますか?', 'zh_CN': '要不前进到下一关 *“{nextLevel}”*?', + 'zh_TW': '要不前进到下一关 *“{nextLevel}”*?', 'fr_FR': 'Voulez-vous passer à *"{nextLevel}"*, le prochain niveau ?' }, /////////////////////////////////////////////////////////////////////////// @@ -21,6 +23,7 @@ exports.strings = { 'en_US': 'Awesome! You matched or exceeded our solution.', 'ja': '素晴らしい!このレベルをクリアしましたね。', 'zh_CN': '牛鼻啊!你达到或者完爆了我们的答案。', + 'zh_TW': '牛鼻啊!你达到或者完爆了我们的答案。', 'fr_FR': 'Fabuleux ! Votre solution a égalé ou surpassé notre solution.' }, /////////////////////////////////////////////////////////////////////////// @@ -29,6 +32,7 @@ exports.strings = { 'en_US': 'See if you can whittle it down to {best} :D', 'ja': '模範解答の回数={best}回でクリアする方法も考えてみましょう :D', 'zh_CN': '试试看你能否在 {best} 之内搞定 :D', + 'zh_TW': '试试看你能否在 {best} 之内搞定 :D', 'fr_FR': 'Voyons si vous pouvez descendre à {best} :D' }, /////////////////////////////////////////////////////////////////////////// @@ -61,6 +65,7 @@ exports.strings = { '__desc__': 'One of the lines for git status output', 'en_US': 'Detached head!', 'zh_CN': '脑袋搬家(Detached head)了!', + 'zh_TW': '脑袋搬家(Detached head)了!', 'fr_FR': 'head détaché !' }, /////////////////////////////////////////////////////////////////////////// @@ -68,6 +73,7 @@ exports.strings = { '__desc__': 'One of the lines for git status output', 'en_US': 'On branch {branch}', 'zh_CN': '切换到分支 {branch}', + 'zh_TW': '切换到分支 {branch}', 'fr_FR': 'Sur la branche {branch}' }, /////////////////////////////////////////////////////////////////////////// @@ -75,6 +81,7 @@ exports.strings = { '__desc__': 'One of the lines for git status output', 'en_US': 'Ready to commit! (as always in this demo)', 'zh_CN': '可以提交啦!(这演示里一直可以提交)', + 'zh_TW': '可以提交啦!(这演示里一直可以提交)', 'fr_FR': 'Prêt à commit ! (comme toujours dans cette démo)' }, /////////////////////////////////////////////////////////////////////////// @@ -83,6 +90,7 @@ exports.strings = { 'shoutout to your school / city / whatever!', 'en_US': 'Quick commit. Go Bears!', 'zh_CN': '快速提交。上啊月熊!', + 'zh_TW': '快速提交。上啊月熊!', 'fr_FR': 'Commit rapide. NoMaN Sux!' }, 'git-error-origin-fetch-uptodate': { @@ -121,6 +129,7 @@ exports.strings = { 'en_US': 'You can\'t delete the master branch, the branch you are on, or things that ' + 'aren\'t branches', 'zh_CN': '你不能删除主分支(master),或者你当前所在的分支,或者其他不是分支也不知道能不能吃的东西。', + 'zh_TW': '你不能删除主分支(master),或者你当前所在的分支,或者其他不是分支也不知道能不能吃的东西。', 'fr_FR': 'Vous ne pouvez supprimer la branche master, la branche sur laquelle vous êtes, ou ce qui n\'est pas une branche' }, /////////////////////////////////////////////////////////////////////////// @@ -128,6 +137,7 @@ exports.strings = { '__desc__': 'The commit message for a merge commit', 'en_US': 'Merge {target} into {current}', 'zh_CN': '合并 {target} 到 {current}', + 'zh_TW': '合并 {target} 到 {current}', 'fr_FR': 'Merge de {target} dans {current}' }, /////////////////////////////////////////////////////////////////////////// @@ -135,6 +145,7 @@ exports.strings = { '__desc__': 'One of the error messages for git', 'en_US': 'No commits to rebase! Everything is a merge commit or changes already applied', 'zh_CN': '没有需要 rebase 的提交!都是个合并提交,或者已经 rebase 过了。', + 'zh_TW': '没有需要 rebase 的提交!都是个合并提交,或者已经 rebase 过了。', 'fr_FR': 'Aucune commit à rebaser ! Tout est soit un commit de merge, soit des modifications déjà appliquées' }, /////////////////////////////////////////////////////////////////////////// @@ -142,6 +153,7 @@ exports.strings = { '__desc__': 'The message that explains the result of a git command', 'en_US': 'Nothing to do...', 'zh_CN': '没啥鸟事……', + 'zh_TW': '没啥鸟事……', 'fr_FR': 'Rien à effectuer…' }, /////////////////////////////////////////////////////////////////////////// @@ -149,6 +161,7 @@ exports.strings = { '__desc__': 'The message that explains the result of a git command', 'en_US': 'Fast forwarding...', 'zh_CN': '快速前进……', + 'zh_TW': '快速前进……', 'fr_FR': 'En avance rapide…' }, /////////////////////////////////////////////////////////////////////////// @@ -156,6 +169,7 @@ exports.strings = { '__desc__': 'The message that explains the result of a git command', 'en_US': 'Branch already up-to-date', 'zh_CN': '分支已经是最新啦', + 'zh_TW': '分支已经是最新啦', 'fr_FR': 'Branche déjà à jour' }, /////////////////////////////////////////////////////////////////////////// @@ -163,6 +177,7 @@ exports.strings = { '__desc__': 'One of the error messages for git', 'en_US': 'The ref {ref} does not exist or is unknown', 'zh_CN': '索引 {ref} 不存在,或者找不到。', + 'zh_TW': '索引 {ref} 不存在,或者找不到。', 'fr_FR': 'La référence {ref} n\'existe pas ou est inconnue' }, /////////////////////////////////////////////////////////////////////////// @@ -170,6 +185,7 @@ exports.strings = { '__desc__': 'One of the error messages for git', 'en_US': 'Commit {commit} doesnot have a {match}', 'zh_CN': '提交 {commit} 并没有 {match}', + 'zh_TW': '提交 {commit} 并没有 {match}', 'fr_FR': 'Le commit {commit} n\'a pas de correspondance {match}' }, /////////////////////////////////////////////////////////////////////////// @@ -177,6 +193,7 @@ exports.strings = { '__desc__': 'One of the warning messages for git', 'en_US': 'Warning!! Detached HEAD state', 'zh_CN': '警告!脑袋搬家(Detached HEAD)状态', + 'zh_TW': '警告!脑袋搬家(Detached HEAD)状态', 'fr_FR': 'Attention ! HEAD est détaché' }, /////////////////////////////////////////////////////////////////////////// @@ -184,6 +201,7 @@ exports.strings = { '__desc__': 'One of the warning messages for git', 'en_US': 'No need to add files in this demo', 'zh_CN': '此演示中不需要添加文件', + 'zh_TW': '此演示中不需要添加文件', 'fr_FR': 'Aucun besoin d\'ajouter des fichiers dans cette démo' }, /////////////////////////////////////////////////////////////////////////// @@ -191,6 +209,7 @@ exports.strings = { '__desc__': 'One of the error messages for git', 'en_US': 'Those options you specified are incompatible or incorrect', 'zh_CN': '你所指定的参数不兼容或者不准确', + 'zh_TW': '你所指定的参数不兼容或者不准确', 'fr_FR': 'Les options que vous avez spécifiées sont incompatibles ou incorrectes' }, /////////////////////////////////////////////////////////////////////////// @@ -198,6 +217,7 @@ exports.strings = { '__desc__': 'One of the error messages for git', 'en_US': 'The commit {commit} already exists in your changes set, aborting!', 'zh_CN': '提交 {commit} 已经存在于你的改动集里,正在中止!', + 'zh_TW': '提交 {commit} 已经存在于你的改动集里,正在中止!', 'fr_FR': 'Le commit {commit} existe déjà dans votre ensemble de modifications, opération avortée !' }, /////////////////////////////////////////////////////////////////////////// @@ -205,6 +225,7 @@ exports.strings = { '__desc__': 'One of the error messages for git', 'en_US': 'Can\'t reset in detached head! Use checkout if you want to move', 'zh_CN': '不能在分离的 HEAD 里重置!用 checkout 吧', + 'zh_TW': '不能在分离的 HEAD 里重置!用 checkout 吧', 'fr_FR': 'On ne peut pas effectuer un reset quand head est détaché. Utilisez checkout pour déplacer' }, /////////////////////////////////////////////////////////////////////////// @@ -212,6 +233,7 @@ exports.strings = { '__desc__': 'One of the warning messages for git', 'en_US': 'The default behavior is a --hard reset, feel free to omit that option!', 'zh_CN': '默认的行为是 --hard 硬重置,尽管省略掉那个选项吧!', + 'zh_TW': '默认的行为是 --hard 硬重置,尽管省略掉那个选项吧!', 'fr_FR': 'Le comportement par défaut est un --hard reset, soyez libre d\'omettre cette option !' }, /////////////////////////////////////////////////////////////////////////// @@ -220,6 +242,7 @@ exports.strings = { 'en_US': 'There is no concept of adding / staging files, so that option or ' + 'command is invalid!', 'zh_CN': '没有添加、缓存文件的必要,所以改选项或者命令是不合法的。', + 'zh_TW': '没有添加、缓存文件的必要,所以改选项或者命令是不合法的。', 'fr_FR': 'Il n\'y a pas le concept d\'ajouter / mettre en staging, donc cette option ou commande est invalide' }, /////////////////////////////////////////////////////////////////////////// @@ -227,6 +250,7 @@ exports.strings = { '__desc__': 'Message for reverting git command', 'en_US': 'Reverting {oldCommit}: {oldMsg}', 'zh_CN': '撤销 {oldCommit}:{oldMsg}', + 'zh_TW': '撤销 {oldCommit}:{oldMsg}', 'fr_FR': 'Revert {oldCommit}: {oldMsg}' }, /////////////////////////////////////////////////////////////////////////// @@ -234,6 +258,7 @@ exports.strings = { '__desc__': 'One of the error messages for git', 'en_US': 'I expect at most {upper} argument(s) for {what}', 'zh_CN': '{what} 期望最多 {upper} 个参数', + 'zh_TW': '{what} 期望最多 {upper} 个参数', 'fr_FR': 'J\'attends au plus {upper} argument(s) pour {what}' }, /////////////////////////////////////////////////////////////////////////// @@ -241,6 +266,7 @@ exports.strings = { '__desc__': 'One of the error messages for git', 'en_US': 'I expect at least {lower} argument(s) for {what}', 'zh_CN': '{what} 期望最少 {lower} 个参数', + 'zh_TW': '{what} 期望最少 {lower} 个参数', 'fr_FR': 'J\'attends au moins {upper} argument(s) pour {what}' }, /////////////////////////////////////////////////////////////////////////// @@ -248,6 +274,7 @@ exports.strings = { '__desc__': 'One of the error messages for git', 'en_US': 'That command accepts no general arguments', 'zh_CN': '该命令不接收参数', + 'zh_TW': '该命令不接收参数', 'fr_FR': 'Cette commande n\'accepte aucun argument général' }, /////////////////////////////////////////////////////////////////////////// @@ -255,6 +282,7 @@ exports.strings = { '__desc__': 'The prompt to copy the tree when sharing', 'en_US': 'Copy the tree string below', 'zh_CN': '拷贝下面的树字符串', + 'zh_TW': '拷贝下面的树字符串', 'fr_FR': 'Copiez la chaîne d\'arbre ci-dessous' }, /////////////////////////////////////////////////////////////////////////// @@ -264,6 +292,7 @@ exports.strings = { 'ja': '日本語版リポジトリ', 'ko': 'Git 브랜치 배우기', 'zh_CN': '学习Git分支', + 'zh_TW': '学习Git分支', 'fr_FR': 'Apprenez Git Branching' }, /////////////////////////////////////////////////////////////////////////// @@ -271,6 +300,7 @@ exports.strings = { '__desc__': 'The prompt to select a level on the drop down view', 'en_US': 'Select a level', 'zh_CN': '选择一关', + 'zh_TW': '选择一关', 'fr_FR': 'Choisissez un niveau' }, /////////////////////////////////////////////////////////////////////////// @@ -278,6 +308,7 @@ exports.strings = { '__desc__': 'When branch names get too long, we need to truncate them. This is the warning for that', 'en_US': 'Sorry, we need to keep branch names short for the visuals. Your branch name was truncated to 9 characters, resulting in "{branch}"', 'zh_CN': '抱歉,为了显示的需要,我们需要一个短些的分支名称。您使用的将被截断到9个字符,即"{branch}"', + 'zh_TW': '抱歉,为了显示的需要,我们需要一个短些的分支名称。您使用的将被截断到9个字符,即"{branch}"', 'fr_FR': 'Désolé, nous devons garder les noms de branches courts pour la visualisation. Votre nom de branche a été tronqué à 9 caractères, devenant "{branch}"' }, /////////////////////////////////////////////////////////////////////////// @@ -285,6 +316,7 @@ exports.strings = { '__desc__': 'When the user enters a branch name thats not ok', 'en_US': 'That branch name "{branch}" is not allowed!', 'zh_CN': '不能给分支起这个名字 "{branch}"', + 'zh_TW': '不能给分支起这个名字 "{branch}"', 'fr_FR': 'Ce nom de branche "{branch}" n\'est pas autorisé' }, /////////////////////////////////////////////////////////////////////////// @@ -297,6 +329,7 @@ exports.strings = { '__desc__': 'When the user specifies an option that is not supported by our demo', 'en_US': 'The option "{option}" is not supported!', 'zh_CN': '不支持选项 "{option}"', + 'zh_TW': '不支持选项 "{option}"', 'fr_FR': 'L\'option "{option}" n\'est pas supportée' }, /////////////////////////////////////////////////////////////////////////// @@ -304,6 +337,7 @@ exports.strings = { '__desc__': 'The line that shows how to format a git command', 'en_US': 'git []', 'zh_CN': 'git <命令> [<参数>]', + 'zh_TW': 'git <命令> [<参数>]', 'fr_FR': 'git []' }, /////////////////////////////////////////////////////////////////////////// @@ -311,6 +345,7 @@ exports.strings = { '__desc__': 'In the git help command, the header above the supported commands', 'en_US': 'Supported commands:', 'zh_CN': '支持的命令有:', + 'zh_TW': '支持的命令有:', 'fr_FR': 'Commandes supportées' }, /////////////////////////////////////////////////////////////////////////// @@ -318,6 +353,7 @@ exports.strings = { '__desc__': 'In the dummy git output, the header before showing all the commands', 'en_US': 'Usage:', 'zh_CN': '使用:', + 'zh_TW': '使用:', 'fr_FR': 'Utilisation :' }, /////////////////////////////////////////////////////////////////////////// @@ -325,6 +361,7 @@ exports.strings = { '__desc__': 'The git version dummy output, kind of silly. PCOTTLE is my unix name but feel free to put yours instead', 'en_US': 'Git Version PCOTTLE.1.0', 'zh_CN': 'Git 版本 PCOTTLE.1.0', + 'zh_TW': 'Git 版本 PCOTTLE.1.0', 'fr_FR': 'Git version PCOTTLE.1.0' }, /////////////////////////////////////////////////////////////////////////// @@ -332,6 +369,7 @@ exports.strings = { '__desc__': 'when the tree is visually refreshed', 'en_US': 'Refreshing tree...', 'zh_CN': '正在刷新树结构...', + 'zh_TW': '正在刷新树结构...', 'fr_FR': 'Actualisation de l\'arbre…' }, /////////////////////////////////////////////////////////////////////////// @@ -339,6 +377,7 @@ exports.strings = { '__desc__': 'when the locale is set to something', 'en_US': 'Locale set to {locale}', 'zh_CN': '语言更改为 {locale}', + 'zh_TW': '语言更改为 {locale}', 'fr_FR': 'Langue changée à {locale}' }, /////////////////////////////////////////////////////////////////////////// @@ -346,6 +385,7 @@ exports.strings = { '__desc__': 'when the locale is reset', 'en_US': 'Locale reset to default, which is {locale}', 'zh_CN': '语言重置为默认的 {locale}', + 'zh_TW': '语言重置为默认的 {locale}', 'fr_FR': 'Langue remise par défaut, qui est {locale}' }, /////////////////////////////////////////////////////////////////////////// @@ -365,6 +405,7 @@ exports.strings = { '__desc__': 'dummy command output for the command in the key', 'en_US': 'Directory changed to "/directories/dont/matter/in/this/demo"', 'zh_CN': '目录切换到 "/directories/dont/matter/in/this/demo"', + 'zh_TW': '目录切换到 "/directories/dont/matter/in/this/demo"', 'fr_FR': 'Répertoire changé à "/directories/dont/matter/in/this/demo" (les répertoires ne servent à rien dans cette démo)' }, /////////////////////////////////////////////////////////////////////////// @@ -372,12 +413,14 @@ exports.strings = { '__desc__': 'Dummy command output for the command in the key', 'en_US': 'DontWorryAboutFilesInThisDemo.txt', 'zh_CN': 'DontWorryAboutFilesInThisDemo.txt (译: 在试验里不用担心文件.txt)', + 'zh_TW': 'DontWorryAboutFilesInThisDemo.txt (译: 在试验里不用担心文件.txt)', 'fr_FR': 'DontWorryAboutFilesInThisDemo.txt (ne vous préoccupez pas des noms de fichier dans cette démo)' }, 'mobile-alert': { '__desc__': 'When someone comes to the site on a mobile device, they can not input commands so this is a nasty alert to tell them', 'en_US': 'LGB can\'t receive input on mobile, visit on desktop! it\'s worth it :D', 'zh_CN': '无法在移动设备/平板上调出键盘 :( 请试试桌面版 :D', + 'zh_TW': '无法在移动设备/平板上调出键盘 :( 请试试桌面版 :D', 'fr_FR': 'Impossible de faire apparaître le clavier sur mobile / tablette :( Essayez de passer sur un ordinateur de bureau :D' }, /////////////////////////////////////////////////////////////////////////// @@ -385,6 +428,7 @@ exports.strings = { '__desc__': 'When you export a tree, we want you to share the tree with friends', 'en_US': 'Share this tree with friends! They can load it with "import tree"', 'zh_CN': '与你的好友分享提交树!他们可以用 "import tree" 加载它', + 'zh_TW': '与你的好友分享提交树!他们可以用 "import tree" 加载它', 'fr_FR': 'Partagez cet arbre avec vos amis ! Ils peuvent le charger avec "import tree"' }, /////////////////////////////////////////////////////////////////////////// @@ -392,6 +436,7 @@ exports.strings = { '__desc__': 'When you are importing a level or tree', 'en_US': 'Paste a JSON blob below!', 'zh_CN': '在下边粘贴一个JSON串', + 'zh_TW': '在下边粘贴一个JSON串', 'fr_FR': 'Collez un blob JSON ci-dessous !' }, /////////////////////////////////////////////////////////////////////////// @@ -399,6 +444,7 @@ exports.strings = { '__desc__': 'When you reset the solved map to clear your solved history, in case someone else wants to use your browser', 'en_US': 'Solved map was reset, you are starting from a clean slate!', 'zh_CN': '解决列表已重置,您现在从零开始了', + 'zh_TW': '解决列表已重置,您现在从零开始了', 'fr_FR': 'La carte des niveaux résolus a été effacée, vous repartez de zéro !' }, /////////////////////////////////////////////////////////////////////////// @@ -406,6 +452,7 @@ exports.strings = { '__desc__': 'When the user tries to exit a level when they are not in one', 'en_US': 'You are not in a level! You are in a sandbox, start a level with "levels"', 'zh_CN': '您没在关卡中!您在沙盒中,要开始关卡请输入 "levels"', + 'zh_TW': '您没在关卡中!您在沙盒中,要开始关卡请输入 "levels"', 'fr_FR': 'Vous n\'êtes pas dans un niveau ! Vous êtes dans le mode bac à sable, commencez un niveau avec "levels"' }, /////////////////////////////////////////////////////////////////////////// @@ -413,6 +460,7 @@ exports.strings = { '__desc__': 'When you say an id but that level doesnt exist', 'en_US': 'A level for that id "{id}" was not found! Opening up a level selection view', 'zh_CN': '没找到id为 "{id}" 的关卡!打开关卡选择框', + 'zh_TW': '没找到id为 "{id}" 的关卡!打开关卡选择框', 'fr_FR': 'Le niveau dont l\'identifiant est {id} n\'a pas été trouvé ! Ouverture de la vue de sélection des niveaux' }, /////////////////////////////////////////////////////////////////////////// @@ -420,6 +468,7 @@ exports.strings = { '__desc__': 'The undo command can only undo back until the last time the level was reset or the beginning of the level', 'en_US': 'The undo stack is empty!', 'zh_CN': '还没有什么可以撤销', + 'zh_TW': '还没有什么可以撤销', 'fr_FR': 'La pile d\'annulation est vide !' }, /////////////////////////////////////////////////////////////////////////// @@ -427,6 +476,7 @@ exports.strings = { '__desc__': 'When you play in a level that is already solved', 'en_US': 'You have already solved this level, try other levels with "levels" or go back to sandbox with "sandbox"', 'zh_CN': '你已经解决了本关,输入 "levels" 尝试其他关卡,或者输入 "sandbox" 回到沙盒中', + 'zh_TW': '你已经解决了本关,输入 "levels" 尝试其他关卡,或者输入 "sandbox" 回到沙盒中', 'fr_FR': 'Vous avez déjà résolu ce niveau, essayez d\'autres niveaux avec "levels" ou revenez au bac à sable avec "sandbox"' }, /////////////////////////////////////////////////////////////////////////// @@ -434,6 +484,7 @@ exports.strings = { '__desc__': 'When you try a command that is disabled', 'en_US': 'That git command is disabled for this level!', 'zh_CN': '该命令在本关不允许使用!', + 'zh_TW': '该命令在本关不允许使用!', 'fr_FR': 'Cette commande git est désactivée pour ce niveau !' }, /////////////////////////////////////////////////////////////////////////// @@ -441,6 +492,7 @@ exports.strings = { '__desc__': 'when you have made the level, prompt to share this', 'en_US': 'Here is the JSON for this level! Share it with somenoe or send it to me on Github', 'zh_CN': '这是一个关卡定义JSON!您可以分享它或者发到我的GitHub上', + 'zh_TW': '这是一个关卡定义JSON!您可以分享它或者发到我的GitHub上', 'fr_FR': 'Voici le JSON pour ce niveau ! Partagez-le avec quelqu\'un ou envoyez-le moi sur Github' }, /////////////////////////////////////////////////////////////////////////// @@ -448,6 +500,7 @@ exports.strings = { '__desc__': 'prompt to add a start dialog', 'en_US': 'You have not specified a start dialog, would you like to add one?', 'zh_CN': '您还没有定义一开始的介绍,是否添加一个?', + 'zh_TW': '您还没有定义一开始的介绍,是否添加一个?', 'fr_FR': 'Vous n\'avez pas spécifié de dialogue de départ, voulez-vous en ajouter un ?' }, /////////////////////////////////////////////////////////////////////////// @@ -455,6 +508,7 @@ exports.strings = { '__desc__': 'prompt to add a hint', 'en_US': 'You have not specified a hint, would you like to add one?', 'zh_CN': '您还没有定义提示,是否添加一个?', + 'zh_TW': '您还没有定义提示,是否添加一个?', 'fr_FR': 'Vous n\'avez pas spécifié d\'indice, voulez-vous en ajouter un ?' }, /////////////////////////////////////////////////////////////////////////// @@ -462,6 +516,7 @@ exports.strings = { '__desc__': 'prompt for hint', 'en_US': 'Enter the hint for this level, or leave this blank if you do not want to include one', 'zh_CN': '请输入关卡提示,或者故意留空', + 'zh_TW': '请输入关卡提示,或者故意留空', 'fr_FR': 'Entrez l\'indice pour ce niveau, ou laissez-le vide pour ne pas l\'inclure' }, /////////////////////////////////////////////////////////////////////////// @@ -469,6 +524,7 @@ exports.strings = { '__desc__': 'prompt for level name', 'en_US': 'Enter the name for the level', 'zh_CN': '输入关卡名', + 'zh_TW': '输入关卡名', 'fr_FR': 'Entrez le nom pour ce niveau' }, /////////////////////////////////////////////////////////////////////////// @@ -476,6 +532,7 @@ exports.strings = { '__desc__': 'If you define a solution without any commands, aka a level that is solved without doing anything', 'en_US': 'Your solution is empty!! Something is amiss', 'zh_CN': '你的解法是空的!! 这应该是出错了', + 'zh_TW': '你的解法是空的!! 这应该是出错了', 'fr_FR': 'Votre solution est vide !! Quelque chose ne tourne pas rond' }, /////////////////////////////////////////////////////////////////////////// @@ -483,6 +540,7 @@ exports.strings = { '__desc__': 'When you define the start point again, it overwrites the solution and goal so we add a warning', 'en_US': 'Defining start point... solution and goal will be overwritten if they were defined earlier', 'zh_CN': '定义开始点... 解决方法和目标会被新的替代', + 'zh_TW': '定义开始点... 解决方法和目标会被新的替代', 'fr_FR': 'Redéfinition du point de départ… la solution et la cible seront écrasés s\'ils ont déjà été définis' }, /////////////////////////////////////////////////////////////////////////// @@ -490,6 +548,7 @@ exports.strings = { '__desc__': 'When you are in a level and you say help, its vague and you need to specify', 'en_US': 'You are in a level, so multiple forms of help are available. Please select either "help level" to learn more about this lesson, "help general" for using Learn GitBranching, or "objective" to learn about how to solve the level.', 'zh_CN': '您正在关卡中,这里有多种形式的帮助,请选择 "help level" (关卡帮助)或 "help general" (一般帮助)', + 'zh_TW': '您正在关卡中,这里有多种形式的帮助,请选择 "help level" (关卡帮助)或 "help general" (一般帮助)', 'fr_FR': 'Vous êtes dans un niveau, donc plusieurs formes d\'aide sont disponibles. Merci de sélectionner soit "help level" pour en apprendre plus sur cette leçon, "help general" pour l\'utilisation de Learn GitBranching, ou "objective" pour apprendre comment résoudre le niveau' }, /////////////////////////////////////////////////////////////////////////// @@ -497,6 +556,7 @@ exports.strings = { '__desc__': 'When you are in a level builder, the help command is vague so you need to specify what you mean', 'en_US': 'You are in a level builder, so multiple forms of help are available. Please select either "help general" or "help builder"', 'zh_CN': '您正在进行关卡构建中,这里有多种形式的帮助,请选择 "help general" (一般帮助)或 "help builder" (关卡构建帮助)', + 'zh_TW': '您正在进行关卡构建中,这里有多种形式的帮助,请选择 "help general" (一般帮助)或 "help builder" (关卡构建帮助)', 'fr_FR': 'Vous êtes dans l\'éditeur de niveaux, donc plusieurs formes d\'aide sont disponibles. Merci de sélectionner soit "help general" soit "help builder"' }, /////////////////////////////////////////////////////////////////////////// @@ -504,6 +564,7 @@ exports.strings = { '__desc__': 'title of window that shoes the goal tree to reach', 'en_US': 'Goal To Reach', 'zh_CN': '目标', + 'zh_TW': '目标', 'fr_FR': 'Cible à atteindre' }, /////////////////////////////////////////////////////////////////////////// @@ -516,6 +577,7 @@ exports.strings = { '__desc__': 'the helper message for the window that shows the goal tree', 'en_US': 'You can hide this window with "hide goal"', 'zh_CN': '你可以通过命令 "hide goal" 关闭这个窗口', + 'zh_TW': '你可以通过命令 "hide goal" 关闭这个窗口', 'fr_FR': 'Vous pouvez masquer cette fenêtre avec "hide goal"' }, /////////////////////////////////////////////////////////////////////////// @@ -523,6 +585,7 @@ exports.strings = { '__desc__': 'The helper message for the window that shows the start tree for a level', 'en_US': 'You can hide this window with "hide start"', 'zh_CN': '你可以通过命令 "hide start" 关闭这个窗口', + 'zh_TW': '你可以通过命令 "hide start" 关闭这个窗口', 'fr_FR': 'Vous pouvez masquer cette fenêtre avec "hide start"' }, /////////////////////////////////////////////////////////////////////////// @@ -530,6 +593,7 @@ exports.strings = { '__desc__': 'The name for the environment where you build levels', 'en_US': 'Level Builder', 'zh_CN': '关卡生成器', + 'zh_TW': '关卡生成器', 'fr_FR': 'Éditeur de niveaux' }, /////////////////////////////////////////////////////////////////////////// @@ -537,6 +601,7 @@ exports.strings = { '__desc__': 'when the user tries to open a start dialog for a level that does not have one', 'en_US': 'There is no start dialog to show for this level!', 'zh_CN': '介绍? 这关真没有!', + 'zh_TW': '介绍? 这关真没有!', 'fr_FR': 'Il n\'y a aucun dialogue de départ à afficher pour ce niveau !' }, /////////////////////////////////////////////////////////////////////////// @@ -544,6 +609,7 @@ exports.strings = { '__desc__': 'when no hint is available for a level', 'en_US': "Hmm, there doesn't seem to be a hint for this level :-/", 'zh_CN': "提示?嗯,这关真没有哎~ :-/", + 'zh_TW': "提示?嗯,这关真没有哎~ :-/", 'fr_FR': 'Hum, il ne semble pas y avoir d\'indice pour ce niveau :-/' }, /////////////////////////////////////////////////////////////////////////// @@ -551,6 +617,7 @@ exports.strings = { '__desc__': 'This error happens when we are trying to translate a specific key and the locale version is mission', 'en_US': 'The translation for {key} does not exist yet :( Please hop on github and offer up a translation!', 'zh_CN': '还没翻译 {key} :( 请在gitHub上贡献你的翻译!', + 'zh_TW': '还没翻译 {key} :( 请在gitHub上贡献你的翻译!', 'fr_FR': 'La traduction pour {key} n\'existe pas encore :( Venez sur Github pour en offrir une !' }, /////////////////////////////////////////////////////////////////////////// @@ -558,6 +625,7 @@ exports.strings = { '__desc__': 'The general error when we encounter a dialog that is not translated', 'en_US': 'This dialog or text is not yet translated in your locale :( Hop on github to aid in translation!', 'zh_CN': '这段对话还没有被翻译成你的语言 :( 欢迎在gitHub上贡献你的翻译!', + 'zh_TW': '这段对话还没有被翻译成你的语言 :( 欢迎在gitHub上贡献你的翻译!', 'fr_FR': 'Ce message n\'a pas encore été traduit dans votre langue :( Venez sur Github aider à la traduction !' } }; diff --git a/src/js/views/index.js b/src/js/views/index.js index 23649dec..90c77b13 100644 --- a/src/js/views/index.js +++ b/src/js/views/index.js @@ -675,8 +675,11 @@ var IntlHelperBar = HelperBar.extend({ text: 'Git 브랜치 배우기', id: 'korean' }, { - text: '学习Git分支', - id: 'chinese' + text: '学习 Git 分支', + id: 'chinese_s' + }, { + text: 'Git 分支', + id: 'chinese_t' }, { text: 'français', id: 'french' @@ -711,9 +714,14 @@ var IntlHelperBar = HelperBar.extend({ this.hide(); }, - onChineseClick: function() { + onSimpChineseClick: function() { this.fireCommand('locale zh_CN; levels'); this.hide(); + }, + + onTradChineseClick: function() { + this.fireCommand('locale zh_TW; levels'); + this.hide(); } }); diff --git a/src/levels/advanced/multipleParents.js b/src/levels/advanced/multipleParents.js index dd572116..52da55a6 100644 --- a/src/levels/advanced/multipleParents.js +++ b/src/levels/advanced/multipleParents.js @@ -4,11 +4,13 @@ exports.level = { "startTree": "{\"branches\":{\"master\":{\"target\":\"C7\",\"id\":\"master\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C3\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C2\"],\"id\":\"C5\"},\"C6\":{\"parents\":[\"C4\",\"C5\"],\"id\":\"C6\"},\"C7\":{\"parents\":[\"C6\"],\"id\":\"C7\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}", "name": { "en_US": "Multiple parents", - "zh_CN": "多个父提交记录" + "zh_CN": "多个父提交记录", + "zh_TW": "多个父提交记录" }, "hint": { "en_US": "Use `git branch bugWork` with a target commit to create the missing reference.", - "zh_CN": "使用`git branch bugWork`加上一个目标提交记录来创建消失的引用。" + "zh_CN": "使用`git branch bugWork`加上一个目标提交记录来创建消失的引用。", + "zh_TW": "使用`git branch bugWork`加上一个目标提交记录来创建消失的引用。" }, "startDialog": { "en_US": { @@ -184,6 +186,93 @@ exports.level = { } } ] + }, + "zh_TW": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### 选择父提交", + "", + "和`~`修改符一样,`^`修改符之后也可以跟一个(可选的)数字。", + "", + "这不是用来指定向上返回几代(`~`的作用),`^`后的数字指定跟随合并提交记录的哪一个父提交。还记得一个合并提交有多个父提交吧,所有选择哪条路径不是那么清晰。", + "", + "Git默认选择跟随合并提交的\"第一个\"父提交,使用`^`后跟一个数字来改变这一默认行为。", + "", + "废话不多说,举个例子。", + "" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "这里有一个合并提交。如果不加数字修改符直接切换到`master^`,会回到第一个父提交。", + "", + "(*在我们的图示中,第一个父提交是指合并提交正上方的那个父提交。*)" + ], + "afterMarkdowns": [ + "OK--这恰好是我们想要的。" + ], + "command": "git checkout master^", + "beforeCommand": "git checkout HEAD^; git commit; git checkout master; git merge C2" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "现在来试试选择第二个父提交……" + ], + "afterMarkdowns": [ + "看见了吧?我们回到了第二个父提交。" + ], + "command": "git checkout master^2", + "beforeCommand": "git checkout HEAD^; git commit; git checkout master; git merge C2" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "使用`^`和`~`可以自由在在提交树中移动:" + ], + "afterMarkdowns": [ + "快若闪电!" + ], + "command": "git checkout HEAD~; git checkout HEAD^2; git checkout HEAD~2", + "beforeCommand": "git commit; git checkout C0; git commit; git commit; git commit; git checkout master; git merge C5; git commit" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "再疯狂点,这些修改符支持链式操作!试一下这个:" + ], + "afterMarkdowns": [ + "和前面的结果一样,但只用了一条命令。" + ], + "command": "git checkout HEAD~^2~2", + "beforeCommand": "git commit; git checkout C0; git commit; git commit; git commit; git checkout master; git merge C5; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### 实践一下", + "", + "要完成此关,在指定的目标位置创建一个新的分支。", + "", + "很明显可以简单的直接使用提交记录的hash值(比如`C6`),但我要求你使用刚刚讲到的相对引用修饰符!" + ] + } + } + ] } } }; diff --git a/src/levels/index.js b/src/levels/index.js index 8d7df70a..8650ca20 100644 --- a/src/levels/index.js +++ b/src/levels/index.js @@ -58,6 +58,7 @@ var sequenceInfo = exports.sequenceInfo = { 'ja': 'まずはここから', 'fr_FR': 'Séquence d\'introduction', 'zh_CN': '基础篇', + 'zh_TW': '基础篇', 'ko': '기본 명령어' }, about: { @@ -65,6 +66,7 @@ var sequenceInfo = exports.sequenceInfo = { 'ja': 'gitの基本的なコマンド群をほどよいペースで学ぶ', 'fr_FR': 'Une introduction en douceur à la majorité des commandes git', 'zh_CN': '循序渐进介绍git主要命令', + 'zh_TW': '循序渐进介绍git主要命令', 'ko': '브랜치 관련 주요 git 명령어를 깔끔하게 알려드립니다' } }, @@ -74,12 +76,14 @@ var sequenceInfo = exports.sequenceInfo = { 'ja': '次のレベルに進もう', 'fr_FR': 'Montée en puissance', 'zh_CN': '进阶篇' + 'zh_TW': '进阶篇' }, about: { 'en_US': 'The next serving of 100% git awesomes-ness. Hope you\'re hungry', 'ja': '更にgitの素晴らしさを堪能しよう', 'fr_FR' : 'Le prochain service git 100% excellence. J\'espère que vous êtes affamés', 'zh_CN': '接下来是git的超赞特性。迫不及待了吧!' + 'zh_TW': '接下来是git的超赞特性。迫不及待了吧!' } }, remote: { @@ -107,6 +111,7 @@ var sequenceInfo = exports.sequenceInfo = { 'ja': 'Rebaseをモノにする', 'fr_FR': 'Maîtrise Rebase, Luke!', 'zh_CN': '精通Rebase!', + 'zh_TW': '精通Rebase!', 'ko': '리베이스 완전정복!' }, about: { @@ -116,6 +121,7 @@ var sequenceInfo = exports.sequenceInfo = { 'fr_FR': 'Qu\'est-ce que ce rebase dont tout le monde parle ? Découvrez-le !', 'ko': '그 좋다고들 말하는 rebase에 대해 알아봅시다!', 'zh_CN': '大家都在说的rebase究竟是神马?看看吧!' + 'zh_TW': '大家都在说的rebase究竟是神马?看看吧!' } }, mixed: { @@ -125,6 +131,7 @@ var sequenceInfo = exports.sequenceInfo = { 'fr_FR': 'Un assortiment', 'ko': '종합선물세트', 'zh_CN': '大杂烩?' + 'zh_TW': '大杂烩?' }, about: { 'en_US': 'A mixed bag of Git techniques, tricks, and tips', @@ -132,6 +139,7 @@ var sequenceInfo = exports.sequenceInfo = { 'fr_FR': 'Un assortiment de techniques et astuces pour utiliser Git', 'ko': 'Git을 다루는 다양한 팁과 테크닉을 다양하게 알아봅니다', 'zh_CN': 'Git技术,技巧与贴士杂烩' + 'zh_TW': 'Git技术,技巧与贴士杂烩' } }, advanced: { @@ -139,11 +147,13 @@ var sequenceInfo = exports.sequenceInfo = { 'en_US': 'Advanced Topics', 'fr_FR': 'Sujets Avancés', 'zh_CN': '高级主题' + 'zh_TW': '高级主题' }, about: { 'en_US': 'For the truly brave!', 'fr_FR': 'Pour les plus courageux !', 'zh_CN': '只为真正的勇士!' + 'zh_TW': '只为真正的勇士!' } } }; diff --git a/src/levels/intro/branching.js b/src/levels/intro/branching.js index 10d48eca..5a3b0d89 100644 --- a/src/levels/intro/branching.js +++ b/src/levels/intro/branching.js @@ -6,13 +6,15 @@ exports.level = { "ja": "Gitのブランチ", "ko": "Git에서 브랜치 쓰기", "fr_FR": "Gérer les branches avec Git", - "zh_CN": "建立Git分支" + "zh_CN": "建立Git分支", + "zh_TW": "建立Git分支" }, "hint": { "en_US": "Make a new branch with \"git branch [name]\" and check it out with \"git checkout [name]\"", "ja": "ブランチの作成(\"git branch [ブランチ名]\")と、チェックアウト(\"git checkout [ブランチ名]\")", "fr_FR": "Faites une nouvelle branche avec \"git branch [nom]\" positionnez-vous dans celle-ci avec \"git checkout [nom]\"", "zh_CN": "用 'git branch [分支名]' 来创建分支,用 'git checkout [分支名]' 切换到分支", + "zh_TW": "用 'git branch [分支名]' 来创建分支,用 'git checkout [分支名]' 切换到分支", "ko": "\"git branch [브랜치명]\"으로 새 브랜치를 만들고, \"git checkout [브랜치명]\"로 그 브랜치로 이동하세요" }, "disabledMap": { @@ -331,6 +333,84 @@ exports.level = { } ] }, + "zh_TW": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Git Branches", + "", + " Git 的分支非常轻量。它们只是简单地指向某个提交纪录——仅此而已。所以许多Git爱好者会念叨:", + "", + "```", + "早点建分支!经常建分支!", + "```", + "", + "创建分支没有储存或内存上的开销,所以按逻辑分解工作比维护单一的代码树要简单。", + "", + "同时使用分支和提交时,我们会看到两者如何配合。现在,只要记住使用分支其实就是在说:“我想包含本次提交及所有的父提交记录。”" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "举个例子看看分支究竟是什么。", + "", + "这里,我们切换到到名为`newImage`的新分支。" + ], + "command": "git branch newImage", + "afterMarkdowns": [ + "看,这就是建立分支所需的操作啦!`newImage`分支现在指向提交记录`C1`。" + ], + "beforeCommand": "" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "现在让我们修改一下新分支。点击下面的按钮。" + ], + "command": "git commit", + "afterMarkdowns": [ + "啊摔!`master`分支前进了,但`newImage`分支没有哇!这是因为我们没有“在”这个新分支上,这也是为什么星号(*)只在 `master` 上。" + ], + "beforeCommand": "git branch newImage" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "使用如下命令告诉git我们想要切换到新的分支", + "", + "```", + "git checkout [name]", + "```", + "", + "这可以让我们在提交修改之前切换到新的分支。" + ], + "command": "git checkout newImage; git commit", + "afterMarkdowns": [ + "好的嘞!新的分支已经记录了我们的修改。" + ], + "beforeCommand": "git branch newImage" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "好啦,你已经准备好使用分支了。当前窗口关闭后,", + "创建一个叫 `bugFix` 的新分支,然后切换过去。" + ] + } + } + ] + }, "ko": { "childViews": [ { diff --git a/src/levels/intro/commits.js b/src/levels/intro/commits.js index f4a81f36..4fd9882e 100644 --- a/src/levels/intro/commits.js +++ b/src/levels/intro/commits.js @@ -5,6 +5,7 @@ exports.level = { "ja": "Gitのコミット", 'ko': 'Git 커밋 소개', 'zh_CN': 'Git Commits简介' + 'zh_TW': 'Git Commits简介' }, "goalTreeString": "{\"branches\":{\"master\":{\"target\":\"C3\",\"id\":\"master\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}", "solutionCommand": "git commit;git commit", @@ -13,6 +14,7 @@ exports.level = { "en_US": "Just type in 'git commit' twice to finish!", "fr_FR": "Il suffit de saisir 'git commit' deux fois pour réussir !", "zh_CN": "敲两次 'git commit' 就好啦!", + "zh_TW": "敲两次 'git commit' 就好啦!", "ja": "'git commit'コマンドを2回打てば完成!", "ko": "'git commit'이라고 두 번 치세요!" }, @@ -241,6 +243,50 @@ exports.level = { } } ] + }, + "zh_TW": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Git Commits", + "git仓库中的一次提交(commit)记录目录下所有文件的快照。感觉像是大量的复制和粘贴,但 git 做的不只这么简单!", + "", + "Git 希望提交记录尽可能地轻量,所以每次进行提交时,它不会简单地复制整个目录。实际上它把每次提交记录保存为从代码库的一个版本到下一个版本的变化集,或者说一个\"增量(delta)\"。所以,大部分提交记录都有一个父提交(parent commit)-- 我们会很快演示这一点。", + "", + "克隆(clone)代码库时,需要解包(unpack)或者“解析(resolve)”所有的差异。所以在克隆代码库时,可能会看见如下命令行输出:", + "", + "`resolving deltas`", + "", + "要学的东西有很多,但现在你可以把提交记录看作是项目的快照。提交记录非常轻量且可以快速切换!" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "在实践中学习commit。右边是一个(小)git代码库的图示。当前有两个提交记录—— 初始提交`C0`和其后可能包含有用修改的提交`C1`。", + "", + "点击下面的按钮生成新的提交记录。" + ], + "command": "git commit", + "afterMarkdowns": [ + "看!碉堡吧!我们修改了代码,并保存为一次提交记录。刚刚做的提交`C2`有一个父提交(parent)`C1`,代表此次修改的基础。" + ], + "beforeCommand": "" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "接下来你可以随便测试。当前窗口关闭后,完成两次提交就可以过关!" + ] + } + } + ] } } }; diff --git a/src/levels/intro/merging.js b/src/levels/intro/merging.js index ff0a0c5f..f0246a16 100644 --- a/src/levels/intro/merging.js +++ b/src/levels/intro/merging.js @@ -6,13 +6,15 @@ exports.level = { "fr_FR": "Faire des 'merge' (fusions de branches) avec Git", "ko": "Git에서 브랜치 합치기(Merge)", "ja": "ブランチとマージ", - "zh_CN": "分支与合并" + "zh_CN": "分支与合并", + "zh_TW": "分支与合并" }, "hint": { "en_US": "Remember to commit in the order specified (bugFix before master)", "ja": "指示された順番でコミットすること(masterの前にbugFixで)", "fr_FR": "Pensez à faire des commits dans l'ordre indiqué (bugFix avant master)", "zh_CN": "记住按指定的顺序提交(bugFix先于master)", + "zh_TW": "记住按指定的顺序提交(bugFix先于master)", "ko": "말씀드린 순서대로 커밋해주세요 (bugFix에 먼저 커밋하고 master에 커밋)" }, "disabledMap": { @@ -295,6 +297,75 @@ exports.level = { } ] }, + "zh_TW": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Branches and Merging", + "", + "Great! 我们已经知道怎么提交和使用分支了。接下来要学的一招是如何合并两个不同分支的工作。这让我们可以新建一个分支,在其上开发新功能,然后合并回主线。", + "", + "`git merge`是我们要学习的合并工作的第一个方法。合并产生一个特殊的提交记录,它包含两个唯一父提交。有两个父提交的提交记录本质上是:“我想把这两个父提交本身及它们的父提交集合都包含进来。”", + "", + "有图有真相,看看下面的图示就明白了。" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "当前有两个分支:各有一个唯一的提交。这意味着没有一个分支包含我们对代码库的所有修改。让我们合并这两个分支来解决这个问题。", + "", + "我们要把 `bugFix` 合并到 `master` " + ], + "command": "git merge bugFix", + "afterMarkdowns": [ + "哇!看见木有?首先,`master` 现在指向一个拥有两个父提交的提交记录。假如从 `master` 开始沿着箭头向上游走,在到达起点的路上会经过所有的提交记录。这说明有 `master` 包含了对代码库的所有修改。", + "", + "还有,看见各个提交记录的颜色变化了吗?为了帮助学习,我使用了颜色混合。每个分支都有特定的颜色。每个提交记录都变成了含有此提交的所有分支的混合色。", + "", + "所以,`master` 分支的颜色被混入到所有的提交记录,但 `bugFix` 没有。接下来就改一下这里吧。" + ], + "beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "让我们把 `master` 分支合并到 `bugFix` 吧。" + ], + "command": "git checkout bugFix; git merge master", + "afterMarkdowns": [ + "因为 `bugFix` 分支在 `master` 分支的下游,git什么都不用做,只是简单地把`bugfix`分支移动到`master`指向的提交记录。", + "", + "现在所有的提交记录的颜色都是一样的啦,这表明每一个分支都包含了代码库的所有修改!走起!" + ], + "beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit; git merge bugFix" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "想完成此关,执行收下操作:", + "", + "* 创建新分支 `bugFix` ", + "* 用 `git checkout bugFix` 切换到 `bugFix`分支", + "* 提交一次", + "* 用 `git checkout` 切换回 `master` ", + "* 再提交一次", + "* 用 `git merge` 合并 `bugFix`分支进 `master`", + "", + "*记住,总是可以用 \"help level\" 命令来重新显示这个对话框!*" + ] + } + } + ] + }, "ko": { "childViews": [ { diff --git a/src/levels/intro/rebasing.js b/src/levels/intro/rebasing.js index 9c1c7026..a59ce20e 100644 --- a/src/levels/intro/rebasing.js +++ b/src/levels/intro/rebasing.js @@ -6,14 +6,16 @@ exports.level = { "ja": "Rebaseの解説", "fr_FR": "Introduction à rebase", "ko": "리베이스(rebase)의 기본", - "zh_CN": "Rebase简介" + "zh_CN": "Rebase简介", + "zh_TW": "Rebase简介" }, "hint": { "en_US": "Make sure you commit from bugFix first", "ja": "初めにbugFixを指した状態でコミットする", "fr_FR": "Assurez-vous de bien faire votre en premier votre commit sur bugFix", "ko": "bugFix 브랜치에서 먼저 커밋하세요", - "zh_CN": "确保你先在 bugFix 分支进行提交" + "zh_CN": "确保你先在 bugFix 分支进行提交", + "zh_TW": "确保你先在 bugFix 分支进行提交" }, "disabledMap": { "git revert": true @@ -285,6 +287,73 @@ exports.level = { } ] }, + "zh_TW": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Git Rebase", + "", + "*rebasing*是在分支之间合并工作的第二种方法。Rebasing就是取出一系列的提交记录,\"复制\"它们,然后把在别的某个地方放下来。", + "", + "虽然听上去难以理解,rebasing 的优势是可以创造更线性的提交历史。假如只允许使用rebasing,代码库的提交日志/历史会更好看。", + "", + "让我们亲身体会下……" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "这里,还是有两个分支;注意当前分支是 bugFix(看那颗星)", + "", + "我们想要把 bugfix 里面的工作直接移到 master 分支上。使用这个方法,两个分支的功能看起来像是按顺序开发,实际上它们是平行开发的。", + "", + "用 `git rebase`实现此目标" + ], + "command": "git rebase master", + "afterMarkdowns": [ + "碉堡吧,现在 bugFix 分支上的工作在 master 的最前端,同时我们也得到了一个更线性的提交序列。", + "", + "注意,提交记录 C3 仍然存在(阴影的那货就是你了,还看什么看),而我们已经将 C3 复制到了master。", + "", + "现在唯一的问题是 master 分支还没有更新……下面就来更新它吧" + ], + "beforeCommand": "git commit; git checkout -b bugFix C1; git commit" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "现在,切换到 `master` 分支。接下来就把它 rebase 到 `bugFix` 吧……" + ], + "command": "git rebase bugFix", + "afterMarkdowns": [ + "完成!因为 `master` 是 `bugFix` 的下游,所以 git 只把 `master` 分支的记录前移到 `bugFix` 上。" + ], + "beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "想完成此关,执行以下操作:", + "", + "* 新建`bugFix`分支", + "* 提交一次", + "* 切换回 master 分支再提交一次", + "* 再次切换到 bugFix 分支,rebase 到 master 上", + "", + "祝你好运啦!" + ] + } + } + ] + }, "ko": { "childViews": [ { diff --git a/src/levels/mixed/grabbingOneCommit.js b/src/levels/mixed/grabbingOneCommit.js index 99a43d71..1b240cc9 100644 --- a/src/levels/mixed/grabbingOneCommit.js +++ b/src/levels/mixed/grabbingOneCommit.js @@ -23,7 +23,8 @@ exports.level = { "en_US": "Remember, interactive rebase or cherry-pick is your friend here", "ja": "このレベルではインタラクティブモードのrebaseやcherry-pickがクリアのカギです", "ko": "대화식 리베이스(rebase -i)나 or 체리픽(cherry-pick)을 사용하세요", - "zh_CN": "记住,交互式 rebase 或者 cherry-pick 会很有帮助" + "zh_CN": "记住,交互式 rebase 或者 cherry-pick 会很有帮助", + "zh_TW": "记住,交互式 rebase 或者 cherry-pick 会很有帮助" }, "startDialog": { "en_US": { @@ -148,6 +149,47 @@ exports.level = { } ] }, + "zh_TW": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## 本地栈式提交 (Locally stacked commits)", + "", + "设想一下一个经常发生的场景:我在追踪一个有点棘手的 bug,为了更好地排查,我添加了一些调试命令和打印语句。", + "", + "所有的这些调试和打印语句都只在它们自己的分支里。最终我终于找到这个 bug,揪出来 fix 掉,然后撒花庆祝!", + "", + "现在唯一的问题就是要把我在 `bugFix` 分支里的工作合并回 `master` 分支。我可以简单地把 `master` 分支快进(fast-forward),但这样的话 `master` 分支就会包含我这些调试语句了。" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "现在就是 Git 大显神通的时候啦。解决这个问题的方法不止一个,但最直接的两个方法是:", + "", + "* `git rebase -i`", + "* `git cherry-pick`", + "", + "交互(`-i`)衍合允许你选择哪些提交是要被保留,哪些要被舍弃。它允许你将提交重新排序。假如你要舍弃一些工作,这个会帮上很大的忙。", + "", + "Cherry-picking 能让你选择单独一个提交并且把它放到 `HEAD` 的最前端。" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "本关是可选关卡,玩不玩随便你。但是如果你坚持要刷,确保 `master` 分支能拿到 `bugFix` 分支的相关提交(references)。" + ] + } + } + ] + }, "ko": { "childViews": [ { diff --git a/src/levels/mixed/jugglingCommits.js b/src/levels/mixed/jugglingCommits.js index 4368e8cd..856fb93c 100644 --- a/src/levels/mixed/jugglingCommits.js +++ b/src/levels/mixed/jugglingCommits.js @@ -21,13 +21,15 @@ exports.level = { "ko": "커밋들 갖고 놀기", "en_US": "Juggling Commits", "ja": "Juggling Commits", - "zh_CN": "提交变换戏法" + "zh_CN": "提交变换戏法", + "zh_TW": "提交变换戏法" }, "hint": { "en_US": "The first command is git rebase -i HEAD~2", "ja": "最初に打つコマンドはgit rebase -i HEAD~2", "ko": "첫번째 명령은 git rebase -i HEAD~2 입니다", - "zh_CN": "第一个命令是 'git rebase -i HEAD~2'" + "zh_CN": "第一个命令是 'git rebase -i HEAD~2'", + "zh_TW": "第一个命令是 'git rebase -i HEAD~2'" }, "startDialog": { "en_US": { @@ -149,6 +151,45 @@ exports.level = { } ] }, + "zh_TW": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## 提交变换戏法", + "", + "下面这种情况也是经常出现的。例如你之前已经在 `newImage` 分支上做了一些提交,然后又在 `caption` 分支上做了一些相关的提交,因此它们看起来是一个连一个的(stacked on top of each other in your repository)。", + "", + "有点棘手的就是有时候你又想往先前的提交里做些小改动。呐,现在就是设计师想要我们去轻微改变下 `newImage` 的内容(change the dimensions slightly),尽管那个提交是很久很久以前的了。" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "为了实现他的愿望,我们可以按照下面的方法来做:", + "", + "* 先用 `git rebase -i` 将提交重新排序,然后把我们想要修改的提交挪到最前", + "* 然后用 `commit --amend` 来进行一些小修改", + "* 接着再用 `git rebase -i` 来将他们按最开始的顺序重新排好", + "* 最后我们把 master 移到修改的最前端(用你自己喜欢的方法),就大功告成啦!", + "", + "当然还有许多方法可以完成这个任务(我知道你在看 cherry-pick 啦),之后我们会多点关注这些技巧啦,但现在暂时只专注上面这种方法。" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "啊最后还要提醒你一下最终的形式 —— 因为我们把这个提交移动了两次,所以会分别产生一个省略提交(both get an apostrophe appended)。还有一个省略提交是因为我们为了实现最终效果去修改提交而添加的。" + ] + } + } + ] + }, "ko": { "childViews": [ { diff --git a/src/levels/mixed/jugglingCommits2.js b/src/levels/mixed/jugglingCommits2.js index 97945b4d..33f1f1b0 100644 --- a/src/levels/mixed/jugglingCommits2.js +++ b/src/levels/mixed/jugglingCommits2.js @@ -20,13 +20,15 @@ exports.level = { "ko": "커밋 갖고 놀기 #2", "en_US": "Juggling Commits #2", "ja": "コミットをやりくりする その2", - "zh_CN": "提交交换戏法 #2" + "zh_CN": "提交交换戏法 #2", + "zh_TW": "提交交换戏法 #2" }, "hint": { "en_US": "Don't forget to forward master to the updated changes!", "ja": "masterのポインタを先に進めることを忘れずに!", "ko": "master를 변경 완료한 커밋으로 이동(forward)시키는 것을 잊지 마세요!", - "zh_CN": "别忘记了将 master 快进到最新的更新上!" + "zh_CN": "别忘记了将 master 快进到最新的更新上!", + "zh_TW": "别忘记了将 master 快进到最新的更新上!" }, "startDialog": { "en_US": { @@ -154,6 +156,47 @@ exports.level = { } ] }, + "zh_TW": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## 提交变换戏法 #2", + "", + "*假如你还没有完成提交变换戏法 #1(前一关),这关不让玩哦!*", + "", + "如你在上一关所见,我们使用 `rebase -i` 来重排那些提交。只要把我们想要的提交挪到最顶端,我们就可以很容易地改变它,然后把它们重新排成我们想要的顺序。", + "", + "但唯一的问题就是这样做就要排很多次,有可能造成衍合冲突(rebase conflicts)。下面就看看用另外一种方法 `git cherry-pick` 是怎么做的吧。" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "要在心理牢记 cherry-pick 可以从提交树的任何地方拿一个提交来放在 HEAD 上(尽管那个提交不在上游)。", + "", + "下面是一个小小的演示:" + ], + "command": "git cherry-pick C2", + "afterMarkdowns": [ + "好滴咧,我们继续" + ], + "beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "那么这关呢,和上一关一样要改变提交 `C2`,但你要避免使用 `rebase -i`。自己想想要怎么解决吧,骚年! :D" + ] + } + } + ] + }, "ko": { "childViews": [ { diff --git a/src/levels/rampup/detachedHead.js b/src/levels/rampup/detachedHead.js index 5bf58db8..37f9b3ef 100644 --- a/src/levels/rampup/detachedHead.js +++ b/src/levels/rampup/detachedHead.js @@ -4,11 +4,13 @@ exports.level = { "startTree": "{\"branches\":{\"master\":{\"target\":\"C2\",\"id\":\"master\"},\"bugFix\":{\"target\":\"C4\",\"id\":\"bugFix\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C3\"],\"id\":\"C4\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}", "name": { "en_US": "Detach yo' HEAD", - "zh_CN": "分离HEAD" + "zh_CN": "分离HEAD", + "zh_TW": "分离HEAD" }, "hint": { "en_US": "Use the label (hash) on the commit for help!", - "zh_CN": "使用提交记录上的标签(hash)来求助!" + "zh_CN": "使用提交记录上的标签(hash)来求助!", + "zh_TW": "使用提交记录上的标签(hash)来求助!" }, "startDialog": { "en_US": { @@ -166,6 +168,84 @@ exports.level = { } } ] + }, + "zh_TW": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## 在Git中前后移动", + "", + "在接触Git的更多高级主题之前,我们先学习用不同的方法在代表你的项目的提交记录树上前后移动。", + "", + "一旦能够熟练地在Git中前进后退,你使用其他git命令的威力也会被放大!", + "", + "", + "", + "", + "" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## HEAD", + "", + "我们首先看一下\"HEAD\". HEAD是当前提交记录的符号名称 -- 其实就是你正在其基础进行工作的提交记录。", + "", + "HEAD总是指向最近一次提交记录,表现为当前工作树。大多数修改工作树的git命令都开始于改变HEAD指向。", + "", + "HEAD通常指向分支名(比如bugFix)。你提交时,改变了bugFix的状态,这一变化通过HEAD变得可见。" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "在实例中看一下。我们将会观察提交前后HEAD的位置。" + ], + "afterMarkdowns": [ + "看! HEAD一直藏在`master`分支后面。" + ], + "command": "git checkout C1; git checkout master; git commit; git checkout C2", + "beforeCommand": "" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "### 分离 HEAD", + "", + "分离HEAD就是让其指向一个提交记录而不是分支名。这是命令执行之前的样子: ", + "", + "HEAD -> master -> C1", + "" + ], + "afterMarkdowns": [ + "现在变成了", + "", + "HEAD -> C1" + ], + "command": "git checkout C1", + "beforeCommand": "" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "想完成此关,从`bugFix`分离出HEAD并让其指向一个提交记录。", + "", + "通过hash值指定提交记录。每个提交记录的hash值显示在代表提交记录的圆圈中。" + ] + } + } + ] } } }; diff --git a/src/levels/rampup/relativeRefs.js b/src/levels/rampup/relativeRefs.js index 8891e6d6..7a336db0 100644 --- a/src/levels/rampup/relativeRefs.js +++ b/src/levels/rampup/relativeRefs.js @@ -4,11 +4,13 @@ exports.level = { "startTree": "{\"branches\":{\"master\":{\"target\":\"C2\",\"id\":\"master\"},\"bugFix\":{\"target\":\"C4\",\"id\":\"bugFix\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C3\"],\"id\":\"C4\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}", "name": { "en_US": "Relative Refs (^)", - "zh_CN": "相对引用(^)" + "zh_CN": "相对引用(^)", + "zh_TW": "相对引用(^)" }, "hint": { "en_US": "Remember the Caret (^) operator!", - "zh_CN": "记住插入(^)操作符!" + "zh_CN": "记住插入(^)操作符!", + "zh_TW": "记住插入(^)操作符!" }, "startDialog": { "en_US": { @@ -160,6 +162,81 @@ exports.level = { } } ] + }, + "zh_TW": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## 相对引用", + "", + "用指定提交记录hash值的方式在Git中移动会变得比较乏味。在现实中,你不会有漂亮的可视化的提交记录树放在终端旁边,所以你不得不用`git log`来查看hasn值。", + "", + "另外,hash值在真实的Git环境中也会更长。举个例子,前一关的介绍中的提交记录的hash值是`fed2da64c0efc5293610bdd892f82a58e8cbc5d8`。不要把舌头闪了...", + "", + "好的一面是,Git对hash的处理很智能。你只需要提供能够唯一标识提交记录的前几个字符即可。所以,我可以仅输入`fed2`而不是上面的一长串字符。" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "我说过,通过hash指定提交记录不是很方便,所以Git引入了相对引用。这个就很牛掰了!", + "", + "使用相对引用,你可以从一个易于记忆的地方(比如分支名`bugFix`或`HEAD`)开始工作。", + "", + "相对引用非常给力,这里我介绍两个简单的用法:", + "", + "* 使用`^`向上移动1个提交记录", + "* 使用`~`向上移动多个提交记录" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "首先看看插入(^)操作符。把插入符跟在引用名后面,表示让Git寻找指定提交记录的父提交。", + "", + "所以`master^`相当于\"`master`的父提交\"。", + "", + "`master^^`是`master`的父父提交(上上代祖先)", + "", + "切换到master的父提交" + ], + "afterMarkdowns": [ + "唰!搞定。这种方式比输入提交记录的hash值简单多了!" + ], + "command": "git checkout master^", + "beforeCommand": "git commit" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "你也可以`HEAD`把用作相对引用。以下命令使用`HEAD`在提交树中向上移动几次。" + ], + "afterMarkdowns": [ + "简单!我们可以一直使用`HEAD^`向上移动。" + ], + "command": "git checkout C3; git checkout HEAD^; git checkout HEAD^; git checkout HEAD^", + "beforeCommand": "git commit; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "要完成此关,切换到`bugFix`的父提交。这会分离出`HEAD`.", + "", + "如果你愿意的话,使用hash值也可以过关,但为何不试试使用相对引用呢?" + ] + } + } + ] } } }; diff --git a/src/levels/rampup/relativeRefs2.js b/src/levels/rampup/relativeRefs2.js index dc9abcea..fa4df807 100644 --- a/src/levels/rampup/relativeRefs2.js +++ b/src/levels/rampup/relativeRefs2.js @@ -4,11 +4,13 @@ exports.level = { "startTree": "{\"branches\":{\"master\":{\"target\":\"C4\",\"id\":\"master\"},\"bugFix\":{\"target\":\"C5\",\"id\":\"bugFix\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C2\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C3\"],\"id\":\"C5\"},\"C6\":{\"parents\":[\"C5\"],\"id\":\"C6\"}},\"HEAD\":{\"target\":\"C2\",\"id\":\"HEAD\"}}", "hint": { "en_US": "You'll need to use at least one direct reference (hash) to complete this level", - "zh_CN": "这一关至少要用到一次直接引用(hash)" + "zh_CN": "这一关至少要用到一次直接引用(hash)", + "zh_TW": "这一关至少要用到一次直接引用(hash)" }, "name": { "en_US": "Relative Refs #2 (~)", - "zh_CN": "相对引用2(~)" + "zh_CN": "相对引用2(~)", + "zh_TW": "相对引用2(~)" }, "startDialog": { "en_US": { @@ -133,6 +135,60 @@ exports.level = { } } ] + }, + "zh_TW": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### The \"~\" operator", + "", + "假设需要在提交树中向上移动很多步。使用多个`^`非常无聊,所以Git也引入了波浪(~)操作符。", + "", + "", + "波浪操作符后面可以(可选地)跟一个数字,指定向上移动多少次。看个例子" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "使用`~`一次后退多步." + ], + "afterMarkdowns": [ + "唰!如此简洁--相对引用就是好啊!" + ], + "command": "git checkout HEAD~4", + "beforeCommand": "git commit; git commit; git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### Branch forcing", + "", + "你现在是相对引用的高手了,现在*用*他来实际做点事情。", + "", + "我使用相对引用最多的就是移动分支。你可以使用`-f`选项把直接让分支指向另一个提交。举个例子:", + "", + "`git branch -f master HEAD~3`", + "", + "(强制)移动master指向HEAD的第3级父提交。" + ] + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "要完成此关,移动`HEAD`,`master`和`bugFix`到目标所示的位置。" + ] + } + } + ] } } }; diff --git a/src/levels/rampup/reversingChanges.js b/src/levels/rampup/reversingChanges.js index ae6fecb1..15fdfeb4 100644 --- a/src/levels/rampup/reversingChanges.js +++ b/src/levels/rampup/reversingChanges.js @@ -8,12 +8,14 @@ exports.level = { "ja": "変更を元に戻す", "fr_FR": "Annuler des changements avec Git", "ko": "Git에서 작업 되돌리기", - "zh_CN": "在Git中撤销更改" + "zh_CN": "在Git中撤销更改", + "zh_TW": "在Git中撤销更改" }, "hint": { "en_US": "Notice that revert and reset take different arguments.", "fr_FR": "", "zh_CN": "注意revert和reset使用不同的参数。", + "zh_TW": "注意revert和reset使用不同的参数。", "ko": "", "ja": "" }, @@ -270,6 +272,69 @@ exports.level = { } ] }, + "zh_TW": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## 撤销 Git 里面的变动", + "", + "在 Git 里撤销修改的方法很多。和 commit 一样,在 Git 里撤销变动同时具有底层部分(暂存一些独立的文件或者片段)和高层部分(具体到变动是究竟怎么被撤销的)。我们这个应用主要关注后者。", + "", + "在 Git 里主要用两种方法来撤销变动 —— 一种是 `git reset`,另外一种是 `git revert`。让我们在下一个窗口逐一了解它们。", + "" + ] + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "## Git Reset", + "", + "`git reset`把分支记录回退到上一个提交记录来实现撤销改动。你可以认为这是在\"重写历史\"。`git reset`往回移动分支,原来指向的提交记录好像重来没有提交过一样。", + "", + "让我们看看具体的操作:" + ], + "command": "git reset HEAD~1", + "afterMarkdowns": [ + "Nice!Git把master分支的指向简单地移回到`C1`;现在我们的本地代码库处于没有提交过`C2`的状态了。" + ], + "beforeCommand": "git commit" + } + }, + { + "type": "GitDemonstrationView", + "options": { + "beforeMarkdowns": [ + "## Git Revert", + "", + "虽然在你的本地分支中使用`git reset`很方便,但是这种“改写历史”的方法对别人的远端分支是无效的哦!", + "", + "为了撤销更改并*传播*给别人,我们需要使用`git revert`。举个例子" + ], + "command": "git revert HEAD", + "afterMarkdowns": [ + "怪哉!在我们要撤销的提交记录后面居然多了一个新提交!这是因为新提交记录`C2'`引入了*更改*——刚好是用来撤销 `C2` 这个提交的。", + "", + "借助 revert,现在可以把你的更改传递给别人啦。" + ], + "beforeCommand": "git commit" + } + }, + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "要完成此关,分别撤销`local`分支和`pushed`分支上的最近一次提交。", + "", + "记住 `pushed` 是一个远程分支,`local` 是一个本地分支 —— 有了这么明显的提示应该知道用哪种方法了吧?" + ] + } + } + ] + }, "ko": { "childViews": [ { diff --git a/src/levels/rebase/manyRebases.js b/src/levels/rebase/manyRebases.js index 098d4594..299c919d 100644 --- a/src/levels/rebase/manyRebases.js +++ b/src/levels/rebase/manyRebases.js @@ -11,13 +11,15 @@ exports.level = { "en_US": "Rebasing over 9000 times", "ko": "9천번이 넘는 리베이스", "ja": "Rebasing over 9000 times", - "zh_CN": "N次Rebase" + "zh_CN": "N次Rebase", + "zh_TW": "N次Rebase" }, "hint": { "en_US": "Remember, the most efficient way might be to only update master at the end...", "ja": "最も効率的なやり方はmasterを最後に更新するだけかもしれない・・・", "ko": "아마도 master를 마지막에 업데이트하는 것이 가장 효율적인 방법일 것입니다...", - "zh_CN": "记住,最后更新master分支可能是最高效的方法。" + "zh_CN": "记住,最后更新master分支可能是最高效的方法。", + "zh_TW": "记住,最后更新master分支可能是最高效的方法。" }, "startDialog": { "en_US": { @@ -74,6 +76,24 @@ exports.level = { } ] }, + "zh_TW": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "### 多分支衍合", + "", + "呐,现在我们有很多分支啦!让我们rebase这些分支的工作到 master 分支上吧。", + "", + "但是你的头头找了点麻烦 —— 他们希望得到有序的提交历史,也就是我们最终的结果是 `C7'` 在最底部,`C6'` 在它上面,以此类推。", + "", + "假如你搞砸了,没所谓的(虽然我不会告诉你用 `reset` 可以重新开始)。记得看看我们提供的答案,看你能否使用更少的命令完成任务!" + ] + } + } + ] + }, "ko": { "childViews": [ { diff --git a/src/levels/rebase/selectiveRebase.js b/src/levels/rebase/selectiveRebase.js index 2c220305..295dbb5d 100644 --- a/src/levels/rebase/selectiveRebase.js +++ b/src/levels/rebase/selectiveRebase.js @@ -10,13 +10,15 @@ exports.level = { "ko": "브랜치 스파게티", "en_US": "Branch Spaghetti", "ja": "ブランチスパゲッティ", - "zh_CN": "分支浆糊" + "zh_CN": "分支浆糊", + "zh_TW": "分支浆糊" }, "hint": { "en_US": "Make sure to do everything in the proper order! Branch one first, then two, then three", "ja": "全て正しい順番で処理すること!oneが最初で、次がtwo、最後にthreeを片付ける。", "ko": "이 문제를 해결하는 방법은 여러가지가 있습니다! 체리픽(cherry-pick)이 가장 쉽지만 오래걸리는 방법이고, 리베이스(rebase -i)가 빠른 방법입니다", - "zh_CN": "确保你是按照正确的顺序来操作!先操作分支 `one`, 然后 `two`, 最后才是 `three`" + "zh_CN": "确保你是按照正确的顺序来操作!先操作分支 `one`, 然后 `two`, 最后才是 `three`", + "zh_TW": "确保你是按照正确的顺序来操作!先操作分支 `one`, 然后 `two`, 最后才是 `three`" }, "startDialog": { "en_US": { @@ -79,6 +81,26 @@ exports.level = { } ] }, + "zh_TW": { + "childViews": [ + { + "type": "ModalAlert", + "options": { + "markdowns": [ + "## Branch Spaghetti", + "", + "哇塞大神!这关我们要来点不同的!", + "", + "现在我们的 `master` 分支是比 `one` `two` 和 `three` 要多几个提交。出于某种原因,我们需要把其他三个分支更新到 master 分支上新近的几个不同提交上。(update these three other brances with modified versions of the last few commits on master)", + "", + "分支 `one` 需要重新排序和撤销, `two` 需要完全重排,而 `three` 只需要提交一次。", + "", + "慢慢摸索会找到答案的 —— 你完事记得用 `show solution` 看看我们的答案哦。" + ] + } + } + ] + }, "ko": { "childViews": [ { From c88b292003b36b06619c138681a1874804259ce3 Mon Sep 17 00:00:00 2001 From: "Carl X. Su" Date: Sat, 7 Dec 2013 10:11:56 +0800 Subject: [PATCH 02/33] =?UTF-8?q?js/dialogs=20=E5=8E=BB=E7=B0=A1=E9=AB=94?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/js/dialogs/confirmShowSolution.js | 4 ++-- src/js/dialogs/levelBuilder.js | 20 ++++++++++---------- src/js/dialogs/nextLevel.js | 5 +++-- src/js/dialogs/sandbox.js | 20 ++++++++++---------- 4 files changed, 25 insertions(+), 24 deletions(-) diff --git a/src/js/dialogs/confirmShowSolution.js b/src/js/dialogs/confirmShowSolution.js index 7f95ae84..e7b6a61e 100644 --- a/src/js/dialogs/confirmShowSolution.js +++ b/src/js/dialogs/confirmShowSolution.js @@ -23,9 +23,9 @@ exports.dialog = { type: 'ModalAlert', options: { markdowns: [ - '## 确定要看答案吗?', + '## 確定偷看解答嗎?', '', - '哥相信你!你可以的' + '我相信你!你可以的' ] } }], diff --git a/src/js/dialogs/levelBuilder.js b/src/js/dialogs/levelBuilder.js index 764d4992..ae13d438 100644 --- a/src/js/dialogs/levelBuilder.js +++ b/src/js/dialogs/levelBuilder.js @@ -41,18 +41,18 @@ exports.dialog = { type: 'ModalAlert', options: { markdowns: [ - '## 欢迎使用关卡生成器!', + '## 歡迎使用關卡編輯器!', '', - '主要步骤如下:', + '主要步驟如下:', '', - ' * 使用 git 命令布置好初始环境', - ' * 使用 ```define start``` 命令定义起始树', - ' * 输入一系列 git 命令,编好答案', - ' * 使用 ```define goal``` 命令定义目标树。定义目标的同时定义答案', - ' * 还可以用 ```define hint``` 命令定义一个提示', - ' * 用 ```define name``` 修改名称', - ' * 还可以用 ```edit dialog``` 定义一个漂亮的开始对话框', - ' * 输入 ```finish``` 就可以输出你的关卡数据(JSON)了!' + ' * 使用 git 指令建立初始環境', + ' * 使用 ```define start``` 指令定義起始樹', + ' * 輸入一系列 git 命令,編好答案', + ' * 使用 ```define goal``` 指令定義目標樹。定義目標的同時定義答案', + ' * 還可以用 ```define hint``` 指令定義一個提示', + ' * 用 ```define name``` 修改名稱', + ' * 還可以用 ```edit dialog``` 定義一個漂亮的開始對話視窗', + ' * 輸入 ```finish``` 即可將您的關卡輸出為 JSON!' ] } }], diff --git a/src/js/dialogs/nextLevel.js b/src/js/dialogs/nextLevel.js index 7f37248c..cf709497 100644 --- a/src/js/dialogs/nextLevel.js +++ b/src/js/dialogs/nextLevel.js @@ -35,9 +35,10 @@ exports.dialog = { type: 'ModalAlert', options: { markdowns: [ - '## 碉堡了!', + '## 幹得好!', '', - '你用 *{numCommands}* 条命令搞定了这一关;我们的答案要用 {best}。' + '您下了 *{numCommands}* 次指令解開這個關卡,', + '我們的解答下了 {best} 次。' ] } }], diff --git a/src/js/dialogs/sandbox.js b/src/js/dialogs/sandbox.js index e011e5ef..ff2c93aa 100644 --- a/src/js/dialogs/sandbox.js +++ b/src/js/dialogs/sandbox.js @@ -165,18 +165,18 @@ exports.dialog = { type: 'ModalAlert', options: { markdowns: [ - '## 欢迎光临 LearnGitBranching!', + '## 歡迎光臨 LearnGitBranching!', '', - '本应用旨在帮助初学者领会 git 分支背后的强大概念。', - '希望你能喜欢这个应用,并学到知识!', + '本應用旨在幫助初學者領會 git 分支背後的強大概念。', + '希望你能喜歡这个應用,並學到知識!', '', '# 演示!', '', - '如果你还没看过演示,请到此查看:', + '如果你還沒看過演示,請到此查看:', '', '[http://pcottle.github.io/learnGitBranching/?demo](http://pcottle.github.io/learnGitBranching/?demo)', '', - '厌烦这个对话框? 在 URL 后头加上 `?NODEMO` 就看不到它了,也可以直接点下边这个链接:', + '厭煩這個對話視窗嗎?在 URL 後頭加上 `?NODEMO` 就看不到它了,也可以直接點下邊這個連結:', '', '[http://pcottle.github.io/learnGitBranching/?NODEMO](http://pcottle.github.io/learnGitBranching/?NODEMO)' ] @@ -187,7 +187,7 @@ exports.dialog = { markdowns: [ '## Git 命令', '', - '在沙盒模式里,你有好多命令可用。 包括:', + '在沙盒模式中,你有好多指令可用。 包括:', '', ' * commit', ' * branch', @@ -203,13 +203,13 @@ exports.dialog = { type: 'ModalAlert', options: { markdowns: [ - '## 分享即关怀', + '## 分享即關懷', '', - '使用 `export tree` 和 `import tree` 与朋友分享 Git 树', + '使用 `export tree` 和 `import tree` 與朋友分享 Git 樹', '', - '有个好课程可以分享?试试用 `build level` 创建一个关卡,或者 `import level` 试试朋友的。', + '有個好課程可以分享?試試用 `build level` 創建一個關卡,或者 `import level` 試試朋友的。', '', - '言归正传,让我们先从 `levels` 开始……' + '言歸正傳,讓我們先從 `levels` 開始……' ] } }], From 1285f4b81661933c15a217f6a60c16a9243d7bcc Mon Sep 17 00:00:00 2001 From: "Carl X. Su" Date: Sat, 7 Dec 2013 10:32:54 +0800 Subject: [PATCH 03/33] =?UTF-8?q?js/intl=20=E5=8E=BB=E7=B0=A1=E9=AB=94?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/js/intl/strings.js | 122 ++++++++++++++++++++--------------------- 1 file changed, 61 insertions(+), 61 deletions(-) diff --git a/src/js/intl/strings.js b/src/js/intl/strings.js index 23ab7a4d..025f61d1 100644 --- a/src/js/intl/strings.js +++ b/src/js/intl/strings.js @@ -5,7 +5,7 @@ exports.strings = { 'ja': '最後のレベルをクリアしました!すごい!!', 'en_US': 'Wow! You finished the last level, great!', 'zh_CN': '我的个天!你完成了最后一关,碉堡了!', - 'zh_TW': '我的个天!你完成了最后一关,碉堡了!', + 'zh_TW': '我的個天!你完成了最後一關,碉堡了!', 'fr_FR': 'Félicitations, vous avez réussi le dernier niveau !' }, /////////////////////////////////////////////////////////////////////////// @@ -14,7 +14,7 @@ exports.strings = { 'en_US': 'Would you like to move on to *"{nextLevel}"*, the next level?', 'ja': '次の章 *"{nextLevel}"* へ進みますか?', 'zh_CN': '要不前进到下一关 *“{nextLevel}”*?', - 'zh_TW': '要不前进到下一关 *“{nextLevel}”*?', + 'zh_TW': '要不前進到下一關 *“{nextLevel}”*?', 'fr_FR': 'Voulez-vous passer à *"{nextLevel}"*, le prochain niveau ?' }, /////////////////////////////////////////////////////////////////////////// @@ -23,7 +23,7 @@ exports.strings = { 'en_US': 'Awesome! You matched or exceeded our solution.', 'ja': '素晴らしい!このレベルをクリアしましたね。', 'zh_CN': '牛鼻啊!你达到或者完爆了我们的答案。', - 'zh_TW': '牛鼻啊!你达到或者完爆了我们的答案。', + 'zh_TW': '牛鼻啊!你達到或者完爆了我我的答案。', 'fr_FR': 'Fabuleux ! Votre solution a égalé ou surpassé notre solution.' }, /////////////////////////////////////////////////////////////////////////// @@ -32,7 +32,7 @@ exports.strings = { 'en_US': 'See if you can whittle it down to {best} :D', 'ja': '模範解答の回数={best}回でクリアする方法も考えてみましょう :D', 'zh_CN': '试试看你能否在 {best} 之内搞定 :D', - 'zh_TW': '试试看你能否在 {best} 之内搞定 :D', + 'zh_TW': '試試看你能否在 {best} 之内搞定 :D', 'fr_FR': 'Voyons si vous pouvez descendre à {best} :D' }, /////////////////////////////////////////////////////////////////////////// @@ -65,7 +65,7 @@ exports.strings = { '__desc__': 'One of the lines for git status output', 'en_US': 'Detached head!', 'zh_CN': '脑袋搬家(Detached head)了!', - 'zh_TW': '脑袋搬家(Detached head)了!', + 'zh_TW': '腦袋搬家(Detached head)了!', 'fr_FR': 'head détaché !' }, /////////////////////////////////////////////////////////////////////////// @@ -73,7 +73,7 @@ exports.strings = { '__desc__': 'One of the lines for git status output', 'en_US': 'On branch {branch}', 'zh_CN': '切换到分支 {branch}', - 'zh_TW': '切换到分支 {branch}', + 'zh_TW': '切換到分支 {branch}', 'fr_FR': 'Sur la branche {branch}' }, /////////////////////////////////////////////////////////////////////////// @@ -81,7 +81,7 @@ exports.strings = { '__desc__': 'One of the lines for git status output', 'en_US': 'Ready to commit! (as always in this demo)', 'zh_CN': '可以提交啦!(这演示里一直可以提交)', - 'zh_TW': '可以提交啦!(这演示里一直可以提交)', + 'zh_TW': '可以提交啦!(這演示裡一直可以提交)', 'fr_FR': 'Prêt à commit ! (comme toujours dans cette démo)' }, /////////////////////////////////////////////////////////////////////////// @@ -129,7 +129,7 @@ exports.strings = { 'en_US': 'You can\'t delete the master branch, the branch you are on, or things that ' + 'aren\'t branches', 'zh_CN': '你不能删除主分支(master),或者你当前所在的分支,或者其他不是分支也不知道能不能吃的东西。', - 'zh_TW': '你不能删除主分支(master),或者你当前所在的分支,或者其他不是分支也不知道能不能吃的东西。', + 'zh_TW': '你不能刪除主分支(master),或者你當前所在的分支,或者其他不是分支也不知道能不能吃的東西。', 'fr_FR': 'Vous ne pouvez supprimer la branche master, la branche sur laquelle vous êtes, ou ce qui n\'est pas une branche' }, /////////////////////////////////////////////////////////////////////////// @@ -145,7 +145,7 @@ exports.strings = { '__desc__': 'One of the error messages for git', 'en_US': 'No commits to rebase! Everything is a merge commit or changes already applied', 'zh_CN': '没有需要 rebase 的提交!都是个合并提交,或者已经 rebase 过了。', - 'zh_TW': '没有需要 rebase 的提交!都是个合并提交,或者已经 rebase 过了。', + 'zh_TW': '沒有需要 rebase 的提交!都是個合併提交,或者已經 rebase 過了。', 'fr_FR': 'Aucune commit à rebaser ! Tout est soit un commit de merge, soit des modifications déjà appliquées' }, /////////////////////////////////////////////////////////////////////////// @@ -153,7 +153,7 @@ exports.strings = { '__desc__': 'The message that explains the result of a git command', 'en_US': 'Nothing to do...', 'zh_CN': '没啥鸟事……', - 'zh_TW': '没啥鸟事……', + 'zh_TW': '沒啥鳥事……', 'fr_FR': 'Rien à effectuer…' }, /////////////////////////////////////////////////////////////////////////// @@ -161,7 +161,7 @@ exports.strings = { '__desc__': 'The message that explains the result of a git command', 'en_US': 'Fast forwarding...', 'zh_CN': '快速前进……', - 'zh_TW': '快速前进……', + 'zh_TW': '快速前進……', 'fr_FR': 'En avance rapide…' }, /////////////////////////////////////////////////////////////////////////// @@ -169,7 +169,7 @@ exports.strings = { '__desc__': 'The message that explains the result of a git command', 'en_US': 'Branch already up-to-date', 'zh_CN': '分支已经是最新啦', - 'zh_TW': '分支已经是最新啦', + 'zh_TW': '分支已經是最新啦', 'fr_FR': 'Branche déjà à jour' }, /////////////////////////////////////////////////////////////////////////// @@ -185,7 +185,7 @@ exports.strings = { '__desc__': 'One of the error messages for git', 'en_US': 'Commit {commit} doesnot have a {match}', 'zh_CN': '提交 {commit} 并没有 {match}', - 'zh_TW': '提交 {commit} 并没有 {match}', + 'zh_TW': '提交 {commit} 並没有 {match}', 'fr_FR': 'Le commit {commit} n\'a pas de correspondance {match}' }, /////////////////////////////////////////////////////////////////////////// @@ -193,7 +193,7 @@ exports.strings = { '__desc__': 'One of the warning messages for git', 'en_US': 'Warning!! Detached HEAD state', 'zh_CN': '警告!脑袋搬家(Detached HEAD)状态', - 'zh_TW': '警告!脑袋搬家(Detached HEAD)状态', + 'zh_TW': '警告!腦袋搬家(Detached HEAD)狀態', 'fr_FR': 'Attention ! HEAD est détaché' }, /////////////////////////////////////////////////////////////////////////// @@ -209,7 +209,7 @@ exports.strings = { '__desc__': 'One of the error messages for git', 'en_US': 'Those options you specified are incompatible or incorrect', 'zh_CN': '你所指定的参数不兼容或者不准确', - 'zh_TW': '你所指定的参数不兼容或者不准确', + 'zh_TW': '你所指定的參數不兼容或者不準確', 'fr_FR': 'Les options que vous avez spécifiées sont incompatibles ou incorrectes' }, /////////////////////////////////////////////////////////////////////////// @@ -217,7 +217,7 @@ exports.strings = { '__desc__': 'One of the error messages for git', 'en_US': 'The commit {commit} already exists in your changes set, aborting!', 'zh_CN': '提交 {commit} 已经存在于你的改动集里,正在中止!', - 'zh_TW': '提交 {commit} 已经存在于你的改动集里,正在中止!', + 'zh_TW': '提交 {commit} 已經存在於你的改動集裡,正在中止!', 'fr_FR': 'Le commit {commit} existe déjà dans votre ensemble de modifications, opération avortée !' }, /////////////////////////////////////////////////////////////////////////// @@ -225,7 +225,7 @@ exports.strings = { '__desc__': 'One of the error messages for git', 'en_US': 'Can\'t reset in detached head! Use checkout if you want to move', 'zh_CN': '不能在分离的 HEAD 里重置!用 checkout 吧', - 'zh_TW': '不能在分离的 HEAD 里重置!用 checkout 吧', + 'zh_TW': '不能在分離的 HEAD 裡重置!用 checkout 吧', 'fr_FR': 'On ne peut pas effectuer un reset quand head est détaché. Utilisez checkout pour déplacer' }, /////////////////////////////////////////////////////////////////////////// @@ -233,7 +233,7 @@ exports.strings = { '__desc__': 'One of the warning messages for git', 'en_US': 'The default behavior is a --hard reset, feel free to omit that option!', 'zh_CN': '默认的行为是 --hard 硬重置,尽管省略掉那个选项吧!', - 'zh_TW': '默认的行为是 --hard 硬重置,尽管省略掉那个选项吧!', + 'zh_TW': '默認的行為是 --hard 硬重置,盡管省略掉那個選項吧!', 'fr_FR': 'Le comportement par défaut est un --hard reset, soyez libre d\'omettre cette option !' }, /////////////////////////////////////////////////////////////////////////// @@ -242,7 +242,7 @@ exports.strings = { 'en_US': 'There is no concept of adding / staging files, so that option or ' + 'command is invalid!', 'zh_CN': '没有添加、缓存文件的必要,所以改选项或者命令是不合法的。', - 'zh_TW': '没有添加、缓存文件的必要,所以改选项或者命令是不合法的。', + 'zh_TW': '沒有添加、緩存文件的必要,所以改選項或者命令是不合法的。', 'fr_FR': 'Il n\'y a pas le concept d\'ajouter / mettre en staging, donc cette option ou commande est invalide' }, /////////////////////////////////////////////////////////////////////////// @@ -250,7 +250,7 @@ exports.strings = { '__desc__': 'Message for reverting git command', 'en_US': 'Reverting {oldCommit}: {oldMsg}', 'zh_CN': '撤销 {oldCommit}:{oldMsg}', - 'zh_TW': '撤销 {oldCommit}:{oldMsg}', + 'zh_TW': '撤銷 {oldCommit}:{oldMsg}', 'fr_FR': 'Revert {oldCommit}: {oldMsg}' }, /////////////////////////////////////////////////////////////////////////// @@ -258,7 +258,7 @@ exports.strings = { '__desc__': 'One of the error messages for git', 'en_US': 'I expect at most {upper} argument(s) for {what}', 'zh_CN': '{what} 期望最多 {upper} 个参数', - 'zh_TW': '{what} 期望最多 {upper} 个参数', + 'zh_TW': '{what} 期望最多 {upper} 個參數', 'fr_FR': 'J\'attends au plus {upper} argument(s) pour {what}' }, /////////////////////////////////////////////////////////////////////////// @@ -266,7 +266,7 @@ exports.strings = { '__desc__': 'One of the error messages for git', 'en_US': 'I expect at least {lower} argument(s) for {what}', 'zh_CN': '{what} 期望最少 {lower} 个参数', - 'zh_TW': '{what} 期望最少 {lower} 个参数', + 'zh_TW': '{what} 期望最少 {lower} 個參數', 'fr_FR': 'J\'attends au moins {upper} argument(s) pour {what}' }, /////////////////////////////////////////////////////////////////////////// @@ -274,7 +274,7 @@ exports.strings = { '__desc__': 'One of the error messages for git', 'en_US': 'That command accepts no general arguments', 'zh_CN': '该命令不接收参数', - 'zh_TW': '该命令不接收参数', + 'zh_TW': '該命令不接收參數', 'fr_FR': 'Cette commande n\'accepte aucun argument général' }, /////////////////////////////////////////////////////////////////////////// @@ -282,7 +282,7 @@ exports.strings = { '__desc__': 'The prompt to copy the tree when sharing', 'en_US': 'Copy the tree string below', 'zh_CN': '拷贝下面的树字符串', - 'zh_TW': '拷贝下面的树字符串', + 'zh_TW': '拷貝下面的樹字符串', 'fr_FR': 'Copiez la chaîne d\'arbre ci-dessous' }, /////////////////////////////////////////////////////////////////////////// @@ -292,7 +292,7 @@ exports.strings = { 'ja': '日本語版リポジトリ', 'ko': 'Git 브랜치 배우기', 'zh_CN': '学习Git分支', - 'zh_TW': '学习Git分支', + 'zh_TW': '學習Git分支', 'fr_FR': 'Apprenez Git Branching' }, /////////////////////////////////////////////////////////////////////////// @@ -300,7 +300,7 @@ exports.strings = { '__desc__': 'The prompt to select a level on the drop down view', 'en_US': 'Select a level', 'zh_CN': '选择一关', - 'zh_TW': '选择一关', + 'zh_TW': '選擇一關', 'fr_FR': 'Choisissez un niveau' }, /////////////////////////////////////////////////////////////////////////// @@ -308,7 +308,7 @@ exports.strings = { '__desc__': 'When branch names get too long, we need to truncate them. This is the warning for that', 'en_US': 'Sorry, we need to keep branch names short for the visuals. Your branch name was truncated to 9 characters, resulting in "{branch}"', 'zh_CN': '抱歉,为了显示的需要,我们需要一个短些的分支名称。您使用的将被截断到9个字符,即"{branch}"', - 'zh_TW': '抱歉,为了显示的需要,我们需要一个短些的分支名称。您使用的将被截断到9个字符,即"{branch}"', + 'zh_TW': '抱歉,為了顯示的需要,我們需要一個短些的分支名稱。您使用的將被截斷到9个字符,即"{branch}"', 'fr_FR': 'Désolé, nous devons garder les noms de branches courts pour la visualisation. Votre nom de branche a été tronqué à 9 caractères, devenant "{branch}"' }, /////////////////////////////////////////////////////////////////////////// @@ -316,7 +316,7 @@ exports.strings = { '__desc__': 'When the user enters a branch name thats not ok', 'en_US': 'That branch name "{branch}" is not allowed!', 'zh_CN': '不能给分支起这个名字 "{branch}"', - 'zh_TW': '不能给分支起这个名字 "{branch}"', + 'zh_TW': '不能给分支起這個名字 "{branch}"', 'fr_FR': 'Ce nom de branche "{branch}" n\'est pas autorisé' }, /////////////////////////////////////////////////////////////////////////// @@ -329,7 +329,7 @@ exports.strings = { '__desc__': 'When the user specifies an option that is not supported by our demo', 'en_US': 'The option "{option}" is not supported!', 'zh_CN': '不支持选项 "{option}"', - 'zh_TW': '不支持选项 "{option}"', + 'zh_TW': '不支持選項 "{option}"', 'fr_FR': 'L\'option "{option}" n\'est pas supportée' }, /////////////////////////////////////////////////////////////////////////// @@ -337,7 +337,7 @@ exports.strings = { '__desc__': 'The line that shows how to format a git command', 'en_US': 'git []', 'zh_CN': 'git <命令> [<参数>]', - 'zh_TW': 'git <命令> [<参数>]', + 'zh_TW': 'git <命令> [<參數>]', 'fr_FR': 'git []' }, /////////////////////////////////////////////////////////////////////////// @@ -369,7 +369,7 @@ exports.strings = { '__desc__': 'when the tree is visually refreshed', 'en_US': 'Refreshing tree...', 'zh_CN': '正在刷新树结构...', - 'zh_TW': '正在刷新树结构...', + 'zh_TW': '正在刷新樹結構……', 'fr_FR': 'Actualisation de l\'arbre…' }, /////////////////////////////////////////////////////////////////////////// @@ -377,7 +377,7 @@ exports.strings = { '__desc__': 'when the locale is set to something', 'en_US': 'Locale set to {locale}', 'zh_CN': '语言更改为 {locale}', - 'zh_TW': '语言更改为 {locale}', + 'zh_TW': '語言更改為 {locale}', 'fr_FR': 'Langue changée à {locale}' }, /////////////////////////////////////////////////////////////////////////// @@ -385,7 +385,7 @@ exports.strings = { '__desc__': 'when the locale is reset', 'en_US': 'Locale reset to default, which is {locale}', 'zh_CN': '语言重置为默认的 {locale}', - 'zh_TW': '语言重置为默认的 {locale}', + 'zh_TW': '語言重置為默認的 {locale}', 'fr_FR': 'Langue remise par défaut, qui est {locale}' }, /////////////////////////////////////////////////////////////////////////// @@ -405,7 +405,7 @@ exports.strings = { '__desc__': 'dummy command output for the command in the key', 'en_US': 'Directory changed to "/directories/dont/matter/in/this/demo"', 'zh_CN': '目录切换到 "/directories/dont/matter/in/this/demo"', - 'zh_TW': '目录切换到 "/directories/dont/matter/in/this/demo"', + 'zh_TW': '目錄切換到 "/directories/dont/matter/in/this/demo"', 'fr_FR': 'Répertoire changé à "/directories/dont/matter/in/this/demo" (les répertoires ne servent à rien dans cette démo)' }, /////////////////////////////////////////////////////////////////////////// @@ -413,14 +413,14 @@ exports.strings = { '__desc__': 'Dummy command output for the command in the key', 'en_US': 'DontWorryAboutFilesInThisDemo.txt', 'zh_CN': 'DontWorryAboutFilesInThisDemo.txt (译: 在试验里不用担心文件.txt)', - 'zh_TW': 'DontWorryAboutFilesInThisDemo.txt (译: 在试验里不用担心文件.txt)', + 'zh_TW': 'DontWorryAboutFilesInThisDemo.txt (譯: 在試驗裡不用擔心文件.txt)', 'fr_FR': 'DontWorryAboutFilesInThisDemo.txt (ne vous préoccupez pas des noms de fichier dans cette démo)' }, 'mobile-alert': { '__desc__': 'When someone comes to the site on a mobile device, they can not input commands so this is a nasty alert to tell them', 'en_US': 'LGB can\'t receive input on mobile, visit on desktop! it\'s worth it :D', 'zh_CN': '无法在移动设备/平板上调出键盘 :( 请试试桌面版 :D', - 'zh_TW': '无法在移动设备/平板上调出键盘 :( 请试试桌面版 :D', + 'zh_TW': '無法在移動設備/平板上調出鍵盤 :( 請試試桌面版 :D', 'fr_FR': 'Impossible de faire apparaître le clavier sur mobile / tablette :( Essayez de passer sur un ordinateur de bureau :D' }, /////////////////////////////////////////////////////////////////////////// @@ -428,7 +428,7 @@ exports.strings = { '__desc__': 'When you export a tree, we want you to share the tree with friends', 'en_US': 'Share this tree with friends! They can load it with "import tree"', 'zh_CN': '与你的好友分享提交树!他们可以用 "import tree" 加载它', - 'zh_TW': '与你的好友分享提交树!他们可以用 "import tree" 加载它', + 'zh_TW': '與你的好友分享提交樹!他們可以用 "import tree" 加載它', 'fr_FR': 'Partagez cet arbre avec vos amis ! Ils peuvent le charger avec "import tree"' }, /////////////////////////////////////////////////////////////////////////// @@ -436,7 +436,7 @@ exports.strings = { '__desc__': 'When you are importing a level or tree', 'en_US': 'Paste a JSON blob below!', 'zh_CN': '在下边粘贴一个JSON串', - 'zh_TW': '在下边粘贴一个JSON串', + 'zh_TW': '在下邊貼上一個JSON串', 'fr_FR': 'Collez un blob JSON ci-dessous !' }, /////////////////////////////////////////////////////////////////////////// @@ -444,7 +444,7 @@ exports.strings = { '__desc__': 'When you reset the solved map to clear your solved history, in case someone else wants to use your browser', 'en_US': 'Solved map was reset, you are starting from a clean slate!', 'zh_CN': '解决列表已重置,您现在从零开始了', - 'zh_TW': '解决列表已重置,您现在从零开始了', + 'zh_TW': '解決列表已重置,您現在從零開始了', 'fr_FR': 'La carte des niveaux résolus a été effacée, vous repartez de zéro !' }, /////////////////////////////////////////////////////////////////////////// @@ -452,7 +452,7 @@ exports.strings = { '__desc__': 'When the user tries to exit a level when they are not in one', 'en_US': 'You are not in a level! You are in a sandbox, start a level with "levels"', 'zh_CN': '您没在关卡中!您在沙盒中,要开始关卡请输入 "levels"', - 'zh_TW': '您没在关卡中!您在沙盒中,要开始关卡请输入 "levels"', + 'zh_TW': '您沒在关卡中!您在沙盒中,要開始關卡請輸入 "levels"', 'fr_FR': 'Vous n\'êtes pas dans un niveau ! Vous êtes dans le mode bac à sable, commencez un niveau avec "levels"' }, /////////////////////////////////////////////////////////////////////////// @@ -460,7 +460,7 @@ exports.strings = { '__desc__': 'When you say an id but that level doesnt exist', 'en_US': 'A level for that id "{id}" was not found! Opening up a level selection view', 'zh_CN': '没找到id为 "{id}" 的关卡!打开关卡选择框', - 'zh_TW': '没找到id为 "{id}" 的关卡!打开关卡选择框', + 'zh_TW': '沒找到id為 "{id}" 的關卡!打開關卡選擇框', 'fr_FR': 'Le niveau dont l\'identifiant est {id} n\'a pas été trouvé ! Ouverture de la vue de sélection des niveaux' }, /////////////////////////////////////////////////////////////////////////// @@ -468,7 +468,7 @@ exports.strings = { '__desc__': 'The undo command can only undo back until the last time the level was reset or the beginning of the level', 'en_US': 'The undo stack is empty!', 'zh_CN': '还没有什么可以撤销', - 'zh_TW': '还没有什么可以撤销', + 'zh_TW': '還沒有什麼可以撤銷', 'fr_FR': 'La pile d\'annulation est vide !' }, /////////////////////////////////////////////////////////////////////////// @@ -476,7 +476,7 @@ exports.strings = { '__desc__': 'When you play in a level that is already solved', 'en_US': 'You have already solved this level, try other levels with "levels" or go back to sandbox with "sandbox"', 'zh_CN': '你已经解决了本关,输入 "levels" 尝试其他关卡,或者输入 "sandbox" 回到沙盒中', - 'zh_TW': '你已经解决了本关,输入 "levels" 尝试其他关卡,或者输入 "sandbox" 回到沙盒中', + 'zh_TW': '你已經解决了本關,輸入 "levels" 嘗試其他關卡,或者輸入 "sandbox" 回到沙盒中', 'fr_FR': 'Vous avez déjà résolu ce niveau, essayez d\'autres niveaux avec "levels" ou revenez au bac à sable avec "sandbox"' }, /////////////////////////////////////////////////////////////////////////// @@ -484,7 +484,7 @@ exports.strings = { '__desc__': 'When you try a command that is disabled', 'en_US': 'That git command is disabled for this level!', 'zh_CN': '该命令在本关不允许使用!', - 'zh_TW': '该命令在本关不允许使用!', + 'zh_TW': '該命令在本關不允許使用!', 'fr_FR': 'Cette commande git est désactivée pour ce niveau !' }, /////////////////////////////////////////////////////////////////////////// @@ -492,7 +492,7 @@ exports.strings = { '__desc__': 'when you have made the level, prompt to share this', 'en_US': 'Here is the JSON for this level! Share it with somenoe or send it to me on Github', 'zh_CN': '这是一个关卡定义JSON!您可以分享它或者发到我的GitHub上', - 'zh_TW': '这是一个关卡定义JSON!您可以分享它或者发到我的GitHub上', + 'zh_TW': '這是一個關卡定義JSON!您可以分享它或者發到我的GitHub上', 'fr_FR': 'Voici le JSON pour ce niveau ! Partagez-le avec quelqu\'un ou envoyez-le moi sur Github' }, /////////////////////////////////////////////////////////////////////////// @@ -500,7 +500,7 @@ exports.strings = { '__desc__': 'prompt to add a start dialog', 'en_US': 'You have not specified a start dialog, would you like to add one?', 'zh_CN': '您还没有定义一开始的介绍,是否添加一个?', - 'zh_TW': '您还没有定义一开始的介绍,是否添加一个?', + 'zh_TW': '您還沒有定義一開始的介绍,是否添加一個?', 'fr_FR': 'Vous n\'avez pas spécifié de dialogue de départ, voulez-vous en ajouter un ?' }, /////////////////////////////////////////////////////////////////////////// @@ -508,7 +508,7 @@ exports.strings = { '__desc__': 'prompt to add a hint', 'en_US': 'You have not specified a hint, would you like to add one?', 'zh_CN': '您还没有定义提示,是否添加一个?', - 'zh_TW': '您还没有定义提示,是否添加一个?', + 'zh_TW': '您還沒有定義提示,是否添加一個?', 'fr_FR': 'Vous n\'avez pas spécifié d\'indice, voulez-vous en ajouter un ?' }, /////////////////////////////////////////////////////////////////////////// @@ -516,7 +516,7 @@ exports.strings = { '__desc__': 'prompt for hint', 'en_US': 'Enter the hint for this level, or leave this blank if you do not want to include one', 'zh_CN': '请输入关卡提示,或者故意留空', - 'zh_TW': '请输入关卡提示,或者故意留空', + 'zh_TW': '請輸入關卡提示,或者故意留空', 'fr_FR': 'Entrez l\'indice pour ce niveau, ou laissez-le vide pour ne pas l\'inclure' }, /////////////////////////////////////////////////////////////////////////// @@ -524,7 +524,7 @@ exports.strings = { '__desc__': 'prompt for level name', 'en_US': 'Enter the name for the level', 'zh_CN': '输入关卡名', - 'zh_TW': '输入关卡名', + 'zh_TW': '輸入關卡名', 'fr_FR': 'Entrez le nom pour ce niveau' }, /////////////////////////////////////////////////////////////////////////// @@ -532,7 +532,7 @@ exports.strings = { '__desc__': 'If you define a solution without any commands, aka a level that is solved without doing anything', 'en_US': 'Your solution is empty!! Something is amiss', 'zh_CN': '你的解法是空的!! 这应该是出错了', - 'zh_TW': '你的解法是空的!! 这应该是出错了', + 'zh_TW': '你的解法是空的!! 這應該是出錯了', 'fr_FR': 'Votre solution est vide !! Quelque chose ne tourne pas rond' }, /////////////////////////////////////////////////////////////////////////// @@ -540,7 +540,7 @@ exports.strings = { '__desc__': 'When you define the start point again, it overwrites the solution and goal so we add a warning', 'en_US': 'Defining start point... solution and goal will be overwritten if they were defined earlier', 'zh_CN': '定义开始点... 解决方法和目标会被新的替代', - 'zh_TW': '定义开始点... 解决方法和目标会被新的替代', + 'zh_TW': '定義開始點... 解決方法和目標會被新的替代', 'fr_FR': 'Redéfinition du point de départ… la solution et la cible seront écrasés s\'ils ont déjà été définis' }, /////////////////////////////////////////////////////////////////////////// @@ -548,7 +548,7 @@ exports.strings = { '__desc__': 'When you are in a level and you say help, its vague and you need to specify', 'en_US': 'You are in a level, so multiple forms of help are available. Please select either "help level" to learn more about this lesson, "help general" for using Learn GitBranching, or "objective" to learn about how to solve the level.', 'zh_CN': '您正在关卡中,这里有多种形式的帮助,请选择 "help level" (关卡帮助)或 "help general" (一般帮助)', - 'zh_TW': '您正在关卡中,这里有多种形式的帮助,请选择 "help level" (关卡帮助)或 "help general" (一般帮助)', + 'zh_TW': '您正在關卡中,這裡有多種形式的幫助,請選擇 "help level" (關卡幫助)或 "help general" (一般幫助)', 'fr_FR': 'Vous êtes dans un niveau, donc plusieurs formes d\'aide sont disponibles. Merci de sélectionner soit "help level" pour en apprendre plus sur cette leçon, "help general" pour l\'utilisation de Learn GitBranching, ou "objective" pour apprendre comment résoudre le niveau' }, /////////////////////////////////////////////////////////////////////////// @@ -556,7 +556,7 @@ exports.strings = { '__desc__': 'When you are in a level builder, the help command is vague so you need to specify what you mean', 'en_US': 'You are in a level builder, so multiple forms of help are available. Please select either "help general" or "help builder"', 'zh_CN': '您正在进行关卡构建中,这里有多种形式的帮助,请选择 "help general" (一般帮助)或 "help builder" (关卡构建帮助)', - 'zh_TW': '您正在进行关卡构建中,这里有多种形式的帮助,请选择 "help general" (一般帮助)或 "help builder" (关卡构建帮助)', + 'zh_TW': '您正在進行關卡構建中,這裡有多種形式的幫助,請選擇 "help general" (一般幫助)或 "help builder" (關卡構建幫助)', 'fr_FR': 'Vous êtes dans l\'éditeur de niveaux, donc plusieurs formes d\'aide sont disponibles. Merci de sélectionner soit "help general" soit "help builder"' }, /////////////////////////////////////////////////////////////////////////// @@ -564,7 +564,7 @@ exports.strings = { '__desc__': 'title of window that shoes the goal tree to reach', 'en_US': 'Goal To Reach', 'zh_CN': '目标', - 'zh_TW': '目标', + 'zh_TW': '目標', 'fr_FR': 'Cible à atteindre' }, /////////////////////////////////////////////////////////////////////////// @@ -577,7 +577,7 @@ exports.strings = { '__desc__': 'the helper message for the window that shows the goal tree', 'en_US': 'You can hide this window with "hide goal"', 'zh_CN': '你可以通过命令 "hide goal" 关闭这个窗口', - 'zh_TW': '你可以通过命令 "hide goal" 关闭这个窗口', + 'zh_TW': '你可以通過命令 "hide goal" 關閉這個窗口', 'fr_FR': 'Vous pouvez masquer cette fenêtre avec "hide goal"' }, /////////////////////////////////////////////////////////////////////////// @@ -585,7 +585,7 @@ exports.strings = { '__desc__': 'The helper message for the window that shows the start tree for a level', 'en_US': 'You can hide this window with "hide start"', 'zh_CN': '你可以通过命令 "hide start" 关闭这个窗口', - 'zh_TW': '你可以通过命令 "hide start" 关闭这个窗口', + 'zh_TW': '你可以通過命令 "hide start" 關閉這個窗口', 'fr_FR': 'Vous pouvez masquer cette fenêtre avec "hide start"' }, /////////////////////////////////////////////////////////////////////////// @@ -593,7 +593,7 @@ exports.strings = { '__desc__': 'The name for the environment where you build levels', 'en_US': 'Level Builder', 'zh_CN': '关卡生成器', - 'zh_TW': '关卡生成器', + 'zh_TW': '關卡生成器', 'fr_FR': 'Éditeur de niveaux' }, /////////////////////////////////////////////////////////////////////////// @@ -601,7 +601,7 @@ exports.strings = { '__desc__': 'when the user tries to open a start dialog for a level that does not have one', 'en_US': 'There is no start dialog to show for this level!', 'zh_CN': '介绍? 这关真没有!', - 'zh_TW': '介绍? 这关真没有!', + 'zh_TW': '介紹? 這關真沒有!', 'fr_FR': 'Il n\'y a aucun dialogue de départ à afficher pour ce niveau !' }, /////////////////////////////////////////////////////////////////////////// @@ -609,7 +609,7 @@ exports.strings = { '__desc__': 'when no hint is available for a level', 'en_US': "Hmm, there doesn't seem to be a hint for this level :-/", 'zh_CN': "提示?嗯,这关真没有哎~ :-/", - 'zh_TW': "提示?嗯,这关真没有哎~ :-/", + 'zh_TW': "提示?嗯,這關真沒有哎~ :-/", 'fr_FR': 'Hum, il ne semble pas y avoir d\'indice pour ce niveau :-/' }, /////////////////////////////////////////////////////////////////////////// @@ -617,7 +617,7 @@ exports.strings = { '__desc__': 'This error happens when we are trying to translate a specific key and the locale version is mission', 'en_US': 'The translation for {key} does not exist yet :( Please hop on github and offer up a translation!', 'zh_CN': '还没翻译 {key} :( 请在gitHub上贡献你的翻译!', - 'zh_TW': '还没翻译 {key} :( 请在gitHub上贡献你的翻译!', + 'zh_TW': '還沒翻譯 {key} :( 請在gitHub上貢獻你的翻譯!', 'fr_FR': 'La traduction pour {key} n\'existe pas encore :( Venez sur Github pour en offrir une !' }, /////////////////////////////////////////////////////////////////////////// @@ -625,7 +625,7 @@ exports.strings = { '__desc__': 'The general error when we encounter a dialog that is not translated', 'en_US': 'This dialog or text is not yet translated in your locale :( Hop on github to aid in translation!', 'zh_CN': '这段对话还没有被翻译成你的语言 :( 欢迎在gitHub上贡献你的翻译!', - 'zh_TW': '这段对话还没有被翻译成你的语言 :( 欢迎在gitHub上贡献你的翻译!', + 'zh_TW': '這段對話還沒有被翻譯成你的語言 :( 歡迎在gitHub上貢獻你的翻譯!', 'fr_FR': 'Ce message n\'a pas encore été traduit dans votre langue :( Venez sur Github aider à la traduction !' } }; From 5035b3a89a8c5c244379b180f80579a2e7bce3c1 Mon Sep 17 00:00:00 2001 From: "Carl X. Su" Date: Sat, 7 Dec 2013 10:46:43 +0800 Subject: [PATCH 04/33] =?UTF-8?q?levels/index.js=20=E5=8E=BB=E7=B0=A1?= =?UTF-8?q?=E9=AB=94=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/levels/index.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/levels/index.js b/src/levels/index.js index 8650ca20..f772da2c 100644 --- a/src/levels/index.js +++ b/src/levels/index.js @@ -58,7 +58,7 @@ var sequenceInfo = exports.sequenceInfo = { 'ja': 'まずはここから', 'fr_FR': 'Séquence d\'introduction', 'zh_CN': '基础篇', - 'zh_TW': '基础篇', + 'zh_TW': '基礎篇', 'ko': '기본 명령어' }, about: { @@ -66,7 +66,7 @@ var sequenceInfo = exports.sequenceInfo = { 'ja': 'gitの基本的なコマンド群をほどよいペースで学ぶ', 'fr_FR': 'Une introduction en douceur à la majorité des commandes git', 'zh_CN': '循序渐进介绍git主要命令', - 'zh_TW': '循序渐进介绍git主要命令', + 'zh_TW': '循序漸進介绍git主要命令', 'ko': '브랜치 관련 주요 git 명령어를 깔끔하게 알려드립니다' } }, @@ -76,14 +76,14 @@ var sequenceInfo = exports.sequenceInfo = { 'ja': '次のレベルに進もう', 'fr_FR': 'Montée en puissance', 'zh_CN': '进阶篇' - 'zh_TW': '进阶篇' + 'zh_TW': '進階篇' }, about: { 'en_US': 'The next serving of 100% git awesomes-ness. Hope you\'re hungry', 'ja': '更にgitの素晴らしさを堪能しよう', 'fr_FR' : 'Le prochain service git 100% excellence. J\'espère que vous êtes affamés', 'zh_CN': '接下来是git的超赞特性。迫不及待了吧!' - 'zh_TW': '接下来是git的超赞特性。迫不及待了吧!' + 'zh_TW': '接下来是git的超讚特性。迫不及待了吧!' } }, remote: { @@ -121,7 +121,7 @@ var sequenceInfo = exports.sequenceInfo = { 'fr_FR': 'Qu\'est-ce que ce rebase dont tout le monde parle ? Découvrez-le !', 'ko': '그 좋다고들 말하는 rebase에 대해 알아봅시다!', 'zh_CN': '大家都在说的rebase究竟是神马?看看吧!' - 'zh_TW': '大家都在说的rebase究竟是神马?看看吧!' + 'zh_TW': '大家都在說的rebase究竟是神馬?看看吧!' } }, mixed: { @@ -131,7 +131,7 @@ var sequenceInfo = exports.sequenceInfo = { 'fr_FR': 'Un assortiment', 'ko': '종합선물세트', 'zh_CN': '大杂烩?' - 'zh_TW': '大杂烩?' + 'zh_TW': '大雜燴?' }, about: { 'en_US': 'A mixed bag of Git techniques, tricks, and tips', @@ -139,7 +139,7 @@ var sequenceInfo = exports.sequenceInfo = { 'fr_FR': 'Un assortiment de techniques et astuces pour utiliser Git', 'ko': 'Git을 다루는 다양한 팁과 테크닉을 다양하게 알아봅니다', 'zh_CN': 'Git技术,技巧与贴士杂烩' - 'zh_TW': 'Git技术,技巧与贴士杂烩' + 'zh_TW': 'Git技術,技巧與貼士雜燴' } }, advanced: { @@ -147,13 +147,13 @@ var sequenceInfo = exports.sequenceInfo = { 'en_US': 'Advanced Topics', 'fr_FR': 'Sujets Avancés', 'zh_CN': '高级主题' - 'zh_TW': '高级主题' + 'zh_TW': '高級主題' }, about: { 'en_US': 'For the truly brave!', 'fr_FR': 'Pour les plus courageux !', 'zh_CN': '只为真正的勇士!' - 'zh_TW': '只为真正的勇士!' + 'zh_TW': '只為真正的勇士!' } } }; From 91efc82599ea4fdbff9bf834cba941c1e5111cf5 Mon Sep 17 00:00:00 2001 From: "Carl X. Su" Date: Sat, 7 Dec 2013 10:49:53 +0800 Subject: [PATCH 05/33] =?UTF-8?q?levels/advanced=20=E5=8E=BB=E7=B0=A1?= =?UTF-8?q?=E9=AB=94=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/levels/advanced/multipleParents.js | 38 +++++++++++++------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/levels/advanced/multipleParents.js b/src/levels/advanced/multipleParents.js index 52da55a6..abb9c0ca 100644 --- a/src/levels/advanced/multipleParents.js +++ b/src/levels/advanced/multipleParents.js @@ -5,12 +5,12 @@ exports.level = { "name": { "en_US": "Multiple parents", "zh_CN": "多个父提交记录", - "zh_TW": "多个父提交记录" + "zh_TW": "多個父提交記錄" }, "hint": { "en_US": "Use `git branch bugWork` with a target commit to create the missing reference.", "zh_CN": "使用`git branch bugWork`加上一个目标提交记录来创建消失的引用。", - "zh_TW": "使用`git branch bugWork`加上一个目标提交记录来创建消失的引用。" + "zh_TW": "使用`git branch bugWork`加上一個目標提交記錄來創建消失的引用。" }, "startDialog": { "en_US": { @@ -193,15 +193,15 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "### 选择父提交", + "### 選擇父提交", "", - "和`~`修改符一样,`^`修改符之后也可以跟一个(可选的)数字。", + "和`~`修改符一樣,`^`修改符之後也可以跟一個(可選的)數字。", "", - "这不是用来指定向上返回几代(`~`的作用),`^`后的数字指定跟随合并提交记录的哪一个父提交。还记得一个合并提交有多个父提交吧,所有选择哪条路径不是那么清晰。", + "這不是用來指定向上返回幾代(`~`的作用),`^`後的數字指定跟隨合併提交記錄的哪一個父提交。還記得一個合併提交有多個父提交吧,所有選擇哪條路徑不是那麼清晰。", "", - "Git默认选择跟随合并提交的\"第一个\"父提交,使用`^`后跟一个数字来改变这一默认行为。", + "Git默認選擇跟隨合併提交的\"第一個\"父提交,使用`^`後跟一個數字來改變這一默認行為。", "", - "废话不多说,举个例子。", + "廢話不多說,舉個例子。", "" ] } @@ -210,12 +210,12 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "这里有一个合并提交。如果不加数字修改符直接切换到`master^`,会回到第一个父提交。", + "這裡有一個合併提交。如果不加數字修改符直接切換到`master^`,會回到第一個父提交。", "", - "(*在我们的图示中,第一个父提交是指合并提交正上方的那个父提交。*)" + "(*在我們的圖示中,第一個父提交是指合併提交正上方的那個父提交。*)" ], "afterMarkdowns": [ - "OK--这恰好是我们想要的。" + "OK--這恰好是我們想要的。" ], "command": "git checkout master^", "beforeCommand": "git checkout HEAD^; git commit; git checkout master; git merge C2" @@ -225,10 +225,10 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "现在来试试选择第二个父提交……" + "現在來試試選擇第二個父提交……" ], "afterMarkdowns": [ - "看见了吧?我们回到了第二个父提交。" + "看見了吧?我們回到了第二個父提交。" ], "command": "git checkout master^2", "beforeCommand": "git checkout HEAD^; git commit; git checkout master; git merge C2" @@ -238,10 +238,10 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "使用`^`和`~`可以自由在在提交树中移动:" + "使用`^`和`~`可以自由在在提交樹中移動:" ], "afterMarkdowns": [ - "快若闪电!" + "快若閃電!" ], "command": "git checkout HEAD~; git checkout HEAD^2; git checkout HEAD~2", "beforeCommand": "git commit; git checkout C0; git commit; git commit; git commit; git checkout master; git merge C5; git commit" @@ -251,10 +251,10 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "再疯狂点,这些修改符支持链式操作!试一下这个:" + "再瘋狂點,這些修改符支持鏈式操作!試一下這個:" ], "afterMarkdowns": [ - "和前面的结果一样,但只用了一条命令。" + "和前面的結果一樣,但只用了一條命令。" ], "command": "git checkout HEAD~^2~2", "beforeCommand": "git commit; git checkout C0; git commit; git commit; git commit; git checkout master; git merge C5; git commit" @@ -264,11 +264,11 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "### 实践一下", + "### 實踐一下", "", - "要完成此关,在指定的目标位置创建一个新的分支。", + "要完成此關,在指定的目標位置創建一個新的分支。", "", - "很明显可以简单的直接使用提交记录的hash值(比如`C6`),但我要求你使用刚刚讲到的相对引用修饰符!" + "很明顯可以簡單的直接使用提交記錄的hash值(比如`C6`),但我要求你使用剛剛講到的相對引用修飾符!" ] } } From 633f3d371d803a2937b921dd5ac8d746f5fb84b9 Mon Sep 17 00:00:00 2001 From: "Carl X. Su" Date: Sat, 7 Dec 2013 10:56:39 +0800 Subject: [PATCH 06/33] =?UTF-8?q?levels/intro=20=E5=8E=BB=E7=B0=A1?= =?UTF-8?q?=E9=AB=94=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/levels/intro/branching.js | 30 +++++++++++++-------------- src/levels/intro/commits.js | 20 +++++++++--------- src/levels/intro/merging.js | 38 +++++++++++++++++------------------ src/levels/intro/rebasing.js | 34 +++++++++++++++---------------- 4 files changed, 61 insertions(+), 61 deletions(-) diff --git a/src/levels/intro/branching.js b/src/levels/intro/branching.js index 5a3b0d89..8f4b82fa 100644 --- a/src/levels/intro/branching.js +++ b/src/levels/intro/branching.js @@ -14,7 +14,7 @@ exports.level = { "ja": "ブランチの作成(\"git branch [ブランチ名]\")と、チェックアウト(\"git checkout [ブランチ名]\")", "fr_FR": "Faites une nouvelle branche avec \"git branch [nom]\" positionnez-vous dans celle-ci avec \"git checkout [nom]\"", "zh_CN": "用 'git branch [分支名]' 来创建分支,用 'git checkout [分支名]' 切换到分支", - "zh_TW": "用 'git branch [分支名]' 来创建分支,用 'git checkout [分支名]' 切换到分支", + "zh_TW": "用 'git branch [分支名]' 來創建分支,用 'git checkout [分支名]' 切換到分支", "ko": "\"git branch [브랜치명]\"으로 새 브랜치를 만들고, \"git checkout [브랜치명]\"로 그 브랜치로 이동하세요" }, "disabledMap": { @@ -341,15 +341,15 @@ exports.level = { "markdowns": [ "## Git Branches", "", - " Git 的分支非常轻量。它们只是简单地指向某个提交纪录——仅此而已。所以许多Git爱好者会念叨:", + " Git 的分支非常輕量。它們只是簡單地指向某個提交紀錄——僅此而已。所以許多Git愛好者會念叨:", "", "```", - "早点建分支!经常建分支!", + "早點建分支!經常建分支!", "```", "", - "创建分支没有储存或内存上的开销,所以按逻辑分解工作比维护单一的代码树要简单。", + "創建分支沒有儲存或內存上的開銷,所以按邏輯分解工作比維護單一的代碼樹要簡單。", "", - "同时使用分支和提交时,我们会看到两者如何配合。现在,只要记住使用分支其实就是在说:“我想包含本次提交及所有的父提交记录。”" + "同時使用分支和提交時,我們會看到兩者如何配合。現在,只要記住使用分支其實就是在說:「我想包含本次提交及所有的父提交記錄。」" ] } }, @@ -357,13 +357,13 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "举个例子看看分支究竟是什么。", + "舉個例子看看分支究竟是什麼。", "", - "这里,我们切换到到名为`newImage`的新分支。" + "這裡,我們切換到到名為`newImage`的新分支。" ], "command": "git branch newImage", "afterMarkdowns": [ - "看,这就是建立分支所需的操作啦!`newImage`分支现在指向提交记录`C1`。" + "看,這就是建立分支所需的操作啦!`newImage`分支現在指向提交記錄`C1`。" ], "beforeCommand": "" } @@ -372,11 +372,11 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "现在让我们修改一下新分支。点击下面的按钮。" + "現在讓我們修改一下新分支。點擊下面的按鈕。" ], "command": "git commit", "afterMarkdowns": [ - "啊摔!`master`分支前进了,但`newImage`分支没有哇!这是因为我们没有“在”这个新分支上,这也是为什么星号(*)只在 `master` 上。" + "啊摔!`master`分支前進了,但`newImage`分支沒有哇!這是因為我們沒有「在」這個新分支上,這也是為什麼星號(*)只在 `master` 上。" ], "beforeCommand": "git branch newImage" } @@ -385,17 +385,17 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "使用如下命令告诉git我们想要切换到新的分支", + "使用如下命令告訴git我們想要切換到新的分支", "", "```", "git checkout [name]", "```", "", - "这可以让我们在提交修改之前切换到新的分支。" + "這可以讓我們在提交修改之前切換到新的分支。" ], "command": "git checkout newImage; git commit", "afterMarkdowns": [ - "好的嘞!新的分支已经记录了我们的修改。" + "好的嘞!新的分支已經記錄了我們的修改。" ], "beforeCommand": "git branch newImage" } @@ -404,8 +404,8 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "好啦,你已经准备好使用分支了。当前窗口关闭后,", - "创建一个叫 `bugFix` 的新分支,然后切换过去。" + "好啦,你已經準備好使用分支了。當前窗口關閉後,", + "創建一個叫 `bugFix` 的新分支,然後切換過去。" ] } } diff --git a/src/levels/intro/commits.js b/src/levels/intro/commits.js index 4fd9882e..24a28571 100644 --- a/src/levels/intro/commits.js +++ b/src/levels/intro/commits.js @@ -5,7 +5,7 @@ exports.level = { "ja": "Gitのコミット", 'ko': 'Git 커밋 소개', 'zh_CN': 'Git Commits简介' - 'zh_TW': 'Git Commits简介' + 'zh_TW': 'Git Commits簡介' }, "goalTreeString": "{\"branches\":{\"master\":{\"target\":\"C3\",\"id\":\"master\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}", "solutionCommand": "git commit;git commit", @@ -14,7 +14,7 @@ exports.level = { "en_US": "Just type in 'git commit' twice to finish!", "fr_FR": "Il suffit de saisir 'git commit' deux fois pour réussir !", "zh_CN": "敲两次 'git commit' 就好啦!", - "zh_TW": "敲两次 'git commit' 就好啦!", + "zh_TW": "敲兩次 'git commit' 就好啦!", "ja": "'git commit'コマンドを2回打てば完成!", "ko": "'git commit'이라고 두 번 치세요!" }, @@ -251,15 +251,15 @@ exports.level = { "options": { "markdowns": [ "## Git Commits", - "git仓库中的一次提交(commit)记录目录下所有文件的快照。感觉像是大量的复制和粘贴,但 git 做的不只这么简单!", + "git倉庫中的一次提交(commit)記錄目錄下所有文件的快照。感覺像是大量的複製和粘貼,但 git 做的不只這麼簡單!", "", - "Git 希望提交记录尽可能地轻量,所以每次进行提交时,它不会简单地复制整个目录。实际上它把每次提交记录保存为从代码库的一个版本到下一个版本的变化集,或者说一个\"增量(delta)\"。所以,大部分提交记录都有一个父提交(parent commit)-- 我们会很快演示这一点。", + "Git 希望提交記錄儘可能地輕量,所以每次進行提交時,它不會簡單地複製整個目錄。實際上它把每次提交記錄保存為從代碼庫的一個版本到下一個版本的變化集,或者說一個\"增量(delta)\"。所以,大部分提交記錄都有一個父提交(parent commit)-- 我們會很快演示這一點。", "", - "克隆(clone)代码库时,需要解包(unpack)或者“解析(resolve)”所有的差异。所以在克隆代码库时,可能会看见如下命令行输出:", + "克隆(clone)代碼庫時,需要解包(unpack)或者「解析(resolve)」所有的差異。所以在克隆代碼庫時,可能會看見如下命令行輸出:", "", "`resolving deltas`", "", - "要学的东西有很多,但现在你可以把提交记录看作是项目的快照。提交记录非常轻量且可以快速切换!" + "要學的東西有很多,但現在你可以把提交記錄看作是項目的快照。提交記錄非常輕量且可以快速切換!" ] } }, @@ -267,13 +267,13 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "在实践中学习commit。右边是一个(小)git代码库的图示。当前有两个提交记录—— 初始提交`C0`和其后可能包含有用修改的提交`C1`。", + "在實踐中學習commit。右邊是一個(小)git代碼庫的圖示。當前有兩個提交記錄—— 初始提交`C0`和其後可能包含有用修改的提交`C1`。", "", - "点击下面的按钮生成新的提交记录。" + "點擊下面的按鈕生成新的提交記錄。" ], "command": "git commit", "afterMarkdowns": [ - "看!碉堡吧!我们修改了代码,并保存为一次提交记录。刚刚做的提交`C2`有一个父提交(parent)`C1`,代表此次修改的基础。" + "看!碉堡吧!我們修改了代碼,並保存為一次提交記錄。剛剛做的提交`C2`有一個父提交(parent)`C1`,代表此次修改的基礎。" ], "beforeCommand": "" } @@ -282,7 +282,7 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "接下来你可以随便测试。当前窗口关闭后,完成两次提交就可以过关!" + "接下來你可以隨便測試。當前窗口關閉後,完成兩次提交就可以過關!" ] } } diff --git a/src/levels/intro/merging.js b/src/levels/intro/merging.js index f0246a16..c1c30fd9 100644 --- a/src/levels/intro/merging.js +++ b/src/levels/intro/merging.js @@ -7,14 +7,14 @@ exports.level = { "ko": "Git에서 브랜치 합치기(Merge)", "ja": "ブランチとマージ", "zh_CN": "分支与合并", - "zh_TW": "分支与合并" + "zh_TW": "分支與合併" }, "hint": { "en_US": "Remember to commit in the order specified (bugFix before master)", "ja": "指示された順番でコミットすること(masterの前にbugFixで)", "fr_FR": "Pensez à faire des commits dans l'ordre indiqué (bugFix avant master)", "zh_CN": "记住按指定的顺序提交(bugFix先于master)", - "zh_TW": "记住按指定的顺序提交(bugFix先于master)", + "zh_TW": "記住按指定的順序提交(bugFix先於master)", "ko": "말씀드린 순서대로 커밋해주세요 (bugFix에 먼저 커밋하고 master에 커밋)" }, "disabledMap": { @@ -305,11 +305,11 @@ exports.level = { "markdowns": [ "## Branches and Merging", "", - "Great! 我们已经知道怎么提交和使用分支了。接下来要学的一招是如何合并两个不同分支的工作。这让我们可以新建一个分支,在其上开发新功能,然后合并回主线。", + "Great! 我們已經知道怎麼提交和使用分支了。接下來要學的一招是如何合併兩個不同分支的工作。這讓我們可以新建一個分支,在其上開發新功能,然後合併回主線。", "", - "`git merge`是我们要学习的合并工作的第一个方法。合并产生一个特殊的提交记录,它包含两个唯一父提交。有两个父提交的提交记录本质上是:“我想把这两个父提交本身及它们的父提交集合都包含进来。”", + "`git merge`是我們要學習的合併工作的第一個方法。合併產生一個特殊的提交記錄,它包含兩個唯一父提交。有兩個父提交的提交記錄本質上是:「我想把這兩個父提交本身及它們的父提交集合都包含進來。」", "", - "有图有真相,看看下面的图示就明白了。" + "有圖有真相,看看下面的圖示就明白了。" ] } }, @@ -317,17 +317,17 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "当前有两个分支:各有一个唯一的提交。这意味着没有一个分支包含我们对代码库的所有修改。让我们合并这两个分支来解决这个问题。", + "當前有兩個分支:各有一個唯一的提交。這意味著沒有一個分支包含我們對代碼庫的所有修改。讓我們合併這兩個分支來解決這個問題。", "", - "我们要把 `bugFix` 合并到 `master` " + "我們要把 `bugFix` 合併到 `master` " ], "command": "git merge bugFix", "afterMarkdowns": [ - "哇!看见木有?首先,`master` 现在指向一个拥有两个父提交的提交记录。假如从 `master` 开始沿着箭头向上游走,在到达起点的路上会经过所有的提交记录。这说明有 `master` 包含了对代码库的所有修改。", + "哇!看見木有?首先,`master` 現在指向一個擁有兩個父提交的提交記錄。假如從 `master` 開始沿著箭頭向上遊走,在到達起點的路上會經過所有的提交記錄。這說明有 `master` 包含了對代碼庫的所有修改。", "", - "还有,看见各个提交记录的颜色变化了吗?为了帮助学习,我使用了颜色混合。每个分支都有特定的颜色。每个提交记录都变成了含有此提交的所有分支的混合色。", + "還有,看見各個提交記錄的顏色變化了嗎?為了幫助學習,我使用了顏色混合。每個分支都有特定的顏色。每個提交記錄都變成了含有此提交的所有分支的混合色。", "", - "所以,`master` 分支的颜色被混入到所有的提交记录,但 `bugFix` 没有。接下来就改一下这里吧。" + "所以,`master` 分支的顏色被混入到所有的提交記錄,但 `bugFix` 沒有。接下來就改一下這裡吧。" ], "beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit" } @@ -336,13 +336,13 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "让我们把 `master` 分支合并到 `bugFix` 吧。" + "讓我們把 `master` 分支合併到 `bugFix` 吧。" ], "command": "git checkout bugFix; git merge master", "afterMarkdowns": [ - "因为 `bugFix` 分支在 `master` 分支的下游,git什么都不用做,只是简单地把`bugfix`分支移动到`master`指向的提交记录。", + "因為 `bugFix` 分支在 `master` 分支的下游,git什麼都不用做,只是簡單地把`bugfix`分支移動到`master`指向的提交記錄。", "", - "现在所有的提交记录的颜色都是一样的啦,这表明每一个分支都包含了代码库的所有修改!走起!" + "現在所有的提交記錄的顏色都是一樣的啦,這表明每一個分支都包含了代碼庫的所有修改!走起!" ], "beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit; git merge bugFix" } @@ -351,16 +351,16 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "想完成此关,执行收下操作:", + "想完成此關,執行收下操作:", "", - "* 创建新分支 `bugFix` ", - "* 用 `git checkout bugFix` 切换到 `bugFix`分支", + "* 創建新分支 `bugFix` ", + "* 用 `git checkout bugFix` 切換到 `bugFix`分支", "* 提交一次", - "* 用 `git checkout` 切换回 `master` ", + "* 用 `git checkout` 切換回 `master` ", "* 再提交一次", - "* 用 `git merge` 合并 `bugFix`分支进 `master`", + "* 用 `git merge` 合併 `bugFix`分支進 `master`", "", - "*记住,总是可以用 \"help level\" 命令来重新显示这个对话框!*" + "*記住,總是可以用 \"help level\" 命令來重新顯示這個對話框!*" ] } } diff --git a/src/levels/intro/rebasing.js b/src/levels/intro/rebasing.js index a59ce20e..911f17e2 100644 --- a/src/levels/intro/rebasing.js +++ b/src/levels/intro/rebasing.js @@ -7,7 +7,7 @@ exports.level = { "fr_FR": "Introduction à rebase", "ko": "리베이스(rebase)의 기본", "zh_CN": "Rebase简介", - "zh_TW": "Rebase简介" + "zh_TW": "Rebase簡介" }, "hint": { "en_US": "Make sure you commit from bugFix first", @@ -15,7 +15,7 @@ exports.level = { "fr_FR": "Assurez-vous de bien faire votre en premier votre commit sur bugFix", "ko": "bugFix 브랜치에서 먼저 커밋하세요", "zh_CN": "确保你先在 bugFix 分支进行提交", - "zh_TW": "确保你先在 bugFix 分支进行提交" + "zh_TW": "確保你先在 bugFix 分支進行提交" }, "disabledMap": { "git revert": true @@ -295,11 +295,11 @@ exports.level = { "markdowns": [ "## Git Rebase", "", - "*rebasing*是在分支之间合并工作的第二种方法。Rebasing就是取出一系列的提交记录,\"复制\"它们,然后把在别的某个地方放下来。", + "*rebasing*是在分支之間合併工作的第二種方法。Rebasing就是取出一系列的提交記錄,\"複製\"它們,然後把在別的某個地方放下來。", "", - "虽然听上去难以理解,rebasing 的优势是可以创造更线性的提交历史。假如只允许使用rebasing,代码库的提交日志/历史会更好看。", + "雖然聽上去難以理解,rebasing 的優勢是可以創造更線性的提交歷史。假如只允許使用rebasing,代碼庫的提交日誌/歷史會更好看。", "", - "让我们亲身体会下……" + "讓我們親身體會下……" ] } }, @@ -307,19 +307,19 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "这里,还是有两个分支;注意当前分支是 bugFix(看那颗星)", + "這裡,還是有兩個分支;注意當前分支是 bugFix(看那顆星)", "", - "我们想要把 bugfix 里面的工作直接移到 master 分支上。使用这个方法,两个分支的功能看起来像是按顺序开发,实际上它们是平行开发的。", + "我們想要把 bugfix 裡面的工作直接移到 master 分支上。使用這個方法,兩個分支的功能看起來像是按順序開發,實際上它們是平行開發的。", "", - "用 `git rebase`实现此目标" + "用 `git rebase`實現此目標" ], "command": "git rebase master", "afterMarkdowns": [ - "碉堡吧,现在 bugFix 分支上的工作在 master 的最前端,同时我们也得到了一个更线性的提交序列。", + "碉堡吧,現在 bugFix 分支上的工作在 master 的最前端,同時我們也得到了一個更線性的提交序列。", "", - "注意,提交记录 C3 仍然存在(阴影的那货就是你了,还看什么看),而我们已经将 C3 复制到了master。", + "注意,提交記錄 C3 仍然存在(陰影的那貨就是你了,還看什麼看),而我們已經將 C3 複製到了master。", "", - "现在唯一的问题是 master 分支还没有更新……下面就来更新它吧" + "現在唯一的問題是 master 分支還沒有更新……下面就來更新它吧" ], "beforeCommand": "git commit; git checkout -b bugFix C1; git commit" } @@ -328,11 +328,11 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "现在,切换到 `master` 分支。接下来就把它 rebase 到 `bugFix` 吧……" + "現在,切換到 `master` 分支。接下來就把它 rebase 到 `bugFix` 吧……" ], "command": "git rebase bugFix", "afterMarkdowns": [ - "完成!因为 `master` 是 `bugFix` 的下游,所以 git 只把 `master` 分支的记录前移到 `bugFix` 上。" + "完成!因為 `master` 是 `bugFix` 的下游,所以 git 只把 `master` 分支的記錄前移到 `bugFix` 上。" ], "beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master" } @@ -341,14 +341,14 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "想完成此关,执行以下操作:", + "想完成此關,執行以下操作:", "", "* 新建`bugFix`分支", "* 提交一次", - "* 切换回 master 分支再提交一次", - "* 再次切换到 bugFix 分支,rebase 到 master 上", + "* 切換回 master 分支再提交一次", + "* 再次切換到 bugFix 分支,rebase 到 master 上", "", - "祝你好运啦!" + "祝你好運啦!" ] } } From ee8726efde97f13ef45532d6815a9d844d84a0f2 Mon Sep 17 00:00:00 2001 From: "Carl X. Su" Date: Sat, 7 Dec 2013 11:25:47 +0800 Subject: [PATCH 07/33] =?UTF-8?q?levels/rampup=20=E5=8E=BB=E7=B0=A1?= =?UTF-8?q?=E9=AB=94=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/levels/rampup/detachedHead.js | 30 ++++++++++----------- src/levels/rampup/relativeRefs.js | 38 +++++++++++++-------------- src/levels/rampup/relativeRefs2.js | 20 +++++++------- src/levels/rampup/reversingChanges.js | 28 ++++++++++---------- 4 files changed, 58 insertions(+), 58 deletions(-) diff --git a/src/levels/rampup/detachedHead.js b/src/levels/rampup/detachedHead.js index 37f9b3ef..d8614b9d 100644 --- a/src/levels/rampup/detachedHead.js +++ b/src/levels/rampup/detachedHead.js @@ -5,12 +5,12 @@ exports.level = { "name": { "en_US": "Detach yo' HEAD", "zh_CN": "分离HEAD", - "zh_TW": "分离HEAD" + "zh_TW": "分離HEAD" }, "hint": { "en_US": "Use the label (hash) on the commit for help!", "zh_CN": "使用提交记录上的标签(hash)来求助!", - "zh_TW": "使用提交记录上的标签(hash)来求助!" + "zh_TW": "使用提交記錄上的標籤(hash)來求助!" }, "startDialog": { "en_US": { @@ -175,11 +175,11 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "## 在Git中前后移动", + "## 在Git中前後移動", "", - "在接触Git的更多高级主题之前,我们先学习用不同的方法在代表你的项目的提交记录树上前后移动。", + "在接觸Git的更多高級主題之前,我們先學習用不同的方法在代表你的項目的提交記錄樹上前後移動。", "", - "一旦能够熟练地在Git中前进后退,你使用其他git命令的威力也会被放大!", + "一旦能夠熟練地在Git中前進後退,你使用其他git命令的威力也會被放大!", "", "", "", @@ -194,11 +194,11 @@ exports.level = { "markdowns": [ "## HEAD", "", - "我们首先看一下\"HEAD\". HEAD是当前提交记录的符号名称 -- 其实就是你正在其基础进行工作的提交记录。", + "我們首先看一下\"HEAD\". HEAD是當前提交記錄的符號名稱 -- 其實就是你正在其基礎進行工作的提交記錄。", "", - "HEAD总是指向最近一次提交记录,表现为当前工作树。大多数修改工作树的git命令都开始于改变HEAD指向。", + "HEAD總是指向最近一次提交記錄,表現為當前工作樹。大多數修改工作樹的git命令都開始於改變HEAD指向。", "", - "HEAD通常指向分支名(比如bugFix)。你提交时,改变了bugFix的状态,这一变化通过HEAD变得可见。" + "HEAD通常指向分支名(比如bugFix)。你提交時,改變了bugFix的狀態,這一變化通過HEAD變得可見。" ] } }, @@ -206,10 +206,10 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "在实例中看一下。我们将会观察提交前后HEAD的位置。" + "在實例中看一下。我們將會觀察提交前後HEAD的位置。" ], "afterMarkdowns": [ - "看! HEAD一直藏在`master`分支后面。" + "看! HEAD一直藏在`master`分支後面。" ], "command": "git checkout C1; git checkout master; git commit; git checkout C2", "beforeCommand": "" @@ -219,15 +219,15 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "### 分离 HEAD", + "### 分離 HEAD", "", - "分离HEAD就是让其指向一个提交记录而不是分支名。这是命令执行之前的样子: ", + "分離HEAD就是讓其指向一個提交記錄而不是分支名。這是命令執行之前的樣子: ", "", "HEAD -> master -> C1", "" ], "afterMarkdowns": [ - "现在变成了", + "現在變成了", "", "HEAD -> C1" ], @@ -239,9 +239,9 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "想完成此关,从`bugFix`分离出HEAD并让其指向一个提交记录。", + "想完成此關,從`bugFix`分離出HEAD並讓其指向一個提交記錄。", "", - "通过hash值指定提交记录。每个提交记录的hash值显示在代表提交记录的圆圈中。" + "通過hash值指定提交記錄。每個提交記錄的hash值顯示在代表提交記錄的圓圈中。" ] } } diff --git a/src/levels/rampup/relativeRefs.js b/src/levels/rampup/relativeRefs.js index 7a336db0..d8004fe0 100644 --- a/src/levels/rampup/relativeRefs.js +++ b/src/levels/rampup/relativeRefs.js @@ -5,12 +5,12 @@ exports.level = { "name": { "en_US": "Relative Refs (^)", "zh_CN": "相对引用(^)", - "zh_TW": "相对引用(^)" + "zh_TW": "相對引用(^)" }, "hint": { "en_US": "Remember the Caret (^) operator!", "zh_CN": "记住插入(^)操作符!", - "zh_TW": "记住插入(^)操作符!" + "zh_TW": "記住插入(^)操作符!" }, "startDialog": { "en_US": { @@ -169,13 +169,13 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "## 相对引用", + "## 相對引用", "", - "用指定提交记录hash值的方式在Git中移动会变得比较乏味。在现实中,你不会有漂亮的可视化的提交记录树放在终端旁边,所以你不得不用`git log`来查看hasn值。", + "用指定提交記錄hash值的方式在Git中移動會變得比較乏味。在現實中,你不會有漂亮的可視化的提交記錄樹放在終端旁邊,所以你不得不用`git log`來查看hasn值。", "", - "另外,hash值在真实的Git环境中也会更长。举个例子,前一关的介绍中的提交记录的hash值是`fed2da64c0efc5293610bdd892f82a58e8cbc5d8`。不要把舌头闪了...", + "另外,hash值在真實的Git環境中也會更長。舉個例子,前一關的介紹中的提交記錄的hash值是`fed2da64c0efc5293610bdd892f82a58e8cbc5d8`。不要把舌頭閃了...", "", - "好的一面是,Git对hash的处理很智能。你只需要提供能够唯一标识提交记录的前几个字符即可。所以,我可以仅输入`fed2`而不是上面的一长串字符。" + "好的一面是,Git對hash的處理很智能。你只需要提供能夠唯一標識提交記錄的前幾個字符即可。所以,我可以僅輸入`fed2`而不是上面的一長串字符。" ] } }, @@ -183,14 +183,14 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "我说过,通过hash指定提交记录不是很方便,所以Git引入了相对引用。这个就很牛掰了!", + "我說過,通過hash指定提交記錄不是很方便,所以Git引入了相對引用。這個就很牛掰了!", "", - "使用相对引用,你可以从一个易于记忆的地方(比如分支名`bugFix`或`HEAD`)开始工作。", + "使用相對引用,你可以從一個易於記憶的地方(比如分支名`bugFix`或`HEAD`)開始工作。", "", - "相对引用非常给力,这里我介绍两个简单的用法:", + "相對引用非常給力,這裡我介紹兩個簡單的用法:", "", - "* 使用`^`向上移动1个提交记录", - "* 使用`~`向上移动多个提交记录" + "* 使用`^`向上移動1個提交記錄", + "* 使用`~`向上移動多個提交記錄" ] } }, @@ -198,16 +198,16 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "首先看看插入(^)操作符。把插入符跟在引用名后面,表示让Git寻找指定提交记录的父提交。", + "首先看看插入(^)操作符。把插入符跟在引用名後面,表示讓Git尋找指定提交記錄的父提交。", "", - "所以`master^`相当于\"`master`的父提交\"。", + "所以`master^`相當於\"`master`的父提交\"。", "", "`master^^`是`master`的父父提交(上上代祖先)", "", - "切换到master的父提交" + "切換到master的父提交" ], "afterMarkdowns": [ - "唰!搞定。这种方式比输入提交记录的hash值简单多了!" + "唰!搞定。這種方式比輸入提交記錄的hash值簡單多了!" ], "command": "git checkout master^", "beforeCommand": "git commit" @@ -217,10 +217,10 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "你也可以`HEAD`把用作相对引用。以下命令使用`HEAD`在提交树中向上移动几次。" + "你也可以`HEAD`把用作相對引用。以下命令使用`HEAD`在提交樹中向上移動幾次。" ], "afterMarkdowns": [ - "简单!我们可以一直使用`HEAD^`向上移动。" + "簡單!我們可以一直使用`HEAD^`向上移動。" ], "command": "git checkout C3; git checkout HEAD^; git checkout HEAD^; git checkout HEAD^", "beforeCommand": "git commit; git commit" @@ -230,9 +230,9 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "要完成此关,切换到`bugFix`的父提交。这会分离出`HEAD`.", + "要完成此關,切換到`bugFix`的父提交。這會分離出`HEAD`.", "", - "如果你愿意的话,使用hash值也可以过关,但为何不试试使用相对引用呢?" + "如果你願意的話,使用hash值也可以過關,但為何不試試使用相對引用呢?" ] } } diff --git a/src/levels/rampup/relativeRefs2.js b/src/levels/rampup/relativeRefs2.js index fa4df807..ca771711 100644 --- a/src/levels/rampup/relativeRefs2.js +++ b/src/levels/rampup/relativeRefs2.js @@ -5,12 +5,12 @@ exports.level = { "hint": { "en_US": "You'll need to use at least one direct reference (hash) to complete this level", "zh_CN": "这一关至少要用到一次直接引用(hash)", - "zh_TW": "这一关至少要用到一次直接引用(hash)" + "zh_TW": "這一關至少要用到一次直接引用(hash)" }, "name": { "en_US": "Relative Refs #2 (~)", "zh_CN": "相对引用2(~)", - "zh_TW": "相对引用2(~)" + "zh_TW": "相對引用2(~)" }, "startDialog": { "en_US": { @@ -144,10 +144,10 @@ exports.level = { "markdowns": [ "### The \"~\" operator", "", - "假设需要在提交树中向上移动很多步。使用多个`^`非常无聊,所以Git也引入了波浪(~)操作符。", + "假設需要在提交樹中向上移動很多步。使用多個`^`非常無聊,所以Git也引入了波浪(~)操作符。", "", "", - "波浪操作符后面可以(可选地)跟一个数字,指定向上移动多少次。看个例子" + "波浪操作符後面可以(可選地)跟一個數字,指定向上移動多少次。看個例子" ] } }, @@ -155,10 +155,10 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "使用`~`一次后退多步." + "使用`~`一次後退多步." ], "afterMarkdowns": [ - "唰!如此简洁--相对引用就是好啊!" + "唰!如此簡潔--相對引用就是好啊!" ], "command": "git checkout HEAD~4", "beforeCommand": "git commit; git commit; git commit" @@ -170,13 +170,13 @@ exports.level = { "markdowns": [ "### Branch forcing", "", - "你现在是相对引用的高手了,现在*用*他来实际做点事情。", + "你現在是相對引用的高手了,現在*用*他來實際做點事情。", "", - "我使用相对引用最多的就是移动分支。你可以使用`-f`选项把直接让分支指向另一个提交。举个例子:", + "我使用相對引用最多的就是移動分支。你可以使用`-f`選項把直接讓分支指向另一個提交。舉個例子:", "", "`git branch -f master HEAD~3`", "", - "(强制)移动master指向HEAD的第3级父提交。" + "(強制)移動master指向HEAD的第3級父提交。" ] } }, @@ -184,7 +184,7 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "要完成此关,移动`HEAD`,`master`和`bugFix`到目标所示的位置。" + "要完成此關,移動`HEAD`,`master`和`bugFix`到目標所示的位置。" ] } } diff --git a/src/levels/rampup/reversingChanges.js b/src/levels/rampup/reversingChanges.js index 15fdfeb4..f839ca9d 100644 --- a/src/levels/rampup/reversingChanges.js +++ b/src/levels/rampup/reversingChanges.js @@ -9,13 +9,13 @@ exports.level = { "fr_FR": "Annuler des changements avec Git", "ko": "Git에서 작업 되돌리기", "zh_CN": "在Git中撤销更改", - "zh_TW": "在Git中撤销更改" + "zh_TW": "在Git中撤銷更改" }, "hint": { "en_US": "Notice that revert and reset take different arguments.", "fr_FR": "", "zh_CN": "注意revert和reset使用不同的参数。", - "zh_TW": "注意revert和reset使用不同的参数。", + "zh_TW": "注意revert和reset使用不同的參數。", "ko": "", "ja": "" }, @@ -278,11 +278,11 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "## 撤销 Git 里面的变动", + "## 撤銷 Git 裡面的變動", "", - "在 Git 里撤销修改的方法很多。和 commit 一样,在 Git 里撤销变动同时具有底层部分(暂存一些独立的文件或者片段)和高层部分(具体到变动是究竟怎么被撤销的)。我们这个应用主要关注后者。", + "在 Git 裡撤銷修改的方法很多。和 commit 一樣,在 Git 裡撤銷變動同時具有底層部分(暫存一些獨立的文件或者片段)和高層部分(具體到變動是究竟怎麼被撤銷的)。我們這個應用主要關注後者。", "", - "在 Git 里主要用两种方法来撤销变动 —— 一种是 `git reset`,另外一种是 `git revert`。让我们在下一个窗口逐一了解它们。", + "在 Git 裡主要用兩種方法來撤銷變動 —— 一種是 `git reset`,另外一種是 `git revert`。讓我們在下一個窗口逐一瞭解它們。", "" ] } @@ -293,13 +293,13 @@ exports.level = { "beforeMarkdowns": [ "## Git Reset", "", - "`git reset`把分支记录回退到上一个提交记录来实现撤销改动。你可以认为这是在\"重写历史\"。`git reset`往回移动分支,原来指向的提交记录好像重来没有提交过一样。", + "`git reset`把分支記錄回退到上一個提交記錄來實現撤銷改動。你可以認為這是在\"重寫歷史\"。`git reset`往回移動分支,原來指向的提交記錄好像重來沒有提交過一樣。", "", - "让我们看看具体的操作:" + "讓我們看看具體的操作:" ], "command": "git reset HEAD~1", "afterMarkdowns": [ - "Nice!Git把master分支的指向简单地移回到`C1`;现在我们的本地代码库处于没有提交过`C2`的状态了。" + "Nice!Git把master分支的指向簡單地移回到`C1`;現在我們的本地代碼庫處於沒有提交過`C2`的狀態了。" ], "beforeCommand": "git commit" } @@ -310,15 +310,15 @@ exports.level = { "beforeMarkdowns": [ "## Git Revert", "", - "虽然在你的本地分支中使用`git reset`很方便,但是这种“改写历史”的方法对别人的远端分支是无效的哦!", + "雖然在你的本地分支中使用`git reset`很方便,但是這種「改寫歷史」的方法對別人的遠端分支是無效的哦!", "", - "为了撤销更改并*传播*给别人,我们需要使用`git revert`。举个例子" + "為了撤銷更改並*傳播*給別人,我們需要使用`git revert`。舉個例子" ], "command": "git revert HEAD", "afterMarkdowns": [ - "怪哉!在我们要撤销的提交记录后面居然多了一个新提交!这是因为新提交记录`C2'`引入了*更改*——刚好是用来撤销 `C2` 这个提交的。", + "怪哉!在我們要撤銷的提交記錄後面居然多了一個新提交!這是因為新提交記錄`C2'`引入了*更改*——剛好是用來撤銷 `C2` 這個提交的。", "", - "借助 revert,现在可以把你的更改传递给别人啦。" + "借助 revert,現在可以把你的更改傳遞給別人啦。" ], "beforeCommand": "git commit" } @@ -327,9 +327,9 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "要完成此关,分别撤销`local`分支和`pushed`分支上的最近一次提交。", + "要完成此關,分別撤銷`local`分支和`pushed`分支上的最近一次提交。", "", - "记住 `pushed` 是一个远程分支,`local` 是一个本地分支 —— 有了这么明显的提示应该知道用哪种方法了吧?" + "記住 `pushed` 是一個遠程分支,`local` 是一個本地分支 —— 有了這麼明顯的提示應該知道用哪種方法了吧?" ] } } From 1bcd8ce3642115a094588dca0bc17adf9a188462 Mon Sep 17 00:00:00 2001 From: "Carl X. Su" Date: Sat, 7 Dec 2013 11:29:10 +0800 Subject: [PATCH 08/33] =?UTF-8?q?levels/mixed=20=E5=8E=BB=E7=B0=A1?= =?UTF-8?q?=E9=AB=94=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/levels/mixed/grabbingOneCommit.js | 21 +++++++++++---------- src/levels/mixed/jugglingCommits.js | 24 ++++++++++++------------ src/levels/mixed/jugglingCommits2.js | 20 ++++++++++---------- 3 files changed, 33 insertions(+), 32 deletions(-) diff --git a/src/levels/mixed/grabbingOneCommit.js b/src/levels/mixed/grabbingOneCommit.js index 1b240cc9..65f3aae3 100644 --- a/src/levels/mixed/grabbingOneCommit.js +++ b/src/levels/mixed/grabbingOneCommit.js @@ -17,14 +17,15 @@ exports.level = { "ko": "딱 한개의 커밋만 가져오기", "en_US": "Grabbing Just 1 Commit", "ja": "Grabbing Just 1 Commit", - "zh_CN": "只取一个提交" + "zh_CN": "只取一个提交", + "zh_TW": "只取一個提交" }, "hint": { "en_US": "Remember, interactive rebase or cherry-pick is your friend here", "ja": "このレベルではインタラクティブモードのrebaseやcherry-pickがクリアのカギです", "ko": "대화식 리베이스(rebase -i)나 or 체리픽(cherry-pick)을 사용하세요", "zh_CN": "记住,交互式 rebase 或者 cherry-pick 会很有帮助", - "zh_TW": "记住,交互式 rebase 或者 cherry-pick 会很有帮助" + "zh_TW": "記住,交互式 rebase 或者 cherry-pick 會很有幫助" }, "startDialog": { "en_US": { @@ -155,13 +156,13 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "## 本地栈式提交 (Locally stacked commits)", + "## 本地棧式提交 (Locally stacked commits)", "", - "设想一下一个经常发生的场景:我在追踪一个有点棘手的 bug,为了更好地排查,我添加了一些调试命令和打印语句。", + "設想一下一個經常發生的場景:我在追蹤一個有點棘手的 bug,為了更好地排查,我添加了一些調試命令和打印語句。", "", - "所有的这些调试和打印语句都只在它们自己的分支里。最终我终于找到这个 bug,揪出来 fix 掉,然后撒花庆祝!", + "所有的這些調試和打印語句都只在它們自己的分支裡。最終我終於找到這個 bug,揪出來 fix 掉,然後撒花慶祝!", "", - "现在唯一的问题就是要把我在 `bugFix` 分支里的工作合并回 `master` 分支。我可以简单地把 `master` 分支快进(fast-forward),但这样的话 `master` 分支就会包含我这些调试语句了。" + "現在唯一的問題就是要把我在 `bugFix` 分支裡的工作合併回 `master` 分支。我可以簡單地把 `master` 分支快進(fast-forward),但這樣的話 `master` 分支就會包含我這些調試語句了。" ] } }, @@ -169,14 +170,14 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "现在就是 Git 大显神通的时候啦。解决这个问题的方法不止一个,但最直接的两个方法是:", + "現在就是 Git 大顯神通的時候啦。解決這個問題的方法不止一個,但最直接的兩個方法是:", "", "* `git rebase -i`", "* `git cherry-pick`", "", - "交互(`-i`)衍合允许你选择哪些提交是要被保留,哪些要被舍弃。它允许你将提交重新排序。假如你要舍弃一些工作,这个会帮上很大的忙。", + "交互(`-i`)衍合允許你選擇哪些提交是要被保留,哪些要被捨棄。它允許你將提交重新排序。假如你要捨棄一些工作,這個會幫上很大的忙。", "", - "Cherry-picking 能让你选择单独一个提交并且把它放到 `HEAD` 的最前端。" + "Cherry-picking 能讓你選擇單獨一個提交並且把它放到 `HEAD` 的最前端。" ] } }, @@ -184,7 +185,7 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "本关是可选关卡,玩不玩随便你。但是如果你坚持要刷,确保 `master` 分支能拿到 `bugFix` 分支的相关提交(references)。" + "本關是可選關卡,玩不玩隨便你。但是如果你堅持要刷,確保 `master` 分支能拿到 `bugFix` 分支的相關提交(references)。" ] } } diff --git a/src/levels/mixed/jugglingCommits.js b/src/levels/mixed/jugglingCommits.js index 856fb93c..d87d6e23 100644 --- a/src/levels/mixed/jugglingCommits.js +++ b/src/levels/mixed/jugglingCommits.js @@ -22,14 +22,14 @@ exports.level = { "en_US": "Juggling Commits", "ja": "Juggling Commits", "zh_CN": "提交变换戏法", - "zh_TW": "提交变换戏法" + "zh_TW": "提交變換戲法" }, "hint": { "en_US": "The first command is git rebase -i HEAD~2", "ja": "最初に打つコマンドはgit rebase -i HEAD~2", "ko": "첫번째 명령은 git rebase -i HEAD~2 입니다", "zh_CN": "第一个命令是 'git rebase -i HEAD~2'", - "zh_TW": "第一个命令是 'git rebase -i HEAD~2'" + "zh_TW": "第一個命令是 'git rebase -i HEAD~2'" }, "startDialog": { "en_US": { @@ -157,11 +157,11 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "## 提交变换戏法", + "## 提交變換戲法", "", - "下面这种情况也是经常出现的。例如你之前已经在 `newImage` 分支上做了一些提交,然后又在 `caption` 分支上做了一些相关的提交,因此它们看起来是一个连一个的(stacked on top of each other in your repository)。", + "下面這種情況也是經常出現的。例如你之前已經在 `newImage` 分支上做了一些提交,然後又在 `caption` 分支上做了一些相關的提交,因此它們看起來是一個連一個的(stacked on top of each other in your repository)。", "", - "有点棘手的就是有时候你又想往先前的提交里做些小改动。呐,现在就是设计师想要我们去轻微改变下 `newImage` 的内容(change the dimensions slightly),尽管那个提交是很久很久以前的了。" + "有點棘手的就是有時候你又想往先前的提交裡做些小改動。吶,現在就是設計師想要我們去輕微改變下 `newImage` 的內容(change the dimensions slightly),儘管那個提交是很久很久以前的了。" ] } }, @@ -169,14 +169,14 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "为了实现他的愿望,我们可以按照下面的方法来做:", + "為了實現他的願望,我們可以按照下面的方法來做:", "", - "* 先用 `git rebase -i` 将提交重新排序,然后把我们想要修改的提交挪到最前", - "* 然后用 `commit --amend` 来进行一些小修改", - "* 接着再用 `git rebase -i` 来将他们按最开始的顺序重新排好", - "* 最后我们把 master 移到修改的最前端(用你自己喜欢的方法),就大功告成啦!", + "* 先用 `git rebase -i` 將提交重新排序,然後把我們想要修改的提交挪到最前", + "* 然後用 `commit --amend` 來進行一些小修改", + "* 接著再用 `git rebase -i` 來將他們按最開始的順序重新排好", + "* 最後我們把 master 移到修改的最前端(用你自己喜歡的方法),就大功告成啦!", "", - "当然还有许多方法可以完成这个任务(我知道你在看 cherry-pick 啦),之后我们会多点关注这些技巧啦,但现在暂时只专注上面这种方法。" + "當然還有許多方法可以完成這個任務(我知道你在看 cherry-pick 啦),之後我們會多點關注這些技巧啦,但現在暫時只專註上面這種方法。" ] } }, @@ -184,7 +184,7 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "啊最后还要提醒你一下最终的形式 —— 因为我们把这个提交移动了两次,所以会分别产生一个省略提交(both get an apostrophe appended)。还有一个省略提交是因为我们为了实现最终效果去修改提交而添加的。" + "啊最後還要提醒你一下最終的形式 —— 因為我們把這個提交移動了兩次,所以會分別產生一個省略提交(both get an apostrophe appended)。還有一個省略提交是因為我們為了實現最終效果去修改提交而添加的。" ] } } diff --git a/src/levels/mixed/jugglingCommits2.js b/src/levels/mixed/jugglingCommits2.js index 33f1f1b0..e8eb43a7 100644 --- a/src/levels/mixed/jugglingCommits2.js +++ b/src/levels/mixed/jugglingCommits2.js @@ -21,14 +21,14 @@ exports.level = { "en_US": "Juggling Commits #2", "ja": "コミットをやりくりする その2", "zh_CN": "提交交换戏法 #2", - "zh_TW": "提交交换戏法 #2" + "zh_TW": "提交交換戲法 #2" }, "hint": { "en_US": "Don't forget to forward master to the updated changes!", "ja": "masterのポインタを先に進めることを忘れずに!", "ko": "master를 변경 완료한 커밋으로 이동(forward)시키는 것을 잊지 마세요!", "zh_CN": "别忘记了将 master 快进到最新的更新上!", - "zh_TW": "别忘记了将 master 快进到最新的更新上!" + "zh_TW": "別忘記了將 master 快進到最新的更新上!" }, "startDialog": { "en_US": { @@ -162,13 +162,13 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "## 提交变换戏法 #2", + "## 提交變換戲法 #2", "", - "*假如你还没有完成提交变换戏法 #1(前一关),这关不让玩哦!*", + "*假如你還沒有完成提交變換戲法 #1(前一關),這關不讓玩哦!*", "", - "如你在上一关所见,我们使用 `rebase -i` 来重排那些提交。只要把我们想要的提交挪到最顶端,我们就可以很容易地改变它,然后把它们重新排成我们想要的顺序。", + "如你在上一關所見,我們使用 `rebase -i` 來重排那些提交。只要把我們想要的提交挪到最頂端,我們就可以很容易地改變它,然後把它們重新排成我們想要的順序。", "", - "但唯一的问题就是这样做就要排很多次,有可能造成衍合冲突(rebase conflicts)。下面就看看用另外一种方法 `git cherry-pick` 是怎么做的吧。" + "但唯一的問題就是這樣做就要排很多次,有可能造成衍合衝突(rebase conflicts)。下面就看看用另外一種方法 `git cherry-pick` 是怎麼做的吧。" ] } }, @@ -176,13 +176,13 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "要在心理牢记 cherry-pick 可以从提交树的任何地方拿一个提交来放在 HEAD 上(尽管那个提交不在上游)。", + "要在心理牢記 cherry-pick 可以從提交樹的任何地方拿一個提交來放在 HEAD 上(儘管那個提交不在上游)。", "", - "下面是一个小小的演示:" + "下面是一個小小的演示:" ], "command": "git cherry-pick C2", "afterMarkdowns": [ - "好滴咧,我们继续" + "好滴咧,我們繼續" ], "beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit" } @@ -191,7 +191,7 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "那么这关呢,和上一关一样要改变提交 `C2`,但你要避免使用 `rebase -i`。自己想想要怎么解决吧,骚年! :D" + "那麼這關呢,和上一關一樣要改變提交 `C2`,但你要避免使用 `rebase -i`。自己想想要怎麼解決吧,騷年! :D" ] } } From 98ae0ff7bd7ccb7176095a181a59b8a2bd5b3417 Mon Sep 17 00:00:00 2001 From: "Carl X. Su" Date: Sat, 7 Dec 2013 11:30:49 +0800 Subject: [PATCH 09/33] =?UTF-8?q?levels/rebase=20=E5=8E=BB=E7=B0=A1?= =?UTF-8?q?=E9=AB=94=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/levels/rebase/manyRebases.js | 8 ++++---- src/levels/rebase/selectiveRebase.js | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/levels/rebase/manyRebases.js b/src/levels/rebase/manyRebases.js index 299c919d..a4eaae3c 100644 --- a/src/levels/rebase/manyRebases.js +++ b/src/levels/rebase/manyRebases.js @@ -19,7 +19,7 @@ exports.level = { "ja": "最も効率的なやり方はmasterを最後に更新するだけかもしれない・・・", "ko": "아마도 master를 마지막에 업데이트하는 것이 가장 효율적인 방법일 것입니다...", "zh_CN": "记住,最后更新master分支可能是最高效的方法。", - "zh_TW": "记住,最后更新master分支可能是最高效的方法。" + "zh_TW": "記住,最後更新master分支可能是最高效的方法。" }, "startDialog": { "en_US": { @@ -84,11 +84,11 @@ exports.level = { "markdowns": [ "### 多分支衍合", "", - "呐,现在我们有很多分支啦!让我们rebase这些分支的工作到 master 分支上吧。", + "吶,現在我們有很多分支啦!讓我們rebase這些分支的工作到 master 分支上吧。", "", - "但是你的头头找了点麻烦 —— 他们希望得到有序的提交历史,也就是我们最终的结果是 `C7'` 在最底部,`C6'` 在它上面,以此类推。", + "但是你的頭頭找了點麻煩 —— 他們希望得到有序的提交歷史,也就是我們最終的結果是 `C7'` 在最底部,`C6'` 在它上面,以此類推。", "", - "假如你搞砸了,没所谓的(虽然我不会告诉你用 `reset` 可以重新开始)。记得看看我们提供的答案,看你能否使用更少的命令完成任务!" + "假如你搞砸了,沒所謂的(雖然我不會告訴你用 `reset` 可以重新開始)。記得看看我們提供的答案,看你能否使用更少的命令完成任務!" ] } } diff --git a/src/levels/rebase/selectiveRebase.js b/src/levels/rebase/selectiveRebase.js index 295dbb5d..37a79707 100644 --- a/src/levels/rebase/selectiveRebase.js +++ b/src/levels/rebase/selectiveRebase.js @@ -11,14 +11,14 @@ exports.level = { "en_US": "Branch Spaghetti", "ja": "ブランチスパゲッティ", "zh_CN": "分支浆糊", - "zh_TW": "分支浆糊" + "zh_TW": "分支漿糊" }, "hint": { "en_US": "Make sure to do everything in the proper order! Branch one first, then two, then three", "ja": "全て正しい順番で処理すること!oneが最初で、次がtwo、最後にthreeを片付ける。", "ko": "이 문제를 해결하는 방법은 여러가지가 있습니다! 체리픽(cherry-pick)이 가장 쉽지만 오래걸리는 방법이고, 리베이스(rebase -i)가 빠른 방법입니다", "zh_CN": "确保你是按照正确的顺序来操作!先操作分支 `one`, 然后 `two`, 最后才是 `three`", - "zh_TW": "确保你是按照正确的顺序来操作!先操作分支 `one`, 然后 `two`, 最后才是 `three`" + "zh_TW": "確保你是按照正確的順序來操作!先操作分支 `one`, 然後 `two`, 最後才是 `three`" }, "startDialog": { "en_US": { @@ -89,13 +89,13 @@ exports.level = { "markdowns": [ "## Branch Spaghetti", "", - "哇塞大神!这关我们要来点不同的!", + "哇塞大神!這關我們要來點不同的!", "", - "现在我们的 `master` 分支是比 `one` `two` 和 `three` 要多几个提交。出于某种原因,我们需要把其他三个分支更新到 master 分支上新近的几个不同提交上。(update these three other brances with modified versions of the last few commits on master)", + "現在我們的 `master` 分支是比 `one` `two` 和 `three` 要多幾個提交。出於某種原因,我們需要把其他三個分支更新到 master 分支上新近的幾個不同提交上。(update these three other brances with modified versions of the last few commits on master)", "", - "分支 `one` 需要重新排序和撤销, `two` 需要完全重排,而 `three` 只需要提交一次。", + "分支 `one` 需要重新排序和撤銷, `two` 需要完全重排,而 `three` 只需要提交一次。", "", - "慢慢摸索会找到答案的 —— 你完事记得用 `show solution` 看看我们的答案哦。" + "慢慢摸索會找到答案的 —— 你完事記得用 `show solution` 看看我們的答案哦。" ] } } From 8d9e9316694536df5407ddeb6669fdc139eb9f37 Mon Sep 17 00:00:00 2001 From: "Carl X. Su" Date: Sat, 7 Dec 2013 13:17:11 +0800 Subject: [PATCH 10/33] Update dialogs/nextLevel.js --- src/js/dialogs/nextLevel.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/js/dialogs/nextLevel.js b/src/js/dialogs/nextLevel.js index cf709497..11d3c0cc 100644 --- a/src/js/dialogs/nextLevel.js +++ b/src/js/dialogs/nextLevel.js @@ -35,10 +35,10 @@ exports.dialog = { type: 'ModalAlert', options: { markdowns: [ - '## 幹得好!', + '## 太棒了!', '', - '您下了 *{numCommands}* 次指令解開這個關卡,', - '我們的解答下了 {best} 次。' + '您用了 *{numCommands}* 個指令完成這一關,', + '我們的解答用了 {best} 個。' ] } }], From ce318590dca14359099790e1f911ed06b45b5806 Mon Sep 17 00:00:00 2001 From: "Carl X. Su" Date: Sat, 7 Dec 2013 13:27:56 +0800 Subject: [PATCH 11/33] Update intl/strings.js --- src/js/intl/strings.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/js/intl/strings.js b/src/js/intl/strings.js index 025f61d1..8b1c62d2 100644 --- a/src/js/intl/strings.js +++ b/src/js/intl/strings.js @@ -5,7 +5,7 @@ exports.strings = { 'ja': '最後のレベルをクリアしました!すごい!!', 'en_US': 'Wow! You finished the last level, great!', 'zh_CN': '我的个天!你完成了最后一关,碉堡了!', - 'zh_TW': '我的個天!你完成了最後一關,碉堡了!', + 'zh_TW': '我的天啊!您解開了最後一關,太強了!', 'fr_FR': 'Félicitations, vous avez réussi le dernier niveau !' }, /////////////////////////////////////////////////////////////////////////// @@ -14,7 +14,7 @@ exports.strings = { 'en_US': 'Would you like to move on to *"{nextLevel}"*, the next level?', 'ja': '次の章 *"{nextLevel}"* へ進みますか?', 'zh_CN': '要不前进到下一关 *“{nextLevel}”*?', - 'zh_TW': '要不前進到下一關 *“{nextLevel}”*?', + 'zh_TW': '下一關是*「{nextLevel}」*,您要繼續闖關嗎?', 'fr_FR': 'Voulez-vous passer à *"{nextLevel}"*, le prochain niveau ?' }, /////////////////////////////////////////////////////////////////////////// @@ -23,7 +23,7 @@ exports.strings = { 'en_US': 'Awesome! You matched or exceeded our solution.', 'ja': '素晴らしい!このレベルをクリアしましたね。', 'zh_CN': '牛鼻啊!你达到或者完爆了我们的答案。', - 'zh_TW': '牛鼻啊!你達到或者完爆了我我的答案。', + 'zh_TW': '太強了,您的答案符合我們的預期甚至更好!', 'fr_FR': 'Fabuleux ! Votre solution a égalé ou surpassé notre solution.' }, /////////////////////////////////////////////////////////////////////////// From ccd26a6e2124ef5ccdfc8f14b6aa87ad576b69cf Mon Sep 17 00:00:00 2001 From: "Carl X. Su" Date: Sat, 7 Dec 2013 14:20:30 +0800 Subject: [PATCH 12/33] Update intl/strings.js again --- src/js/intl/strings.js | 50 ++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/src/js/intl/strings.js b/src/js/intl/strings.js index 8b1c62d2..eed6f32d 100644 --- a/src/js/intl/strings.js +++ b/src/js/intl/strings.js @@ -137,7 +137,7 @@ exports.strings = { '__desc__': 'The commit message for a merge commit', 'en_US': 'Merge {target} into {current}', 'zh_CN': '合并 {target} 到 {current}', - 'zh_TW': '合并 {target} 到 {current}', + 'zh_TW': '合併 {target} 到 {current}', 'fr_FR': 'Merge de {target} dans {current}' }, /////////////////////////////////////////////////////////////////////////// @@ -145,7 +145,7 @@ exports.strings = { '__desc__': 'One of the error messages for git', 'en_US': 'No commits to rebase! Everything is a merge commit or changes already applied', 'zh_CN': '没有需要 rebase 的提交!都是个合并提交,或者已经 rebase 过了。', - 'zh_TW': '沒有需要 rebase 的提交!都是個合併提交,或者已經 rebase 過了。', + 'zh_TW': '沒有需要 rebase 的提交!每份提交皆已合併或套用變更了', 'fr_FR': 'Aucune commit à rebaser ! Tout est soit un commit de merge, soit des modifications déjà appliquées' }, /////////////////////////////////////////////////////////////////////////// @@ -209,7 +209,7 @@ exports.strings = { '__desc__': 'One of the error messages for git', 'en_US': 'Those options you specified are incompatible or incorrect', 'zh_CN': '你所指定的参数不兼容或者不准确', - 'zh_TW': '你所指定的參數不兼容或者不準確', + 'zh_TW': '您指定了不相容或錯誤的選項', 'fr_FR': 'Les options que vous avez spécifiées sont incompatibles ou incorrectes' }, /////////////////////////////////////////////////////////////////////////// @@ -274,7 +274,7 @@ exports.strings = { '__desc__': 'One of the error messages for git', 'en_US': 'That command accepts no general arguments', 'zh_CN': '该命令不接收参数', - 'zh_TW': '該命令不接收參數', + 'zh_TW': '該指令不接受一般參數', 'fr_FR': 'Cette commande n\'accepte aucun argument général' }, /////////////////////////////////////////////////////////////////////////// @@ -282,7 +282,7 @@ exports.strings = { '__desc__': 'The prompt to copy the tree when sharing', 'en_US': 'Copy the tree string below', 'zh_CN': '拷贝下面的树字符串', - 'zh_TW': '拷貝下面的樹字符串', + 'zh_TW': '複製下方的樹狀字串', 'fr_FR': 'Copiez la chaîne d\'arbre ci-dessous' }, /////////////////////////////////////////////////////////////////////////// @@ -292,7 +292,7 @@ exports.strings = { 'ja': '日本語版リポジトリ', 'ko': 'Git 브랜치 배우기', 'zh_CN': '学习Git分支', - 'zh_TW': '學習Git分支', + 'zh_TW': '學習 Git 分支', 'fr_FR': 'Apprenez Git Branching' }, /////////////////////////////////////////////////////////////////////////// @@ -300,7 +300,7 @@ exports.strings = { '__desc__': 'The prompt to select a level on the drop down view', 'en_US': 'Select a level', 'zh_CN': '选择一关', - 'zh_TW': '選擇一關', + 'zh_TW': '選擇其中一關', 'fr_FR': 'Choisissez un niveau' }, /////////////////////////////////////////////////////////////////////////// @@ -329,7 +329,7 @@ exports.strings = { '__desc__': 'When the user specifies an option that is not supported by our demo', 'en_US': 'The option "{option}" is not supported!', 'zh_CN': '不支持选项 "{option}"', - 'zh_TW': '不支持選項 "{option}"', + 'zh_TW': '不支援的選項 "{option}"', 'fr_FR': 'L\'option "{option}" n\'est pas supportée' }, /////////////////////////////////////////////////////////////////////////// @@ -337,7 +337,7 @@ exports.strings = { '__desc__': 'The line that shows how to format a git command', 'en_US': 'git []', 'zh_CN': 'git <命令> [<参数>]', - 'zh_TW': 'git <命令> [<參數>]', + 'zh_TW': 'git <指令> [<參數>]', 'fr_FR': 'git []' }, /////////////////////////////////////////////////////////////////////////// @@ -345,7 +345,7 @@ exports.strings = { '__desc__': 'In the git help command, the header above the supported commands', 'en_US': 'Supported commands:', 'zh_CN': '支持的命令有:', - 'zh_TW': '支持的命令有:', + 'zh_TW': '支援的指令有:', 'fr_FR': 'Commandes supportées' }, /////////////////////////////////////////////////////////////////////////// @@ -353,7 +353,7 @@ exports.strings = { '__desc__': 'In the dummy git output, the header before showing all the commands', 'en_US': 'Usage:', 'zh_CN': '使用:', - 'zh_TW': '使用:', + 'zh_TW': '用法:', 'fr_FR': 'Utilisation :' }, /////////////////////////////////////////////////////////////////////////// @@ -369,7 +369,7 @@ exports.strings = { '__desc__': 'when the tree is visually refreshed', 'en_US': 'Refreshing tree...', 'zh_CN': '正在刷新树结构...', - 'zh_TW': '正在刷新樹結構……', + 'zh_TW': '正在更新樹狀結構……', 'fr_FR': 'Actualisation de l\'arbre…' }, /////////////////////////////////////////////////////////////////////////// @@ -377,7 +377,7 @@ exports.strings = { '__desc__': 'when the locale is set to something', 'en_US': 'Locale set to {locale}', 'zh_CN': '语言更改为 {locale}', - 'zh_TW': '語言更改為 {locale}', + 'zh_TW': '語系設為 {locale}', 'fr_FR': 'Langue changée à {locale}' }, /////////////////////////////////////////////////////////////////////////// @@ -385,19 +385,21 @@ exports.strings = { '__desc__': 'when the locale is reset', 'en_US': 'Locale reset to default, which is {locale}', 'zh_CN': '语言重置为默认的 {locale}', - 'zh_TW': '語言重置為默認的 {locale}', + 'zh_TW': '還原為預設語系 {locale}', 'fr_FR': 'Langue remise par défaut, qui est {locale}' }, /////////////////////////////////////////////////////////////////////////// 'show-command': { '__desc__': 'command output title from "show"', 'en_US': 'Please use one of the following commands for more info:', + 'zh_TW': '請使用下列其中一個指令取得更多資訊:', 'fr_FR': 'Merci d\'utiliser une des commandes suivantes pour obtenir plus d\'info' }, /////////////////////////////////////////////////////////////////////////// 'show-all-commands': { '__desc__': 'command output title from "show commands"', 'en_US': 'Here is a list of all the commmands available:', + 'zh_TW': '這份清單列出所有可用指令:', 'fr_FR': 'Ci-dessous est la liste de toutes les commandes disponibles :' }, /////////////////////////////////////////////////////////////////////////// @@ -413,14 +415,14 @@ exports.strings = { '__desc__': 'Dummy command output for the command in the key', 'en_US': 'DontWorryAboutFilesInThisDemo.txt', 'zh_CN': 'DontWorryAboutFilesInThisDemo.txt (译: 在试验里不用担心文件.txt)', - 'zh_TW': 'DontWorryAboutFilesInThisDemo.txt (譯: 在試驗裡不用擔心文件.txt)', + 'zh_TW': 'DontWorryAboutFilesInThisDemo.txt(譯註:在試驗裡不用擔心檔案.txt)', 'fr_FR': 'DontWorryAboutFilesInThisDemo.txt (ne vous préoccupez pas des noms de fichier dans cette démo)' }, 'mobile-alert': { '__desc__': 'When someone comes to the site on a mobile device, they can not input commands so this is a nasty alert to tell them', 'en_US': 'LGB can\'t receive input on mobile, visit on desktop! it\'s worth it :D', 'zh_CN': '无法在移动设备/平板上调出键盘 :( 请试试桌面版 :D', - 'zh_TW': '無法在移動設備/平板上調出鍵盤 :( 請試試桌面版 :D', + 'zh_TW': '無法在行動裝置上叫出鍵盤,請改用桌面版!', 'fr_FR': 'Impossible de faire apparaître le clavier sur mobile / tablette :( Essayez de passer sur un ordinateur de bureau :D' }, /////////////////////////////////////////////////////////////////////////// @@ -436,7 +438,7 @@ exports.strings = { '__desc__': 'When you are importing a level or tree', 'en_US': 'Paste a JSON blob below!', 'zh_CN': '在下边粘贴一个JSON串', - 'zh_TW': '在下邊貼上一個JSON串', + 'zh_TW': '在下方貼上一串 JSON', 'fr_FR': 'Collez un blob JSON ci-dessous !' }, /////////////////////////////////////////////////////////////////////////// @@ -452,7 +454,7 @@ exports.strings = { '__desc__': 'When the user tries to exit a level when they are not in one', 'en_US': 'You are not in a level! You are in a sandbox, start a level with "levels"', 'zh_CN': '您没在关卡中!您在沙盒中,要开始关卡请输入 "levels"', - 'zh_TW': '您沒在关卡中!您在沙盒中,要開始關卡請輸入 "levels"', + 'zh_TW': '您沒在關卡中!您在沙盒中,要開始關卡請輸入 "levels"', 'fr_FR': 'Vous n\'êtes pas dans un niveau ! Vous êtes dans le mode bac à sable, commencez un niveau avec "levels"' }, /////////////////////////////////////////////////////////////////////////// @@ -460,7 +462,7 @@ exports.strings = { '__desc__': 'When you say an id but that level doesnt exist', 'en_US': 'A level for that id "{id}" was not found! Opening up a level selection view', 'zh_CN': '没找到id为 "{id}" 的关卡!打开关卡选择框', - 'zh_TW': '沒找到id為 "{id}" 的關卡!打開關卡選擇框', + 'zh_TW': '找不到 id 為 "{id}" 的關卡!開啟關卡選擇視窗', 'fr_FR': 'Le niveau dont l\'identifiant est {id} n\'a pas été trouvé ! Ouverture de la vue de sélection des niveaux' }, /////////////////////////////////////////////////////////////////////////// @@ -492,7 +494,7 @@ exports.strings = { '__desc__': 'when you have made the level, prompt to share this', 'en_US': 'Here is the JSON for this level! Share it with somenoe or send it to me on Github', 'zh_CN': '这是一个关卡定义JSON!您可以分享它或者发到我的GitHub上', - 'zh_TW': '這是一個關卡定義JSON!您可以分享它或者發到我的GitHub上', + 'zh_TW': '這是一個關卡定義 JSON!您可以分享它或者發到我的 GitHub 上', 'fr_FR': 'Voici le JSON pour ce niveau ! Partagez-le avec quelqu\'un ou envoyez-le moi sur Github' }, /////////////////////////////////////////////////////////////////////////// @@ -524,7 +526,7 @@ exports.strings = { '__desc__': 'prompt for level name', 'en_US': 'Enter the name for the level', 'zh_CN': '输入关卡名', - 'zh_TW': '輸入關卡名', + 'zh_TW': '輸入關卡名稱', 'fr_FR': 'Entrez le nom pour ce niveau' }, /////////////////////////////////////////////////////////////////////////// @@ -532,7 +534,7 @@ exports.strings = { '__desc__': 'If you define a solution without any commands, aka a level that is solved without doing anything', 'en_US': 'Your solution is empty!! Something is amiss', 'zh_CN': '你的解法是空的!! 这应该是出错了', - 'zh_TW': '你的解法是空的!! 這應該是出錯了', + 'zh_TW': '你的解法是空的!這一定是哪裡出錯了', 'fr_FR': 'Votre solution est vide !! Quelque chose ne tourne pas rond' }, /////////////////////////////////////////////////////////////////////////// @@ -593,7 +595,7 @@ exports.strings = { '__desc__': 'The name for the environment where you build levels', 'en_US': 'Level Builder', 'zh_CN': '关卡生成器', - 'zh_TW': '關卡生成器', + 'zh_TW': '關卡產生器', 'fr_FR': 'Éditeur de niveaux' }, /////////////////////////////////////////////////////////////////////////// @@ -625,7 +627,7 @@ exports.strings = { '__desc__': 'The general error when we encounter a dialog that is not translated', 'en_US': 'This dialog or text is not yet translated in your locale :( Hop on github to aid in translation!', 'zh_CN': '这段对话还没有被翻译成你的语言 :( 欢迎在gitHub上贡献你的翻译!', - 'zh_TW': '這段對話還沒有被翻譯成你的語言 :( 歡迎在gitHub上貢獻你的翻譯!', + 'zh_TW': '這段對話尚未翻成您的語言 :( 歡迎到 github 貢獻翻譯!', 'fr_FR': 'Ce message n\'a pas encore été traduit dans votre langue :( Venez sur Github aider à la traduction !' } }; From 12be67ea699bf4ba7f0d9d35baf0eaa7609e0ab2 Mon Sep 17 00:00:00 2001 From: "Carl X. Su" Date: Tue, 10 Dec 2013 01:51:25 +0800 Subject: [PATCH 13/33] Update intl/strings.js --- src/js/intl/strings.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/js/intl/strings.js b/src/js/intl/strings.js index eed6f32d..a3fad331 100644 --- a/src/js/intl/strings.js +++ b/src/js/intl/strings.js @@ -32,7 +32,7 @@ exports.strings = { 'en_US': 'See if you can whittle it down to {best} :D', 'ja': '模範解答の回数={best}回でクリアする方法も考えてみましょう :D', 'zh_CN': '试试看你能否在 {best} 之内搞定 :D', - 'zh_TW': '試試看你能否在 {best} 之内搞定 :D', + 'zh_TW': '試試看您是否能在 {best} 步内搞定 :D', 'fr_FR': 'Voyons si vous pouvez descendre à {best} :D' }, /////////////////////////////////////////////////////////////////////////// @@ -137,7 +137,7 @@ exports.strings = { '__desc__': 'The commit message for a merge commit', 'en_US': 'Merge {target} into {current}', 'zh_CN': '合并 {target} 到 {current}', - 'zh_TW': '合併 {target} 到 {current}', + 'zh_TW': '將 {target} 併入 {current}', 'fr_FR': 'Merge de {target} dans {current}' }, /////////////////////////////////////////////////////////////////////////// @@ -250,7 +250,7 @@ exports.strings = { '__desc__': 'Message for reverting git command', 'en_US': 'Reverting {oldCommit}: {oldMsg}', 'zh_CN': '撤销 {oldCommit}:{oldMsg}', - 'zh_TW': '撤銷 {oldCommit}:{oldMsg}', + 'zh_TW': '還原 {oldCommit}:{oldMsg}', 'fr_FR': 'Revert {oldCommit}: {oldMsg}' }, /////////////////////////////////////////////////////////////////////////// @@ -486,7 +486,7 @@ exports.strings = { '__desc__': 'When you try a command that is disabled', 'en_US': 'That git command is disabled for this level!', 'zh_CN': '该命令在本关不允许使用!', - 'zh_TW': '該命令在本關不允許使用!', + 'zh_TW': '本關禁止使用該 git 指令!', 'fr_FR': 'Cette commande git est désactivée pour ce niveau !' }, /////////////////////////////////////////////////////////////////////////// @@ -494,7 +494,7 @@ exports.strings = { '__desc__': 'when you have made the level, prompt to share this', 'en_US': 'Here is the JSON for this level! Share it with somenoe or send it to me on Github', 'zh_CN': '这是一个关卡定义JSON!您可以分享它或者发到我的GitHub上', - 'zh_TW': '這是一個關卡定義 JSON!您可以分享它或者發到我的 GitHub 上', + 'zh_TW': '這是本關的 JSON!您可以分享給別人,或是送到 Github 上給我', 'fr_FR': 'Voici le JSON pour ce niveau ! Partagez-le avec quelqu\'un ou envoyez-le moi sur Github' }, /////////////////////////////////////////////////////////////////////////// @@ -502,7 +502,7 @@ exports.strings = { '__desc__': 'prompt to add a start dialog', 'en_US': 'You have not specified a start dialog, would you like to add one?', 'zh_CN': '您还没有定义一开始的介绍,是否添加一个?', - 'zh_TW': '您還沒有定義一開始的介绍,是否添加一個?', + 'zh_TW': '尚未指定開始對話視窗,是否立即新增?', 'fr_FR': 'Vous n\'avez pas spécifié de dialogue de départ, voulez-vous en ajouter un ?' }, /////////////////////////////////////////////////////////////////////////// @@ -510,7 +510,7 @@ exports.strings = { '__desc__': 'prompt to add a hint', 'en_US': 'You have not specified a hint, would you like to add one?', 'zh_CN': '您还没有定义提示,是否添加一个?', - 'zh_TW': '您還沒有定義提示,是否添加一個?', + 'zh_TW': '尚未指定提示,是否立即新增?', 'fr_FR': 'Vous n\'avez pas spécifié d\'indice, voulez-vous en ajouter un ?' }, /////////////////////////////////////////////////////////////////////////// @@ -526,7 +526,7 @@ exports.strings = { '__desc__': 'prompt for level name', 'en_US': 'Enter the name for the level', 'zh_CN': '输入关卡名', - 'zh_TW': '輸入關卡名稱', + 'zh_TW': '請輸入關卡名稱', 'fr_FR': 'Entrez le nom pour ce niveau' }, /////////////////////////////////////////////////////////////////////////// @@ -534,7 +534,7 @@ exports.strings = { '__desc__': 'If you define a solution without any commands, aka a level that is solved without doing anything', 'en_US': 'Your solution is empty!! Something is amiss', 'zh_CN': '你的解法是空的!! 这应该是出错了', - 'zh_TW': '你的解法是空的!這一定是哪裡出錯了', + 'zh_TW': '您的解法是空的!這一定是哪裡出錯了', 'fr_FR': 'Votre solution est vide !! Quelque chose ne tourne pas rond' }, /////////////////////////////////////////////////////////////////////////// @@ -542,7 +542,7 @@ exports.strings = { '__desc__': 'When you define the start point again, it overwrites the solution and goal so we add a warning', 'en_US': 'Defining start point... solution and goal will be overwritten if they were defined earlier', 'zh_CN': '定义开始点... 解决方法和目标会被新的替代', - 'zh_TW': '定義開始點... 解決方法和目標會被新的替代', + 'zh_TW': '正在定義起始點……先前定義的解法和目標會被覆蓋掉', 'fr_FR': 'Redéfinition du point de départ… la solution et la cible seront écrasés s\'ils ont déjà été définis' }, /////////////////////////////////////////////////////////////////////////// From da8061372065723f6f803384f6ffd95f62f7bd31 Mon Sep 17 00:00:00 2001 From: mht Date: Tue, 10 Dec 2013 10:27:21 +0800 Subject: [PATCH 14/33] update src/levels/rampup/reversingChanges.js --- src/levels/rampup/reversingChanges.js | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/levels/rampup/reversingChanges.js b/src/levels/rampup/reversingChanges.js index f839ca9d..025a2fce 100644 --- a/src/levels/rampup/reversingChanges.js +++ b/src/levels/rampup/reversingChanges.js @@ -9,7 +9,7 @@ exports.level = { "fr_FR": "Annuler des changements avec Git", "ko": "Git에서 작업 되돌리기", "zh_CN": "在Git中撤销更改", - "zh_TW": "在Git中撤銷更改" + "zh_TW": "在Git中取消修改" }, "hint": { "en_US": "Notice that revert and reset take different arguments.", @@ -278,11 +278,11 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "## 撤銷 Git 裡面的變動", + "## 取消 Git 的修改", "", - "在 Git 裡撤銷修改的方法很多。和 commit 一樣,在 Git 裡撤銷變動同時具有底層部分(暫存一些獨立的文件或者片段)和高層部分(具體到變動是究竟怎麼被撤銷的)。我們這個應用主要關注後者。", + "在 Git 裡面取消修改的方法很多。和 commit 一樣,在 Git 裡面取消修改同時具有底層的部份(暫存一些獨立的文件或者片段)和高層的部份(修改是如何被取消)。我們主要講的重點是後者。", "", - "在 Git 裡主要用兩種方法來撤銷變動 —— 一種是 `git reset`,另外一種是 `git revert`。讓我們在下一個窗口逐一瞭解它們。", + "在 Git 裡主要用兩種方法來取消修改 —— 一種是 `git reset`,另外一種是 `git revert`。讓我們在下一個對話視窗中逐一瞭解它們。", "" ] } @@ -293,13 +293,13 @@ exports.level = { "beforeMarkdowns": [ "## Git Reset", "", - "`git reset`把分支記錄回退到上一個提交記錄來實現撤銷改動。你可以認為這是在\"重寫歷史\"。`git reset`往回移動分支,原來指向的提交記錄好像重來沒有提交過一樣。", + "`git reset`把分支的參考點退回到上一個commit來取消修改。你可以認為這是在\"重寫歷史\"。`git reset`往回移動分支,原來的分支所指向的commit好像從來沒有存在過一樣。", "", - "讓我們看看具體的操作:" + "讓我們來看看要怎麼操作:" ], "command": "git reset HEAD~1", "afterMarkdowns": [ - "Nice!Git把master分支的指向簡單地移回到`C1`;現在我們的本地代碼庫處於沒有提交過`C2`的狀態了。" + "太好了!Git把master分支簡單地移回到`C1`;現在在我們的local端已經退回到沒有commit過`C2`的狀態了。" ], "beforeCommand": "git commit" } @@ -310,15 +310,15 @@ exports.level = { "beforeMarkdowns": [ "## Git Revert", "", - "雖然在你的本地分支中使用`git reset`很方便,但是這種「改寫歷史」的方法對別人的遠端分支是無效的哦!", + "雖然在你的local分支中使用`git reset`很方便,但是這種「改寫歷史」的方法對別人的遠端分支是無效的哦!", "", - "為了撤銷更改並*傳播*給別人,我們需要使用`git revert`。舉個例子" + "為了取消修改並且把這個狀態*分享*給別人,我們需要使用`git revert`。舉個例子" ], "command": "git revert HEAD", "afterMarkdowns": [ - "怪哉!在我們要撤銷的提交記錄後面居然多了一個新提交!這是因為新提交記錄`C2'`引入了*更改*——剛好是用來撤銷 `C2` 這個提交的。", + "很奇怪吧!在我們要取消的commit後面居然多了一個新的commit!這是因為新的commit`C2'`引入了*修改*——用來表示我們取消 `C2` 這個commit的修改。", "", - "借助 revert,現在可以把你的更改傳遞給別人啦。" + "借助 revert,現在可以把你的修改分享給別人啦。" ], "beforeCommand": "git commit" } @@ -327,9 +327,9 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "要完成此關,分別撤銷`local`分支和`pushed`分支上的最近一次提交。", + "要完成這一關,分別取消`local`分支和`pushed`分支上的最近一次提交。", "", - "記住 `pushed` 是一個遠程分支,`local` 是一個本地分支 —— 有了這麼明顯的提示應該知道用哪種方法了吧?" + "記住 `pushed` 是一個遠端分支,`local` 是一個本地分支 —— 有了這麼明顯的提示應該知道要用哪種方法了吧?" ] } } From 267278514e105731bb165a926a4a636212ed7194 Mon Sep 17 00:00:00 2001 From: mht Date: Tue, 10 Dec 2013 10:58:05 +0800 Subject: [PATCH 15/33] update src/levels/rampup/detachedHead.js --- src/levels/rampup/detachedHead.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/levels/rampup/detachedHead.js b/src/levels/rampup/detachedHead.js index d8614b9d..bc00141e 100644 --- a/src/levels/rampup/detachedHead.js +++ b/src/levels/rampup/detachedHead.js @@ -10,7 +10,7 @@ exports.level = { "hint": { "en_US": "Use the label (hash) on the commit for help!", "zh_CN": "使用提交记录上的标签(hash)来求助!", - "zh_TW": "使用提交記錄上的標籤(hash)來求助!" + "zh_TW": "使用commit上的標籤(hash)來幫助你!" }, "startDialog": { "en_US": { @@ -177,9 +177,9 @@ exports.level = { "markdowns": [ "## 在Git中前後移動", "", - "在接觸Git的更多高級主題之前,我們先學習用不同的方法在代表你的項目的提交記錄樹上前後移動。", + "在接觸Git的更多進階的主題之前,我們先學習用不同的方法在代表你的project的commit tree上面移動。", "", - "一旦能夠熟練地在Git中前進後退,你使用其他git命令的威力也會被放大!", + "一旦能夠熟練地在commit tree中遊走,你使用其他git指令的威力也會更強!", "", "", "", @@ -194,11 +194,11 @@ exports.level = { "markdowns": [ "## HEAD", "", - "我們首先看一下\"HEAD\". HEAD是當前提交記錄的符號名稱 -- 其實就是你正在其基礎進行工作的提交記錄。", + "我們首先看一下\"HEAD\". HEAD是一個參考,它是指向目前所checkout的commit -- 基本上,其實就是你目前所在的commit。", "", - "HEAD總是指向最近一次提交記錄,表現為當前工作樹。大多數修改工作樹的git命令都開始於改變HEAD指向。", + "在working tree中,HEAD總是指向最近的一次commit。大部份git的指令如果要修改working tree的狀態的話,都會先改變HEAD所指向的參考。", "", - "HEAD通常指向分支名(比如bugFix)。你提交時,改變了bugFix的狀態,這一變化通過HEAD變得可見。" + "HEAD通常指向一個分支的名稱(比如bugFix)。當你commit的時候,改變了bugFix的狀態,這一個變化可以從HEAD的改變中看到。" ] } }, @@ -206,10 +206,10 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "在實例中看一下。我們將會觀察提交前後HEAD的位置。" + "在實際的例子中。我們將會觀察commit前後HEAD的位置。" ], "afterMarkdowns": [ - "看! HEAD一直藏在`master`分支後面。" + "看吧! HEAD一直藏在`master`分支的後面。" ], "command": "git checkout C1; git checkout master; git commit; git checkout C2", "beforeCommand": "" @@ -221,7 +221,7 @@ exports.level = { "beforeMarkdowns": [ "### 分離 HEAD", "", - "分離HEAD就是讓其指向一個提交記錄而不是分支名。這是命令執行之前的樣子: ", + "分離HEAD就是讓其指向一個commit而不是分支的名稱。這是命令執行之前的樣子: ", "", "HEAD -> master -> C1", "" @@ -239,9 +239,9 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "想完成此關,從`bugFix`分離出HEAD並讓其指向一個提交記錄。", + "想要完成這一個關卡,從`bugFix`分離出HEAD並且讓它指向一個commit。", "", - "通過hash值指定提交記錄。每個提交記錄的hash值顯示在代表提交記錄的圓圈中。" + "通過hash值可以指定commit。每個commit的hash值顯示在各自的圓圈中。" ] } } From 570da344afbfb2e25a11f84dce69d6cbe1d46bd5 Mon Sep 17 00:00:00 2001 From: mht Date: Tue, 10 Dec 2013 11:30:37 +0800 Subject: [PATCH 16/33] update src/levels/rampup/relativeRefs2.js --- src/levels/rampup/relativeRefs2.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/levels/rampup/relativeRefs2.js b/src/levels/rampup/relativeRefs2.js index ca771711..4636619e 100644 --- a/src/levels/rampup/relativeRefs2.js +++ b/src/levels/rampup/relativeRefs2.js @@ -5,7 +5,7 @@ exports.level = { "hint": { "en_US": "You'll need to use at least one direct reference (hash) to complete this level", "zh_CN": "这一关至少要用到一次直接引用(hash)", - "zh_TW": "這一關至少要用到一次直接引用(hash)" + "zh_TW": "這一關至少要用到一次直接參考(hash)" }, "name": { "en_US": "Relative Refs #2 (~)", @@ -144,10 +144,10 @@ exports.level = { "markdowns": [ "### The \"~\" operator", "", - "假設需要在提交樹中向上移動很多步。使用多個`^`非常無聊,所以Git也引入了波浪(~)操作符。", + "假設需要在commit tree中向上移動多個commit。使用多個`^`會非常麻煩,所以Git也加入了波浪(~)的運算符號。", "", "", - "波浪操作符後面可以(可選地)跟一個數字,指定向上移動多少次。看個例子" + "波浪操作符號後面可以選擇一個數字(你也可以不選擇),該數字可以指定向上移動多少個commit。看個例子" ] } }, @@ -155,10 +155,10 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "使用`~`一次後退多步." + "使用`~`一次往上移動多個commit." ], "afterMarkdowns": [ - "唰!如此簡潔--相對引用就是好啊!" + "哇!太簡潔了--相對引用真的很好用!" ], "command": "git checkout HEAD~4", "beforeCommand": "git commit; git commit; git commit" @@ -172,11 +172,11 @@ exports.level = { "", "你現在是相對引用的高手了,現在*用*他來實際做點事情。", "", - "我使用相對引用最多的就是移動分支。你可以使用`-f`選項把直接讓分支指向另一個提交。舉個例子:", + "我使用相對引用最多的就是移動分支。你可以使用`-f`選項直接讓分支指向另一個commit。舉個例子:", "", "`git branch -f master HEAD~3`", "", - "(強制)移動master指向HEAD的第3級父提交。" + "(強制)移動master指向HEAD往上的第三個parent commit。" ] } }, @@ -184,7 +184,7 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "要完成此關,移動`HEAD`,`master`和`bugFix`到目標所示的位置。" + "要完成這一關,移動`HEAD`,`master`和`bugFix`到目標所示的位置。" ] } } From 747871d0ab0f6fb870fb68faeba6bb9565d78662 Mon Sep 17 00:00:00 2001 From: mht Date: Tue, 10 Dec 2013 11:53:37 +0800 Subject: [PATCH 17/33] update src/levels/rampup/relativeRefs.js --- src/levels/rampup/relativeRefs.js | 36 +++++++++++++++---------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/levels/rampup/relativeRefs.js b/src/levels/rampup/relativeRefs.js index d8004fe0..a37de50c 100644 --- a/src/levels/rampup/relativeRefs.js +++ b/src/levels/rampup/relativeRefs.js @@ -10,7 +10,7 @@ exports.level = { "hint": { "en_US": "Remember the Caret (^) operator!", "zh_CN": "记住插入(^)操作符!", - "zh_TW": "記住插入(^)操作符!" + "zh_TW": "記住插入(^)運算符號!" }, "startDialog": { "en_US": { @@ -171,11 +171,11 @@ exports.level = { "markdowns": [ "## 相對引用", "", - "用指定提交記錄hash值的方式在Git中移動會變得比較乏味。在現實中,你不會有漂亮的可視化的提交記錄樹放在終端旁邊,所以你不得不用`git log`來查看hasn值。", + "如果要在Git中移動,透過指定commit的hash值的方式會變得比較麻煩。在現實中,你的終端機上面不會出現漂亮且具備視覺效果的commit tree,所以你不得不用`git log`來查詢hash值。", "", - "另外,hash值在真實的Git環境中也會更長。舉個例子,前一關的介紹中的提交記錄的hash值是`fed2da64c0efc5293610bdd892f82a58e8cbc5d8`。不要把舌頭閃了...", + "另外,hash值在真實的Git環境中也會很長。舉個例子,前一個關卡的介紹中的commit的hash值是`fed2da64c0efc5293610bdd892f82a58e8cbc5d8`。舌頭不要打結了...", "", - "好的一面是,Git對hash的處理很智能。你只需要提供能夠唯一標識提交記錄的前幾個字符即可。所以,我可以僅輸入`fed2`而不是上面的一長串字符。" + "好的一面是,Git對於處理hash很有一套。你只需要提供能夠唯一辨識出該commit的前幾個字元就可以了。所以,我可以只輸入`fed2`而不是上面的一長串字元。" ] } }, @@ -183,14 +183,14 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "我說過,通過hash指定提交記錄不是很方便,所以Git引入了相對引用。這個就很牛掰了!", + "我說過,透過hash來指定commit不是很方便,所以Git加入了相對引用。這個就很厲害了!", "", - "使用相對引用,你可以從一個易於記憶的地方(比如分支名`bugFix`或`HEAD`)開始工作。", + "使用相對引用,你可以從一個易於記憶的地方(比如說分支名稱`bugFix`或`HEAD`)開始工作。", "", - "相對引用非常給力,這裡我介紹兩個簡單的用法:", + "相對引用非常好用,這裡我介紹兩個簡單的用法:", "", - "* 使用`^`向上移動1個提交記錄", - "* 使用`~`向上移動多個提交記錄" + "* 使用`^`向上移動1個commit", + "* 使用`~`向上移動多個commit" ] } }, @@ -198,16 +198,16 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "首先看看插入(^)操作符。把插入符跟在引用名後面,表示讓Git尋找指定提交記錄的父提交。", + "首先看看插入(^)這一個運算符號。把這個運算符號寫在某一個參考後面,就表示你叫Git去找到該參考所指向的commit的parent commit。", "", - "所以`master^`相當於\"`master`的父提交\"。", + "所以`master^`相當於\"`master`的parent commit\"。", "", - "`master^^`是`master`的父父提交(上上代祖先)", + "`master^^`是`master`的grandparent commit(往前推兩代)", "", - "切換到master的父提交" + "切換到master的parent commit" ], "afterMarkdowns": [ - "唰!搞定。這種方式比輸入提交記錄的hash值簡單多了!" + "看吧!完成了。這種方式比輸入代表commit的hash值簡單多了!" ], "command": "git checkout master^", "beforeCommand": "git commit" @@ -217,10 +217,10 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "你也可以`HEAD`把用作相對引用。以下命令使用`HEAD`在提交樹中向上移動幾次。" + "你也可以把`HEAD`當作相對引用。以下指令使用`HEAD`在commit tree中向上移動數次。" ], "afterMarkdowns": [ - "簡單!我們可以一直使用`HEAD^`向上移動。" + "簡單吧!我們可以一直使用`HEAD^`向上移動。" ], "command": "git checkout C3; git checkout HEAD^; git checkout HEAD^; git checkout HEAD^", "beforeCommand": "git commit; git commit" @@ -230,9 +230,9 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "要完成此關,切換到`bugFix`的父提交。這會分離出`HEAD`.", + "要完成這一關,切換到`bugFix`的parent commit。這會分離出`HEAD`.", "", - "如果你願意的話,使用hash值也可以過關,但為何不試試使用相對引用呢?" + "如果你願意的話,透過指定hash值也可以過關,但是還是試試看相對引用吧!" ] } } From b5ddf21afefbd14171f7a7e6c6a1ec6842586b38 Mon Sep 17 00:00:00 2001 From: mht Date: Tue, 10 Dec 2013 12:18:29 +0800 Subject: [PATCH 18/33] update src/levels/intro/commits.js --- src/levels/intro/commits.js | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/levels/intro/commits.js b/src/levels/intro/commits.js index 24a28571..0325f60c 100644 --- a/src/levels/intro/commits.js +++ b/src/levels/intro/commits.js @@ -14,7 +14,7 @@ exports.level = { "en_US": "Just type in 'git commit' twice to finish!", "fr_FR": "Il suffit de saisir 'git commit' deux fois pour réussir !", "zh_CN": "敲两次 'git commit' 就好啦!", - "zh_TW": "敲兩次 'git commit' 就好啦!", + "zh_TW": "輸入兩次 'git commit' 就可以完成!", "ja": "'git commit'コマンドを2回打てば完成!", "ko": "'git commit'이라고 두 번 치세요!" }, @@ -251,15 +251,13 @@ exports.level = { "options": { "markdowns": [ "## Git Commits", - "git倉庫中的一次提交(commit)記錄目錄下所有文件的快照。感覺像是大量的複製和粘貼,但 git 做的不只這麼簡單!", + "一個commit在git repository中會記錄目錄下所有文件的快照。感覺像是大量的複製和貼上,但 git 的速度更快!", "", - "Git 希望提交記錄儘可能地輕量,所以每次進行提交時,它不會簡單地複製整個目錄。實際上它把每次提交記錄保存為從代碼庫的一個版本到下一個版本的變化集,或者說一個\"增量(delta)\"。所以,大部分提交記錄都有一個父提交(parent commit)-- 我們會很快演示這一點。", + "Git希望commit儘可能地不占空間,所以每次進行commit的時候,它不會單純地複製整個目錄。實際上它把每次commit視為從目前的版本到下一個版本的變化量,或者說一個\"(delta)\"。", "", - "克隆(clone)代碼庫時,需要解包(unpack)或者「解析(resolve)」所有的差異。所以在克隆代碼庫時,可能會看見如下命令行輸出:", + "Git會保存commit的歷史紀錄,所以,絕大部分的commit的上面都會有ancestor commit,在我們的圖形表示中,箭頭表示從parent commit到所對應的childer commit,保存這樣子的一個歷史紀錄是非常有用的。", "", - "`resolving deltas`", - "", - "要學的東西有很多,但現在你可以把提交記錄看作是項目的快照。提交記錄非常輕量且可以快速切換!" + "要學的東西有很多,但現在你可以把commit當作是當下的project的快照。commit不占空間且可以快速切換!" ] } }, @@ -267,13 +265,13 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "在實踐中學習commit。右邊是一個(小)git代碼庫的圖示。當前有兩個提交記錄—— 初始提交`C0`和其後可能包含有用修改的提交`C1`。", + "在實例中學習commit。右邊是一個(小)git repository。當前有兩個commit—— initial commit`C0`以及`C1`這個一個commit來表示之後可能的一些修改。", "", - "點擊下面的按鈕生成新的提交記錄。" + "點擊下面的按鈕生成新的commit。" ], "command": "git commit", "afterMarkdowns": [ - "看!碉堡吧!我們修改了代碼,並保存為一次提交記錄。剛剛做的提交`C2`有一個父提交(parent)`C1`,代表此次修改的基礎。" + "看吧!很厲害!我們對於原始碼做了一些修改,並且把這些修改表示成一個commit。剛剛做的commit `C2`有一個parent commit `C1`,代表此次修改的參考基準點。" ], "beforeCommand": "" } @@ -282,7 +280,7 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "接下來你可以隨便測試。當前窗口關閉後,完成兩次提交就可以過關!" + "接下來你可以隨便測試。當目前的視窗結束之後,完成兩次commit就可以過關!" ] } } From 3e7e1e66c64f7524c0bf488a6a73671093fc20c8 Mon Sep 17 00:00:00 2001 From: mht Date: Wed, 11 Dec 2013 13:40:04 +0800 Subject: [PATCH 19/33] correct chinese grammar and syntax --- src/levels/intro/commits.js | 18 +++++++------- src/levels/rampup/detachedHead.js | 24 +++++++++--------- src/levels/rampup/relativeRefs.js | 36 +++++++++++++-------------- src/levels/rampup/relativeRefs2.js | 20 +++++++-------- src/levels/rampup/reversingChanges.js | 14 +++++------ 5 files changed, 56 insertions(+), 56 deletions(-) diff --git a/src/levels/intro/commits.js b/src/levels/intro/commits.js index 0325f60c..820ba406 100644 --- a/src/levels/intro/commits.js +++ b/src/levels/intro/commits.js @@ -5,7 +5,7 @@ exports.level = { "ja": "Gitのコミット", 'ko': 'Git 커밋 소개', 'zh_CN': 'Git Commits简介' - 'zh_TW': 'Git Commits簡介' + 'zh_TW': 'Git Commit 簡介' }, "goalTreeString": "{\"branches\":{\"master\":{\"target\":\"C3\",\"id\":\"master\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}", "solutionCommand": "git commit;git commit", @@ -251,13 +251,13 @@ exports.level = { "options": { "markdowns": [ "## Git Commits", - "一個commit在git repository中會記錄目錄下所有文件的快照。感覺像是大量的複製和貼上,但 git 的速度更快!", + "一個 commit 在git repository 中會記錄目錄下所有文件的快照。感覺像是大量的複製和貼上,但 git 的速度更快!", "", - "Git希望commit儘可能地不占空間,所以每次進行commit的時候,它不會單純地複製整個目錄。實際上它把每次commit視為從目前的版本到下一個版本的變化量,或者說一個\"(delta)\"。", + "Git 希望 commit 儘可能地不占空間,所以每次進行 commit 的時候,它不會單純地複製整個目錄。實際上它把每次 commit 視為從目前的版本到下一個版本的變化量,或者說一個 \"(delta)\"。", "", - "Git會保存commit的歷史紀錄,所以,絕大部分的commit的上面都會有ancestor commit,在我們的圖形表示中,箭頭表示從parent commit到所對應的childer commit,保存這樣子的一個歷史紀錄是非常有用的。", + " Git 會保存 commit 的歷史紀錄,所以,絕大部分的 commit 的上面都會有 ancestor commit,在我們的圖形表示中,箭頭方向表示從 parent commit 到所對應的 child commit,保存這樣子的一個歷史紀錄是非常有用的。", "", - "要學的東西有很多,但現在你可以把commit當作是當下的project的快照。commit不占空間且可以快速切換!" + "要學的東西有很多,但現在你可以把 commit 當作是當下的 project 的快照。commit 不占空間且可以快速切換!" ] } }, @@ -265,13 +265,13 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "在實例中學習commit。右邊是一個(小)git repository。當前有兩個commit—— initial commit`C0`以及`C1`這個一個commit來表示之後可能的一些修改。", + "在實例中學習 commit。右邊是一個(小)git repository。當前有兩個 commit —— initial commit `C0` 以及 `C1` 這個一個 commit 來表示之後可能的一些修改。", "", - "點擊下面的按鈕生成新的commit。" + "點擊下面的按鈕生成新的 commit。" ], "command": "git commit", "afterMarkdowns": [ - "看吧!很厲害!我們對於原始碼做了一些修改,並且把這些修改表示成一個commit。剛剛做的commit `C2`有一個parent commit `C1`,代表此次修改的參考基準點。" + "看吧!很厲害!我們對於文件做了一些修改,並且把這些修改表示成一個 commit。剛剛做的 commit `C2` 有一個 parent commit `C1`,代表此次修改是從那裡過來的。" ], "beforeCommand": "" } @@ -280,7 +280,7 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "接下來你可以隨便測試。當目前的視窗結束之後,完成兩次commit就可以過關!" + "接下來你可以隨便測試。當目前的視窗關閉之後,輸入兩次 commit 就可以過關!" ] } } diff --git a/src/levels/rampup/detachedHead.js b/src/levels/rampup/detachedHead.js index bc00141e..90b893e6 100644 --- a/src/levels/rampup/detachedHead.js +++ b/src/levels/rampup/detachedHead.js @@ -10,7 +10,7 @@ exports.level = { "hint": { "en_US": "Use the label (hash) on the commit for help!", "zh_CN": "使用提交记录上的标签(hash)来求助!", - "zh_TW": "使用commit上的標籤(hash)來幫助你!" + "zh_TW": "使用 commit 上的標籤(hash)來幫助你!" }, "startDialog": { "en_US": { @@ -175,11 +175,11 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "## 在Git中前後移動", + "## 在 Git 中前後移動", "", - "在接觸Git的更多進階的主題之前,我們先學習用不同的方法在代表你的project的commit tree上面移動。", + "在接觸 Git 的更多進階的主題之前,我們先學習用不同的方法在你的 project 中的 commit tree 上面移動。", "", - "一旦能夠熟練地在commit tree中遊走,你使用其他git指令的威力也會更強!", + "一旦能夠熟練地在 commit tree 中隨意地移動,你使用其它的 git 指令的也會更厲害!", "", "", "", @@ -194,11 +194,11 @@ exports.level = { "markdowns": [ "## HEAD", "", - "我們首先看一下\"HEAD\". HEAD是一個參考,它是指向目前所checkout的commit -- 基本上,其實就是你目前所在的commit。", + "我們首先看一下 \"HEAD\",HEAD 是一個參考,它是指向目前所 checkout 的 commit -- 基本上,其實就是你目前所在的 commit。", "", - "在working tree中,HEAD總是指向最近的一次commit。大部份git的指令如果要修改working tree的狀態的話,都會先改變HEAD所指向的參考。", + "在 working tree 中,HEAD 總是指向最近的一次commit。大部份 git 的指令如果要修改 working tree 的狀態的話,都會先改變 HEAD 所指向的參考。", "", - "HEAD通常指向一個分支的名稱(比如bugFix)。當你commit的時候,改變了bugFix的狀態,這一個變化可以從HEAD的改變中看到。" + "HEAD 通常指向一個分支的名稱(比如 bugFix)。當你 commit 的時候,改變了 bugFix 的狀態,這一個變化可以從 HEAD 的改變中看到。" ] } }, @@ -206,10 +206,10 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "在實際的例子中。我們將會觀察commit前後HEAD的位置。" + "在實際的例子中。我們將會觀察 commit 前後 HEAD 的位置。" ], "afterMarkdowns": [ - "看吧! HEAD一直藏在`master`分支的後面。" + "看吧! HEAD 一直藏在 `master` 分支的後面。" ], "command": "git checkout C1; git checkout master; git commit; git checkout C2", "beforeCommand": "" @@ -221,7 +221,7 @@ exports.level = { "beforeMarkdowns": [ "### 分離 HEAD", "", - "分離HEAD就是讓其指向一個commit而不是分支的名稱。這是命令執行之前的樣子: ", + "分離 HEAD 就是讓其指向一個 commit 而不是分支的名稱。這是命令執行之前的樣子: ", "", "HEAD -> master -> C1", "" @@ -239,9 +239,9 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "想要完成這一個關卡,從`bugFix`分離出HEAD並且讓它指向一個commit。", + "想要完成這一個關卡,從 `bugFix` 分離出HEAD並且讓它指向一個 commit。", "", - "通過hash值可以指定commit。每個commit的hash值顯示在各自的圓圈中。" + "通過 hash 值可以指定 commit。每個 commit 的 hash 值顯示在各自的圓圈中。" ] } } diff --git a/src/levels/rampup/relativeRefs.js b/src/levels/rampup/relativeRefs.js index a37de50c..0851a534 100644 --- a/src/levels/rampup/relativeRefs.js +++ b/src/levels/rampup/relativeRefs.js @@ -5,12 +5,12 @@ exports.level = { "name": { "en_US": "Relative Refs (^)", "zh_CN": "相对引用(^)", - "zh_TW": "相對引用(^)" + "zh_TW": "相對引用(^)" }, "hint": { "en_US": "Remember the Caret (^) operator!", "zh_CN": "记住插入(^)操作符!", - "zh_TW": "記住插入(^)運算符號!" + "zh_TW": "不要忘記插入(^) 符號!" }, "startDialog": { "en_US": { @@ -171,11 +171,11 @@ exports.level = { "markdowns": [ "## 相對引用", "", - "如果要在Git中移動,透過指定commit的hash值的方式會變得比較麻煩。在現實中,你的終端機上面不會出現漂亮且具備視覺效果的commit tree,所以你不得不用`git log`來查詢hash值。", + "如果要在 Git 中移動,透過指定 commit 的 hash 值的方式會變得比較麻煩。在實際例子中,你的終端機上面不會出現漂亮且具備視覺效果的 commit tree,所以你不得不用 `git log` 來查詢 hash 值。", "", - "另外,hash值在真實的Git環境中也會很長。舉個例子,前一個關卡的介紹中的commit的hash值是`fed2da64c0efc5293610bdd892f82a58e8cbc5d8`。舌頭不要打結了...", + "另外,hash 值的長度在真實的 Git 環境中很長。舉個例子,前一個關卡的介紹中的 commit 的 hash 值是 `fed2da64c0efc5293610bdd892f82a58e8cbc5d8`。舌頭不要打結了...", "", - "好的一面是,Git對於處理hash很有一套。你只需要提供能夠唯一辨識出該commit的前幾個字元就可以了。所以,我可以只輸入`fed2`而不是上面的一長串字元。" + "幸運的是, Git 對於處理 hash 很有一套。你只需要提供能夠唯一辨識出該 commit 的前幾個字元就可以了。所以,我可以只輸入 `fed2` 而不是上面的一長串字元。" ] } }, @@ -183,14 +183,14 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "我說過,透過hash來指定commit不是很方便,所以Git加入了相對引用。這個就很厲害了!", + "我說過,透過 hash 來指定 commit 不是很方便,所以 Git 加入了相對引用。這個就很厲害了!", "", - "使用相對引用,你可以從一個易於記憶的地方(比如說分支名稱`bugFix`或`HEAD`)開始工作。", + "使用相對引用,你可以從一個易於記憶的地方(比如說分支名稱 `bugFix` 或 `HEAD`)開始工作。", "", "相對引用非常好用,這裡我介紹兩個簡單的用法:", "", - "* 使用`^`向上移動1個commit", - "* 使用`~`向上移動多個commit" + "* 使用 `^` 向上移動一個 commit", + "* 使用 `~` 向上移動多個 commit" ] } }, @@ -198,16 +198,16 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "首先看看插入(^)這一個運算符號。把這個運算符號寫在某一個參考後面,就表示你叫Git去找到該參考所指向的commit的parent commit。", + "首先看看插入(^)這一個符號。把這個符號接在某一個 reference 後面,就表示你告訴 Git 去找到該 reference 所指向的 commit 的 parent commit。", "", - "所以`master^`相當於\"`master`的parent commit\"。", + "所以 `master^` 相當於 \"`master` 的 parent commit\"。", "", - "`master^^`是`master`的grandparent commit(往前推兩代)", + " `master^^` 是 `master` 的 grandparent commit(往前推兩代)", "", - "切換到master的parent commit" + "切換到 master的 parent commit" ], "afterMarkdowns": [ - "看吧!完成了。這種方式比輸入代表commit的hash值簡單多了!" + "看吧!完成了。這種方式比輸入代表 commit 的 hash 值簡單多了!" ], "command": "git checkout master^", "beforeCommand": "git commit" @@ -217,10 +217,10 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "你也可以把`HEAD`當作相對引用。以下指令使用`HEAD`在commit tree中向上移動數次。" + "你也可以把 `HEAD` 當作相對引用。以下指令使用 `HEAD` 在 commit tree 中向上移動數次。" ], "afterMarkdowns": [ - "簡單吧!我們可以一直使用`HEAD^`向上移動。" + "簡單吧!我們可以一直使用 `HEAD^` 向上移動。" ], "command": "git checkout C3; git checkout HEAD^; git checkout HEAD^; git checkout HEAD^", "beforeCommand": "git commit; git commit" @@ -230,9 +230,9 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "要完成這一關,切換到`bugFix`的parent commit。這會分離出`HEAD`.", + "要完成這一關,切換到 `bugFix` 的 parent commit。這會分離出 `HEAD`。", "", - "如果你願意的話,透過指定hash值也可以過關,但是還是試試看相對引用吧!" + "如果你願意的話,透過直接指定 hash 值的方式也可以過關,但是還是試試看相對引用吧!" ] } } diff --git a/src/levels/rampup/relativeRefs2.js b/src/levels/rampup/relativeRefs2.js index 4636619e..0ad9a938 100644 --- a/src/levels/rampup/relativeRefs2.js +++ b/src/levels/rampup/relativeRefs2.js @@ -5,12 +5,12 @@ exports.level = { "hint": { "en_US": "You'll need to use at least one direct reference (hash) to complete this level", "zh_CN": "这一关至少要用到一次直接引用(hash)", - "zh_TW": "這一關至少要用到一次直接參考(hash)" + "zh_TW": "這一關至少要用到一次直接參考(hash)" }, "name": { "en_US": "Relative Refs #2 (~)", "zh_CN": "相对引用2(~)", - "zh_TW": "相對引用2(~)" + "zh_TW": "相對引用二(~)" }, "startDialog": { "en_US": { @@ -144,10 +144,10 @@ exports.level = { "markdowns": [ "### The \"~\" operator", "", - "假設需要在commit tree中向上移動多個commit。使用多個`^`會非常麻煩,所以Git也加入了波浪(~)的運算符號。", + "假設需要在 commit tree 中向上移動多個 commit。使用太多`^`會非常討人厭,所以 Git 也加入了波浪(~)符號。", "", "", - "波浪操作符號後面可以選擇一個數字(你也可以不選擇),該數字可以指定向上移動多少個commit。看個例子" + "波浪符號後面可以選擇一個數字(你也可以不選擇),該數字可以告訴 Git 我要向上移動多少個 commit 。舉個例子" ] } }, @@ -155,10 +155,10 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "使用`~`一次往上移動多個commit." + "使用 `~` 一次往上移動多個 commit。" ], "afterMarkdowns": [ - "哇!太簡潔了--相對引用真的很好用!" + "哇!太簡潔了 -- 相對引用真的很好用!" ], "command": "git checkout HEAD~4", "beforeCommand": "git commit; git commit; git commit" @@ -170,13 +170,13 @@ exports.level = { "markdowns": [ "### Branch forcing", "", - "你現在是相對引用的高手了,現在*用*他來實際做點事情。", + "你現在是相對引用的高手了,現在 *用* 他來實際做點事情。", "", - "我使用相對引用最多的就是移動分支。你可以使用`-f`選項直接讓分支指向另一個commit。舉個例子:", + "我使用相對引用最多的就是移動分支。你可以使用 `-f` 選項直接讓分支指向另一個 commit。舉個例子:", "", "`git branch -f master HEAD~3`", "", - "(強制)移動master指向HEAD往上的第三個parent commit。" + "(強制)移動 master 指向從 HEAD 往上數的第三個 parent commit。" ] } }, @@ -184,7 +184,7 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "要完成這一關,移動`HEAD`,`master`和`bugFix`到目標所示的位置。" + "要完成這一關,移動 `HEAD`,`master` 和 `bugFix` 到目標所示的位置。" ] } } diff --git a/src/levels/rampup/reversingChanges.js b/src/levels/rampup/reversingChanges.js index 025a2fce..2db3f823 100644 --- a/src/levels/rampup/reversingChanges.js +++ b/src/levels/rampup/reversingChanges.js @@ -9,13 +9,13 @@ exports.level = { "fr_FR": "Annuler des changements avec Git", "ko": "Git에서 작업 되돌리기", "zh_CN": "在Git中撤销更改", - "zh_TW": "在Git中取消修改" + "zh_TW": "在 Git 中取消修改 " }, "hint": { "en_US": "Notice that revert and reset take different arguments.", "fr_FR": "", "zh_CN": "注意revert和reset使用不同的参数。", - "zh_TW": "注意revert和reset使用不同的參數。", + "zh_TW": "注意 revert 和 reset 使用不同的參數。", "ko": "", "ja": "" }, @@ -293,13 +293,13 @@ exports.level = { "beforeMarkdowns": [ "## Git Reset", "", - "`git reset`把分支的參考點退回到上一個commit來取消修改。你可以認為這是在\"重寫歷史\"。`git reset`往回移動分支,原來的分支所指向的commit好像從來沒有存在過一樣。", + "`git reset` 把分支的參考點退回到上一個 commit 來取消修改。你可以認為這是在\"重寫歷史\"。`git reset` 往回移動分支,原來的分支所指向的commit好像從來沒有存在過一樣。", "", "讓我們來看看要怎麼操作:" ], "command": "git reset HEAD~1", "afterMarkdowns": [ - "太好了!Git把master分支簡單地移回到`C1`;現在在我們的local端已經退回到沒有commit過`C2`的狀態了。" + "太好了! Git 把 master 分支簡單地移回到 `C1`;現在在我們的 local端 已經退回到沒有 commit 過 `C2` 的狀態了。" ], "beforeCommand": "git commit" } @@ -312,11 +312,11 @@ exports.level = { "", "雖然在你的local分支中使用`git reset`很方便,但是這種「改寫歷史」的方法對別人的遠端分支是無效的哦!", "", - "為了取消修改並且把這個狀態*分享*給別人,我們需要使用`git revert`。舉個例子" + "為了取消修改並且把這個狀態*分享*給別人,我們需要使用 `git revert`。舉個例子" ], "command": "git revert HEAD", "afterMarkdowns": [ - "很奇怪吧!在我們要取消的commit後面居然多了一個新的commit!這是因為新的commit`C2'`引入了*修改*——用來表示我們取消 `C2` 這個commit的修改。", + "很奇怪吧!在我們要取消的 commit 後面居然多了一個新的 commit!這是因為新的 commit `C2'` 引入了*修改*——用來表示我們取消 `C2` 這個 commit 的修改。", "", "借助 revert,現在可以把你的修改分享給別人啦。" ], @@ -327,7 +327,7 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "要完成這一關,分別取消`local`分支和`pushed`分支上的最近一次提交。", + "要完成這一關,分別取消 `local` 分支和 `pushed` 分支上的最近一次提交。", "", "記住 `pushed` 是一個遠端分支,`local` 是一個本地分支 —— 有了這麼明顯的提示應該知道要用哪種方法了吧?" ] From e6f9a5ce20658a863dae76d42187fb0b4abe2e48 Mon Sep 17 00:00:00 2001 From: mht Date: Wed, 11 Dec 2013 15:21:12 +0800 Subject: [PATCH 20/33] update src/levels/index.js --- src/levels/index.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/levels/index.js b/src/levels/index.js index f772da2c..75d2ba4c 100644 --- a/src/levels/index.js +++ b/src/levels/index.js @@ -75,14 +75,14 @@ var sequenceInfo = exports.sequenceInfo = { 'en_US': 'Ramping Up', 'ja': '次のレベルに進もう', 'fr_FR': 'Montée en puissance', - 'zh_CN': '进阶篇' + 'zh_CN': '进阶篇', 'zh_TW': '進階篇' }, about: { 'en_US': 'The next serving of 100% git awesomes-ness. Hope you\'re hungry', 'ja': '更にgitの素晴らしさを堪能しよう', 'fr_FR' : 'Le prochain service git 100% excellence. J\'espère que vous êtes affamés', - 'zh_CN': '接下来是git的超赞特性。迫不及待了吧!' + 'zh_CN': '接下来是git的超赞特性。迫不及待了吧!', 'zh_TW': '接下来是git的超讚特性。迫不及待了吧!' } }, @@ -120,7 +120,7 @@ var sequenceInfo = exports.sequenceInfo = { 'ja': '話題のrebaseってどんなものだろう?って人にオススメ', 'fr_FR': 'Qu\'est-ce que ce rebase dont tout le monde parle ? Découvrez-le !', 'ko': '그 좋다고들 말하는 rebase에 대해 알아봅시다!', - 'zh_CN': '大家都在说的rebase究竟是神马?看看吧!' + 'zh_CN': '大家都在说的rebase究竟是神马?看看吧!', 'zh_TW': '大家都在說的rebase究竟是神馬?看看吧!' } }, @@ -130,7 +130,7 @@ var sequenceInfo = exports.sequenceInfo = { 'ja': '様々なtips', 'fr_FR': 'Un assortiment', 'ko': '종합선물세트', - 'zh_CN': '大杂烩?' + 'zh_CN': '大杂烩?', 'zh_TW': '大雜燴?' }, about: { @@ -138,7 +138,7 @@ var sequenceInfo = exports.sequenceInfo = { 'ja': 'gitを使う上での様々なtipsやテクニックなど', 'fr_FR': 'Un assortiment de techniques et astuces pour utiliser Git', 'ko': 'Git을 다루는 다양한 팁과 테크닉을 다양하게 알아봅니다', - 'zh_CN': 'Git技术,技巧与贴士杂烩' + 'zh_CN': 'Git技术,技巧与贴士杂烩', 'zh_TW': 'Git技術,技巧與貼士雜燴' } }, @@ -146,13 +146,13 @@ var sequenceInfo = exports.sequenceInfo = { displayName: { 'en_US': 'Advanced Topics', 'fr_FR': 'Sujets Avancés', - 'zh_CN': '高级主题' + 'zh_CN': '高级主题', 'zh_TW': '高級主題' }, about: { 'en_US': 'For the truly brave!', 'fr_FR': 'Pour les plus courageux !', - 'zh_CN': '只为真正的勇士!' + 'zh_CN': '只为真正的勇士!', 'zh_TW': '只為真正的勇士!' } } From 292e70cf2968f4ca29f345224762385b9a00bf69 Mon Sep 17 00:00:00 2001 From: mht Date: Wed, 11 Dec 2013 15:36:05 +0800 Subject: [PATCH 21/33] update src/levels/intro/commits.js --- src/levels/intro/commits.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/levels/intro/commits.js b/src/levels/intro/commits.js index 820ba406..051259e3 100644 --- a/src/levels/intro/commits.js +++ b/src/levels/intro/commits.js @@ -4,7 +4,7 @@ exports.level = { "fr_FR": "Introduction aux commits avec Git", "ja": "Gitのコミット", 'ko': 'Git 커밋 소개', - 'zh_CN': 'Git Commits简介' + 'zh_CN': 'Git Commits简介', 'zh_TW': 'Git Commit 簡介' }, "goalTreeString": "{\"branches\":{\"master\":{\"target\":\"C3\",\"id\":\"master\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}", From 7a519c822f60c5a87f2abfed234f713b7ad72d65 Mon Sep 17 00:00:00 2001 From: mht Date: Wed, 11 Dec 2013 15:42:27 +0800 Subject: [PATCH 22/33] update src/js/views/index.js --- src/js/views/index.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/js/views/index.js b/src/js/views/index.js index 90c77b13..cdb6b738 100644 --- a/src/js/views/index.js +++ b/src/js/views/index.js @@ -676,10 +676,10 @@ var IntlHelperBar = HelperBar.extend({ id: 'korean' }, { text: '学习 Git 分支', - id: 'chinese_s' + id: 'simpchinese' }, { text: 'Git 分支', - id: 'chinese_t' + id: 'tradchinese' }, { text: 'français', id: 'french' @@ -714,12 +714,12 @@ var IntlHelperBar = HelperBar.extend({ this.hide(); }, - onSimpChineseClick: function() { + onSimpchineseClick: function() { this.fireCommand('locale zh_CN; levels'); this.hide(); }, - onTradChineseClick: function() { + onTradchineseClick: function() { this.fireCommand('locale zh_TW; levels'); this.hide(); } From 28490d2442c1e4342fb6acdfe30845819bae54f7 Mon Sep 17 00:00:00 2001 From: mht Date: Wed, 11 Dec 2013 21:07:30 +0800 Subject: [PATCH 23/33] update levels/intro/[commit.js,branching.js] --- src/levels/intro/branching.js | 32 ++++++++++++++++---------------- src/levels/intro/commits.js | 6 +++--- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/levels/intro/branching.js b/src/levels/intro/branching.js index 8f4b82fa..01b6af1f 100644 --- a/src/levels/intro/branching.js +++ b/src/levels/intro/branching.js @@ -7,14 +7,14 @@ exports.level = { "ko": "Git에서 브랜치 쓰기", "fr_FR": "Gérer les branches avec Git", "zh_CN": "建立Git分支", - "zh_TW": "建立Git分支" + "zh_TW": "建立 Git 分支" }, "hint": { "en_US": "Make a new branch with \"git branch [name]\" and check it out with \"git checkout [name]\"", "ja": "ブランチの作成(\"git branch [ブランチ名]\")と、チェックアウト(\"git checkout [ブランチ名]\")", "fr_FR": "Faites une nouvelle branche avec \"git branch [nom]\" positionnez-vous dans celle-ci avec \"git checkout [nom]\"", "zh_CN": "用 'git branch [分支名]' 来创建分支,用 'git checkout [分支名]' 切换到分支", - "zh_TW": "用 'git branch [分支名]' 來創建分支,用 'git checkout [分支名]' 切換到分支", + "zh_TW": "用 'git branch [分支名稱]' 來建立分支,用 'git checkout [分支名稱]' 切換到該分支", "ko": "\"git branch [브랜치명]\"으로 새 브랜치를 만들고, \"git checkout [브랜치명]\"로 그 브랜치로 이동하세요" }, "disabledMap": { @@ -341,15 +341,15 @@ exports.level = { "markdowns": [ "## Git Branches", "", - " Git 的分支非常輕量。它們只是簡單地指向某個提交紀錄——僅此而已。所以許多Git愛好者會念叨:", + " Git 的分支非常不占空間。它們只是一個指向某個 commit 的 reference —— 就這麼簡單。所以許多 Git 的愛好者會建議:", "", "```", - "早點建分支!經常建分支!", + "早點建立分支!經常建立分支!", "```", "", - "創建分支沒有儲存或內存上的開銷,所以按邏輯分解工作比維護單一的代碼樹要簡單。", + "因為建立分支不怎麼會佔用到硬碟空間或者是記憶體,所以你可以把你目前的工作分成好幾個分支,這比只用一個分支要來的好。", "", - "同時使用分支和提交時,我們會看到兩者如何配合。現在,只要記住使用分支其實就是在說:「我想包含本次提交及所有的父提交記錄。」" + "同時使用分支和 commit 時,我們待會可以看到兩者如何配合。現在,只要記住使用分支其實就是在說:「我想要包含這一次的 commit 以及它的所有 parent commits。」" ] } }, @@ -357,13 +357,13 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "舉個例子看看分支究竟是什麼。", + "舉一個例子來看看分支到底是什麼。", "", - "這裡,我們切換到到名為`newImage`的新分支。" + "這裡,我們建立一個名稱為 `newImage` 的新分支。" ], "command": "git branch newImage", "afterMarkdowns": [ - "看,這就是建立分支所需的操作啦!`newImage`分支現在指向提交記錄`C1`。" + "看,這就是建立分支所需的操作啦! `newImage` 分支現在指向提交記錄 `C1`。" ], "beforeCommand": "" } @@ -372,11 +372,11 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "現在讓我們修改一下新分支。點擊下面的按鈕。" + "現在讓我們這個新分支做一些操作。點擊下面的按鈕。" ], "command": "git commit", "afterMarkdowns": [ - "啊摔!`master`分支前進了,但`newImage`分支沒有哇!這是因為我們沒有「在」這個新分支上,這也是為什麼星號(*)只在 `master` 上。" + "太奇怪了啦! `master` 分支前進了,但 `newImage` 分支沒有前進!這是因為我們沒有「在」這個新分支上,這也是為什麼星號(*)會在 `master` 上。" ], "beforeCommand": "git branch newImage" } @@ -385,17 +385,17 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "使用如下命令告訴git我們想要切換到新的分支", + "使用如下命令告訴 git 我們想要切換到新的分支", "", "```", "git checkout [name]", "```", "", - "這可以讓我們在提交修改之前切換到新的分支。" + "這可以讓我們在 commit 之前切換到新的分支。" ], "command": "git checkout newImage; git commit", "afterMarkdowns": [ - "好的嘞!新的分支已經記錄了我們的修改。" + "太好了!新的分支已經記錄了我們的修改。" ], "beforeCommand": "git branch newImage" } @@ -404,8 +404,8 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "好啦,你已經準備好使用分支了。當前窗口關閉後,", - "創建一個叫 `bugFix` 的新分支,然後切換過去。" + "好啦,你已經準備好使用分支了。當目前的視窗關閉後,", + "建立一個叫 `bugFix` 的新分支,然後切換過去。" ] } } diff --git a/src/levels/intro/commits.js b/src/levels/intro/commits.js index 051259e3..e94265dd 100644 --- a/src/levels/intro/commits.js +++ b/src/levels/intro/commits.js @@ -251,11 +251,11 @@ exports.level = { "options": { "markdowns": [ "## Git Commits", - "一個 commit 在git repository 中會記錄目錄下所有文件的快照。感覺像是大量的複製和貼上,但 git 的速度更快!", + "一個 commit 在 git repository 中會記錄目錄下所有文件的快照。感覺像是大量的複製和貼上,但 git 的速度更快!", "", "Git 希望 commit 儘可能地不占空間,所以每次進行 commit 的時候,它不會單純地複製整個目錄。實際上它把每次 commit 視為從目前的版本到下一個版本的變化量,或者說一個 \"(delta)\"。", "", - " Git 會保存 commit 的歷史紀錄,所以,絕大部分的 commit 的上面都會有 ancestor commit,在我們的圖形表示中,箭頭方向表示從 parent commit 到所對應的 child commit,保存這樣子的一個歷史紀錄是非常有用的。", + " Git 會保存 commit 的歷史紀錄,所以,絕大部分的 commit 的上面都會有 ancestor commits,在我們的圖形表示中,箭頭方向表示從 parent commit 到所對應的 child commit,保存這樣子的一個歷史紀錄是非常有用的。", "", "要學的東西有很多,但現在你可以把 commit 當作是當下的 project 的快照。commit 不占空間且可以快速切換!" ] @@ -265,7 +265,7 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "在實例中學習 commit。右邊是一個(小)git repository。當前有兩個 commit —— initial commit `C0` 以及 `C1` 這個一個 commit 來表示之後可能的一些修改。", + "在實例中學習 commit。右邊是一個(小)git repository。當前有兩個 commit —— initial commit `C0` 以及 `C1` 這一個 commit 來表示之後可能的一些修改。", "", "點擊下面的按鈕生成新的 commit。" ], From f953ac7ecf904eebac326a5cba2000c1ed757807 Mon Sep 17 00:00:00 2001 From: mht Date: Wed, 11 Dec 2013 21:34:07 +0800 Subject: [PATCH 24/33] update src/levels/intro/merging.js --- src/levels/intro/merging.js | 38 ++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/levels/intro/merging.js b/src/levels/intro/merging.js index c1c30fd9..d2c0623a 100644 --- a/src/levels/intro/merging.js +++ b/src/levels/intro/merging.js @@ -7,14 +7,14 @@ exports.level = { "ko": "Git에서 브랜치 합치기(Merge)", "ja": "ブランチとマージ", "zh_CN": "分支与合并", - "zh_TW": "分支與合併" + "zh_TW": "Git 中的 合併" }, "hint": { "en_US": "Remember to commit in the order specified (bugFix before master)", "ja": "指示された順番でコミットすること(masterの前にbugFixで)", "fr_FR": "Pensez à faire des commits dans l'ordre indiqué (bugFix avant master)", "zh_CN": "记住按指定的顺序提交(bugFix先于master)", - "zh_TW": "記住按指定的順序提交(bugFix先於master)", + "zh_TW": "記住按指定的順序 commit(bugFix 比 master 優先)", "ko": "말씀드린 순서대로 커밋해주세요 (bugFix에 먼저 커밋하고 master에 커밋)" }, "disabledMap": { @@ -305,11 +305,11 @@ exports.level = { "markdowns": [ "## Branches and Merging", "", - "Great! 我們已經知道怎麼提交和使用分支了。接下來要學的一招是如何合併兩個不同分支的工作。這讓我們可以新建一個分支,在其上開發新功能,然後合併回主線。", + "太好了! 我們已經知道怎麼使用 commit 和分支了。接下來要學的一招是如何合併兩個不同分支的工作。這讓我們可以建立一個新的分支,並且在上面開發新功能,然後合併回主分支。", "", - "`git merge`是我們要學習的合併工作的第一個方法。合併產生一個特殊的提交記錄,它包含兩個唯一父提交。有兩個父提交的提交記錄本質上是:「我想把這兩個父提交本身及它們的父提交集合都包含進來。」", + "`git merge` 是我們要學習合併的第一個方法。該合併會產生一個特殊的 commit,它包含兩個唯一 parent commit。一個 commit 如果有兩個 parent commit 的話,那就表示:「我想把這兩個 parent commit 本身及它們的 所有的 parent commit 都包含進來。」", "", - "有圖有真相,看看下面的圖示就明白了。" + "有圖有真相,看看下面的圖就明白了。" ] } }, @@ -317,17 +317,17 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "當前有兩個分支:各有一個唯一的提交。這意味著沒有一個分支包含我們對代碼庫的所有修改。讓我們合併這兩個分支來解決這個問題。", + "在這裡,我們有兩個分支:各自都有一個唯一的 commit。這意味著沒有一個分支包含我們對文件的所有修改。讓我們合併這兩個分支來解決這個問題。", "", "我們要把 `bugFix` 合併到 `master` " ], "command": "git merge bugFix", "afterMarkdowns": [ - "哇!看見木有?首先,`master` 現在指向一個擁有兩個父提交的提交記錄。假如從 `master` 開始沿著箭頭向上遊走,在到達起點的路上會經過所有的提交記錄。這說明有 `master` 包含了對代碼庫的所有修改。", + "哇!看見了沒有?首先,`master` 現在指向一個 commit,這個 commit 有兩個 parent commit。假如從 `master` 開始沿著箭頭向上走,在到達起點的路上會經過所有的提交記錄。這說明了現在 `master` 紀錄了對文件的所有修改。", "", - "還有,看見各個提交記錄的顏色變化了嗎?為了幫助學習,我使用了顏色混合。每個分支都有特定的顏色。每個提交記錄都變成了含有此提交的所有分支的混合色。", + "還有,看見各個 commit 的顏色變化了嗎?為了幫助學習,我混合了顏色。每個分支都有特定的顏色。每個 commit 的顏色都變成了含有此 commit 的所有分支的混合色。", "", - "所以,`master` 分支的顏色被混入到所有的提交記錄,但 `bugFix` 沒有。接下來就改一下這裡吧。" + "所以,`master` 分支的顏色被混入到所有的 commit,但 `bugFix` 沒有。接下來就改一下這裡吧。" ], "beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit" } @@ -340,9 +340,9 @@ exports.level = { ], "command": "git checkout bugFix; git merge master", "afterMarkdowns": [ - "因為 `bugFix` 分支在 `master` 分支的下游,git什麼都不用做,只是簡單地把`bugfix`分支移動到`master`指向的提交記錄。", + "因為 `bugFix` 分支只是 `master` 分支的 ancestor,git 什麼都不用做,只是簡單地把 `bugfix` 分支移動到 `master` 指向的 commit。", "", - "現在所有的提交記錄的顏色都是一樣的啦,這表明每一個分支都包含了代碼庫的所有修改!走起!" + "現在所有的 commit 的顏色都是一樣的啦,這表示每一個分支都包含了所有文件的修改!太厲害了啦!" ], "beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit; git merge bugFix" } @@ -351,16 +351,16 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "想完成此關,執行收下操作:", + "想完成這一關,執行以下的操作:", "", - "* 創建新分支 `bugFix` ", - "* 用 `git checkout bugFix` 切換到 `bugFix`分支", - "* 提交一次", - "* 用 `git checkout` 切換回 `master` ", - "* 再提交一次", - "* 用 `git merge` 合併 `bugFix`分支進 `master`", + "* 建立新的分支 `bugFix` ", + "* 用 `git checkout bugFix` 切換到 `bugFix` 分支", + "* commit 一次", + "* 用 `git checkout` 切換回 `master` 分支 ", + "* 再 commit 一次", + "* 用 `git merge` 將 `bugFix` 合併到 `master`", "", - "*記住,總是可以用 \"help level\" 命令來重新顯示這個對話框!*" + "*記住,你可以用 \"help level\" 指令來重新顯示這個對話框!*" ] } } From 4dd3581dbdc884be16d7caa1f4e6c303d25b8084 Mon Sep 17 00:00:00 2001 From: mht Date: Wed, 11 Dec 2013 21:59:47 +0800 Subject: [PATCH 25/33] update src/levels/intro/rebasing.js --- src/levels/intro/rebasing.js | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/levels/intro/rebasing.js b/src/levels/intro/rebasing.js index 911f17e2..61dbc91f 100644 --- a/src/levels/intro/rebasing.js +++ b/src/levels/intro/rebasing.js @@ -7,7 +7,7 @@ exports.level = { "fr_FR": "Introduction à rebase", "ko": "리베이스(rebase)의 기본", "zh_CN": "Rebase简介", - "zh_TW": "Rebase簡介" + "zh_TW": "Rebase 簡介" }, "hint": { "en_US": "Make sure you commit from bugFix first", @@ -15,7 +15,7 @@ exports.level = { "fr_FR": "Assurez-vous de bien faire votre en premier votre commit sur bugFix", "ko": "bugFix 브랜치에서 먼저 커밋하세요", "zh_CN": "确保你先在 bugFix 分支进行提交", - "zh_TW": "確保你先在 bugFix 分支進行提交" + "zh_TW": "你要先在 bugFix 分支進行 commit" }, "disabledMap": { "git revert": true @@ -295,11 +295,11 @@ exports.level = { "markdowns": [ "## Git Rebase", "", - "*rebasing*是在分支之間合併工作的第二種方法。Rebasing就是取出一系列的提交記錄,\"複製\"它們,然後把在別的某個地方放下來。", + "*rebasing*是在合併分支的第二種方法。Rebasing 就是取出一系列的 commit,\"複製\"它們,然後把它們接在別的地方。", "", - "雖然聽上去難以理解,rebasing 的優勢是可以創造更線性的提交歷史。假如只允許使用rebasing,代碼庫的提交日誌/歷史會更好看。", + "雖然聽起來難以理解,rebasing 的優點是可以建立更線性的 commit history。假如只允許使用 rebasing 的話,則我們的 repository 中的 commit log 或者是 commit history 會更加簡潔好看。", "", - "讓我們親身體會下……" + "讓我們親身體會一下……" ] } }, @@ -307,19 +307,19 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "這裡,還是有兩個分支;注意當前分支是 bugFix(看那顆星)", + "這裡,還是有兩個分支;注意目前我們所在的分支是 bugFix(看那顆星啦)", "", - "我們想要把 bugfix 裡面的工作直接移到 master 分支上。使用這個方法,兩個分支的功能看起來像是按順序開發,實際上它們是平行開發的。", + "我們想要把在 bugfix 所做的修改直接移到 master 分支上。使用 rebasing 的話,兩個分支看起來像是依序按順序進行修改,實際上它們的修改是平行進行的。", "", - "用 `git rebase`實現此目標" + "用 `git rebase` 實現此目標" ], "command": "git rebase master", "afterMarkdowns": [ - "碉堡吧,現在 bugFix 分支上的工作在 master 的最前端,同時我們也得到了一個更線性的提交序列。", + "很厲害吧!現在 bugFix 分支上的工作在 master 的最前端,同時我們也得到了一個更加線性的 commit sequence。", "", - "注意,提交記錄 C3 仍然存在(陰影的那貨就是你了,還看什麼看),而我們已經將 C3 複製到了master。", + "注意,本來的 commit C3 沒有消失(在圖上面呈現陰影),而我們\"複製\" C3,將它的副本 C3' 接在 master 的後面。", "", - "現在唯一的問題是 master 分支還沒有更新……下面就來更新它吧" + "現在唯一的問題是 master 分支還沒有更新……我們接下來就更新它吧" ], "beforeCommand": "git commit; git checkout -b bugFix C1; git commit" } @@ -328,11 +328,11 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "現在,切換到 `master` 分支。接下來就把它 rebase 到 `bugFix` 吧……" + "現在,切換到 `master` 分支。接下來就把它 rebase 到 `bugFix` 上面吧……" ], "command": "git rebase bugFix", "afterMarkdowns": [ - "完成!因為 `master` 是 `bugFix` 的下游,所以 git 只把 `master` 分支的記錄前移到 `bugFix` 上。" + "完成!因為 `master` 是 `bugFix` 的 ancestor,所以 git 只是把 `master` 分支往前移動到 `bugFix` 上。" ], "beforeCommand": "git commit; git checkout -b bugFix C1; git commit; git rebase master; git checkout master" } @@ -341,12 +341,12 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "想完成此關,執行以下操作:", + "想完成這一關,執行以下操作:", "", - "* 新建`bugFix`分支", - "* 提交一次", - "* 切換回 master 分支再提交一次", - "* 再次切換到 bugFix 分支,rebase 到 master 上", + "* 建立 `bugFix` 分支", + "* commit 一次", + "* 切換回 master 分支再 commit 一次", + "* 再次切換到 bugFix 分支,將 bugFix 分支 rebase 到 master 上", "", "祝你好運啦!" ] From 822c9885f97e48df3fcb63c220267dd97dcd4d5b Mon Sep 17 00:00:00 2001 From: mht Date: Wed, 11 Dec 2013 22:08:03 +0800 Subject: [PATCH 26/33] update detachedHead.js --- src/levels/rampup/detachedHead.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/levels/rampup/detachedHead.js b/src/levels/rampup/detachedHead.js index 90b893e6..3fb8c73a 100644 --- a/src/levels/rampup/detachedHead.js +++ b/src/levels/rampup/detachedHead.js @@ -179,7 +179,7 @@ exports.level = { "", "在接觸 Git 的更多進階的主題之前,我們先學習用不同的方法在你的 project 中的 commit tree 上面移動。", "", - "一旦能夠熟練地在 commit tree 中隨意地移動,你使用其它的 git 指令的也會更厲害!", + "一旦能夠熟練地在 commit tree 中隨意地移動,你使用其它的 git 指令也會更厲害!", "", "", "", @@ -194,9 +194,9 @@ exports.level = { "markdowns": [ "## HEAD", "", - "我們首先看一下 \"HEAD\",HEAD 是一個參考,它是指向目前所 checkout 的 commit -- 基本上,其實就是你目前所在的 commit。", + "我們首先看一下 \"HEAD\",HEAD 是一個 reference,它是指向目前所 checkout 的 commit -- 基本上,其實就是你目前所在的 commit。", "", - "在 working tree 中,HEAD 總是指向最近的一次commit。大部份 git 的指令如果要修改 working tree 的狀態的話,都會先改變 HEAD 所指向的參考。", + "在 working tree 中,HEAD 總是指向最近的一次commit。大部份 git 的指令如果要修改 working tree 的狀態的話,都會先改變 HEAD 所指向的 commit。", "", "HEAD 通常指向一個分支的名稱(比如 bugFix)。當你 commit 的時候,改變了 bugFix 的狀態,這一個變化可以從 HEAD 的改變中看到。" ] @@ -209,7 +209,7 @@ exports.level = { "在實際的例子中。我們將會觀察 commit 前後 HEAD 的位置。" ], "afterMarkdowns": [ - "看吧! HEAD 一直藏在 `master` 分支的後面。" + "看吧!HEAD 一直藏在 `master` 分支的後面。" ], "command": "git checkout C1; git checkout master; git commit; git checkout C2", "beforeCommand": "" From b2082cb9fdf0c3758716681dc7281813bdba8648 Mon Sep 17 00:00:00 2001 From: mht Date: Wed, 11 Dec 2013 22:37:04 +0800 Subject: [PATCH 27/33] update multiplePatents.js --- src/levels/advanced/multipleParents.js | 38 +++++++++++++------------- src/levels/rampup/relativeRefs2.js | 2 +- src/levels/rampup/reversingChanges.js | 4 +-- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/levels/advanced/multipleParents.js b/src/levels/advanced/multipleParents.js index abb9c0ca..7aa00404 100644 --- a/src/levels/advanced/multipleParents.js +++ b/src/levels/advanced/multipleParents.js @@ -5,12 +5,12 @@ exports.level = { "name": { "en_US": "Multiple parents", "zh_CN": "多个父提交记录", - "zh_TW": "多個父提交記錄" + "zh_TW": "多個 parent commit" }, "hint": { "en_US": "Use `git branch bugWork` with a target commit to create the missing reference.", "zh_CN": "使用`git branch bugWork`加上一个目标提交记录来创建消失的引用。", - "zh_TW": "使用`git branch bugWork`加上一個目標提交記錄來創建消失的引用。" + "zh_TW": "在一個指定的 commit 上面使用 `git branch bugWork`。" }, "startDialog": { "en_US": { @@ -193,15 +193,15 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "### 選擇父提交", + "### 選擇 parent commit", "", - "和`~`修改符一樣,`^`修改符之後也可以跟一個(可選的)數字。", + "和`~`符號一樣,`^`符號的後面也可以接一個(可選的)數字。", "", - "這不是用來指定向上返回幾代(`~`的作用),`^`後的數字指定跟隨合併提交記錄的哪一個父提交。還記得一個合併提交有多個父提交吧,所有選擇哪條路徑不是那麼清晰。", + "這不是用來指定往上回去幾代(`~`的作用),`^`後面所跟的數字表示我要選擇哪一個 parent commit。還記得一個 merge commit 可以有多個 parent commit 吧,所以當我們要選擇走到哪一個 parent commit 的時候就會比較麻煩了。", "", - "Git默認選擇跟隨合併提交的\"第一個\"父提交,使用`^`後跟一個數字來改變這一默認行為。", + "Git 預設會選擇 merge commit 的\"第一個\" parent commit,使用`^`後面接一個數字可以改變這個預設的行為。", "", - "廢話不多說,舉個例子。", + "廢話不多說,舉一個例子。", "" ] } @@ -210,12 +210,12 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "這裡有一個合併提交。如果不加數字修改符直接切換到`master^`,會回到第一個父提交。", + "這裡有一個 merge commit。如果後面不加數字的話會直接切換到`master^`,也就是說會回到第一個 parent commit。", "", - "(*在我們的圖示中,第一個父提交是指合併提交正上方的那個父提交。*)" + "(*在我們的圖示中,第一個 parent commit 是指 merge commit 正上方的那一個 parent commit。*)" ], "afterMarkdowns": [ - "OK--這恰好是我們想要的。" + "簡單吧--這就是預設的情況。" ], "command": "git checkout master^", "beforeCommand": "git checkout HEAD^; git commit; git checkout master; git merge C2" @@ -225,10 +225,10 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "現在來試試選擇第二個父提交……" + "現在來試試選擇第二個 parent commit……" ], "afterMarkdowns": [ - "看見了吧?我們回到了第二個父提交。" + "看到了嗎?我們回到了第二個 parent commit。" ], "command": "git checkout master^2", "beforeCommand": "git checkout HEAD^; git commit; git checkout master; git merge C2" @@ -238,10 +238,10 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "使用`^`和`~`可以自由在在提交樹中移動:" + "使用`^`和`~`可以自由在 commit tree 中移動:" ], "afterMarkdowns": [ - "快若閃電!" + "簡直就像是電光石火!" ], "command": "git checkout HEAD~; git checkout HEAD^2; git checkout HEAD~2", "beforeCommand": "git commit; git checkout C0; git commit; git commit; git commit; git checkout master; git merge C5; git commit" @@ -251,10 +251,10 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "再瘋狂點,這些修改符支持鏈式操作!試一下這個:" + "再瘋狂點,這些符號可以被連在一起!試一下這個:" ], "afterMarkdowns": [ - "和前面的結果一樣,但只用了一條命令。" + "和前面的結果一樣,但只用了一條指令。" ], "command": "git checkout HEAD~^2~2", "beforeCommand": "git commit; git checkout C0; git commit; git commit; git commit; git checkout master; git merge C5; git commit" @@ -264,11 +264,11 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "### 實踐一下", + "### 練習一下", "", - "要完成此關,在指定的目標位置創建一個新的分支。", + "要完成這一關,在指定的目標位置上面建立一個新的分支。", "", - "很明顯可以簡單的直接使用提交記錄的hash值(比如`C6`),但我要求你使用剛剛講到的相對引用修飾符!" + "很明顯可以直接使用 commit 的 hash 值(比如 `C6`),但我要求你使用剛剛講到的相對引用的符號!" ] } } diff --git a/src/levels/rampup/relativeRefs2.js b/src/levels/rampup/relativeRefs2.js index 0ad9a938..01f8f718 100644 --- a/src/levels/rampup/relativeRefs2.js +++ b/src/levels/rampup/relativeRefs2.js @@ -170,7 +170,7 @@ exports.level = { "markdowns": [ "### Branch forcing", "", - "你現在是相對引用的高手了,現在 *用* 他來實際做點事情。", + "你現在是相對引用的高手了,現在用它來實際做點事情。", "", "我使用相對引用最多的就是移動分支。你可以使用 `-f` 選項直接讓分支指向另一個 commit。舉個例子:", "", diff --git a/src/levels/rampup/reversingChanges.js b/src/levels/rampup/reversingChanges.js index 2db3f823..99badba9 100644 --- a/src/levels/rampup/reversingChanges.js +++ b/src/levels/rampup/reversingChanges.js @@ -299,7 +299,7 @@ exports.level = { ], "command": "git reset HEAD~1", "afterMarkdowns": [ - "太好了! Git 把 master 分支簡單地移回到 `C1`;現在在我們的 local端 已經退回到沒有 commit 過 `C2` 的狀態了。" + "太好了! Git 把 master 分支簡單地移回到 `C1`;現在在我們的 local 端已經退回到沒有 commit 過 `C2` 的狀態了。" ], "beforeCommand": "git commit" } @@ -310,7 +310,7 @@ exports.level = { "beforeMarkdowns": [ "## Git Revert", "", - "雖然在你的local分支中使用`git reset`很方便,但是這種「改寫歷史」的方法對別人的遠端分支是無效的哦!", + "雖然在你的 local 分支中使用 `git reset` 很方便,但是這種「改寫歷史」的方法對別人的遠端分支是無效的哦!", "", "為了取消修改並且把這個狀態*分享*給別人,我們需要使用 `git revert`。舉個例子" ], From 983a1583c9b14a0fe85f83dcfe9bea411478b52a Mon Sep 17 00:00:00 2001 From: mht Date: Wed, 11 Dec 2013 23:18:40 +0800 Subject: [PATCH 28/33] update manyRebases and selectiveRebase --- src/levels/rebase/manyRebases.js | 10 +++++----- src/levels/rebase/selectiveRebase.js | 8 ++++---- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/levels/rebase/manyRebases.js b/src/levels/rebase/manyRebases.js index a4eaae3c..3813b358 100644 --- a/src/levels/rebase/manyRebases.js +++ b/src/levels/rebase/manyRebases.js @@ -19,7 +19,7 @@ exports.level = { "ja": "最も効率的なやり方はmasterを最後に更新するだけかもしれない・・・", "ko": "아마도 master를 마지막에 업데이트하는 것이 가장 효율적인 방법일 것입니다...", "zh_CN": "记住,最后更新master分支可能是最高效的方法。", - "zh_TW": "記住,最後更新master分支可能是最高效的方法。" + "zh_TW": "要記住喔! 把 master 分支留到最後在更新可能是最有效率的方法。" }, "startDialog": { "en_US": { @@ -82,13 +82,13 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "### 多分支衍合", + "### Rebase 多個 branch", "", - "吶,現在我們有很多分支啦!讓我們rebase這些分支的工作到 master 分支上吧。", + "嗨!現在我們有很多分支了啦!讓我們做一下rebase,將這些分支接到 master 分支上吧。", "", - "但是你的頭頭找了點麻煩 —— 他們希望得到有序的提交歷史,也就是我們最終的結果是 `C7'` 在最底部,`C6'` 在它上面,以此類推。", + "但是你的主管找了點麻煩 —— 他們希望得到有序的 commit history,也就是我們最終的結果是 `C7'` 在最下面,`C6'` 在它上面,以此類推。", "", - "假如你搞砸了,沒所謂的(雖然我不會告訴你用 `reset` 可以重新開始)。記得看看我們提供的答案,看你能否使用更少的命令完成任務!" + "假如你搞砸了,沒有關係啦!你用 `reset` 就可以重新開始!。記得看看我們提供的答案,看你是否能夠使用更少的指令完成這一關!" ] } } diff --git a/src/levels/rebase/selectiveRebase.js b/src/levels/rebase/selectiveRebase.js index 37a79707..5f55d453 100644 --- a/src/levels/rebase/selectiveRebase.js +++ b/src/levels/rebase/selectiveRebase.js @@ -18,7 +18,7 @@ exports.level = { "ja": "全て正しい順番で処理すること!oneが最初で、次がtwo、最後にthreeを片付ける。", "ko": "이 문제를 해결하는 방법은 여러가지가 있습니다! 체리픽(cherry-pick)이 가장 쉽지만 오래걸리는 방법이고, 리베이스(rebase -i)가 빠른 방법입니다", "zh_CN": "确保你是按照正确的顺序来操作!先操作分支 `one`, 然后 `two`, 最后才是 `three`", - "zh_TW": "確保你是按照正確的順序來操作!先操作分支 `one`, 然後 `two`, 最後才是 `three`" + "zh_TW": "確認你是按照正確的順序來操作!先操作分支 `one`, 然後 `two`, 最後才是 `three`" }, "startDialog": { "en_US": { @@ -91,11 +91,11 @@ exports.level = { "", "哇塞大神!這關我們要來點不同的!", "", - "現在我們的 `master` 分支是比 `one` `two` 和 `three` 要多幾個提交。出於某種原因,我們需要把其他三個分支更新到 master 分支上新近的幾個不同提交上。(update these three other brances with modified versions of the last few commits on master)", + "現在我們的 `master` 分支是比 `one` `two` 和 `three` 這三個分支多了幾個 commit。由於某種原因,我們需要將 master 所新增的幾個 commit 套用到其它三個分支上面。", "", - "分支 `one` 需要重新排序和撤銷, `two` 需要完全重排,而 `three` 只需要提交一次。", + "分支 `one` 需要重新排序和取消 `C5` 這一個commit, `two` 需要完全重排,而 `three` 只需要再一個 commit。", "", - "慢慢摸索會找到答案的 —— 你完事記得用 `show solution` 看看我們的答案哦。" + "我們會讓你知道如何解決這個問題 —— 之後請記得用 `show solution` 看看我們的答案喔。" ] } } From 905ccf2c3281cd5b5313dedb459a3fcdec874d17 Mon Sep 17 00:00:00 2001 From: mht Date: Thu, 12 Dec 2013 00:23:57 +0800 Subject: [PATCH 29/33] update grabbingOneCommit.js --- src/levels/mixed/grabbingOneCommit.js | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/levels/mixed/grabbingOneCommit.js b/src/levels/mixed/grabbingOneCommit.js index 65f3aae3..aae69bfd 100644 --- a/src/levels/mixed/grabbingOneCommit.js +++ b/src/levels/mixed/grabbingOneCommit.js @@ -18,14 +18,14 @@ exports.level = { "en_US": "Grabbing Just 1 Commit", "ja": "Grabbing Just 1 Commit", "zh_CN": "只取一个提交", - "zh_TW": "只取一個提交" + "zh_TW": "只取一個 commit" }, "hint": { "en_US": "Remember, interactive rebase or cherry-pick is your friend here", "ja": "このレベルではインタラクティブモードのrebaseやcherry-pickがクリアのカギです", "ko": "대화식 리베이스(rebase -i)나 or 체리픽(cherry-pick)을 사용하세요", "zh_CN": "记住,交互式 rebase 或者 cherry-pick 会很有帮助", - "zh_TW": "記住,交互式 rebase 或者 cherry-pick 會很有幫助" + "zh_TW": "記住,使用 interactive rebase 或者 cherry-pick 會很有幫助" }, "startDialog": { "en_US": { @@ -156,13 +156,13 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "## 本地棧式提交 (Locally stacked commits)", + "## Locally stacked commits", "", - "設想一下一個經常發生的場景:我在追蹤一個有點棘手的 bug,為了更好地排查,我添加了一些調試命令和打印語句。", + "有一個經常發生的情況:我在追蹤一個有點棘手的 bug,但是它實在太難抓出來了,在不得已的情況下我加入了一些 debug statement,並且做了一些 commit。", "", - "所有的這些調試和打印語句都只在它們自己的分支裡。最終我終於找到這個 bug,揪出來 fix 掉,然後撒花慶祝!", + "所有的這些 debug statement 都只在 `bugFix` 這個分支裡面。最後我終於找到這個 bug,並且 fix 掉它,接著撒花慶祝一下!", "", - "現在唯一的問題就是要把我在 `bugFix` 分支裡的工作合併回 `master` 分支。我可以簡單地把 `master` 分支快進(fast-forward),但這樣的話 `master` 分支就會包含我這些調試語句了。" + "現在唯一的問題就是要把我在 `bugFix` 分支裡面所做的修改合併回 `master` 分支。我可以簡單地透過 fast-forward 來合併 ,但這樣的話 `master` 分支就會包含這些含有 debug statement 的 commit 了。我相信一定有其它方法..." ] } }, @@ -170,14 +170,12 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "現在就是 Git 大顯神通的時候啦。解決這個問題的方法不止一個,但最直接的兩個方法是:", + "我們需要告訴 git 只去複製其中一個 commit。 這種情況跟之前的關卡有一點類似,我們可以使用一樣的指令", "", "* `git rebase -i`", "* `git cherry-pick`", "", - "交互(`-i`)衍合允許你選擇哪些提交是要被保留,哪些要被捨棄。它允許你將提交重新排序。假如你要捨棄一些工作,這個會幫上很大的忙。", - "", - "Cherry-picking 能讓你選擇單獨一個提交並且把它放到 `HEAD` 的最前端。" + "來完成這個目的" ] } }, @@ -185,7 +183,7 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "本關是可選關卡,玩不玩隨便你。但是如果你堅持要刷,確保 `master` 分支能拿到 `bugFix` 分支的相關提交(references)。" + "這一個關卡是比較後面的關卡,你可以隨意決定你要選擇使用哪個指令,但是 `bugFix` 所指向的那個commit 一定要可以被 `master` 包含到" ] } } From c229bb62301cc79362386cc0cba3cdecaa341e1c Mon Sep 17 00:00:00 2001 From: mht Date: Thu, 12 Dec 2013 00:41:40 +0800 Subject: [PATCH 30/33] update *jugglingCommit* --- src/levels/mixed/jugglingCommits.js | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/levels/mixed/jugglingCommits.js b/src/levels/mixed/jugglingCommits.js index d87d6e23..a9970855 100644 --- a/src/levels/mixed/jugglingCommits.js +++ b/src/levels/mixed/jugglingCommits.js @@ -22,7 +22,7 @@ exports.level = { "en_US": "Juggling Commits", "ja": "Juggling Commits", "zh_CN": "提交变换戏法", - "zh_TW": "提交變換戲法" + "zh_TW": "Commit 的戲法" }, "hint": { "en_US": "The first command is git rebase -i HEAD~2", @@ -157,11 +157,11 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "## 提交變換戲法", + "## Commit 的戲法", "", - "下面這種情況也是經常出現的。例如你之前已經在 `newImage` 分支上做了一些提交,然後又在 `caption` 分支上做了一些相關的提交,因此它們看起來是一個連一個的(stacked on top of each other in your repository)。", + "下面這種情況也是經常出現的。例如你之前已經在 `newImage` 分支上做了一些 commit,然後又在 `caption` 分支上做了一些相關的 commit ,因此它們看起來是一個接著一個的。", "", - "有點棘手的就是有時候你又想往先前的提交裡做些小改動。吶,現在就是設計師想要我們去輕微改變下 `newImage` 的內容(change the dimensions slightly),儘管那個提交是很久很久以前的了。" + "有點棘手的就是有時候你又想在之前的 commit 裡面做一些修改。在這個例子裡面,我們要去稍微改變一下 `newImage` 分支,儘管已經是之前的 commit 了 。" ] } }, @@ -169,14 +169,14 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "為了實現他的願望,我們可以按照下面的方法來做:", + "為了克服這個困難,我們可以按照下面的方法來做:", "", - "* 先用 `git rebase -i` 將提交重新排序,然後把我們想要修改的提交挪到最前", + "* 先用 `git rebase -i` 將 commit 重新排序,然後把我們想要修改的 commit 移到最前面", "* 然後用 `commit --amend` 來進行一些小修改", - "* 接著再用 `git rebase -i` 來將他們按最開始的順序重新排好", - "* 最後我們把 master 移到修改的最前端(用你自己喜歡的方法),就大功告成啦!", + "* 接著再用 `git rebase -i` 來將他們按照最開始的順序重新排好", + "* 最後我們把 master 移到這個修改的最前端(用你自己喜歡的方法),就大功告成啦!", "", - "當然還有許多方法可以完成這個任務(我知道你在看 cherry-pick 啦),之後我們會多點關注這些技巧啦,但現在暫時只專註上面這種方法。" + "當然還有許多方法可以完成這個任務(我知道你在看 cherry-pick 啦),之後我們會多點關注這些技巧啦,但現在暫時只注意上面這種方法。" ] } }, @@ -184,7 +184,7 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "啊最後還要提醒你一下最終的形式 —— 因為我們把這個提交移動了兩次,所以會分別產生一個省略提交(both get an apostrophe appended)。還有一個省略提交是因為我們為了實現最終效果去修改提交而添加的。" + "啊!最後還要提醒你一下最後所產生的 commit tree —— 因為我們把 commit 移動了兩次,所以會分別產生一個 apostrophe commit。還有一個 apostrophe commit 是因為我們修改 commit 而加進來的。" ] } } From eae04f6a78e37782a45ac68c339120110c18a461 Mon Sep 17 00:00:00 2001 From: mht Date: Thu, 12 Dec 2013 11:57:20 +0800 Subject: [PATCH 31/33] update jugglingCommits --- src/levels/mixed/jugglingCommits.js | 14 +++++++------- src/levels/mixed/jugglingCommits2.js | 20 ++++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/levels/mixed/jugglingCommits.js b/src/levels/mixed/jugglingCommits.js index a9970855..9503a70f 100644 --- a/src/levels/mixed/jugglingCommits.js +++ b/src/levels/mixed/jugglingCommits.js @@ -22,7 +22,7 @@ exports.level = { "en_US": "Juggling Commits", "ja": "Juggling Commits", "zh_CN": "提交变换戏法", - "zh_TW": "Commit 的戲法" + "zh_TW": "commit 的戲法" }, "hint": { "en_US": "The first command is git rebase -i HEAD~2", @@ -157,11 +157,11 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "## Commit 的戲法", + "## commit 的戲法", "", - "下面這種情況也是經常出現的。例如你之前已經在 `newImage` 分支上做了一些 commit,然後又在 `caption` 分支上做了一些相關的 commit ,因此它們看起來是一個接著一個的。", + "下面這種情況也是經常出現的。例如你之前已經在 `newImage` 分支上做了一些 commit,然後又開了一個分支叫做 `caption` ,並且在上面做了一些相關的 commit ,因此它們看起來是一個接著一個的。", "", - "有點棘手的就是有時候你又想在之前的 commit 裡面做一些修改。在這個例子裡面,我們要去稍微改變一下 `newImage` 分支,儘管已經是之前的 commit 了 。" + "有點棘手的就是有時候你又想在之前的 commit 裡面做一些修改。在這個例子裡面,我們要去稍微修改一下 `newImage` 所指向的 commit,儘管已經是之前的 commit 了 。" ] } }, @@ -172,11 +172,11 @@ exports.level = { "為了克服這個困難,我們可以按照下面的方法來做:", "", "* 先用 `git rebase -i` 將 commit 重新排序,然後把我們想要修改的 commit 移到最前面", - "* 然後用 `commit --amend` 來進行一些小修改", + "* 然後用 `commit --amend` 來進行一些修改", "* 接著再用 `git rebase -i` 來將他們按照最開始的順序重新排好", "* 最後我們把 master 移到這個修改的最前端(用你自己喜歡的方法),就大功告成啦!", "", - "當然還有許多方法可以完成這個任務(我知道你在看 cherry-pick 啦),之後我們會多點關注這些技巧啦,但現在暫時只注意上面這種方法。" + "當然還有許多方法可以完成這個任務(我知道你在想 cherry-pick 啦),之後我們會多點關注這些技巧啦,但現在暫時只注意上面這種方法。" ] } }, @@ -184,7 +184,7 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "啊!最後還要提醒你一下最後所產生的 commit tree —— 因為我們把 commit 移動了兩次,所以會分別產生一個 apostrophe commit。還有一個 apostrophe commit 是因為我們修改 commit 而加進來的。" + "啊!最後還要提醒你一下最後所產生的 commit tree —— 因為我們把 commit 移動了兩次,所以會分別產生一個 apostrophe(單引號) commit。還有一個 apostrophe commit 是因為我們修改 commit 而加進來的。" ] } } diff --git a/src/levels/mixed/jugglingCommits2.js b/src/levels/mixed/jugglingCommits2.js index e8eb43a7..ff88cfa0 100644 --- a/src/levels/mixed/jugglingCommits2.js +++ b/src/levels/mixed/jugglingCommits2.js @@ -21,14 +21,14 @@ exports.level = { "en_US": "Juggling Commits #2", "ja": "コミットをやりくりする その2", "zh_CN": "提交交换戏法 #2", - "zh_TW": "提交交換戲法 #2" + "zh_TW": "commit 的戲法 #2" }, "hint": { "en_US": "Don't forget to forward master to the updated changes!", "ja": "masterのポインタを先に進めることを忘れずに!", "ko": "master를 변경 완료한 커밋으로 이동(forward)시키는 것을 잊지 마세요!", "zh_CN": "别忘记了将 master 快进到最新的更新上!", - "zh_TW": "別忘記了將 master 快進到最新的更新上!" + "zh_TW": "別忘記了將 master 推到最新的修改上面!" }, "startDialog": { "en_US": { @@ -162,13 +162,13 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "## 提交變換戲法 #2", + "## commit 的戲法 #2", "", - "*假如你還沒有完成提交變換戲法 #1(前一關),這關不讓玩哦!*", + "*假如你還沒有完成 commit 的戲法 #1(前面那一個關卡),請先完成之後再來這一關!*", "", - "如你在上一關所見,我們使用 `rebase -i` 來重排那些提交。只要把我們想要的提交挪到最頂端,我們就可以很容易地改變它,然後把它們重新排成我們想要的順序。", + "如你在上一個關卡所看到的,我們使用 `rebase -i` 來重新排列那些 commit。只要把我們想要修改的 commit 移到最前面,我們就可以很容易地重新修改它,然後再把它們重新排成我們想要的順序。", "", - "但唯一的問題就是這樣做就要排很多次,有可能造成衍合衝突(rebase conflicts)。下面就看看用另外一種方法 `git cherry-pick` 是怎麼做的吧。" + "但唯一的問題就是這樣做就要排很多次,有可能造成 rebase conflicts。下面就看看用另外一種方法 `git cherry-pick` 是怎麼做的吧!" ] } }, @@ -176,13 +176,13 @@ exports.level = { "type": "GitDemonstrationView", "options": { "beforeMarkdowns": [ - "要在心理牢記 cherry-pick 可以從提交樹的任何地方拿一個提交來放在 HEAD 上(儘管那個提交不在上游)。", + "要記住喔! cherry-pick 可以從 commit tree 的任何地方拿一個 commit 來放在 HEAD 上(只要那個 commit 不是 HEAD 的 ancestor)。", "", - "下面是一個小小的演示:" + "下面是一個簡單清楚的 demo:" ], "command": "git cherry-pick C2", "afterMarkdowns": [ - "好滴咧,我們繼續" + "太棒了,我們繼續吧!" ], "beforeCommand": "git checkout -b bugFix; git commit; git checkout master; git commit" } @@ -191,7 +191,7 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "那麼這關呢,和上一關一樣要改變提交 `C2`,但你要避免使用 `rebase -i`。自己想想要怎麼解決吧,騷年! :D" + "在這一關和上一關一樣要去修改一個 commit 叫做`C2`,但你要避免使用 `rebase -i`。自己想想看要怎麼解決吧!" ] } } From c7313e9a78ffe126939a87744b314a3650cfff04 Mon Sep 17 00:00:00 2001 From: mht Date: Fri, 13 Dec 2013 19:42:36 +0800 Subject: [PATCH 32/33] update src/levels/index.js --- src/levels/index.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/levels/index.js b/src/levels/index.js index 75d2ba4c..e8a9d29d 100644 --- a/src/levels/index.js +++ b/src/levels/index.js @@ -66,7 +66,7 @@ var sequenceInfo = exports.sequenceInfo = { 'ja': 'gitの基本的なコマンド群をほどよいペースで学ぶ', 'fr_FR': 'Une introduction en douceur à la majorité des commandes git', 'zh_CN': '循序渐进介绍git主要命令', - 'zh_TW': '循序漸進介绍git主要命令', + 'zh_TW': '循序漸進地介绍 git 主要命令', 'ko': '브랜치 관련 주요 git 명령어를 깔끔하게 알려드립니다' } }, @@ -83,7 +83,7 @@ var sequenceInfo = exports.sequenceInfo = { 'ja': '更にgitの素晴らしさを堪能しよう', 'fr_FR' : 'Le prochain service git 100% excellence. J\'espère que vous êtes affamés', 'zh_CN': '接下来是git的超赞特性。迫不及待了吧!', - 'zh_TW': '接下来是git的超讚特性。迫不及待了吧!' + 'zh_TW': '接下来是 git 非常厲害的地方!相信你已經迫不及待了吧!' } }, remote: { @@ -111,7 +111,7 @@ var sequenceInfo = exports.sequenceInfo = { 'ja': 'Rebaseをモノにする', 'fr_FR': 'Maîtrise Rebase, Luke!', 'zh_CN': '精通Rebase!', - 'zh_TW': '精通Rebase!', + 'zh_TW': '精通 Rebase!', 'ko': '리베이스 완전정복!' }, about: { @@ -121,7 +121,7 @@ var sequenceInfo = exports.sequenceInfo = { 'fr_FR': 'Qu\'est-ce que ce rebase dont tout le monde parle ? Découvrez-le !', 'ko': '그 좋다고들 말하는 rebase에 대해 알아봅시다!', 'zh_CN': '大家都在说的rebase究竟是神马?看看吧!', - 'zh_TW': '大家都在說的rebase究竟是神馬?看看吧!' + 'zh_TW': '大家都在說的 rebase 究竟是什麼阿?來看看吧!' } }, mixed: { @@ -131,7 +131,7 @@ var sequenceInfo = exports.sequenceInfo = { 'fr_FR': 'Un assortiment', 'ko': '종합선물세트', 'zh_CN': '大杂烩?', - 'zh_TW': '大雜燴?' + 'zh_TW': '活用 git 的指令' }, about: { 'en_US': 'A mixed bag of Git techniques, tricks, and tips', @@ -139,7 +139,7 @@ var sequenceInfo = exports.sequenceInfo = { 'fr_FR': 'Un assortiment de techniques et astuces pour utiliser Git', 'ko': 'Git을 다루는 다양한 팁과 테크닉을 다양하게 알아봅니다', 'zh_CN': 'Git技术,技巧与贴士杂烩', - 'zh_TW': 'Git技術,技巧與貼士雜燴' + 'zh_TW': 'Git 的技術,招數與技巧' } }, advanced: { @@ -147,13 +147,13 @@ var sequenceInfo = exports.sequenceInfo = { 'en_US': 'Advanced Topics', 'fr_FR': 'Sujets Avancés', 'zh_CN': '高级主题', - 'zh_TW': '高級主題' + 'zh_TW': '進階主題' }, about: { 'en_US': 'For the truly brave!', 'fr_FR': 'Pour les plus courageux !', 'zh_CN': '只为真正的勇士!', - 'zh_TW': '只為真正的勇士!' + 'zh_TW': '來成為真正的強者吧!' } } }; From 9f9751242ec6efeffd6c39dc8268f82f5deae7d9 Mon Sep 17 00:00:00 2001 From: mht Date: Fri, 21 Mar 2014 12:41:04 +0800 Subject: [PATCH 33/33] add traditional chinese --- src/js/views/index.js | 2 +- src/levels/advanced/multipleParents.js | 2 +- src/levels/rampup/detachedHead.js | 6 +++--- src/levels/rampup/relativeRefs.js | 6 +++--- src/levels/rampup/relativeRefs2.js | 6 +++--- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/js/views/index.js b/src/js/views/index.js index 1a3309bf..99bea829 100644 --- a/src/js/views/index.js +++ b/src/js/views/index.js @@ -739,7 +739,7 @@ var IntlHelperBar = HelperBar.extend({ this.hide(); }, - onChineseClick: function() { + onSimpchineseClick: function() { this.fireCommand('locale zh_CN; levels'); this.hide(); }, diff --git a/src/levels/advanced/multipleParents.js b/src/levels/advanced/multipleParents.js index a08c36d6..3e1955da 100644 --- a/src/levels/advanced/multipleParents.js +++ b/src/levels/advanced/multipleParents.js @@ -11,7 +11,7 @@ exports.level = { "hint": { "en_US": "Use `git branch bugWork` with a target commit to create the missing reference.", "de_DE": "Nutze `git branch bugWork` mit einem Ziel-Commit um die fehlende Referenz zu erstellen.", - "zh_CN": "使用`git branch bugWork`加上一个目标提交记录来创建消失的引用。" + "zh_CN": "使用`git branch bugWork`加上一个目标提交记录来创建消失的引用。", "zh_TW": "在一個指定的 commit 上面使用 `git branch bugWork`。" }, "startDialog": { diff --git a/src/levels/rampup/detachedHead.js b/src/levels/rampup/detachedHead.js index 453a3018..6c8dc217 100644 --- a/src/levels/rampup/detachedHead.js +++ b/src/levels/rampup/detachedHead.js @@ -5,13 +5,13 @@ exports.level = { "name": { "en_US": "Detach yo' HEAD", "zh_CN": "分离HEAD", - "zh_TW": "分離HEAD" - "de_DE": "Den Kopf abtrennen", + "zh_TW": "分離HEAD", + "de_DE": "Den Kopf abtrennen" }, "hint": { "en_US": "Use the label (hash) on the commit for help!", "de_DE": "Benutze den Bezeichner (den Hash) des Commits.", - "zh_TW": "使用 commit 上的標籤(hash)來幫助你!" + "zh_TW": "使用 commit 上的標籤(hash)來幫助你!", "zh_CN": "使用提交记录上的标签(hash)来求助!" }, "startDialog": { diff --git a/src/levels/rampup/relativeRefs.js b/src/levels/rampup/relativeRefs.js index 47e802d8..da430090 100644 --- a/src/levels/rampup/relativeRefs.js +++ b/src/levels/rampup/relativeRefs.js @@ -5,13 +5,13 @@ exports.level = { "name": { "en_US": "Relative Refs (^)", "zh_CN": "相对引用(^)", - "zh_TW": "相對引用(^)" - "de_DE": "Relative Referenzen (^)", + "zh_TW": "相對引用(^)", + "de_DE": "Relative Referenzen (^)" }, "hint": { "en_US": "Remember the Caret (^) operator!", "de_DE": "Denk an den Dach-Operator (^)!", - "zh_CN": "记住插入(^)操作符!" + "zh_CN": "记住插入(^)操作符!", "zh_TW": "不要忘記插入(^) 符號!" }, "startDialog": { diff --git a/src/levels/rampup/relativeRefs2.js b/src/levels/rampup/relativeRefs2.js index adad2b09..59c4f3d1 100644 --- a/src/levels/rampup/relativeRefs2.js +++ b/src/levels/rampup/relativeRefs2.js @@ -5,13 +5,13 @@ exports.level = { "hint": { "en_US": "You'll need to use at least one direct reference (hash) to complete this level", "zh_CN": "这一关至少要用到一次直接引用(hash)", - "zh_TW": "這一關至少要用到一次直接參考(hash)" - "de_DE": "Du musst mindestens einen Hash benutzen, um dieses Level zu schaffen", + "zh_TW": "這一關至少要用到一次直接參考(hash)", + "de_DE": "Du musst mindestens einen Hash benutzen, um dieses Level zu schaffen" }, "name": { "en_US": "Relative Refs #2 (~)", "de_DE": "Relative Referenzen #2 (~)", - "zh_CN": "相对引用2(~)" + "zh_CN": "相对引用2(~)", "zh_TW": "相對引用二(~)" }, "startDialog": {