From 6fdcbbcee1bcd3c2c1f46660481091299886ea3c Mon Sep 17 00:00:00 2001 From: Peter Cottle Date: Thu, 7 Mar 2013 20:19:12 -0800 Subject: [PATCH] Merge branch 'more-zh-translation' of git://github.com/dotnil/learnGitBranching into dotnil Issue #74 --- src/js/dialogs/levelBuilder.js | 19 ++++++++ src/js/dialogs/nextLevel.js | 10 ++++ src/js/dialogs/sandbox.js | 52 +++++++++++++++++++++ src/js/intl/strings.js | 84 ++++++++++++++++++++++------------ src/levels/index.js | 2 +- src/levels/mixed/2.js | 4 +- src/levels/mixed/3.js | 4 +- src/levels/rebase/1.js | 7 +-- src/levels/rebase/2.js | 5 +- 9 files changed, 149 insertions(+), 38 deletions(-) diff --git a/src/js/dialogs/levelBuilder.js b/src/js/dialogs/levelBuilder.js index 291c2900..65d87e1d 100644 --- a/src/js/dialogs/levelBuilder.js +++ b/src/js/dialogs/levelBuilder.js @@ -17,5 +17,24 @@ exports.dialog = { ' * Enter the command ```finish``` to output your level JSON!' ] } + }], + 'zh_CN': [{ + type: 'ModalAlert', + options: { + markdowns: [ + '## 欢迎使用关卡生成器!', + '', + '主要步骤如下:', + '', + ' * 使用 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 da64144a..a25e7cff 100644 --- a/src/js/dialogs/nextLevel.js +++ b/src/js/dialogs/nextLevel.js @@ -9,6 +9,16 @@ exports.dialog = { 'our solution uses {best}.' ] } + }], + 'zh_CN': [{ + type: 'ModalAlert', + options: { + markdowns: [ + '## 碉堡了!', + '', + '你用 *{numCommands}* 条命令搞定了这一关;我们的答案要用 {best}。' + ] + } }] }; diff --git a/src/js/dialogs/sandbox.js b/src/js/dialogs/sandbox.js index 0133af2f..f719d84e 100644 --- a/src/js/dialogs/sandbox.js +++ b/src/js/dialogs/sandbox.js @@ -53,6 +53,58 @@ exports.dialog = { ] } }], + 'zh_CN': [{ + type: 'ModalAlert', + options: { + markdowns: [ + '## 欢迎光临 LearnGitBranching!', + '', + '本应用旨在帮助初学者领会 git 分支背后的强大概念。', + '希望你能喜欢这个应用,并学到知识!', + '', + '# 演示!', + '', + '如果你还没看过演示,请到此查看:', + '', + '[http://pcottle.github.com/learnGitBranching/?demo](http://pcottle.github.com/learnGitBranching/?demo)', + '', + '厌烦这个对话框? 在 URL 后头加上 `?NODEMO` 就看不到它了,也可以直接点下边这个链接:', + '', + '[http://pcottle.github.com/learnGitBranching/?NODEMO](http://pcottle.github.com/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 79072b74..e489e448 100644 --- a/src/js/intl/strings.js +++ b/src/js/intl/strings.js @@ -2,145 +2,173 @@ exports.strings = { /////////////////////////////////////////////////////////////////////////// 'finish-dialog-finished': { '__desc__': 'One of the lines in the next level dialog', - 'en_US': 'Wow! You finished the last level, great!' + 'en_US': 'Wow! You finished the last level, great!', + 'zh_CN': '我的个天!你完成了最后一关,碉堡了!' }, /////////////////////////////////////////////////////////////////////////// 'finish-dialog-next': { '__desc__': 'One of the lines in the next level dialog', - 'en_US': 'Would you like to move onto *"{nextLevel}"*, the next level?' + 'en_US': 'Would you like to move onto *"{nextLevel}"*, the next level?', + 'zh_CN': '要不前进到下一关 *“{nextLevel}”*?' }, /////////////////////////////////////////////////////////////////////////// 'finish-dialog-win': { '__desc__': 'One of the lines in the next level dialog', - 'en_US': 'Awesome! You matched or exceeded our solution.' + 'en_US': 'Awesome! You matched or exceeded our solution.', + 'zh_CN': '牛鼻啊!你达到或者完爆了我们的答案。' }, /////////////////////////////////////////////////////////////////////////// 'finish-dialog-lose': { '__desc__': 'When the user entered more commands than our best, encourage them to do better', - 'en_US': 'See if you can whittle it down to {best} :D' + 'en_US': 'See if you can whittle it down to {best} :D', + 'zh_CN': '试试看你能否在 {best} 之内搞定 :D' }, /////////////////////////////////////////////////////////////////////////// 'git-status-detached': { '__desc__': 'One of the lines for git status output', - 'en_US': 'Detached head!' + 'en_US': 'Detached head!', + 'zh_CN': '脑袋搬家(Detached head)了!' }, /////////////////////////////////////////////////////////////////////////// 'git-status-onbranch': { '__desc__': 'One of the lines for git status output', - 'en_US': 'On branch {branch}' + 'en_US': 'On branch {branch}', + 'zh_CN': '切换到分支 {branch}' }, /////////////////////////////////////////////////////////////////////////// 'git-status-readytocommit': { '__desc__': 'One of the lines for git status output', - 'en_US': 'Ready to commit! (as always in this demo)' + 'en_US': 'Ready to commit! (as always in this demo)', + 'zh_CN': '可以提交啦!(这演示里一直可以提交)' }, /////////////////////////////////////////////////////////////////////////// 'git-dummy-msg': { '__desc__': 'The dummy commit message for all commits. Feel free to put in a ' + 'shoutout to your school / city / whatever!', - 'en_US': 'Quick commit. Go Bears!' + 'en_US': 'Quick commit. Go Bears!', + 'zh_CN': '快速提交。上啊月熊!' }, /////////////////////////////////////////////////////////////////////////// 'git-error-branch': { '__desc__': 'One of the error messages for git', 'en_US': 'You can\'t delete the master branch, the branch you are on, or things that ' + - 'aren\'t branches' + 'aren\'t branches', + 'zh_CN': '你不能删除主分支(master),或者你当前所在的分支,或者其他不是分支也不知道能不能吃的东西。' }, /////////////////////////////////////////////////////////////////////////// 'git-merge-msg': { '__desc__': 'The commit message for a merge commit', - 'en_US': 'Merge {target} into {current}' + 'en_US': 'Merge {target} into {current}', + 'zh_CN': '合并 {target} 到 {current}' }, /////////////////////////////////////////////////////////////////////////// 'git-error-rebase-none': { '__desc__': 'One of the error messages for git', - 'en_US': 'No commits to rebase! Everything is a merge commit or changes already applied' + 'en_US': 'No commits to rebase! Everything is a merge commit or changes already applied', + 'zh_CN': '没有需要 rebase 的提交!都是个合并提交,或者已经 rebase 过了。' }, /////////////////////////////////////////////////////////////////////////// 'git-result-nothing': { '__desc__': 'The message that explains the result of a git command', - 'en_US': 'Nothing to do...' + 'en_US': 'Nothing to do...', + 'zh_CN': '没啥鸟事……' }, /////////////////////////////////////////////////////////////////////////// 'git-result-fastforward': { '__desc__': 'The message that explains the result of a git command', - 'en_US': 'Fast forwarding...' + 'en_US': 'Fast forwarding...', + 'zh_CN': '快速前进……' }, /////////////////////////////////////////////////////////////////////////// 'git-result-uptodate': { '__desc__': 'The message that explains the result of a git command', - 'en_US': 'Branch already up-to-date' + 'en_US': 'Branch already up-to-date', + 'zh_CN': '分支已经是最新啦' }, /////////////////////////////////////////////////////////////////////////// 'git-error-exist': { '__desc__': 'One of the error messages for git', - 'en_US': 'The ref {ref} does not exist or is unknown' + 'en_US': 'The ref {ref} does not exist or is unknown', + 'zh_CN': '索引 {ref} 不存在,或者找不到。' }, /////////////////////////////////////////////////////////////////////////// 'git-error-relative-ref': { '__desc__': 'One of the error messages for git', - 'en_US': 'Commit {commit} doesnot have a {match}' + 'en_US': 'Commit {commit} doesnot have a {match}', + 'zh_CN': '提交 {commit} 并没有 {match}' }, /////////////////////////////////////////////////////////////////////////// 'git-warning-detached': { '__desc__': 'One of the warning messages for git', - 'en_US': 'Warning!! Detached HEAD state' + 'en_US': 'Warning!! Detached HEAD state', + 'zh_CN': '警告!脑袋搬家(Detached HEAD)状态' }, /////////////////////////////////////////////////////////////////////////// 'git-warning-add': { '__desc__': 'One of the warning messages for git', - 'en_US': 'No need to add files in this demo' + 'en_US': 'No need to add files in this demo', + 'zh_CN': '此演示中不需要添加文件' }, /////////////////////////////////////////////////////////////////////////// 'git-error-options': { '__desc__': 'One of the error messages for git', - 'en_US': 'Those options you specified are incompatible or incorrect' + 'en_US': 'Those options you specified are incompatible or incorrect', + 'zh_CN': '你所指定的参数不兼容或者不准确' }, /////////////////////////////////////////////////////////////////////////// 'git-error-already-exists': { '__desc__': 'One of the error messages for git', - 'en_US': 'The commit {commit} already exists in your changes set, aborting!' + 'en_US': 'The commit {commit} already exists in your changes set, aborting!', + 'zh_CN': '提交 {commit} 已经存在于你的改动集里,正在中止!' }, /////////////////////////////////////////////////////////////////////////// 'git-error-reset-detached': { '__desc__': 'One of the error messages for git', - 'en_US': 'Can\'t reset in detached head! Use checkout if you want to move' + 'en_US': 'Can\'t reset in detached head! Use checkout if you want to move', + 'zh_CN': '不能在分离的 HEAD 里重置!用 checkout 吧' }, /////////////////////////////////////////////////////////////////////////// 'git-warning-hard': { '__desc__': 'One of the warning messages for git', - 'en_US': 'The default behavior is a --hard reset, feel free to omit that option!' + 'en_US': 'The default behavior is a --hard reset, feel free to omit that option!', + 'zh_CN': '默认的行为是 --hard 硬重置,尽管省略掉那个选项吧!' }, /////////////////////////////////////////////////////////////////////////// 'git-error-staging': { '__desc__': 'One of the error messages for git', 'en_US': 'There is no concept of adding / staging files, so that option or ' + - 'command is invalid!' + 'command is invalid!', + 'zh_CN': '没有添加、缓存文件的必要,所以改选项或者命令是不合法的。' }, /////////////////////////////////////////////////////////////////////////// 'git-revert-msg': { '__desc__': 'Message for reverting git command', - 'en_US': 'Reverting {oldCommit}: {oldMsg}' + 'en_US': 'Reverting {oldCommit}: {oldMsg}', + 'zh_CN': '撤销 {oldCommit}:{oldMsg}' }, /////////////////////////////////////////////////////////////////////////// 'git-error-args-many': { '__desc__': 'One of the error messages for git', - 'en_US': 'I expect at most {upper} argument(s) for {what}' + 'en_US': 'I expect at most {upper} argument(s) for {what}', + 'zh_CN': '{what} 期望最多 {upper} 个参数' }, /////////////////////////////////////////////////////////////////////////// 'git-error-args-few': { '__desc__': 'One of the error messages for git', - 'en_US': 'I expect at least {lower} argument(s) for {what}' + 'en_US': 'I expect at least {lower} argument(s) for {what}', + 'zh_CN': '{what} 期望最少 {lower} 个参数' }, /////////////////////////////////////////////////////////////////////////// 'git-error-no-general-args': { '__desc__': 'One of the error messages for git', - 'en_US': 'That command accepts no general arguments' + 'en_US': 'That command accepts no general arguments', + 'zh_CN': '该命令不接收参数' }, /////////////////////////////////////////////////////////////////////////// 'copy-tree-string': { '__desc__': 'The prompt to copy the tree when sharing', - 'en_US': 'Copy the tree string below' + 'en_US': 'Copy the tree string below', + 'zh_CN': '拷贝下面的树字符串' }, /////////////////////////////////////////////////////////////////////////// 'learn-git-branching': { diff --git a/src/levels/index.js b/src/levels/index.js index 63fed8d3..b64cc3dc 100644 --- a/src/levels/index.js +++ b/src/levels/index.js @@ -39,7 +39,7 @@ exports.sequenceInfo = { }, rampup: { displayName: { - 'en_US': 'Ramping Up', + 'en_US': 'Ramping Up' }, about: { 'en_US': 'The next serving of 100% git awesomes-ness. Hope you\'re hungry' diff --git a/src/levels/mixed/2.js b/src/levels/mixed/2.js index 0817b743..25b3fdc5 100644 --- a/src/levels/mixed/2.js +++ b/src/levels/mixed/2.js @@ -10,7 +10,7 @@ exports.level = { "name": { "ko": "커밋들 갖고 놀기", "en_US": "Juggling Commits", - "zh_CN": "Git提交戏法" + "zh_CN": "提交变换戏法" }, "hint": { "en_US": "The first command is git rebase -i HEAD~2", @@ -63,7 +63,7 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "## Juggling Commits", + "## 提交变换戏法", "", "下面这种情况也是经常出现的。例如你之前已经在 `newImage` 分支上做了一些提交,然后又在 `caption` 分支上做了一些相关的提交,因此它们看起来是一个连一个的(stacked on top of each other in your repository)。", "", diff --git a/src/levels/mixed/3.js b/src/levels/mixed/3.js index f7293709..23e84101 100644 --- a/src/levels/mixed/3.js +++ b/src/levels/mixed/3.js @@ -64,9 +64,9 @@ exports.level = { "type": "ModalAlert", "options": { "markdowns": [ - "## Juggling Commits #2", + "## 提交变换戏法 #2", "", - "*假如你还没有完成 Juggling Commits #1(前一关),这关不让玩哦!*", + "*假如你还没有完成提交变换戏法 #1(前一关),这关不让玩哦!*", "", "如你在上一关所见,我们使用 `rebase -i` 来重排那些提交。只要把我们想要的提交挪到最顶端,我们就可以很容易地改变它,然后把它们重新排成我们想要的顺序。", "", diff --git a/src/levels/rebase/1.js b/src/levels/rebase/1.js index efe7cc64..c7c86220 100644 --- a/src/levels/rebase/1.js +++ b/src/levels/rebase/1.js @@ -8,12 +8,13 @@ exports.level = { "startTree": "{\"branches\":{\"master\":{\"target\":\"C2\",\"id\":\"master\"},\"bugFix\":{\"target\":\"C3\",\"id\":\"bugFix\"},\"side\":{\"target\":\"C6\",\"id\":\"side\"},\"another\":{\"target\":\"C7\",\"id\":\"another\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C1\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C0\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C4\"],\"id\":\"C5\"},\"C6\":{\"parents\":[\"C5\"],\"id\":\"C6\"},\"C7\":{\"parents\":[\"C5\"],\"id\":\"C7\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}", "name": { "ko": "9천번이 넘는 리베이스", - "en_US": "Rebasing over 9000 times" + "en_US": "Rebasing over 9000 times", + "zh_CN": "衍合一百遍啊一百遍" }, "hint": { "en_US": "Remember, the most efficient way might be to only update master at the end...", "ko": "아마도 master를 마지막에 업데이트하는 것이 가장 효율적인 방법일 것입니다...", - "zh_CN": "记住,可能最终最高效的方法就是更新 master 分支..." + "zh_CN": "记住,可能最终最高效的方法就是更新主分支(master)……" }, "startDialog": { "en_US": { @@ -44,7 +45,7 @@ exports.level = { "", "呐,现在我们有很多分支啦!让我们把这些分支的工作衍合到 master 分支上吧。", "", - "但是上头(upper management)给出了一点障碍 —— 他们要希望提交历史是有顺序的,也就是我们最终的结果是 `C7'` 在最底部,`C6'` 在它上面,以此类推。", + "但是上头(upper management)找了点麻烦 —— 他们要希望提交历史是有序的,也就是我们最终的结果是 `C7'` 在最底部,`C6'` 在它上面,以此类推。", "", "假如你搞砸了,没所谓的(虽然我不会告诉你用 `reset` 可以重新开始)。记得最后要看看我们的答案,并和你的对比下,看谁敲的命令更少哦!" ] diff --git a/src/levels/rebase/2.js b/src/levels/rebase/2.js index 133bdb6f..1f01649f 100644 --- a/src/levels/rebase/2.js +++ b/src/levels/rebase/2.js @@ -8,12 +8,13 @@ exports.level = { "startTree": "{\"branches\":{\"master\":{\"target\":\"C5\",\"id\":\"master\"},\"one\":{\"target\":\"C1\",\"id\":\"one\"},\"two\":{\"target\":\"C1\",\"id\":\"two\"},\"three\":{\"target\":\"C1\",\"id\":\"three\"}},\"commits\":{\"C0\":{\"parents\":[],\"id\":\"C0\",\"rootCommit\":true},\"C1\":{\"parents\":[\"C0\"],\"id\":\"C1\"},\"C2\":{\"parents\":[\"C1\"],\"id\":\"C2\"},\"C3\":{\"parents\":[\"C2\"],\"id\":\"C3\"},\"C4\":{\"parents\":[\"C3\"],\"id\":\"C4\"},\"C5\":{\"parents\":[\"C4\"],\"id\":\"C5\"}},\"HEAD\":{\"target\":\"master\",\"id\":\"HEAD\"}}", "name": { "ko": "브랜치 스파게티", - "en_US": "Branch Spaghetti" + "en_US": "Branch Spaghetti", + "zh_CN": "分支浆糊" }, "hint": { "en_US": "Make sure to do everything in the proper order! Branch one first, then two, then three", "ko": "이 문제를 해결하는 방법은 여러가지가 있습니다! 체리픽(cherry-pick)이 가장 쉽지만 오래걸리는 방법이고, 리베이스(rebase -i)가 빠른 방법입니다", - "zh_CN": "确保你是按照正确的顺序来操作!先操作分支 one, 再操作分支 two, 最后才是分支 three" + "zh_CN": "确保你是按照正确的顺序来操作!先操作分支 `one`, 然后 `two`, 最后才是 `three`" }, "startDialog": { "en_US": {