All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] i18n: po for zh_cn
@ 2012-02-01 15:50 Jiang Xin
  2012-02-01 17:48 ` Ævar Arnfjörð Bjarmason
  2012-02-01 23:45 ` Junio C Hamano
  0 siblings, 2 replies; 14+ messages in thread
From: Jiang Xin @ 2012-02-01 15:50 UTC (permalink / raw)
  To: Git List, Junio C Hamano; +Cc: Jiang Xin

Git can speak Chinese now.

Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
---
 po/zh_cn.po | 3568 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 个文件被修改, 3568 处添加(+), 0 处删除(-)
 create mode 100644 po/zh_cn.po

diff --git a/po/zh_cn.po b/po/zh_cn.po
new file mode 100644
index 00000..61a5b
--- /dev/null
+++ b/po/zh_cn.po
@@ -0,0 +1,3568 @@
+# Chinese translations for Git package
+# Git 软件包的简体中文翻译.
+# Copyright (C) 2012 Jiang Xin <worldhello.net AT gmail.com>
+# This file is distributed under the same license as the Git package.
+# Contributers:
+#   - Jiang Xin <worldhello.net AT gmail.com>
+#   - Riku <lu.riku AT gmail.com>
+#   - Zhuang Ya <zhuangya AT me.com>
+#   - Lian Cheng <rhythm.mail AT gmail.com>
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Git\n"
+"Report-Msgid-Bugs-To: Git Mailing List <git@vger.kernel.org>\n"
+"POT-Creation-Date: 2012-02-01 20:52+0800\n"
+"PO-Revision-Date: 2012-01-30 00:00+0800\n"
+"Last-Translator: riku <lu.riku@gmail.com>\n"
+"Language-Team: GitHub <https://github.com/gotgit/git-l10n-zh-cn/>\n"
+"Language: zh_CN\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: commit.c:47
+#, c-format
+msgid "could not parse %s"
+msgstr "不能解析 %s"
+
+#: commit.c:49
+#, c-format
+msgid "%s %s is not a commit!"
+msgstr "%s %s 不是一个提交!"
+
+#: compat/obstack.c:406 compat/obstack.c:408
+msgid "memory exhausted"
+msgstr "内存耗尽"
+
+#: connected.c:39
+msgid "Could not run 'git rev-list'"
+msgstr "不能执行 'git rev-list'"
+
+#: connected.c:48
+#, c-format
+msgid "failed write to rev-list: %s"
+msgstr "无法写入 rev-list:%s"
+
+#: connected.c:56
+#, c-format
+msgid "failed to close rev-list's stdin: %s"
+msgstr "无法关闭 rev-list 的标准输入:%s"
+
+#  注意保持前导空格
+#: diff.c:104
+#, c-format
+msgid "  Failed to parse dirstat cut-off percentage '%.*s'\n"
+msgstr "  无法解析 dirstat 阈值 '%.*s'\n"
+
+#  注意保持前导空格
+#: diff.c:109
+#, c-format
+msgid "  Unknown dirstat parameter '%.*s'\n"
+msgstr "  未知 dirstat 参数 '%.*s'\n"
+
+#: diff.c:208
+#, c-format
+msgid ""
+"Found errors in 'diff.dirstat' config variable:\n"
+"%s"
+msgstr ""
+"配置变量 'diff.dirstat' 出错:\n"
+"%s"
+
+#: diff.c:1479 diff.c:1510 builtin/apply.c:3244
+#, c-format
+msgid " %d files changed, %d insertions(+), %d deletions(-)\n"
+msgstr " %d 个文件被修改, %d 处添加(+), %d 处删除(-)\n"
+
+#: diff.c:3308
+#, c-format
+msgid ""
+"Failed to parse --dirstat/-X option parameter:\n"
+"%s"
+msgstr ""
+"无法解析 --dirstat/-X 选项的参数:\n"
+"%s"
+
+#: gpg-interface.c:59
+msgid "could not run gpg."
+msgstr "不能执行 gpg。"
+
+#: gpg-interface.c:71
+msgid "gpg did not accept the data"
+msgstr "gpg 没有接受数据"
+
+#: gpg-interface.c:82
+msgid "gpg failed to sign the data"
+msgstr "gpg 无法为数据签名"
+
+#: help.c:309
+#, c-format
+msgid ""
+"'%s' appears to be a git command, but we were not\n"
+"able to execute it. Maybe git-%s is broken?"
+msgstr ""
+"'%s' 像是一个 git 命令,但却无法运行。\n"
+"可能是 git-%s 受损?"
+
+#: remote.c:1575
+#, c-format
+msgid "Your branch is ahead of '%s' by %d %s.\n"
+msgstr "您的分支领先 '%s' 共 %d 个%s。\n"
+
+#: remote.c:1577 remote.c:1582
+msgid "commit"
+msgid_plural "commits"
+msgstr[0] "提交"
+
+#: remote.c:1579
+#, c-format
+msgid "Your branch is behind '%s' by %d %s, and can be fast-forwarded.\n"
+msgstr "您的分支落后 '%s' 共 %d 个%s,且可以快进式推送。\n"
+
+#: remote.c:1584
+#, c-format
+msgid ""
+"Your branch and '%s' have diverged,\n"
+"and have %d and %d different commit(s) each, respectively.\n"
+msgstr ""
+"您的分支和 '%s' 出现了偏离,\n"
+"并且各自分别有 %d 和 %d 处不同的提交。\n"
+
+#: wt-status.c:134
+msgid "Unmerged paths:"
+msgstr "未合并的路径:"
+
+#  注意保持前导空格
+#: wt-status.c:140 wt-status.c:157
+#, c-format
+msgid "  (use \"git reset %s <file>...\" to unstage)"
+msgstr "  (使用 \"git reset %s <file>...\" 撤出暂存区)"
+
+#  注意保持前导空格
+#: wt-status.c:142 wt-status.c:159
+msgid "  (use \"git rm --cached <file>...\" to unstage)"
+msgstr "  (使用 \"git rm --cached <file>...\" 撤出暂存区)"
+
+#  注意保持前导空格
+#: wt-status.c:143
+msgid "  (use \"git add/rm <file>...\" as appropriate to mark resolution)"
+msgstr "  (酌情使用 \"git add/rm <file>...\" 标记解决方案)"
+
+#: wt-status.c:151
+msgid "Changes to be committed:"
+msgstr "要提交的变更:"
+
+#: wt-status.c:169
+msgid "Changes not staged for commit:"
+msgstr "未暂存至提交的变更:"
+
+#  注意保持前导空格
+#: wt-status.c:173
+msgid "  (use \"git add <file>...\" to update what will be committed)"
+msgstr "  (使用 \"git add <file>...\" 更新要提交的内容)"
+
+#  注意保持前导空格
+#: wt-status.c:175
+msgid "  (use \"git add/rm <file>...\" to update what will be committed)"
+msgstr "  (使用 \"git add/rm <file>...\" 更新要提交的内容)"
+
+#  注意保持前导空格
+#: wt-status.c:176
+msgid ""
+"  (use \"git checkout -- <file>...\" to discard changes in working directory)"
+msgstr "  (使用 \"git checkout -- <file>...\" 丢弃工作区的改动)"
+
+#  注意保持前导空格
+#: wt-status.c:178
+msgid "  (commit or discard the untracked or modified content in submodules)"
+msgstr "  (提交或丢弃子模组中未跟踪或修改的内容)"
+
+#: wt-status.c:187
+#, c-format
+msgid "%s files:"
+msgstr "%s文件:"
+
+#  注意保持前导空格
+#: wt-status.c:190
+#, c-format
+msgid "  (use \"git %s <file>...\" to include in what will be committed)"
+msgstr "  (使用 \"git %s <file>...\" 包含到提交列表)"
+
+#: wt-status.c:207
+msgid "bug"
+msgstr "bug"
+
+#: wt-status.c:212
+msgid "both deleted:"
+msgstr "双方删除:"
+
+#: wt-status.c:213
+msgid "added by us:"
+msgstr "由我们添加:"
+
+#: wt-status.c:214
+msgid "deleted by them:"
+msgstr "由他们删除:"
+
+#: wt-status.c:215
+msgid "added by them:"
+msgstr "由他们添加:"
+
+#: wt-status.c:216
+msgid "deleted by us:"
+msgstr "由我们删除:"
+
+#: wt-status.c:217
+msgid "both added:"
+msgstr "双方添加:"
+
+#: wt-status.c:218
+msgid "both modified:"
+msgstr "双方修改:"
+
+#: wt-status.c:248
+msgid "new commits, "
+msgstr "新提交,"
+
+#: wt-status.c:250
+msgid "modified content, "
+msgstr "修改的内容,"
+
+#: wt-status.c:252
+msgid "untracked content, "
+msgstr "未跟踪的内容,"
+
+#  为保证在输出中对齐,注意调整句中空格!
+#: wt-status.c:266
+#, c-format
+msgid "new file:   %s"
+msgstr "新文件:    %s"
+
+#  为保证在输出中对齐,注意调整句中空格!
+#: wt-status.c:269
+#, c-format
+msgid "copied:     %s -> %s"
+msgstr "拷贝:      %s -> %s"
+
+#  为保证在输出中对齐,注意调整句中空格!
+#: wt-status.c:272
+#, c-format
+msgid "deleted:    %s"
+msgstr "删除:      %s"
+
+#  为保证在输出中对齐,注意调整句中空格!
+#: wt-status.c:275
+#, c-format
+msgid "modified:   %s"
+msgstr "修改:      %s"
+
+#  为保证在输出中对齐,注意调整句中空格!
+#: wt-status.c:278
+#, c-format
+msgid "renamed:    %s -> %s"
+msgstr "重命名:    %s -> %s"
+
+#  为保证在输出中对齐,注意调整句中空格!
+#: wt-status.c:281
+#, c-format
+msgid "typechange: %s"
+msgstr "类型变更:  %s"
+
+#  为保证在输出中对齐,注意调整句中空格!
+#: wt-status.c:284
+#, c-format
+msgid "unknown:    %s"
+msgstr "未知:      %s"
+
+#  为保证在输出中对齐,注意调整句中空格!
+#: wt-status.c:287
+#, c-format
+msgid "unmerged:   %s"
+msgstr "未合并:    %s"
+
+#: wt-status.c:290
+#, c-format
+msgid "bug: unhandled diff status %c"
+msgstr "bug: 未处理的差异状态 %c"
+
+#: wt-status.c:713
+msgid "On branch "
+msgstr "位于分支 "
+
+#: wt-status.c:720
+msgid "Not currently on any branch."
+msgstr "当前不在任何分支上。"
+
+#: wt-status.c:731
+msgid "Initial commit"
+msgstr "初始提交"
+
+#: wt-status.c:745
+msgid "Untracked"
+msgstr "未跟踪的"
+
+#: wt-status.c:747
+msgid "Ignored"
+msgstr "忽略的"
+
+#: wt-status.c:749
+#, c-format
+msgid "Untracked files not listed%s"
+msgstr "未跟踪的文件没有列出%s"
+
+#  注意保持前导空格
+#: wt-status.c:751
+msgid " (use -u option to show untracked files)"
+msgstr " (使用 -u 参数显示未跟踪的文件)"
+
+#: wt-status.c:757
+msgid "No changes"
+msgstr "没有修改"
+
+#: wt-status.c:761
+#, c-format
+msgid "no changes added to commit%s\n"
+msgstr "修改尚未加入提交%s\n"
+
+#  注意保持前导空格
+#: wt-status.c:763
+msgid " (use \"git add\" and/or \"git commit -a\")"
+msgstr " (使用 \"git add\" 和/或 \"git commit -a\")"
+
+#: wt-status.c:765
+#, c-format
+msgid "nothing added to commit but untracked files present%s\n"
+msgstr "空提交但存在未跟踪文件%s\n"
+
+#  注意保持前导空格
+#: wt-status.c:767
+msgid " (use \"git add\" to track)"
+msgstr " (使用 \"git add\" 建立跟踪)"
+
+#: wt-status.c:769 wt-status.c:772 wt-status.c:775
+#, c-format
+msgid "nothing to commit%s\n"
+msgstr "无须提交%s\n"
+
+#  注意保持前导空格
+#: wt-status.c:770
+msgid " (create/copy files and use \"git add\" to track)"
+msgstr " (新建/拷贝的文件使用 \"git add\" 建立跟踪)"
+
+#  注意保持前导空格
+#: wt-status.c:773
+msgid " (use -u to show untracked files)"
+msgstr " (使用 -u 显示未跟踪文件)"
+
+#  注意保持前导空格
+#: wt-status.c:776
+msgid " (working directory clean)"
+msgstr " (干净的工作区)"
+
+#: wt-status.c:884
+msgid "HEAD (no branch)"
+msgstr "头(非分支)"
+
+#  注意保持句尾空格
+#: wt-status.c:890
+msgid "Initial commit on "
+msgstr "初始提交于 "
+
+#  注意保持句尾空格
+#: wt-status.c:905
+msgid "behind "
+msgstr "落后 "
+
+#  注意保持句尾空格
+#: wt-status.c:908 wt-status.c:911
+msgid "ahead "
+msgstr "领先 "
+
+#  注意保持句尾空格
+#: wt-status.c:913
+msgid ", behind "
+msgstr ",落后 "
+
+#: builtin/add.c:62
+#, c-format
+msgid "unexpected diff status %c"
+msgstr "意外的差异状态 %c"
+
+#: builtin/add.c:67 builtin/commit.c:298
+msgid "updating files failed"
+msgstr "更新文件失败"
+
+#: builtin/add.c:77
+#, c-format
+msgid "remove '%s'\n"
+msgstr "删除 '%s'\n"
+
+#: builtin/add.c:176
+#, c-format
+msgid "Path '%s' is in submodule '%.*s'"
+msgstr "路径 '%s' 属于模组 '%.*s'"
+
+#: builtin/add.c:192
+msgid "Unstaged changes after refreshing the index:"
+msgstr "刷新暂存区后未暂存的变更:"
+
+#: builtin/add.c:195 builtin/add.c:455 builtin/rm.c:186
+#, c-format
+msgid "pathspec '%s' did not match any files"
+msgstr "路径 '%s' 未匹配任何文件"
+
+#: builtin/add.c:209
+#, c-format
+msgid "'%s' is beyond a symbolic link"
+msgstr "'%s' 位于符号链接中"
+
+#: builtin/add.c:276
+msgid "Could not read the index"
+msgstr "无法读取暂存区"
+
+#: builtin/add.c:285
+#, c-format
+msgid "Could not open '%s' for writing."
+msgstr "无法打开 '%s' 以写入。"
+
+#: builtin/add.c:289
+msgid "Could not write patch"
+msgstr "无法写补丁"
+
+#: builtin/add.c:294
+#, c-format
+msgid "Could not stat '%s'"
+msgstr "无法查看文件状态 '%s'"
+
+#: builtin/add.c:296
+msgid "Empty patch. Aborted."
+msgstr "空补丁。异常终止。"
+
+#: builtin/add.c:302
+#, c-format
+msgid "Could not apply '%s'"
+msgstr "无法应用 '%s'"
+
+#: builtin/add.c:311
+msgid "The following paths are ignored by one of your .gitignore files:\n"
+msgstr "下列路径被您的一个 .gitignore 文件所忽略:\n"
+
+#: builtin/add.c:351
+#, c-format
+msgid "Use -f if you really want to add them.\n"
+msgstr "使用 -f 参数如果你确实要添加它们。\n"
+
+#: builtin/add.c:352
+msgid "no files added"
+msgstr "没有文件被添加"
+
+#: builtin/add.c:358
+msgid "adding files failed"
+msgstr "添加文件失败"
+
+#: builtin/add.c:390
+msgid "-A and -u are mutually incompatible"
+msgstr "-A 和 -u 选项互斥"
+
+#: builtin/add.c:392
+msgid "Option --ignore-missing can only be used together with --dry-run"
+msgstr "选项 --ignore-missing 只能和 --dry-run 共用"
+
+#: builtin/add.c:412
+#, c-format
+msgid "Nothing specified, nothing added.\n"
+msgstr "未提供参数,没有文件被添加。\n"
+
+#: builtin/add.c:413
+#, c-format
+msgid "Maybe you wanted to say 'git add .'?\n"
+msgstr "也许您想要执行 'git add .'?\n"
+
+#: builtin/add.c:419 builtin/clean.c:95 builtin/commit.c:358 builtin/mv.c:82
+#: builtin/rm.c:162
+msgid "index file corrupt"
+msgstr "暂存区文件损坏"
+
+#: builtin/add.c:475 builtin/mv.c:229 builtin/rm.c:260
+msgid "Unable to write new index file"
+msgstr "无法写入新暂存区文件"
+
+#: builtin/archive.c:17
+#, c-format
+msgid "could not create archive file '%s'"
+msgstr "无法创建归档文件 '%s'"
+
+#: builtin/archive.c:20
+msgid "could not redirect output"
+msgstr "无法重定向输出"
+
+#: builtin/archive.c:37
+msgid "git archive: Remote with no URL"
+msgstr "git archive: 未提供远程URL"
+
+#: builtin/archive.c:58
+msgid "git archive: expected ACK/NAK, got EOF"
+msgstr "git archive: 期待ACK/NACK,却得到EOF"
+
+#: builtin/archive.c:63
+#, c-format
+msgid "git archive: NACK %s"
+msgstr "git archive: NACK %s"
+
+#: builtin/archive.c:65
+#, c-format
+msgid "remote error: %s"
+msgstr "远程错误:%s"
+
+#: builtin/archive.c:66
+msgid "git archive: protocol error"
+msgstr "git archive: 协议错误"
+
+#: builtin/archive.c:71
+msgid "git archive: expected a flush"
+msgstr "git archive: 预期一个刷新"
+
+#: builtin/branch.c:137
+#, c-format
+msgid ""
+"deleting branch '%s' that has been merged to\n"
+"         '%s', but not yet merged to HEAD."
+msgstr ""
+"要删除的分支 '%s' 已经合并到\n"
+"         '%s',但未合并到 HEAD。"
+
+#: builtin/branch.c:141
+#, c-format
+msgid ""
+"not deleting branch '%s' that is not yet merged to\n"
+"         '%s', even though it is merged to HEAD."
+msgstr ""
+"不要删除分支 '%s' 其尚未合并到\n"
+"         '%s',虽然它已经合并到 HEAD。"
+
+#  汉字之间无空格,故删除尾部空格
+#. TRANSLATORS: This is "remote " in "remote branch '%s' not found"
+#: builtin/branch.c:163
+msgid "remote "
+msgstr "远程"
+
+#: builtin/branch.c:171
+msgid "cannot use -a with -d"
+msgstr "不能将 -a 和 -d 共用"
+
+#: builtin/branch.c:177
+msgid "Couldn't look up commit object for HEAD"
+msgstr "无法查询 HEAD 指向的提交对象"
+
+#: builtin/branch.c:182
+#, c-format
+msgid "Cannot delete the branch '%s' which you are currently on."
+msgstr "无法删除您当前所在的分支 '%s'。"
+
+#: builtin/branch.c:192
+#, c-format
+msgid "%sbranch '%s' not found."
+msgstr "%s分支 '%s' 未发现。"
+
+#: builtin/branch.c:200
+#, c-format
+msgid "Couldn't look up commit object for '%s'"
+msgstr "无法查询 '%s' 指向的提交对象"
+
+#: builtin/branch.c:206
+#, c-format
+msgid ""
+"The branch '%s' is not fully merged.\n"
+"If you are sure you want to delete it, run 'git branch -D %s'."
+msgstr ""
+"分支 '%s' 没有完全合并。\n"
+"如果您确认要删除它,执行 'git branch -D %s'。"
+
+#: builtin/branch.c:214
+#, c-format
+msgid "Error deleting %sbranch '%s'"
+msgstr "错误删除 %s分支 '%s'"
+
+#: builtin/branch.c:219
+#, c-format
+msgid "Deleted %sbranch %s (was %s).\n"
+msgstr "已删除 %s分支 %s(曾为 %s)。\n"
+
+#: builtin/branch.c:224
+msgid "Update of config-file failed"
+msgstr "无法更新 config 文件"
+
+#: builtin/branch.c:322
+#, c-format
+msgid "branch '%s' does not point at a commit"
+msgstr "分支 '%s' 未指向一个提交"
+
+#  注意保持句尾空格
+#: builtin/branch.c:394
+#, c-format
+msgid "behind %d] "
+msgstr "落后 %d] "
+
+#  注意保持句尾空格
+#: builtin/branch.c:396
+#, c-format
+msgid "ahead %d] "
+msgstr "领先 %d] "
+
+#  注意保持句尾空格
+#: builtin/branch.c:398
+#, c-format
+msgid "ahead %d, behind %d] "
+msgstr "领先 %d,落后 %d] "
+
+#: builtin/branch.c:501
+msgid "(no branch)"
+msgstr "(非分支)"
+
+#: builtin/branch.c:562
+msgid "some refs could not be read"
+msgstr "一些引用无法读取"
+
+#: builtin/branch.c:575
+msgid "cannot rename the current branch while not on any."
+msgstr "无法重命名不存在的当前分支。"
+
+#: builtin/branch.c:585
+#, c-format
+msgid "Invalid branch name: '%s'"
+msgstr "无效的分支名:'%s'"
+
+#: builtin/branch.c:600
+msgid "Branch rename failed"
+msgstr "分支重命名失败"
+
+#: builtin/branch.c:604
+#, c-format
+msgid "Renamed a misnamed branch '%s' away"
+msgstr "重命名掉一个错误命名的旧分支 '%s'"
+
+#: builtin/branch.c:608
+#, c-format
+msgid "Branch renamed to %s, but HEAD is not updated!"
+msgstr "分支重命名为 %s,但 HEAD 没有更新!"
+
+#: builtin/branch.c:615
+msgid "Branch is renamed, but update of config-file failed"
+msgstr "分支被重命名,但更新 config 文件失败"
+
+#: builtin/branch.c:630
+#, c-format
+msgid "malformed object name %s"
+msgstr "非法的对象名 %s"
+
+#: builtin/branch.c:654
+#, c-format
+msgid "could not write branch description template: %s\n"
+msgstr "不能写分支描述模版:%s\n"
+
+#: builtin/branch.c:742
+msgid "Failed to resolve HEAD as a valid ref."
+msgstr "无法将 HEAD 解析为有效引用。"
+
+#: builtin/branch.c:747
+msgid "HEAD not found below refs/heads!"
+msgstr "未在 /refs/heads 下发现 HEAD!"
+
+#: builtin/branch.c:790
+msgid "-a and -r options to 'git branch' do not make sense with a branch name"
+msgstr "'git branch' 的 -a 和 -r 选项带一个分支名参数没有意义"
+
+#: builtin/bundle.c:47
+#, c-format
+msgid "%s is okay\n"
+msgstr "%s 可以\n"
+
+#: builtin/bundle.c:56
+msgid "Need a repository to create a bundle."
+msgstr "需要一个版本库来创建包"
+
+#: builtin/bundle.c:60
+msgid "Need a repository to unbundle."
+msgstr "需要一个版本库来解包"
+
+#: builtin/checkout.c:113 builtin/checkout.c:146
+#, c-format
+msgid "path '%s' does not have our version"
+msgstr "路径 '%s' 没有我们的版本"
+
+#: builtin/checkout.c:115 builtin/checkout.c:148
+#, c-format
+msgid "path '%s' does not have their version"
+msgstr "路径 '%s' 没有他们的版本"
+
+#: builtin/checkout.c:131
+#, c-format
+msgid "path '%s' does not have all necessary versions"
+msgstr "路径 '%s' 没有全部必须的版本"
+
+#: builtin/checkout.c:175
+#, c-format
+msgid "path '%s' does not have necessary versions"
+msgstr "路径 '%s' 没有必须的版本"
+
+#: builtin/checkout.c:192
+#, c-format
+msgid "path '%s': cannot merge"
+msgstr "path '%s': 无法合并"
+
+#: builtin/checkout.c:209
+#, c-format
+msgid "Unable to add merge result for '%s'"
+msgstr "无法为 '%s' 添加合并结果"
+
+#: builtin/checkout.c:212 builtin/reset.c:158
+#, c-format
+msgid "make_cache_entry failed for path '%s'"
+msgstr "对路径 '%s' 的 make_cache_entry 操作失败"
+
+#: builtin/checkout.c:234 builtin/checkout.c:392
+msgid "corrupt index file"
+msgstr "冲突的暂存区文件"
+
+#: builtin/checkout.c:264 builtin/checkout.c:271
+#, c-format
+msgid "path '%s' is unmerged"
+msgstr "路径 '%s' 未合并"
+
+#: builtin/checkout.c:302 builtin/checkout.c:498 builtin/clone.c:769
+#: builtin/merge.c:809
+msgid "unable to write new index file"
+msgstr "无法写新的暂存区文件"
+
+#: builtin/checkout.c:319 builtin/diff.c:298 builtin/merge.c:406
+msgid "diff_setup_done failed"
+msgstr "diff_setup_done 失败"
+
+#: builtin/checkout.c:414
+msgid "you need to resolve your current index first"
+msgstr "您需要先解决当前暂存区的冲突"
+
+#: builtin/checkout.c:547
+#, c-format
+msgid "Can not do reflog for '%s'\n"
+msgstr "不能对 '%s' 保存引用日志\n"
+
+#: builtin/checkout.c:579
+msgid "HEAD is now at"
+msgstr "HEAD 目前位于"
+
+#: builtin/checkout.c:586
+#, c-format
+msgid "Reset branch '%s'\n"
+msgstr "重置分支 '%s'\n"
+
+#: builtin/checkout.c:589
+#, c-format
+msgid "Already on '%s'\n"
+msgstr "已经位于 '%s'\n"
+
+#: builtin/checkout.c:593
+#, c-format
+msgid "Switched to and reset branch '%s'\n"
+msgstr "切换并重置分支 '%s'\n"
+
+#: builtin/checkout.c:595
+#, c-format
+msgid "Switched to a new branch '%s'\n"
+msgstr "切换到一个新分支 '%s'\n"
+
+#: builtin/checkout.c:597
+#, c-format
+msgid "Switched to branch '%s'\n"
+msgstr "切换到分支 '%s'\n"
+
+#  注意保持前导空格
+#: builtin/checkout.c:653
+#, c-format
+msgid " ... and %d more.\n"
+msgstr " ... 及 %d 更多。\n"
+
+#. The singular version
+#: builtin/checkout.c:659
+#, c-format
+msgid ""
+"Warning: you are leaving %d commit behind, not connected to\n"
+"any of your branches:\n"
+"\n"
+"%s\n"
+msgid_plural ""
+"Warning: you are leaving %d commits behind, not connected to\n"
+"any of your branches:\n"
+"\n"
+"%s\n"
+msgstr[0] ""
+"警告:您正丢下 %d 个提交,未和任何分支关联:\n"
+"\n"
+"%s\n"
+
+#: builtin/checkout.c:677
+#, c-format
+msgid ""
+"If you want to keep them by creating a new branch, this may be a good time\n"
+"to do so with:\n"
+"\n"
+" git branch new_branch_name %s\n"
+"\n"
+msgstr ""
+"如果您想要通过创建新分支保存他们,这可能是一个好时候。\n"
+"如下操作:\n"
+"\n"
+" git branch new_branch_name %s\n"
+"\n"
+
+#: builtin/checkout.c:706
+msgid "internal error in revision walk"
+msgstr "在版本遍历时遇到内部错误"
+
+#: builtin/checkout.c:710
+msgid "Previous HEAD position was"
+msgstr "之前的 HEAD 位置是"
+
+#: builtin/checkout.c:736
+msgid "You are on a branch yet to be born"
+msgstr "您位于一个未初始化的分支"
+
+#. case (1)
+#: builtin/checkout.c:867
+#, c-format
+msgid "invalid reference: %s"
+msgstr "无效引用:%s"
+
+#. case (1): want a tree
+#: builtin/checkout.c:906
+#, c-format
+msgid "reference is not a tree: %s"
+msgstr "引用不是一个树:%s"
+
+#: builtin/checkout.c:975
+msgid "-B cannot be used with -b"
+msgstr "-B 不能和 -b 共用"
+
+#: builtin/checkout.c:984
+msgid "--patch is incompatible with all other options"
+msgstr "--patch 选项和其他选项不兼容"
+
+#: builtin/checkout.c:987
+msgid "--detach cannot be used with -b/-B/--orphan"
+msgstr "--detach 不能和 -b/-B/--orphan 共用"
+
+#: builtin/checkout.c:989
+msgid "--detach cannot be used with -t"
+msgstr "--detach 不能和 -t 共用"
+
+#: builtin/checkout.c:995
+msgid "--track needs a branch name"
+msgstr "--track 需要一个分支名"
+
+#: builtin/checkout.c:1002
+msgid "Missing branch name; try -b"
+msgstr "缺少分支名;尝试 -b"
+
+#: builtin/checkout.c:1008
+msgid "--orphan and -b|-B are mutually exclusive"
+msgstr "--orphan 和 -b|-B 互斥"
+
+#: builtin/checkout.c:1010
+msgid "--orphan cannot be used with -t"
+msgstr "--orphan 不能和 -t 共用"
+
+#: builtin/checkout.c:1020
+msgid "git checkout: -f and -m are incompatible"
+msgstr "git checkout: -f 和 -m 不兼容"
+
+#: builtin/checkout.c:1054
+msgid "invalid path specification"
+msgstr "无效的路径"
+
+#: builtin/checkout.c:1062
+#, c-format
+msgid ""
+"git checkout: updating paths is incompatible with switching branches.\n"
+"Did you intend to checkout '%s' which can not be resolved as commit?"
+msgstr ""
+"git checkout: 更新路径和切换分支不兼容。\n"
+"您是想要检出 '%s' 但未能将其解析为提交么?"
+
+#: builtin/checkout.c:1064
+msgid "git checkout: updating paths is incompatible with switching branches."
+msgstr "git checkout: 更新路径和切换分支不兼容。"
+
+#: builtin/checkout.c:1069
+msgid "git checkout: --detach does not take a path argument"
+msgstr "git checkout: --detach 不跟路径参数"
+
+#: builtin/checkout.c:1072
+msgid ""
+"git checkout: --ours/--theirs, --force and --merge are incompatible when\n"
+"checking out of the index."
+msgstr ""
+"git checkout: --ours/--theirs, --force 和 --merge 不兼容当\n"
+"检出暂存区时。"
+
+#: builtin/checkout.c:1091
+msgid "Cannot switch branch to a non-commit."
+msgstr "无法切换分支到一个非提交。"
+
+#: builtin/checkout.c:1094
+msgid "--ours/--theirs is incompatible with switching branches."
+msgstr "--ours/--theirs 和切换分支不兼容。"
+
+#: builtin/clean.c:78
+msgid "-x and -X cannot be used together"
+msgstr "-x 和 -X 不能共用"
+
+#: builtin/clean.c:82
+msgid ""
+"clean.requireForce set to true and neither -n nor -f given; refusing to clean"
+msgstr ""
+"clean.requireForce 设置为 true,若未提供 -n 或 -f 选项,拒绝执行清理动作"
+
+#: builtin/clean.c:85
+msgid ""
+"clean.requireForce defaults to true and neither -n nor -f given; refusing to "
+"clean"
+msgstr ""
+"clean.requireForce 默认为 true,若未提供 -n 或 -f 选项,拒绝执行清理动作"
+
+#: builtin/clean.c:155 builtin/clean.c:176
+#, c-format
+msgid "Would remove %s\n"
+msgstr "将删除 %s\n"
+
+#: builtin/clean.c:159 builtin/clean.c:179
+#, c-format
+msgid "Removing %s\n"
+msgstr "正删除 %s\n"
+
+#: builtin/clean.c:162 builtin/clean.c:182
+#, c-format
+msgid "failed to remove %s"
+msgstr "无法删除 %s"
+
+#: builtin/clean.c:166
+#, c-format
+msgid "Would not remove %s\n"
+msgstr "不会删除 %s\n"
+
+#: builtin/clean.c:168
+#, c-format
+msgid "Not removing %s\n"
+msgstr "未删除 %s\n"
+
+#: builtin/clone.c:244
+#, c-format
+msgid "reference repository '%s' is not a local directory."
+msgstr "引用版本库 '%s' 不是一个本地目录。"
+
+#: builtin/clone.c:311
+#, c-format
+msgid "failed to open '%s'"
+msgstr "打开 '%s' 失败"
+
+#: builtin/clone.c:315
+#, c-format
+msgid "failed to create directory '%s'"
+msgstr "创建目录 '%s' 失败"
+
+#: builtin/clone.c:317 builtin/diff.c:75
+#, c-format
+msgid "failed to stat '%s'"
+msgstr "枚举 '%s' 状态失败"
+
+#: builtin/clone.c:319
+#, c-format
+msgid "%s exists and is not a directory"
+msgstr "%s 存在且不是一个目录"
+
+#: builtin/clone.c:333
+#, c-format
+msgid "failed to stat %s\n"
+msgstr "枚举 %s 状态失败\n"
+
+#: builtin/clone.c:350
+#, c-format
+msgid "failed to unlink '%s'"
+msgstr "删除 '%s' 失败"
+
+#: builtin/clone.c:355
+#, c-format
+msgid "failed to create link '%s'"
+msgstr "创建链接 '%s' 失败"
+
+#: builtin/clone.c:359
+#, c-format
+msgid "failed to copy file to '%s'"
+msgstr "拷贝文件至 '%s' 失败"
+
+#: builtin/clone.c:391
+#, c-format
+msgid "done.\n"
+msgstr "完成。\n"
+
+#: builtin/clone.c:494
+msgid "Too many arguments."
+msgstr "太多参数。"
+
+#: builtin/clone.c:498
+msgid "You must specify a repository to clone."
+msgstr "你必须指定一个版本库来克隆"
+
+#: builtin/clone.c:506
+#, c-format
+msgid "--bare and --origin %s options are incompatible."
+msgstr "--bare 和 --origin %s 选项不兼容。"
+
+#: builtin/clone.c:520
+#, c-format
+msgid "repository '%s' does not exist"
+msgstr "版本库 '%s' 不存在"
+
+#: builtin/clone.c:525
+msgid "--depth is ignored in local clones; use file:// instead."
+msgstr "--depth 在本地克隆被忽略,改为 file:// 协议试试。"
+
+#: builtin/clone.c:535
+#, c-format
+msgid "destination path '%s' already exists and is not an empty directory."
+msgstr "目标路径 '%s' 已经存在且不是一个空目录。"
+
+#: builtin/clone.c:545
+#, c-format
+msgid "working tree '%s' already exists."
+msgstr "工作区 '%s' 已经存在。"
+
+#: builtin/clone.c:558 builtin/clone.c:572
+#, c-format
+msgid "could not create leading directories of '%s'"
+msgstr "无法为 '%s' 创建目录"
+
+#: builtin/clone.c:561
+#, c-format
+msgid "could not create work tree dir '%s'."
+msgstr "无法为 '%s' 创建工作区目录。"
+
+#: builtin/clone.c:580
+#, c-format
+msgid "Cloning into bare repository '%s'...\n"
+msgstr "克隆到裸版本库 '%s'...\n"
+
+#: builtin/clone.c:582
+#, c-format
+msgid "Cloning into '%s'...\n"
+msgstr "正克隆到 '%s'...\n"
+
+#: builtin/clone.c:641
+#, c-format
+msgid "Don't know how to clone %s"
+msgstr "不知道如何克隆 %s"
+
+#: builtin/clone.c:680
+#, c-format
+msgid "Remote branch %s not found in upstream %s, using HEAD instead"
+msgstr "远程分支 %s 在上游 %s 未发现,改为使用 HEAD"
+
+#: builtin/clone.c:690
+msgid "You appear to have cloned an empty repository."
+msgstr "您似乎克隆了一个空版本库。"
+
+#: builtin/clone.c:732
+msgid "remote HEAD refers to nonexistent ref, unable to checkout.\n"
+msgstr "远程 HEAD 指向一个不存在的引用,无法检出。\n"
+
+#: builtin/commit.c:42
+msgid ""
+"Your name and email address were configured automatically based\n"
+"on your username and hostname. Please check that they are accurate.\n"
+"You can suppress this message by setting them explicitly:\n"
+"\n"
+"    git config --global user.name \"Your Name\"\n"
+"    git config --global user.email you@example.com\n"
+"\n"
+"After doing this, you may fix the identity used for this commit with:\n"
+"\n"
+"    git commit --amend --reset-author\n"
+msgstr ""
+"您的姓名和邮件地址会基于您的用户名和主机地址自动配置。请检查它们\n"
+"正确与否。您可通过下面命令对其显式声明以避免重复出现类似提示:\n"
+"\n"
+"    git config --global user.name \"Your Name\"\n"
+"    git config --global user.email you@example.com\n"
+"\n"
+"设置完毕后,您可用下面命令来更改此次提交所使用的用户ID:\n"
+"\n"
+"    git commit --amend --reset-author\n"
+
+#: builtin/commit.c:54
+msgid ""
+"You asked to amend the most recent commit, but doing so would make\n"
+"it empty. You can repeat your command with --allow-empty, or you can\n"
+"remove the commit entirely with \"git reset HEAD^\".\n"
+msgstr ""
+"您要求修补最近的提交,但这么做会造成空提交。您可重复您的命令并带上\n"
+"--allow-empty 选项,或者您可以整个删除该提交用 \"git reset HEAD^\"。\n"
+
+#: builtin/commit.c:59
+msgid ""
+"The previous cherry-pick is now empty, possibly due to conflict resolution.\n"
+"If you wish to commit it anyway, use:\n"
+"\n"
+"    git commit --allow-empty\n"
+"\n"
+"Otherwise, please use 'git reset'\n"
+msgstr ""
+"之前的拣选操作现在为空,可能是由冲突解决导致的。如果您想继续提交,用:\n"
+"\n"
+"    git commit --allow-empty\n"
+"\n"
+"否则,请用 'git reset'\n"
+
+#: builtin/commit.c:205 builtin/reset.c:33
+msgid "merge"
+msgstr "合并"
+
+#: builtin/commit.c:208
+msgid "cherry-pick"
+msgstr "拣选"
+
+#: builtin/commit.c:325
+msgid "failed to unpack HEAD tree object"
+msgstr "解包 HEAD 树对象失败"
+
+#: builtin/commit.c:367
+msgid "unable to create temporary index"
+msgstr "不能创建临时暂存区"
+
+#: builtin/commit.c:373
+msgid "interactive add failed"
+msgstr "交互式添加失败"
+
+#: builtin/commit.c:406 builtin/commit.c:427 builtin/commit.c:473
+msgid "unable to write new_index file"
+msgstr "无法写入新暂存区文件"
+
+#  %s若翻为中文,前后不需要空格
+#: builtin/commit.c:457
+#, c-format
+msgid "cannot do a partial commit during a %s."
+msgstr "在%s过程中不能做部分提交。"
+
+#: builtin/commit.c:466
+msgid "cannot read the index"
+msgstr "无法读取暂存区"
+
+#: builtin/commit.c:486
+msgid "unable to write temporary index file"
+msgstr "无法写临时暂存区文件"
+
+#: builtin/commit.c:549 builtin/commit.c:555
+#, c-format
+msgid "invalid commit: %s"
+msgstr "无效的提交:%s"
+
+#: builtin/commit.c:573
+msgid "malformed --author parameter"
+msgstr "非法的 --author 参数"
+
+#: builtin/commit.c:629
+#, c-format
+msgid "Malformed ident string: '%s'"
+msgstr "非法的识别字串:'%s'"
+
+#: builtin/commit.c:664 builtin/commit.c:697 builtin/commit.c:994
+#, c-format
+msgid "could not lookup commit %s"
+msgstr "不能查询提交 %s"
+
+#: builtin/commit.c:676 builtin/shortlog.c:296
+#, c-format
+msgid "(reading log message from standard input)\n"
+msgstr "(正从标准输入中读取说明信息)\n"
+
+#: builtin/commit.c:678
+msgid "could not read log from standard input"
+msgstr "无法从标准输入中读取说明信息"
+
+#: builtin/commit.c:682
+#, c-format
+msgid "could not read log file '%s'"
+msgstr "无法读取说明文件 '%s'"
+
+#: builtin/commit.c:688
+msgid "commit has empty message"
+msgstr "提交说明为空"
+
+#: builtin/commit.c:704
+msgid "could not read MERGE_MSG"
+msgstr "无法读取 MERGE_MSG"
+
+#: builtin/commit.c:708
+msgid "could not read SQUASH_MSG"
+msgstr "无法读取 SQUASH_MSG"
+
+#: builtin/commit.c:712
+#, c-format
+msgid "could not read '%s'"
+msgstr "无法读取 '%s'"
+
+#: builtin/commit.c:740
+#, c-format
+msgid "could not open '%s'"
+msgstr "无法打开 '%s'"
+
+#: builtin/commit.c:764
+msgid "could not write commit template"
+msgstr "无法写提交模版"
+
+#  %s若翻为中文,前后不需要空格
+#: builtin/commit.c:777
+#, c-format
+msgid ""
+"\n"
+"It looks like you may be committing a %s.\n"
+"If this is not correct, please remove the file\n"
+"\t%s\n"
+"and try again.\n"
+msgstr ""
+"\n"
+"看起来您正在提交一个%s。\n"
+"如果不是这样,请删除文件\n"
+"\t%s\n"
+"然后重试。\n"
+
+#  注意保持前导空格
+#: builtin/commit.c:790
+msgid "Please enter the commit message for your changes."
+msgstr "请为您的修改输入提交说明。"
+
+#: builtin/commit.c:793
+msgid ""
+" Lines starting\n"
+"with '#' will be ignored, and an empty message aborts the commit.\n"
+msgstr ""
+" 以 '#' 开头\n"
+"的行将被忽略,而且空提交说明将会终止提交。\n"
+
+#  注意保持前导空格
+#: builtin/commit.c:798
+msgid ""
+" Lines starting\n"
+"with '#' will be kept; you may remove them yourself if you want to.\n"
+"An empty message aborts the commit.\n"
+msgstr ""
+" 以 '#' 开头\n"
+"的行将被保留,您可以删除它们如果您想这样做。空提交说明将会终止提交。\n"
+
+#  为保证在输出中对齐,注意调整句中空格!
+#: builtin/commit.c:810
+#, c-format
+msgid "%sAuthor:    %s"
+msgstr "%s作者:     %s"
+
+#  为保证在输出中对齐,注意调整句中空格!
+#: builtin/commit.c:817
+#, c-format
+msgid "%sCommitter: %s"
+msgstr "%s提交者:   %s"
+
+#: builtin/commit.c:837
+msgid "Cannot read index"
+msgstr "无法读取暂存区"
+
+#: builtin/commit.c:874
+msgid "Error building trees"
+msgstr "无法创建树对象"
+
+#: builtin/commit.c:889 builtin/tag.c:324
+#, c-format
+msgid "Please supply the message using either -m or -F option.\n"
+msgstr "请使用 -m 或者 -F 选项提供说明。\n"
+
+#: builtin/commit.c:969
+#, c-format
+msgid "No existing author found with '%s'"
+msgstr "没有找到匹配 '%s' 的作者"
+
+#: builtin/commit.c:984 builtin/commit.c:1176
+#, c-format
+msgid "Invalid untracked files mode '%s'"
+msgstr "无效的非追踪文件参数 '%s'"
+
+#: builtin/commit.c:1024
+msgid "Using both --reset-author and --author does not make sense"
+msgstr "同时使用 --reset-author 和 --author 没有意义"
+
+#: builtin/commit.c:1035
+msgid "You have nothing to amend."
+msgstr "您没有要修补。"
+
+#  %s若翻为中文,前后不需要空格
+#: builtin/commit.c:1037
+#, c-format
+msgid "You are in the middle of a %s -- cannot amend."
+msgstr "您正处于一个%s过程中 -- 无法修补提交。"
+
+#: builtin/commit.c:1039
+msgid "Options --squash and --fixup cannot be used together"
+msgstr "选项 --squash 和 --fixup 不能共用"
+
+#: builtin/commit.c:1049
+msgid "Only one of -c/-C/-F/--fixup can be used."
+msgstr "只能用一个 -c/-C/-F/--fixup 选项。"
+
+#: builtin/commit.c:1051
+msgid "Option -m cannot be combined with -c/-C/-F/--fixup."
+msgstr "选项 -m 不能和 -c/-C/-F/--fixup 共用。"
+
+#: builtin/commit.c:1057
+msgid "--reset-author can be used only with -C, -c or --amend."
+msgstr "--reset-author 只能和 -C, -c 或 --amend 共用。"
+
+#: builtin/commit.c:1074
+msgid "Only one of --include/--only/--all/--interactive/--patch can be used."
+msgstr "只能用一个 --include/--only/--all/--interactive/--patch 选项。"
+
+#: builtin/commit.c:1076
+msgid "No paths with --include/--only does not make sense."
+msgstr "参数 --include/--only 不跟路径没有意义。"
+
+#: builtin/commit.c:1078
+msgid "Clever... amending the last one with dirty index."
+msgstr "聪明... 在暂存区不干净下修补最后的提交。"
+
+#: builtin/commit.c:1080
+msgid "Explicit paths specified without -i nor -o; assuming --only paths..."
+msgstr "没有用 -i 或 -o 选项而显式地提供路径,认为是 --only paths..."
+
+#: builtin/commit.c:1090 builtin/tag.c:500
+#, c-format
+msgid "Invalid cleanup mode %s"
+msgstr "无效的清理模式 %s"
+
+#: builtin/commit.c:1095
+msgid "Paths with -a does not make sense."
+msgstr "路径和 -a 选项共用没有意义。"
+
+#: builtin/commit.c:1274
+msgid "couldn't look up newly created commit"
+msgstr "无法找到新创建的提交"
+
+#: builtin/commit.c:1276
+msgid "could not parse newly created commit"
+msgstr "无法解析新创建的提交"
+
+#: builtin/commit.c:1317
+msgid "detached HEAD"
+msgstr "分离头指针"
+
+#  注意保持前导空格
+#: builtin/commit.c:1319
+msgid " (root-commit)"
+msgstr " (根提交)"
+
+#: builtin/commit.c:1409
+msgid "could not parse HEAD commit"
+msgstr "无法解析 HEAD 提交"
+
+#: builtin/commit.c:1446 builtin/merge.c:507
+#, c-format
+msgid "could not open '%s' for reading"
+msgstr "无法打开 '%s' 读取"
+
+#: builtin/commit.c:1453
+#, c-format
+msgid "Corrupt MERGE_HEAD file (%s)"
+msgstr "损坏的 MERGE_HEAD 文件 (%s)"
+
+#: builtin/commit.c:1460
+msgid "could not read MERGE_MODE"
+msgstr "无法读取 MERGE_MODE"
+
+#: builtin/commit.c:1479
+#, c-format
+msgid "could not read commit message: %s"
+msgstr "无法读取提交说明:%s"
+
+#: builtin/commit.c:1493
+#, c-format
+msgid "Aborting commit due to empty commit message.\n"
+msgstr "终止提交因为提交说明为空。\n"
+
+#: builtin/commit.c:1508 builtin/merge.c:923 builtin/merge.c:956
+msgid "failed to write commit object"
+msgstr "写提交对象失败"
+
+#: builtin/commit.c:1529
+msgid "cannot lock HEAD ref"
+msgstr "无法锁定 HEAD 引用"
+
+#: builtin/commit.c:1533
+msgid "cannot update HEAD ref"
+msgstr "无法更新 HEAD 引用"
+
+#: builtin/commit.c:1544
+msgid ""
+"Repository has been updated, but unable to write\n"
+"new_index file. Check that disk is not full or quota is\n"
+"not exceeded, and then \"git reset HEAD\" to recover."
+msgstr ""
+"版本库已被更新,但无法写入新暂存区文件。检查是否磁盘\n"
+"已满或磁盘配额耗尽,然后执行 \"git reset HEAD\" 恢复。"
+
+#: builtin/describe.c:234
+#, c-format
+msgid "annotated tag %s not available"
+msgstr "注释 tag %s 无效"
+
+#: builtin/describe.c:238
+#, c-format
+msgid "annotated tag %s has no embedded name"
+msgstr "注释 tag %s 没有嵌入名称"
+
+#: builtin/describe.c:240
+#, c-format
+msgid "tag '%s' is really '%s' here"
+msgstr "tag '%s' 确是在 '%s'"
+
+#: builtin/describe.c:267
+#, c-format
+msgid "Not a valid object name %s"
+msgstr "不是一个有效的对象名 %s"
+
+#: builtin/describe.c:270
+#, c-format
+msgid "%s is not a valid '%s' object"
+msgstr "%s 不是一个有效的 '%s' 对象"
+
+#: builtin/describe.c:287
+#, c-format
+msgid "no tag exactly matches '%s'"
+msgstr "没有 tag 准确匹配 '%s'"
+
+#: builtin/describe.c:289
+#, c-format
+msgid "searching to describe %s\n"
+msgstr "搜索描述 %s\n"
+
+#: builtin/describe.c:329
+#, c-format
+msgid "finished search at %s\n"
+msgstr "完成搜索 %s\n"
+
+#: builtin/describe.c:353
+#, c-format
+msgid ""
+"No annotated tags can describe '%s'.\n"
+"However, there were unannotated tags: try --tags."
+msgstr ""
+"没有注释 tag 能描述 '%s'。\n"
+"然而,有非注释 tag:尝试 --tags。"
+
+#: builtin/describe.c:357
+#, c-format
+msgid ""
+"No tags can describe '%s'.\n"
+"Try --always, or create some tags."
+msgstr ""
+"没有注释 tag 能描述 '%s'。\n"
+"尝试 --always,或创建一些 tag。"
+
+#: builtin/describe.c:378
+#, c-format
+msgid "traversed %lu commits\n"
+msgstr "已遍历 %lu 个提交\n"
+
+#: builtin/describe.c:381
+#, c-format
+msgid ""
+"more than %i tags found; listed %i most recent\n"
+"gave up search at %s\n"
+msgstr ""
+"发现多于 %i 个 tag;列出最近的 %i 个\n"
+"放弃搜索 %s\n"
+
+#: builtin/describe.c:436
+msgid "--long is incompatible with --abbrev=0"
+msgstr "--long 与 --abbrev=0 不兼容"
+
+#: builtin/describe.c:462
+msgid "No names found, cannot describe anything."
+msgstr "没有发现名称,无法描述任何东西"
+
+#: builtin/describe.c:482
+msgid "--dirty is incompatible with committishes"
+msgstr "--dirty 不能与提交共用"
+
+#: builtin/diff.c:77
+#, c-format
+msgid "'%s': not a regular file or symlink"
+msgstr "'%s':不是一个正规文件或符号链接"
+
+#: builtin/diff.c:220
+#, c-format
+msgid "invalid option: %s"
+msgstr "无效选项:%s"
+
+#: builtin/diff.c:293
+msgid "Not a git repository"
+msgstr "不是一个 git 版本库"
+
+#: builtin/diff.c:343
+#, c-format
+msgid "invalid object '%s' given."
+msgstr "提供了无效对象 '%s'。"
+
+#: builtin/diff.c:348
+#, c-format
+msgid "more than %d trees given: '%s'"
+msgstr "提供了超过 %d 个树对象:'%s'"
+
+#: builtin/diff.c:358
+#, c-format
+msgid "more than two blobs given: '%s'"
+msgstr "提供了超过两个 blob 对象:'%s'"
+
+#: builtin/diff.c:366
+#, c-format
+msgid "unhandled object '%s' given."
+msgstr "提供了无法处理的对象 '%s'。"
+
+#: builtin/fetch.c:200
+msgid "Couldn't find remote ref HEAD"
+msgstr "无法发现远程 HEAD 引用"
+
+#: builtin/fetch.c:252
+#, c-format
+msgid "object %s not found"
+msgstr "对象 %s 未发现"
+
+#: builtin/fetch.c:258
+msgid "[up to date]"
+msgstr "[最新]"
+
+#: builtin/fetch.c:272
+#, c-format
+msgid "! %-*s %-*s -> %s  (can't fetch in current branch)"
+msgstr "! %-*s %-*s -> %s  (在当前分支下不能获取)"
+
+#: builtin/fetch.c:273 builtin/fetch.c:351
+msgid "[rejected]"
+msgstr "[已拒绝]"
+
+#: builtin/fetch.c:284
+msgid "[tag update]"
+msgstr "[tag更新]"
+
+#  注意保持前导空格
+#: builtin/fetch.c:286 builtin/fetch.c:313 builtin/fetch.c:331
+msgid "  (unable to update local ref)"
+msgstr "  (不能更新本地引用)"
+
+#: builtin/fetch.c:298
+msgid "[new tag]"
+msgstr "[新tag]"
+
+#: builtin/fetch.c:302
+msgid "[new branch]"
+msgstr "[新分支]"
+
+#: builtin/fetch.c:347
+msgid "unable to update local ref"
+msgstr "不能更新本地引用"
+
+#: builtin/fetch.c:347
+msgid "forced update"
+msgstr "强制更新"
+
+#: builtin/fetch.c:353
+msgid "(non-fast-forward)"
+msgstr "(非快进式推送)"
+
+#: builtin/fetch.c:384 builtin/fetch.c:676
+#, c-format
+msgid "cannot open %s: %s\n"
+msgstr "无法打开 %s:%s\n"
+
+#: builtin/fetch.c:393
+#, c-format
+msgid "%s did not send all necessary objects\n"
+msgstr "%s 未发送所有必须的对象\n"
+
+#: builtin/fetch.c:479
+#, c-format
+msgid "From %.*s\n"
+msgstr "来自 %.*s\n"
+
+#: builtin/fetch.c:490
+#, c-format
+msgid ""
+"some local refs could not be updated; try running\n"
+" 'git remote prune %s' to remove any old, conflicting branches"
+msgstr ""
+"一些本地引用不能被更新;尝试运行\n"
+" 'git remote prune %s' 来删除旧的、有冲突的分支"
+
+#  注意保持前导空格
+#: builtin/fetch.c:540
+#, c-format
+msgid "   (%s will become dangling)\n"
+msgstr "   (%s 将成为悬空状态)\n"
+
+#  注意保持前导空格
+#: builtin/fetch.c:541
+#, c-format
+msgid "   (%s has become dangling)\n"
+msgstr "   (%s 已成为悬空状态)\n"
+
+#: builtin/fetch.c:548
+msgid "[deleted]"
+msgstr "[已删除]"
+
+#: builtin/fetch.c:549
+msgid "(none)"
+msgstr "(无)"
+
+#: builtin/fetch.c:666
+#, c-format
+msgid "Refusing to fetch into current branch %s of non-bare repository"
+msgstr "拒绝获取到非裸版本库的当前分支 %s"
+
+#: builtin/fetch.c:700
+#, c-format
+msgid "Don't know how to fetch from %s"
+msgstr "不知道如何从 %s 获取"
+
+#: builtin/fetch.c:777
+#, c-format
+msgid "Option \"%s\" value \"%s\" is not valid for %s"
+msgstr "选项 \"%s\" 的值 \"%s\" 对于 %s 是无效的"
+
+#: builtin/fetch.c:780
+#, c-format
+msgid "Option \"%s\" is ignored for %s\n"
+msgstr "选项 \"%s\" 对于 %s 被忽略\n"
+
+#: builtin/fetch.c:879
+#, c-format
+msgid "Fetching %s\n"
+msgstr "正获取 %s\n"
+
+#: builtin/fetch.c:881
+#, c-format
+msgid "Could not fetch %s"
+msgstr "不能获取 %s"
+
+#: builtin/fetch.c:898
+msgid ""
+"No remote repository specified.  Please, specify either a URL or a\n"
+"remote name from which new revisions should be fetched."
+msgstr "未提供远程版本库。请提供一个URL或远程版本库名,用于获取新版本。"
+
+#: builtin/fetch.c:918
+msgid "You need to specify a tag name."
+msgstr "你需要提供一个 tag 名称"
+
+#: builtin/fetch.c:970
+msgid "fetch --all does not take a repository argument"
+msgstr "fetch --all 不能带一个版本库参数"
+
+#: builtin/fetch.c:972
+msgid "fetch --all does not make sense with refspecs"
+msgstr "fetch --all 带引用表达式没有任何意义"
+
+#: builtin/fetch.c:983
+#, c-format
+msgid "No such remote or remote group: %s"
+msgstr "没有这样的远程或远程组:%s"
+
+#: builtin/fetch.c:991
+msgid "Fetching a group and specifying refspecs does not make sense"
+msgstr "获取组并提供引用表达式没有意义"
+
+#: builtin/gc.c:63
+#, c-format
+msgid "Invalid %s: '%s'"
+msgstr "无效的 %s:'%s'"
+
+#: builtin/gc.c:78
+msgid "Too many options specified"
+msgstr "提供了太多的选项"
+
+#: builtin/gc.c:103
+#, c-format
+msgid "insanely long object directory %.*s"
+msgstr "不正常的长对象目录 %.*s"
+
+#: builtin/gc.c:223
+#, c-format
+msgid "Auto packing the repository for optimum performance.\n"
+msgstr "自动打包版本库以求最佳性能。\n"
+
+#: builtin/gc.c:226
+#, c-format
+msgid ""
+"Auto packing the repository for optimum performance. You may also\n"
+"run \"git gc\" manually. See \"git help gc\" for more information.\n"
+msgstr ""
+"自动打包版本库以求最佳性能。你还可以\n"
+"手动运行 \"git gc\"。 参见 \"git help gc\" 获取更多信息。\n"
+
+#: builtin/gc.c:256
+msgid ""
+"There are too many unreachable loose objects; run 'git prune' to remove them."
+msgstr "有太多无指向的松散对象,运行 'git prune' 删除它们。"
+
+#: builtin/grep.c:275
+#, c-format
+msgid "grep: failed to create thread: %s"
+msgstr "grep: 无法创建线程:%s"
+
+#: builtin/grep.c:390
+#, c-format
+msgid "'%s': unable to read %s"
+msgstr "'%s':无法读取 %s"
+
+#: builtin/grep.c:441
+#, c-format
+msgid "'%s': %s"
+msgstr "'%s':%s"
+
+#: builtin/grep.c:452
+#, c-format
+msgid "'%s': short read %s"
+msgstr "'%s':读取不完整 %s"
+
+#: builtin/grep.c:514
+#, c-format
+msgid "Failed to chdir: %s"
+msgstr "无法切换目录:%s"
+
+#: builtin/grep.c:590 builtin/grep.c:624
+#, c-format
+msgid "unable to read tree (%s)"
+msgstr "无法读取代码树(%s)"
+
+#: builtin/grep.c:638
+#, c-format
+msgid "unable to grep from object of type %s"
+msgstr "无法抓取来自于 %s 类型的对象"
+
+#: builtin/grep.c:696
+#, c-format
+msgid "switch `%c' expects a numerical value"
+msgstr "开关 `%c' 期望一个数字值"
+
+#: builtin/grep.c:713
+#, c-format
+msgid "cannot open '%s'"
+msgstr "不能打开 '%s'"
+
+#: builtin/grep.c:1001
+msgid "no pattern given."
+msgstr "未提供模式匹配。"
+
+#: builtin/grep.c:1015
+#, c-format
+msgid "bad object %s"
+msgstr "坏对象 %s"
+
+#: builtin/grep.c:1057
+msgid "--open-files-in-pager only works on the worktree"
+msgstr "--open-files-in-pager 仅用于工作区"
+
+#: builtin/grep.c:1080
+msgid "--cached or --untracked cannot be used with --no-index."
+msgstr "--cached 或 --untracked 不能与 --no-index 共用"
+
+#: builtin/grep.c:1085
+msgid "--no-index or --untracked cannot be used with revs."
+msgstr "--no-index 或 --untracked 不能和版本共用。"
+
+#: builtin/grep.c:1088
+msgid "--[no-]exclude-standard cannot be used for tracked contents."
+msgstr "--[no-]exclude-standard 不能用于跟踪内容。"
+
+#: builtin/grep.c:1096
+msgid "both --cached and trees are given."
+msgstr "同时给出了 --cached 和树对象。"
+
+#: builtin/init-db.c:35
+#, c-format
+msgid "Could not make %s writable by group"
+msgstr "不能设置 %s 为组可写"
+
+#: builtin/init-db.c:62
+#, c-format
+msgid "insanely long template name %s"
+msgstr "太长的模版名 %s"
+
+#: builtin/init-db.c:67
+#, c-format
+msgid "cannot stat '%s'"
+msgstr "不能枚举 '%s' 状态"
+
+#: builtin/init-db.c:73
+#, c-format
+msgid "cannot stat template '%s'"
+msgstr "不能枚举模版 '%s' 状态"
+
+#: builtin/init-db.c:80
+#, c-format
+msgid "cannot opendir '%s'"
+msgstr "不能打开目录 '%s'"
+
+#: builtin/init-db.c:97
+#, c-format
+msgid "cannot readlink '%s'"
+msgstr "不能读取链接 '%s'"
+
+#: builtin/init-db.c:99
+#, c-format
+msgid "insanely long symlink %s"
+msgstr "太长的符号链接 %s"
+
+#: builtin/init-db.c:102
+#, c-format
+msgid "cannot symlink '%s' '%s'"
+msgstr "不能创建符号链接 '%s' 到 '%s'"
+
+#: builtin/init-db.c:106
+#, c-format
+msgid "cannot copy '%s' to '%s'"
+msgstr "不能拷贝 '%s' 至 '%s'"
+
+#: builtin/init-db.c:110
+#, c-format
+msgid "ignoring template %s"
+msgstr "忽略模版 %s"
+
+#: builtin/init-db.c:133
+#, c-format
+msgid "insanely long template path %s"
+msgstr "太长的模版路径 %s"
+
+#: builtin/init-db.c:141
+#, c-format
+msgid "templates not found %s"
+msgstr "模版未找到 %s"
+
+#: builtin/init-db.c:154
+#, c-format
+msgid "not copying templates of a wrong format version %d from '%s'"
+msgstr "未复制错误版本 %d 的模版自 '%s'"
+
+#: builtin/init-db.c:192
+#, c-format
+msgid "insane git directory %s"
+msgstr "不正常的 git 目录 %s"
+
+#: builtin/init-db.c:322 builtin/init-db.c:325
+#, c-format
+msgid "%s already exists"
+msgstr "%s 已经存在"
+
+#: builtin/init-db.c:354
+#, c-format
+msgid "unable to handle file type %d"
+msgstr "不能处理 %d 类型的文件"
+
+#: builtin/init-db.c:357
+#, c-format
+msgid "unable to move %s to %s"
+msgstr "不能移动 %s 至 %s"
+
+#: builtin/init-db.c:362
+#, c-format
+msgid "Could not create git link %s"
+msgstr "不能创建 git link %s"
+
+#.
+#. * TRANSLATORS: The first '%s' is either "Reinitialized
+#. * existing" or "Initialized empty", the second " shared" or
+#. * "", and the last '%s%s' is the verbatim directory name.
+#.
+#: builtin/init-db.c:419
+#, c-format
+msgid "%s%s Git repository in %s%s\n"
+msgstr "%s%s Git 版本库于 %s%s\n"
+
+#: builtin/init-db.c:420
+msgid "Reinitialized existing"
+msgstr "重新初始化现存的"
+
+#: builtin/init-db.c:420
+msgid "Initialized empty"
+msgstr "初始化空的"
+
+#  汉字字串合并,之间无空格,故删除前导空格
+#: builtin/init-db.c:421
+msgid " shared"
+msgstr "共享的"
+
+#: builtin/init-db.c:440
+msgid "cannot tell cwd"
+msgstr "无法获知当前路径"
+
+#: builtin/init-db.c:521 builtin/init-db.c:528
+#, c-format
+msgid "cannot mkdir %s"
+msgstr "不能创建目录 %s"
+
+#: builtin/init-db.c:532
+#, c-format
+msgid "cannot chdir to %s"
+msgstr "不能切换目录到 %s"
+
+#: builtin/init-db.c:554
+#, c-format
+msgid ""
+"%s (or --work-tree=<directory>) not allowed without specifying %s (or --git-"
+"dir=<directory>)"
+msgstr ""
+"不允许 %s(或 --work-tree=<directory>)而没有 %s(或 --git-dir=<directory>)"
+
+#: builtin/init-db.c:578
+msgid "Cannot access current working directory"
+msgstr "不能访问当前工作目录"
+
+#: builtin/init-db.c:585
+#, c-format
+msgid "Cannot access work tree '%s'"
+msgstr "不能访问工作区 '%s'"
+
+#: builtin/log.c:185
+#, c-format
+msgid "Final output: %d %s\n"
+msgstr "最终输出:%d %s\n"
+
+#: builtin/log.c:286 builtin/log.c:709 builtin/log.c:1325 builtin/log.c:1544
+#: builtin/merge.c:348 builtin/revert.c:651 builtin/revert.c:1110
+#: builtin/shortlog.c:181
+msgid "revision walk setup failed"
+msgstr "版本遍历设置失败"
+
+#: builtin/log.c:393 builtin/log.c:479
+#, c-format
+msgid "Could not read object %s"
+msgstr "无法读取对象 %s"
+
+#: builtin/log.c:503
+#, c-format
+msgid "Unknown type: %d"
+msgstr "未知类型:%d"
+
+#: builtin/log.c:592
+msgid "format.headers without value"
+msgstr "format.headers 没有值"
+
+#: builtin/log.c:665
+msgid "name of output directory is too long"
+msgstr "输出目录名太长"
+
+#: builtin/log.c:676
+#, c-format
+msgid "Cannot open patch file %s"
+msgstr "无法打开补丁文件 %s"
+
+#: builtin/log.c:690
+msgid "Need exactly one range."
+msgstr "只需要一个范围。"
+
+#: builtin/log.c:698
+msgid "Not a range."
+msgstr "不是一个范围。"
+
+#: builtin/log.c:735
+msgid "Could not extract email from committer identity."
+msgstr "无法从提交者身份中提取邮件地址。"
+
+#: builtin/log.c:781
+msgid "Cover letter needs email format"
+msgstr "信封需要邮件地址格式"
+
+#: builtin/log.c:875
+#, c-format
+msgid "insane in-reply-to: %s"
+msgstr "不正常的 in-reply-to:%s"
+
+#: builtin/log.c:948
+msgid "Two output directories?"
+msgstr "两个输出目录?"
+
+#: builtin/log.c:1169
+#, c-format
+msgid "bogus committer info %s"
+msgstr "虚假的提交者信息 %s"
+
+#: builtin/log.c:1214
+msgid "-n and -k are mutually exclusive."
+msgstr "-n 和 -k 互斥。"
+
+#: builtin/log.c:1216
+msgid "--subject-prefix and -k are mutually exclusive."
+msgstr "--subject-prefix 和 -k 互斥。"
+
+#: builtin/log.c:1221 builtin/shortlog.c:284
+#, c-format
+msgid "unrecognized argument: %s"
+msgstr "未识别的参数:%s"
+
+#: builtin/log.c:1224
+msgid "--name-only does not make sense"
+msgstr "--name-only 无意义"
+
+#: builtin/log.c:1226
+msgid "--name-status does not make sense"
+msgstr "--name-status 无意义"
+
+#: builtin/log.c:1228
+msgid "--check does not make sense"
+msgstr "--check 无意义"
+
+#: builtin/log.c:1251
+msgid "standard output, or directory, which one?"
+msgstr "标准输出或目录,哪一个?"
+
+#: builtin/log.c:1253
+#, c-format
+msgid "Could not create directory '%s'"
+msgstr "无法创建目录 '%s'"
+
+#: builtin/log.c:1406
+msgid "Failed to create output files"
+msgstr "无法创建输出文件"
+
+#: builtin/log.c:1510
+#, c-format
+msgid ""
+"Could not find a tracked remote branch, please specify <upstream> manually.\n"
+msgstr "无法找到跟踪的远程分支,请手工提供 <upstream>。\n"
+
+#: builtin/log.c:1526 builtin/log.c:1528 builtin/log.c:1540
+#, c-format
+msgid "Unknown commit %s"
+msgstr "未知提交 %s"
+
+#: builtin/merge.c:91
+msgid "switch `m' requires a value"
+msgstr "开关 `m' 需要一个值"
+
+#: builtin/merge.c:128
+#, c-format
+msgid "Could not find merge strategy '%s'.\n"
+msgstr "无法找到合并策略 '%s'。\n"
+
+#: builtin/merge.c:129
+#, c-format
+msgid "Available strategies are:"
+msgstr "可用的策略有:"
+
+#: builtin/merge.c:134
+#, c-format
+msgid "Available custom strategies are:"
+msgstr "可用的自定义策略有:"
+
+#: builtin/merge.c:241
+msgid "could not run stash."
+msgstr "不能进行进度保存。"
+
+#: builtin/merge.c:246
+msgid "stash failed"
+msgstr "进度保存失败"
+
+#: builtin/merge.c:251
+#, c-format
+msgid "not a valid object: %s"
+msgstr "不是一个有效对象:%s"
+
+#: builtin/merge.c:270 builtin/merge.c:287
+msgid "read-tree failed"
+msgstr "读取树失败"
+
+#  注意保持前导空格
+#: builtin/merge.c:317
+msgid " (nothing to squash)"
+msgstr " (无可压缩)"
+
+#: builtin/merge.c:330
+#, c-format
+msgid "Squash commit -- not updating HEAD\n"
+msgstr "压缩提交 -- 未更新 HEAD\n"
+
+#: builtin/merge.c:334 builtin/merge.c:865 builtin/merge.c:1085
+#: builtin/merge.c:1098 builtin/revert.c:327
+#, c-format
+msgid "Could not write to '%s'"
+msgstr "无法写入 '%s'"
+
+#: builtin/merge.c:362
+msgid "Writing SQUASH_MSG"
+msgstr "写入 SQUASH_MSG"
+
+#: builtin/merge.c:364
+msgid "Finishing SQUASH_MSG"
+msgstr "完成 SQUASH_MSG"
+
+#: builtin/merge.c:386
+#, c-format
+msgid "No merge message -- not updating HEAD\n"
+msgstr "无合并信息 -- 未更新 HEAD\n"
+
+#: builtin/merge.c:435
+#, c-format
+msgid "'%s' does not point to a commit"
+msgstr "'%s' 没有指向一个提交"
+
+#: builtin/merge.c:534
+#, c-format
+msgid "Bad branch.%s.mergeoptions string: %s"
+msgstr "错的 branch.%s.mergeoptions 字串:%s"
+
+#: builtin/merge.c:627
+msgid "git write-tree failed to write a tree"
+msgstr "git write-tree 无法写入一树对象"
+
+#: builtin/merge.c:677
+msgid "failed to read the cache"
+msgstr "无法读取缓存"
+
+#: builtin/merge.c:694
+msgid "Unable to write index."
+msgstr "不能写暂存区。"
+
+#: builtin/merge.c:707
+msgid "Not handling anything other than two heads merge."
+msgstr "不能处理两个头合并之外的任何操作。"
+
+#: builtin/merge.c:721
+#, c-format
+msgid "Unknown option for merge-recursive: -X%s"
+msgstr "merge-recursive 的未知选项:-X%s"
+
+#: builtin/merge.c:735
+#, c-format
+msgid "unable to write %s"
+msgstr "不能写 %s"
+
+#: builtin/merge.c:862 builtin/merge.c:973 builtin/merge.c:1083
+#: builtin/merge.c:1093 builtin/revert.c:325
+#, c-format
+msgid "Could not open '%s' for writing"
+msgstr "无法为写入打开 '%s'"
+
+#: builtin/merge.c:874
+#, c-format
+msgid "Could not read from '%s'"
+msgstr "不能从 '%s' 读取"
+
+#: builtin/merge.c:883
+#, c-format
+msgid "Not committing merge; use 'git commit' to complete the merge.\n"
+msgstr "未提交合并,使用 'git commit' 完成此次合并。\n"
+
+#: builtin/merge.c:903
+msgid "Empty commit message."
+msgstr "空提交信息。"
+
+#: builtin/merge.c:915
+#, c-format
+msgid "Wonderful.\n"
+msgstr "太棒了。\n"
+
+#: builtin/merge.c:988
+#, c-format
+msgid "Automatic merge failed; fix conflicts and then commit the result.\n"
+msgstr "自动合并失败,修正冲突然后提交修正的结果。\n"
+
+#: builtin/merge.c:1004
+#, c-format
+msgid "'%s' is not a commit"
+msgstr "'%s' 不是一个提交"
+
+#: builtin/merge.c:1045
+msgid "No current branch."
+msgstr "当前不在分支上。"
+
+#: builtin/merge.c:1047
+msgid "No remote for the current branch."
+msgstr "当前分支没有远程版本库。"
+
+#: builtin/merge.c:1049
+msgid "No default upstream defined for the current branch."
+msgstr "当前分支未定义默认上游分支。"
+
+#: builtin/merge.c:1054
+#, c-format
+msgid "No remote tracking branch for %s from %s"
+msgstr "%s 没有来自 %s 的远程跟踪分支"
+
+#: builtin/merge.c:1149
+msgid "There is no merge to abort (MERGE_HEAD missing)."
+msgstr "没有要终止的合并(MERGE_HEAD 丢失)"
+
+#: builtin/merge.c:1165 git-pull.sh:31
+msgid ""
+"You have not concluded your merge (MERGE_HEAD exists).\n"
+"Please, commit your changes before you can merge."
+msgstr ""
+"您尚未结束您的合并(存在 MERGE_HEAD)。\n"
+"请先提交您的修改,您才能合并。"
+
+#: builtin/merge.c:1168 git-pull.sh:34
+msgid "You have not concluded your merge (MERGE_HEAD exists)."
+msgstr "您尚未结束您的合并(存在 MERGE_HEAD)。"
+
+#: builtin/merge.c:1172
+msgid ""
+"You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists).\n"
+"Please, commit your changes before you can merge."
+msgstr ""
+"您尚未结束您的拣选(存在 CHERRY_PICK_HEAD)。\n"
+"请先提交您的修改,您才能合并。"
+
+#: builtin/merge.c:1175
+msgid "You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists)."
+msgstr "您尚未结束您的拣选(存在 CHERRY_PICK_HEAD)。"
+
+#: builtin/merge.c:1184
+msgid "You cannot combine --squash with --no-ff."
+msgstr "您不能将 --squash 与 --no-ff 共用。"
+
+#: builtin/merge.c:1189
+msgid "You cannot combine --no-ff with --ff-only."
+msgstr "您不能将 --no-ff 与 --ff-only 共用。"
+
+#: builtin/merge.c:1196
+msgid "No commit specified and merge.defaultToUpstream not set."
+msgstr "未指出提交并且 merge.defaultToUpstream 未设置。"
+
+#: builtin/merge.c:1227
+msgid "Can merge only exactly one commit into empty head"
+msgstr "只可将一个提交合并到空分支上"
+
+#: builtin/merge.c:1230
+msgid "Squash commit into empty head not supported yet"
+msgstr "尚不支持到空分支的压缩提交"
+
+#: builtin/merge.c:1232
+msgid "Non-fast-forward commit does not make sense into an empty head"
+msgstr "到空分支的非快进式提交没有意义"
+
+#: builtin/merge.c:1236 builtin/merge.c:1280
+#, c-format
+msgid "%s - not something we can merge"
+msgstr "%s - 不是我们可以合并的东西"
+
+#: builtin/merge.c:1341
+#, c-format
+msgid "Updating %s..%s\n"
+msgstr "更新 %s..%s\n"
+
+#: builtin/merge.c:1379
+#, c-format
+msgid "Trying really trivial in-index merge...\n"
+msgstr "尝试非常小的暂存区内合并...\n"
+
+#: builtin/merge.c:1386
+#, c-format
+msgid "Nope.\n"
+msgstr "无。\n"
+
+#: builtin/merge.c:1418
+msgid "Not possible to fast-forward, aborting."
+msgstr "不可能快进式,终止。"
+
+#: builtin/merge.c:1441 builtin/merge.c:1518
+#, c-format
+msgid "Rewinding the tree to pristine...\n"
+msgstr "将树回滚至原始状态...\n"
+
+#: builtin/merge.c:1445
+#, c-format
+msgid "Trying merge strategy %s...\n"
+msgstr "尝试合并策略 %s...\n"
+
+#: builtin/merge.c:1509
+#, c-format
+msgid "No merge strategy handled the merge.\n"
+msgstr "没有合并策略处理此合并。\n"
+
+#: builtin/merge.c:1511
+#, c-format
+msgid "Merge with strategy %s failed.\n"
+msgstr "使用策略 %s 合并失败。\n"
+
+#: builtin/merge.c:1520
+#, c-format
+msgid "Using the %s to prepare resolving by hand.\n"
+msgstr "使用 %s 以准备手工解决。\n"
+
+#: builtin/merge.c:1531
+#, c-format
+msgid "Automatic merge went well; stopped before committing as requested\n"
+msgstr "自动合并进展顺利,按要求在提交前停止\n"
+
+#: builtin/mv.c:108
+#, c-format
+msgid "Checking rename of '%s' to '%s'\n"
+msgstr "检查 '%s' 到 '%s' 的重命名\n"
+
+#: builtin/mv.c:112
+msgid "bad source"
+msgstr "坏的源"
+
+#: builtin/mv.c:115
+msgid "can not move directory into itself"
+msgstr "不能将目录移动到自身"
+
+#: builtin/mv.c:118
+msgid "cannot move directory over file"
+msgstr "不能将目录移动到文件"
+
+#: builtin/mv.c:128
+#, c-format
+msgid "Huh? %.*s is in index?"
+msgstr "嗯?%.*s 在暂存区中?"
+
+#: builtin/mv.c:140
+msgid "source directory is empty"
+msgstr "源目录为空"
+
+#: builtin/mv.c:171
+msgid "not under version control"
+msgstr "不在版本控制之下"
+
+#: builtin/mv.c:173
+msgid "destination exists"
+msgstr "目标已存在"
+
+#: builtin/mv.c:181
+#, c-format
+msgid "overwriting '%s'"
+msgstr "覆盖 '%s'"
+
+#: builtin/mv.c:184
+msgid "Cannot overwrite"
+msgstr "不能覆盖"
+
+#: builtin/mv.c:187
+msgid "multiple sources for the same target"
+msgstr "同一目标具有多个源"
+
+#: builtin/mv.c:202
+#, c-format
+msgid "%s, source=%s, destination=%s"
+msgstr "%s,源=%s,目标=%s"
+
+#: builtin/mv.c:212
+#, c-format
+msgid "Renaming %s to %s\n"
+msgstr "重命名 %s 至 %s\n"
+
+#: builtin/mv.c:215
+#, c-format
+msgid "renaming '%s' failed"
+msgstr "重命名 '%s' 失败"
+
+#: builtin/notes.c:139
+#, c-format
+msgid "unable to start 'show' for object '%s'"
+msgstr "不能为对象 '%s' 开始 'show'"
+
+#: builtin/notes.c:145
+msgid "can't fdopen 'show' output fd"
+msgstr "不能打开 'show' 输出文件句柄"
+
+#: builtin/notes.c:155
+#, c-format
+msgid "failed to close pipe to 'show' for object '%s'"
+msgstr "无法为对象 '%s' 的 'show' 关闭管道"
+
+#: builtin/notes.c:158
+#, c-format
+msgid "failed to finish 'show' for object '%s'"
+msgstr "无法为对象 '%s' 完成 'show'"
+
+#: builtin/notes.c:175 builtin/tag.c:310
+#, c-format
+msgid "could not create file '%s'"
+msgstr "不能创建文件 '%s'"
+
+#: builtin/notes.c:189
+msgid "Please supply the note contents using either -m or -F option"
+msgstr "请通过 -m 或 -F 选项为注解提供内容"
+
+#: builtin/notes.c:210 builtin/notes.c:973
+#, c-format
+msgid "Removing note for object %s\n"
+msgstr "删除对象 %s 的注解\n"
+
+#: builtin/notes.c:215
+msgid "unable to write note object"
+msgstr "不能写注解对象"
+
+#: builtin/notes.c:217
+#, c-format
+msgid "The note contents has been left in %s"
+msgstr "注解内容被留在文件 %s 中"
+
+#: builtin/notes.c:251 builtin/tag.c:465
+#, c-format
+msgid "cannot read '%s'"
+msgstr "不能读取 '%s'"
+
+#: builtin/notes.c:253 builtin/tag.c:468
+#, c-format
+msgid "could not open or read '%s'"
+msgstr "不能打开或读取 '%s'"
+
+#: builtin/notes.c:272 builtin/notes.c:445 builtin/notes.c:447
+#: builtin/notes.c:507 builtin/notes.c:561 builtin/notes.c:644
+#: builtin/notes.c:649 builtin/notes.c:724 builtin/notes.c:766
+#: builtin/notes.c:968 builtin/reset.c:293 builtin/tag.c:481
+#, c-format
+msgid "Failed to resolve '%s' as a valid ref."
+msgstr "无法解析 '%s' 为一个有效引用"
+
+#: builtin/notes.c:275
+#, c-format
+msgid "Failed to read object '%s'."
+msgstr "无法读取对象 '%s'。"
+
+#: builtin/notes.c:299
+msgid "Cannot commit uninitialized/unreferenced notes tree"
+msgstr "不能提交未初始化/未引用的注解树"
+
+#: builtin/notes.c:340
+#, c-format
+msgid "Bad notes.rewriteMode value: '%s'"
+msgstr "错误的 notes.rewriteMode 值:'%s'"
+
+#: builtin/notes.c:350
+#, c-format
+msgid "Refusing to rewrite notes in %s (outside of refs/notes/)"
+msgstr "拒绝向 %s(在 refs/notes/ 之外)写入注解"
+
+#. TRANSLATORS: The first %s is the name of the
+#. environment variable, the second %s is its value
+#: builtin/notes.c:377
+#, c-format
+msgid "Bad %s value: '%s'"
+msgstr "错误的 %s 值:'%s'"
+
+#: builtin/notes.c:441
+#, c-format
+msgid "Malformed input line: '%s'."
+msgstr "非法的输入行:'%s'。"
+
+#: builtin/notes.c:456
+#, c-format
+msgid "Failed to copy notes from '%s' to '%s'"
+msgstr "无法从 '%s' 拷贝注解到 '%s'"
+
+#: builtin/notes.c:500 builtin/notes.c:554 builtin/notes.c:627
+#: builtin/notes.c:639 builtin/notes.c:712 builtin/notes.c:759
+#: builtin/notes.c:1033
+msgid "too many parameters"
+msgstr "参数太多"
+
+#: builtin/notes.c:513 builtin/notes.c:772
+#, c-format
+msgid "No note found for object %s."
+msgstr "未发现对象 %s 的注解。"
+
+#: builtin/notes.c:580
+#, c-format
+msgid ""
+"Cannot add notes. Found existing notes for object %s. Use '-f' to overwrite "
+"existing notes"
+msgstr "不能添加注解。发现对象 %s 已存在注解。使用 '-f' 覆盖现存注解"
+
+#: builtin/notes.c:585 builtin/notes.c:662
+#, c-format
+msgid "Overwriting existing notes for object %s\n"
+msgstr "覆盖对象 %s 现存注解\n"
+
+#: builtin/notes.c:635
+msgid "too few parameters"
+msgstr "参数太少"
+
+#: builtin/notes.c:656
+#, c-format
+msgid ""
+"Cannot copy notes. Found existing notes for object %s. Use '-f' to overwrite "
+"existing notes"
+msgstr "不能拷贝注解。发现对象 %s 已存在注解。使用 '-f' 覆盖现存注解"
+
+#: builtin/notes.c:668
+#, c-format
+msgid "Missing notes on source object %s. Cannot copy."
+msgstr "源对象 %s 缺少注解。不能拷贝。"
+
+#: builtin/notes.c:717
+#, c-format
+msgid ""
+"The -m/-F/-c/-C options have been deprecated for the 'edit' subcommand.\n"
+"Please use 'git notes add -f -m/-F/-c/-C' instead.\n"
+msgstr ""
+"选项 -m/-F/-c/-C 已为 'edit' 子命令废弃。\n"
+"请换用 'git notes add -f -m/-F/-c/-C'。\n"
+
+#: builtin/notes.c:971
+#, c-format
+msgid "Object %s has no note\n"
+msgstr "对象 %s 没有注解\n"
+
+#: builtin/notes.c:1103
+#, c-format
+msgid "Unknown subcommand: %s"
+msgstr "未知子命令:%s"
+
+#: builtin/push.c:44
+msgid "tag shorthand without <tag>"
+msgstr "tag 简写没有跟 <tag> 参数"
+
+#: builtin/push.c:63
+msgid "--delete only accepts plain target ref names"
+msgstr "--delete 只接受简单的引用名称"
+
+#: builtin/push.c:73
+#, c-format
+msgid ""
+"You are not currently on a branch.\n"
+"To push the history leading to the current (detached HEAD)\n"
+"state now, use\n"
+"\n"
+"    git push %s HEAD:<name-of-remote-branch>\n"
+msgstr ""
+"您当前不在一个分支上。\n"
+"现在为推送当前历史(分离头指针),使用\n"
+"\n"
+"    git push %s HEAD:<name-of-remote-branch>\n"
+
+#: builtin/push.c:80
+#, c-format
+msgid ""
+"The current branch %s has no upstream branch.\n"
+"To push the current branch and set the remote as upstream, use\n"
+"\n"
+"    git push --set-upstream %s %s\n"
+msgstr ""
+"当前分支 %s 没有对应的上游分支。\n"
+"为推送当前分支并建立与远程上游的跟踪,使用\n"
+"\n"
+"    git push --set-upstream %s %s\n"
+
+#: builtin/push.c:88
+#, c-format
+msgid "The current branch %s has multiple upstream branches, refusing to push."
+msgstr "当前分支 %s 有多个上游分支,拒绝推送。"
+
+#: builtin/push.c:111
+msgid ""
+"You didn't specify any refspecs to push, and push.default is \"nothing\"."
+msgstr "您没有为推送提供任何引用表达式,并且 push.default 为 \"nothing\"。"
+
+#: builtin/push.c:131
+#, c-format
+msgid "Pushing to %s\n"
+msgstr "推送到 %s\n"
+
+#: builtin/push.c:135
+#, c-format
+msgid "failed to push some refs to '%s'"
+msgstr "无法推送一些引用到 '%s'"
+
+#: builtin/push.c:143
+#, c-format
+msgid ""
+"To prevent you from losing history, non-fast-forward updates were rejected\n"
+"Merge the remote changes (e.g. 'git pull') before pushing again.  See the\n"
+"'Note about fast-forwards' section of 'git push --help' for details.\n"
+msgstr ""
+"为防止您丢失提交历史,禁止非快进式推送。\n"
+"再次推送前先与远程变更合并(如 'git pull')。详见\n"
+"'git push --help' 中的 'Note about fast-forwards' 小节。\n"
+
+#: builtin/push.c:160
+#, c-format
+msgid "bad repository '%s'"
+msgstr "错误的版本库 '%s'"
+
+#: builtin/push.c:161
+msgid ""
+"No configured push destination.\n"
+"Either specify the URL from the command-line or configure a remote "
+"repository using\n"
+"\n"
+"    git remote add <name> <url>\n"
+"\n"
+"and then push using the remote name\n"
+"\n"
+"    git push <name>\n"
+msgstr ""
+"未配置推送目标。\n"
+"或者通过命令行提供URL,或者用下面命令配置一个远程版本库\n"
+"\n"
+"    git remote add <name> <url>\n"
+"\n"
+"然后使用该远程版本库名执行推送\n"
+"\n"
+"    git push <name>\n"
+
+#: builtin/push.c:176
+msgid "--all and --tags are incompatible"
+msgstr "--all 和 --tags 不兼容"
+
+#: builtin/push.c:177
+msgid "--all can't be combined with refspecs"
+msgstr "--all 不能和引用表达式共用"
+
+#: builtin/push.c:182
+msgid "--mirror and --tags are incompatible"
+msgstr "--mirror 和 --tags 不兼容"
+
+#: builtin/push.c:183
+msgid "--mirror can't be combined with refspecs"
+msgstr "--mirror 不能和引用表达式共用"
+
+#: builtin/push.c:188
+msgid "--all and --mirror are incompatible"
+msgstr "--all 和 --mirror 不兼容"
+
+#: builtin/push.c:272
+msgid "--delete is incompatible with --all, --mirror and --tags"
+msgstr "--delete 与 --all、--mirror 及 --tags 不兼容"
+
+#: builtin/push.c:274
+msgid "--delete doesn't make sense without any refs"
+msgstr "--delete 未接任何引用没有意义"
+
+#: builtin/reset.c:33
+msgid "mixed"
+msgstr "混杂"
+
+#: builtin/reset.c:33
+msgid "soft"
+msgstr "软性"
+
+#: builtin/reset.c:33
+msgid "hard"
+msgstr "硬性"
+
+#: builtin/reset.c:33
+msgid "keep"
+msgstr "保持"
+
+#: builtin/reset.c:77
+msgid "You do not have a valid HEAD."
+msgstr "您没有一个有效的 HEAD。"
+
+#: builtin/reset.c:79
+msgid "Failed to find tree of HEAD."
+msgstr "无法找到 HEAD 指向的树。"
+
+#: builtin/reset.c:85
+#, c-format
+msgid "Failed to find tree of %s."
+msgstr "无法找到 %s 指向的树。"
+
+#: builtin/reset.c:96
+msgid "Could not write new index file."
+msgstr "无法写入新的暂存区文件。"
+
+#: builtin/reset.c:106
+#, c-format
+msgid "HEAD is now at %s"
+msgstr "HEAD 现在位于 %s"
+
+#: builtin/reset.c:130
+msgid "Could not read index"
+msgstr "不能读取暂存区"
+
+#: builtin/reset.c:133
+msgid "Unstaged changes after reset:"
+msgstr "重置后变更撤出暂存区:"
+
+#  汉字之间无空格,故删除%s前后空格
+#: builtin/reset.c:223
+#, c-format
+msgid "Cannot do a %s reset in the middle of a merge."
+msgstr "在合并过程中不能做%s重置操作。"
+
+#: builtin/reset.c:297
+#, c-format
+msgid "Could not parse object '%s'."
+msgstr "不能解析对象 '%s'。"
+
+#: builtin/reset.c:302
+msgid "--patch is incompatible with --{hard,mixed,soft}"
+msgstr "--patch 与 --{hard,mixed,soft} 不兼容"
+
+#: builtin/reset.c:311
+msgid "--mixed with paths is deprecated; use 'git reset -- <paths>' instead."
+msgstr "--mixed 带路径已弃用,代之以 'git reset -- <paths>'。"
+
+#  汉字之间无空格,故删除%s前后空格
+#: builtin/reset.c:313
+#, c-format
+msgid "Cannot do %s reset with paths."
+msgstr "不能带路径进行%s重置。"
+
+#  汉字之间无空格,故删除%s前后空格
+#: builtin/reset.c:325
+#, c-format
+msgid "%s reset is not allowed in a bare repository"
+msgstr "不能对裸版本库进行%s重置"
+
+#: builtin/reset.c:341
+#, c-format
+msgid "Could not reset index file to revision '%s'."
+msgstr "不能重置暂存区至版本 '%s'。"
+
+#: builtin/revert.c:114 builtin/revert.c:135
+#, c-format
+msgid "%s: %s cannot be used with %s"
+msgstr "%s: %s 不能和 %s 共用"
+
+#: builtin/revert.c:170
+msgid "program error"
+msgstr "程序错误"
+
+#: builtin/revert.c:360 builtin/revert.c:886 builtin/revert.c:969
+#, c-format
+msgid "Could not write to %s"
+msgstr "不能写入 %s"
+
+#: builtin/revert.c:363
+#, c-format
+msgid "Error wrapping up %s"
+msgstr "错误收尾 %s"
+
+#: builtin/revert.c:378
+msgid "Your local changes would be overwritten by cherry-pick."
+msgstr "您的本地修改将被拣选操作覆盖。"
+
+#: builtin/revert.c:380
+msgid "Your local changes would be overwritten by revert."
+msgstr "您的本地修改将被还原操作覆盖。"
+
+#: builtin/revert.c:383
+msgid "Commit your changes or stash them to proceed."
+msgstr "提交您的修改或保存进度后再继续。"
+
+#. TRANSLATORS: %s will be "revert" or "cherry-pick"
+#: builtin/revert.c:433
+#, c-format
+msgid "%s: Unable to write new index file"
+msgstr "%s:无法写入新暂存区文件"
+
+#: builtin/revert.c:499
+msgid "Your index file is unmerged."
+msgstr "您的暂存区文件未完成合并。"
+
+#: builtin/revert.c:502
+msgid "You do not have a valid HEAD"
+msgstr "您没有一个有效的 HEAD"
+
+#: builtin/revert.c:517
+#, c-format
+msgid "Commit %s is a merge but no -m option was given."
+msgstr "提交 %s 是一个合并提交但未提供 -m 选项。"
+
+#: builtin/revert.c:525
+#, c-format
+msgid "Commit %s does not have parent %d"
+msgstr "提交 %s 没有父提交 %d"
+
+#: builtin/revert.c:529
+#, c-format
+msgid "Mainline was specified but commit %s is not a merge."
+msgstr "提供了主线但提交 %s 不是一个合并。"
+
+#. TRANSLATORS: The first %s will be "revert" or
+#. "cherry-pick", the second %s a SHA1
+#: builtin/revert.c:540
+#, c-format
+msgid "%s: cannot parse parent commit %s"
+msgstr "%s:不能解析父提交 %s"
+
+#: builtin/revert.c:544
+#, c-format
+msgid "Cannot get commit message for %s"
+msgstr "不能得到 %s 的提交说明"
+
+#: builtin/revert.c:628
+#, c-format
+msgid "could not revert %s... %s"
+msgstr "不能还原 %s... %s"
+
+#: builtin/revert.c:629
+#, c-format
+msgid "could not apply %s... %s"
+msgstr "不能应用 %s... %s"
+
+#: builtin/revert.c:654
+msgid "empty commit set passed"
+msgstr "提供了空的提交集"
+
+#: builtin/revert.c:662
+#, c-format
+msgid "git %s: failed to read the index"
+msgstr "git %s: 无法读取暂存区"
+
+#: builtin/revert.c:667
+#, c-format
+msgid "git %s: failed to refresh the index"
+msgstr "git %s: 无法刷新暂存区"
+
+#: builtin/revert.c:752
+#, c-format
+msgid "Cannot %s during a %s"
+msgstr "无法 %s 在 %s 过程中"
+
+#: builtin/revert.c:774
+#, c-format
+msgid "Could not parse line %d."
+msgstr "无法解析第 %d 行。"
+
+#: builtin/revert.c:779
+msgid "No commits parsed."
+msgstr "未有提交被解析。"
+
+#: builtin/revert.c:792
+#, c-format
+msgid "Could not open %s"
+msgstr "不能打开 %s"
+
+#: builtin/revert.c:796
+#, c-format
+msgid "Could not read %s."
+msgstr "不能读取 %s。"
+
+#: builtin/revert.c:803
+#, c-format
+msgid "Unusable instruction sheet: %s"
+msgstr "无用的指令表单:%s"
+
+#: builtin/revert.c:831
+#, c-format
+msgid "Invalid key: %s"
+msgstr "无效键名:%s"
+
+#: builtin/revert.c:834
+#, c-format
+msgid "Invalid value for %s: %s"
+msgstr "无效的 %s 值:%s"
+
+#: builtin/revert.c:846
+#, c-format
+msgid "Malformed options sheet: %s"
+msgstr "非法的选项表单:%s"
+
+#: builtin/revert.c:867
+msgid "a cherry-pick or revert is already in progress"
+msgstr "一个拣选或还原操作已在进行"
+
+#: builtin/revert.c:868
+msgid "try \"git cherry-pick (--continue | --quit | --abort)\""
+msgstr "尝试 \"git cherry-pick (--continue | --quit | --abort)\""
+
+#: builtin/revert.c:872
+#, c-format
+msgid "Could not create sequencer directory %s"
+msgstr "无法创建序列目录 %s"
+
+#: builtin/revert.c:888 builtin/revert.c:973
+#, c-format
+msgid "Error wrapping up %s."
+msgstr "错误收尾 %s。"
+
+#: builtin/revert.c:907 builtin/revert.c:1041
+msgid "no cherry-pick or revert in progress"
+msgstr "没有拣选或还原操作在进行"
+
+#: builtin/revert.c:909
+msgid "cannot resolve HEAD"
+msgstr "不能解析 HEAD"
+
+#: builtin/revert.c:911
+msgid "cannot abort from a branch yet to be born"
+msgstr "不能从未初始分支终止"
+
+#: builtin/revert.c:933
+#, c-format
+msgid "cannot open %s: %s"
+msgstr "不能打开 %s:%s"
+
+#: builtin/revert.c:936
+#, c-format
+msgid "cannot read %s: %s"
+msgstr "不能读取 %s:%s"
+
+#: builtin/revert.c:937
+msgid "unexpected end of file"
+msgstr "未预期的文件结束"
+
+#: builtin/revert.c:943
+#, c-format
+msgid "stored pre-cherry-pick HEAD file '%s' is corrupt"
+msgstr "保存预拣选提交的 HEAD 文件 '%s' 损坏"
+
+#: builtin/revert.c:966
+#, c-format
+msgid "Could not format %s."
+msgstr "不能格式化 %s。"
+
+#: builtin/revert.c:1128
+msgid "Can't revert as initial commit"
+msgstr "不能作为初始提交还原"
+
+#: builtin/revert.c:1129
+msgid "Can't cherry-pick into empty head"
+msgstr "不能拣选到空分支"
+
+#: builtin/revert.c:1149
+msgid "revert failed"
+msgstr "还原失败"
+
+#: builtin/revert.c:1164
+msgid "cherry-pick failed"
+msgstr "拣选失败"
+
+#: builtin/rm.c:109
+#, c-format
+msgid ""
+"'%s' has staged content different from both the file and the HEAD\n"
+"(use -f to force removal)"
+msgstr ""
+"'%s' 暂存的内容和工作区文件及 HEAD 中的都不一样\n"
+"(使用 -f 强制删除)"
+
+#: builtin/rm.c:115
+#, c-format
+msgid ""
+"'%s' has changes staged in the index\n"
+"(use --cached to keep the file, or -f to force removal)"
+msgstr ""
+"'%s' 有变更已加入暂存区中\n"
+"(使用 --cached 保存文件,或用 -f 强制删除)"
+
+#: builtin/rm.c:119
+#, c-format
+msgid ""
+"'%s' has local modifications\n"
+"(use --cached to keep the file, or -f to force removal)"
+msgstr ""
+"'%s' 有本地修改\n"
+"(使用 --cached 保存文件,或用 -f 强制删除)"
+
+#: builtin/rm.c:194
+#, c-format
+msgid "not removing '%s' recursively without -r"
+msgstr "未提供 -r 选项不会递归删除 '%s'"
+
+#: builtin/rm.c:230
+#, c-format
+msgid "git rm: unable to remove %s"
+msgstr "git rm:不能删除 %s"
+
+#: builtin/shortlog.c:157
+#, c-format
+msgid "Missing author: %s"
+msgstr "缺少作者:%s"
+
+#: builtin/tag.c:172
+#, c-format
+msgid "tag name too long: %.*s..."
+msgstr "tag 名字太长:%.*s..."
+
+#: builtin/tag.c:177
+#, c-format
+msgid "tag '%s' not found."
+msgstr "tag '%s' 未发现。"
+
+#: builtin/tag.c:192
+#, c-format
+msgid "Deleted tag '%s' (was %s)\n"
+msgstr "已删除 tag '%s'(曾为 %s)\n"
+
+#: builtin/tag.c:204
+#, c-format
+msgid "could not verify the tag '%s'"
+msgstr "不能校验 tag '%s'"
+
+#: builtin/tag.c:214
+msgid ""
+"\n"
+"#\n"
+"# Write a tag message\n"
+"# Lines starting with '#' will be ignored.\n"
+"#\n"
+msgstr ""
+"\n"
+"#\n"
+"# 输入一个 tag 说明\n"
+"# 以 '#' 开头的行将被忽略。\n"
+"#\n"
+
+#: builtin/tag.c:221
+msgid ""
+"\n"
+"#\n"
+"# Write a tag message\n"
+"# Lines starting with '#' will be kept; you may remove them yourself if you "
+"want to.\n"
+"#\n"
+msgstr ""
+"\n"
+"#\n"
+"# 输入一个 tag 说明\n"
+"# 以 '#' 开头的行将被忽略,您可以删除它们如果您想这样做。\n"
+"#\n"
+
+#: builtin/tag.c:261
+msgid "unable to sign the tag"
+msgstr "无法签署 tag"
+
+#: builtin/tag.c:263
+msgid "unable to write tag file"
+msgstr "无法写 tag 文件"
+
+#: builtin/tag.c:288
+msgid "bad object type."
+msgstr "无效的对象类型"
+
+#: builtin/tag.c:301
+msgid "tag header too big."
+msgstr "tag 头信息太大"
+
+#: builtin/tag.c:333
+msgid "no tag message?"
+msgstr "无 tag 说明?"
+
+#: builtin/tag.c:339
+#, c-format
+msgid "The tag message has been left in %s\n"
+msgstr "tag 说明被保留在 %s\n"
+
+#: builtin/tag.c:448
+msgid "-n option is only allowed with -l."
+msgstr "-n 选项只允许和 -l 共用。"
+
+#: builtin/tag.c:450
+msgid "--contains option is only allowed with -l."
+msgstr "--contains 选项只允许和 -l 共用。"
+
+#: builtin/tag.c:458
+msgid "only one -F or -m option is allowed."
+msgstr "只允许一个 -F 或 -m 选项。"
+
+#: builtin/tag.c:478
+msgid "too many params"
+msgstr "太多参数"
+
+#: builtin/tag.c:484
+#, c-format
+msgid "'%s' is not a valid tag name."
+msgstr "'%s' 不是一个有效的tag名称"
+
+#: builtin/tag.c:489
+#, c-format
+msgid "tag '%s' already exists"
+msgstr "tag '%s' 已存在"
+
+#: builtin/tag.c:507
+#, c-format
+msgid "%s: cannot lock the ref"
+msgstr "%s:不能锁定引用"
+
+#: builtin/tag.c:509
+#, c-format
+msgid "%s: cannot update the ref"
+msgstr "%s:不能更新引用"
+
+#: builtin/tag.c:511
+#, c-format
+msgid "Updated tag '%s' (was %s)\n"
+msgstr "已更新tag '%s'(曾为 %s)\n"
+
+#: git-am.sh:48
+msgid "You need to set your committer info first"
+msgstr "您需要先设置你的提交者信息"
+
+#: git-am.sh:134
+msgid "Repository lacks necessary blobs to fall back on 3-way merge."
+msgstr "版本库缺乏必要的 blob 数据以进行三路合并。"
+
+#: git-am.sh:143
+msgid ""
+"Did you hand edit your patch?\n"
+"It does not apply to blobs recorded in its index."
+msgstr ""
+"您是否曾手动编辑过您的补丁?\n"
+"无法应用补丁到暂存区的数据中。"
+
+#: git-am.sh:152
+msgid "Falling back to patching base and 3-way merge..."
+msgstr "转而使用补丁应用的基础版本和三路合并..."
+
+#: git-am.sh:264
+msgid "Only one StGIT patch series can be applied at once"
+msgstr "一次只能有一个 StGIT 补丁队列被应用"
+
+#: git-am.sh:351
+#, sh-format
+msgid "Patch format $patch_format is not supported."
+msgstr "不支持 $patch_format 补丁格式。"
+
+#: git-am.sh:353
+msgid "Patch format detection failed."
+msgstr "补丁格式检测失败。"
+
+#: git-am.sh:403
+msgid "-d option is no longer supported.  Do not use."
+msgstr "不再支持 -d 选项。不要使用。"
+
+#: git-am.sh:466
+#, sh-format
+msgid "previous rebase directory $dotest still exists but mbox given."
+msgstr "之前的变基目录 $dotest 仍然存在但给出了mbox。"
+
+#: git-am.sh:471
+msgid "Please make up your mind. --skip or --abort?"
+msgstr "请下决心。--skip 或是 --abort ?"
+
+#: git-am.sh:498
+msgid "Resolve operation not in progress, we are not resuming."
+msgstr "解决操作未进行,我们不会继续。"
+
+#: git-am.sh:564
+#, sh-format
+msgid "Dirty index: cannot apply patches (dirty: $files)"
+msgstr "脏的暂存区:不能应用补丁(脏文件:$files)"
+
+#: git-am.sh:731
+msgid "cannot be interactive without stdin connected to a terminal."
+msgstr "没有和终端关联的标准输入不能进行交互式操作。"
+
+#  注意保持句尾空格
+#. TRANSLATORS: Make sure to include [y], [n], [e], [v] and [a]
+#. in your translation. The program will only accept English
+#. input at this point.
+#: git-am.sh:742
+msgid "Apply? [y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all "
+msgstr "应用?[y]es/[n]o/[e]dit/[v]iew patch/[a]ccept all "
+
+#: git-am.sh:778
+#, sh-format
+msgid "Applying: $FIRSTLINE"
+msgstr "正应用:$FIRSTLINE"
+
+#: git-am.sh:823
+msgid "No changes -- Patch already applied."
+msgstr "没有变更 -- 补丁已经应用过。"
+
+#: git-am.sh:849
+msgid "applying to an empty history"
+msgstr "正应用到一个空历史上"
+
+#  注意保持句尾空格
+#. TRANSLATORS: Make sure to include [Y] and [n] in your
+#. translation. The program will only accept English input
+#. at this point.
+#: git-bisect.sh:54
+msgid "Do you want me to do it for you [Y/n]? "
+msgstr "您想让我为您这样做么[Y/n]? "
+
+#: git-bisect.sh:95
+#, sh-format
+msgid "unrecognised option: '$arg'"
+msgstr "未识别的选项:'$arg'"
+
+#: git-bisect.sh:99
+#, sh-format
+msgid "'$arg' does not appear to be a valid revision"
+msgstr "'$arg' 看起来不像是一个有效的版本"
+
+#: git-bisect.sh:117
+msgid "Bad HEAD - I need a HEAD"
+msgstr "坏的 HEAD - 我需要一个 HEAD"
+
+#: git-bisect.sh:130
+#, sh-format
+msgid ""
+"Checking out '$start_head' failed. Try 'git bisect reset <validbranch>'."
+msgstr "检出 '$start_head' 失败。尝试 'git bisect reset <validbranch>'。"
+
+#: git-bisect.sh:140
+msgid "won't bisect on seeked tree"
+msgstr "不会在已查找过的树上二分查找"
+
+#: git-bisect.sh:144
+msgid "Bad HEAD - strange symbolic ref"
+msgstr "错误的 HEAD - 奇怪的符号引用"
+
+#: git-bisect.sh:189
+#, sh-format
+msgid "Bad bisect_write argument: $state"
+msgstr "错误的bisect_write参数:$state"
+
+#: git-bisect.sh:218
+#, sh-format
+msgid "Bad rev input: $arg"
+msgstr "输入错误版本:$arg"
+
+#: git-bisect.sh:232
+msgid "Please call 'bisect_state' with at least one argument."
+msgstr "请在调用 'bisect_state' 时跟至少一个参数。"
+
+#: git-bisect.sh:244
+#, sh-format
+msgid "Bad rev input: $rev"
+msgstr "输入坏的版本:$rev"
+
+#: git-bisect.sh:250
+msgid "'git bisect bad' can take only one argument."
+msgstr "'git bisect bad' 只能带一个参数。"
+
+#  注意保持句尾空格
+#. TRANSLATORS: Make sure to include [Y] and [n] in your
+#. translation. The program will only accept English input
+#. at this point.
+#: git-bisect.sh:279
+msgid "Are you sure [Y/n]? "
+msgstr "您确认么[Y/n]? "
+
+#: git-bisect.sh:354
+#, sh-format
+msgid "'$invalid' is not a valid commit"
+msgstr "'$invalid' 不是一个有效的提交"
+
+#: git-bisect.sh:363
+#, sh-format
+msgid ""
+"Could not check out original HEAD '$branch'.\n"
+"Try 'git bisect reset <commit>'."
+msgstr ""
+"不能检出原始 HEAD '$branch'。\n"
+"尝试 'git bisect reset <commit>'。"
+
+#: git-bisect.sh:390
+msgid "No logfile given"
+msgstr "未提供日志文件"
+
+#: git-bisect.sh:391
+#, sh-format
+msgid "cannot read $file for replaying"
+msgstr "不能读取 $file 来重放"
+
+#: git-bisect.sh:408
+msgid "?? what are you talking about?"
+msgstr "?? 您在说什么?"
+
+#: git-bisect.sh:474
+msgid "We are not bisecting."
+msgstr "我们没有进行二分查找。"
+
+#: git-pull.sh:21
+msgid ""
+"Pull is not possible because you have unmerged files.\n"
+"Please, fix them up in the work tree, and then use 'git add/rm <file>'\n"
+"as appropriate to mark resolution, or use 'git commit -a'."
+msgstr ""
+"Pull 不可用,因为你尚有未合并的文件。请先在工作区改正文件,\n"
+"然后酌情使用 'git add/rm <file>' 标记解决方案,\n"
+"或使用 'git commit -a'。"
+
+#: git-pull.sh:25
+msgid "Pull is not possible because you have unmerged files."
+msgstr "Pull 不可用,因为你尚有未合并的文件。"
+
+#: git-pull.sh:193
+msgid "updating an unborn branch with changes added to the index"
+msgstr "更新尚未诞生的分支,变更添加至暂存区"
+
+#: git-pull.sh:249
+msgid "Cannot merge multiple branches into empty head"
+msgstr "无法将多个分支合并到空分支"
+
+#: git-pull.sh:253
+msgid "Cannot rebase onto multiple branches"
+msgstr "无法变基到多个分支"
+
+#: git-stash.sh:51
+msgid "git stash clear with parameters is unimplemented"
+msgstr "git stash clear 不支持参数"
+
+#: git-stash.sh:74
+msgid "You do not have the initial commit yet"
+msgstr "您尚未建立初始提交"
+
+#: git-stash.sh:89
+msgid "Cannot save the current index state"
+msgstr "无法保存当前暂存区状态"
+
+#: git-stash.sh:123 git-stash.sh:136
+msgid "Cannot save the current worktree state"
+msgstr "无法保存当前工作区状态"
+
+#: git-stash.sh:140
+msgid "No changes selected"
+msgstr "没有修改被选择"
+
+#: git-stash.sh:143
+msgid "Cannot remove temporary index (can't happen)"
+msgstr "无法删除临时暂存区(不应发生)"
+
+#: git-stash.sh:156
+msgid "Cannot record working tree state"
+msgstr "不能记录工作区状态"
+
+#: git-stash.sh:223
+msgid "No local changes to save"
+msgstr "没有要保存的本地修改"
+
+#: git-stash.sh:227
+msgid "Cannot initialize stash"
+msgstr "无法初始化stash"
+
+#: git-stash.sh:235
+msgid "Cannot save the current status"
+msgstr "无法保存当前状态"
+
+#: git-stash.sh:253
+msgid "Cannot remove worktree changes"
+msgstr "无法删除工作区变更"
+
+#: git-stash.sh:352
+msgid "No stash found."
+msgstr "未发现stash。"
+
+#: git-stash.sh:359
+#, sh-format
+msgid "Too many revisions specified: $REV"
+msgstr "提供太多的版本:$REV"
+
+#: git-stash.sh:365
+#, sh-format
+msgid "$reference is not valid reference"
+msgstr "$reference 不是有效的引用"
+
+#: git-stash.sh:393
+#, sh-format
+msgid "'$args' is not a stash-like commit"
+msgstr "'$args' 不是stash样提交"
+
+#: git-stash.sh:404
+#, sh-format
+msgid "'$args' is not a stash reference"
+msgstr "'$args' 不是一个stash引用"
+
+#: git-stash.sh:412
+msgid "unable to refresh index"
+msgstr "无法刷新暂存区"
+
+#: git-stash.sh:416
+msgid "Cannot apply a stash in the middle of a merge"
+msgstr "无法在合并过程中恢复进度"
+
+#: git-stash.sh:424
+msgid "Conflicts in index. Try without --index."
+msgstr "暂存区冲突。尝试不用 --index。"
+
+#: git-stash.sh:426
+msgid "Could not save index tree"
+msgstr "无法保存暂存区"
+
+#: git-stash.sh:460
+msgid "Cannot unstage modified files"
+msgstr "无法还原修改的文件"
+
+#: git-stash.sh:491
+#, sh-format
+msgid "Dropped ${REV} ($s)"
+msgstr "丢弃了 ${REV} ($s)"
+
+#: git-stash.sh:492
+#, sh-format
+msgid "${REV}: Could not drop stash entry"
+msgstr "${REV}: 无法丢弃进度条目"
+
+#: git-stash.sh:499
+msgid "No branch name specified"
+msgstr "未指定分支名"
+
+#: git-stash.sh:570
+msgid "(To restore them type \"git stash apply\")"
+msgstr "(为恢复数据输入 \"git stash apply\")"
+
+#: git-submodule.sh:56
+#, sh-format
+msgid "cannot strip one component off url '$remoteurl'"
+msgstr "无法从 url '$remoteurl' 剥离一个组件"
+
+#: git-submodule.sh:108
+#, sh-format
+msgid "No submodule mapping found in .gitmodules for path '$path'"
+msgstr "未在 .gitmodules 中发现路径 '$path' 的子模组映射"
+
+#: git-submodule.sh:172
+#, sh-format
+msgid "Clone of '$url' into submodule path '$path' failed"
+msgstr "克隆 '$url' 到子模组路径 '$path' 失败"
+
+#: git-submodule.sh:246
+#, sh-format
+msgid "repo URL: '$repo' must be absolute or begin with ./|../"
+msgstr "版本库URL:'$repo' 必须是绝对路径或以 ./|../ 起始"
+
+#: git-submodule.sh:263
+#, sh-format
+msgid "'$path' already exists in the index"
+msgstr "'$path' 已经存在于暂存区中"
+
+#: git-submodule.sh:280
+#, sh-format
+msgid "'$path' already exists and is not a valid git repo"
+msgstr "'$path' 已存在且不是一个有效的 git 版本库"
+
+#: git-submodule.sh:294
+#, sh-format
+msgid "Unable to checkout submodule '$path'"
+msgstr "不能检出子模组 '$path'"
+
+#: git-submodule.sh:299
+#, sh-format
+msgid "Failed to add submodule '$path'"
+msgstr "无法添加子模组 '$path'"
+
+#: git-submodule.sh:304
+#, sh-format
+msgid "Failed to register submodule '$path'"
+msgstr "无法注册子模组 '$path'"
+
+#: git-submodule.sh:346
+#, sh-format
+msgid "Entering '$prefix$path'"
+msgstr "正在进入 '$prefix$path'"
+
+#: git-submodule.sh:358
+#, sh-format
+msgid "Stopping at '$path'; script returned non-zero status."
+msgstr "停止于 '$path',脚本返回非零值。"
+
+#: git-submodule.sh:400
+#, sh-format
+msgid "No url found for submodule path '$path' in .gitmodules"
+msgstr "在 .gitmodules 中未找到子模组路径 '$path' 的url"
+
+#: git-submodule.sh:409
+#, sh-format
+msgid "Failed to register url for submodule path '$path'"
+msgstr "无法为子模组路径 '$path' 注册 url"
+
+#: git-submodule.sh:417
+#, sh-format
+msgid "Failed to register update mode for submodule path '$path'"
+msgstr "无法为子模组路径 '$path' 注册更新模式"
+
+#: git-submodule.sh:419
+#, sh-format
+msgid "Submodule '$name' ($url) registered for path '$path'"
+msgstr "子模组 '$name' ($url) 已为路径 '$path' 注册"
+
+#: git-submodule.sh:518
+#, sh-format
+msgid ""
+"Submodule path '$path' not initialized\n"
+"Maybe you want to use 'update --init'?"
+msgstr ""
+"子模组路径 '$path' 没有初始化\n"
+"也许你想用 'update --init'?"
+
+#: git-submodule.sh:531
+#, sh-format
+msgid "Unable to find current revision in submodule path '$path'"
+msgstr "无法在子模组路径 '$path' 中找到当前版本"
+
+#: git-submodule.sh:550
+#, sh-format
+msgid "Unable to fetch in submodule path '$path'"
+msgstr "无法在子模组路径 '$path' 中获取"
+
+#: git-submodule.sh:564
+#, sh-format
+msgid "Unable to rebase '$sha1' in submodule path '$path'"
+msgstr "无法在子模组路径 '$path' 中变基 '$sha1'"
+
+#: git-submodule.sh:565
+#, sh-format
+msgid "Submodule path '$path': rebased into '$sha1'"
+msgstr "子模组路径 '$path':变基至 '$sha1'"
+
+#: git-submodule.sh:570
+#, sh-format
+msgid "Unable to merge '$sha1' in submodule path '$path'"
+msgstr "无法合并 '$sha1' 到子模组路径 '$path' 中"
+
+#: git-submodule.sh:571
+#, sh-format
+msgid "Submodule path '$path': merged in '$sha1'"
+msgstr "子模组路径 '$path':已合并入 '$sha1'"
+
+#: git-submodule.sh:576
+#, sh-format
+msgid "Unable to checkout '$sha1' in submodule path '$path'"
+msgstr "无法在子模组路径 '$path' 中检出 '$sha1'"
+
+#: git-submodule.sh:577
+#, sh-format
+msgid "Submodule path '$path': checked out '$sha1'"
+msgstr "子模组路径 '$path':检出 '$sha1'"
+
+#: git-submodule.sh:599 git-submodule.sh:922
+#, sh-format
+msgid "Failed to recurse into submodule path '$path'"
+msgstr "无法递归进子模组路径 '$path'"
+
+#: git-submodule.sh:707
+msgid "--"
+msgstr "--"
+
+#  注意保持前导空格
+#: git-submodule.sh:765
+#, sh-format
+msgid "  Warn: $name doesn't contain commit $sha1_src"
+msgstr "  警告:$name 未包含提交 $sha1_src"
+
+#  注意保持前导空格
+#: git-submodule.sh:768
+#, sh-format
+msgid "  Warn: $name doesn't contain commit $sha1_dst"
+msgstr "  警告:$name 未包含提交 $sha1_dst"
+
+#  注意保持前导空格
+#: git-submodule.sh:771
+#, sh-format
+msgid "  Warn: $name doesn't contain commits $sha1_src and $sha1_dst"
+msgstr "  警告:$name 未包含提交 $sha1_src 和 $sha1_dst"
+
+#: git-submodule.sh:796
+msgid "blob"
+msgstr "blob"
+
+#: git-submodule.sh:797
+msgid "submodule"
+msgstr "子模组"
+
+#: git-submodule.sh:968
+#, sh-format
+msgid "Synchronizing submodule url for '$name'"
+msgstr "为 '$name' 同步子模组url"
-- 
1.7.9.3.g1fbd7

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] i18n: po for zh_cn
  2012-02-01 15:50 [PATCH] i18n: po for zh_cn Jiang Xin
@ 2012-02-01 17:48 ` Ævar Arnfjörð Bjarmason
  2012-02-02  3:56   ` Jiang Xin
  2012-02-01 23:45 ` Junio C Hamano
  1 sibling, 1 reply; 14+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2012-02-01 17:48 UTC (permalink / raw)
  To: Jiang Xin; +Cc: Git List, Junio C Hamano

On Wed, Feb 1, 2012 at 16:50, Jiang Xin <worldhello.net@gmail.com> wrote:
> Git can speak Chinese now.

That's very nice, and it passes the msgfmt --check test as well, so
all looks good.

As an aside doesn't the bug / workaround described in
https://github.com/git/git/blob/master/gettext.c#L35 impact chinese
especially badly? I'd expect any place where we use strerror() to show
up as total gibberish.

Nothing to be done about that though than providing non-broken printf
functions though, just curious.

> +#: wt-status.c:207
> +msgid "bug"
> +msgstr "bug"

It also looks like we could do away with making this available for
translation, and it should actually be something like "if you see this
report a bug in Git" instead.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] i18n: po for zh_cn
  2012-02-01 15:50 [PATCH] i18n: po for zh_cn Jiang Xin
  2012-02-01 17:48 ` Ævar Arnfjörð Bjarmason
@ 2012-02-01 23:45 ` Junio C Hamano
  2012-02-02  4:47   ` Jiang Xin
                     ` (2 more replies)
  1 sibling, 3 replies; 14+ messages in thread
From: Junio C Hamano @ 2012-02-01 23:45 UTC (permalink / raw)
  To: Jiang Xin; +Cc: Git List

Jiang Xin <worldhello.net@gmail.com> writes:

> Git can speak Chinese now.
>
> Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
> ---
>  po/zh_cn.po | 3568 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 个文件被修改, 3568 处添加(+), 0 处删除(-)
>  create mode 100644 po/zh_cn.po

I do not mind Chinese in the patch text (i.e. below), but I would have
preferred the above not to be in Chinese, which I do not read---I can
guess what 文件, 添加 and 删除 are, and I can also guess that 个 and 处
are units of counting, but nevertheless...

I haven't decided what to do with this, though.  If we are going to get
tons of l10n patches[*1*], it may make sense to have a separate clone of
git.git, with possibly a maintainer other than myself, forked at v1.7.9
and updates _only_ files in po/ hierarchy.

Let me think about how to manage the l10n patches a bit.

Thanks for a patch.

[Footnote]

*1* Ah, another thing, shouldn't the title be labelled as l10n instead of
i18n?

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] i18n: po for zh_cn
  2012-02-01 17:48 ` Ævar Arnfjörð Bjarmason
@ 2012-02-02  3:56   ` Jiang Xin
  0 siblings, 0 replies; 14+ messages in thread
From: Jiang Xin @ 2012-02-02  3:56 UTC (permalink / raw)
  To: Ævar Arnfjörð Bjarmason, Git List

2012/2/2 Ævar Arnfjörð Bjarmason <avarab@gmail.com>:
> On Wed, Feb 1, 2012 at 16:50, Jiang Xin <worldhello.net@gmail.com> wrote:
>> Git can speak Chinese now.
>
> That's very nice, and it passes the msgfmt --check test as well, so
> all looks good.

One bug, the filename should be zh_CN.po, not zh_cn.po. On my Mac,
the filesystem is case insensitive, locale works fine, but in Linux won't.

I will send the patch again with correct filename and with translates
for news message from Git master branch.
(previous l10n is against git v1.7.9, i.e. the maint branch)

>
> As an aside doesn't the bug / workaround described in
> https://github.com/git/git/blob/master/gettext.c#L35 impact chinese
> especially badly? I'd expect any place where we use strerror() to show
> up as total gibberish.

The perror test program does impact chinese too.
On Linux with well translated system error messages, with the following output:

    $ ./test
    test: ??????

On Mac without translated system error messages, output is all ascii.


-- 
Jiang Xin

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] i18n: po for zh_cn
  2012-02-01 23:45 ` Junio C Hamano
@ 2012-02-02  4:47   ` Jiang Xin
       [not found]   ` <201202020111.33772.schwarzerf@gmail.com>
  2012-02-02 13:29   ` Nguyen Thai Ngoc Duy
  2 siblings, 0 replies; 14+ messages in thread
From: Jiang Xin @ 2012-02-02  4:47 UTC (permalink / raw)
  To: Git List

2012/2/2 Junio C Hamano <gitster@pobox.com>:
>> Git can speak Chinese now.
> ...
> I haven't decided what to do with this, though.  If we are going to get
> tons of l10n patches[*1*], it may make sense to have a separate clone of
> git.git, with possibly a maintainer other than myself, forked at v1.7.9
> and updates _only_ files in po/ hierarchy.
>
> Let me think about how to manage the l10n patches a bit.
>
It's really a problem. Nobody knowns all languages, so a seperate mail list
may also have troble.

Since current format-patch -> send-email -> am not suitable for l10n,
pull-request and outside seperate bug report maybe better.

 - One langage, one l10n team with one repo on GitHub.
 - Project homepage write into the header of PO file, such as:
    "Language-Team: GitHub <https://github.com/gotgit/git/>\n"
 - Bug report not directly to this list, but use GitHub as an
alternate for example.
 - As to the branch management,  the same as Git or can be easily matched.
   as a example: master-zh-cn <-> master, maint-zh-cn <-> maint
 - Pull Request send to this mailing list.

> *1* Ah, another thing, shouldn't the title be labelled as l10n instead of
> i18n?

yeah. not only should I update the brief commit log, but also filename should
be zh_CN.po, not zh_cn.po.


--
Jiang Xin

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] i18n: po for zh_cn
       [not found]   ` <201202020111.33772.schwarzerf@gmail.com>
@ 2012-02-02  4:56     ` Junio C Hamano
  2012-02-02  6:43       ` Jiang Xin
  0 siblings, 1 reply; 14+ messages in thread
From: Junio C Hamano @ 2012-02-02  4:56 UTC (permalink / raw)
  To: Frederik Schwarzer; +Cc: git, Jiang Xin

Frederik Schwarzer <schwarzerf@gmail.com> writes:

Administrivia:

	Kicked back to the mailing list so that Jiang and Ævar have a
        chance to join the discussion.

>> [Footnote]
>> 
>> *1* Ah, another thing, shouldn't the title be labelled as l10n
>> instead of i18n?
>
> l10n if translations are sent, i18n if patches to improve translation 
> support in the sources are sent.

Yes, that was what I was getting at.

> But maybe a separate mailing list 
> might be a good idea. So people interested could be subscribed there 
> without being overwhelmed by the amount of mails in here.

I personally do not think git-l10n warrants a full mailing list dedicated
to it (but see (4) below).

Earlier I said:

> I haven't decided what to do with this, though.  If we are going to get
> tons of l10n patches[*1*], it may make sense to have a separate clone of
> git.git, with possibly a maintainer other than myself, forked at v1.7.9
> and updates _only_ files in po/ hierarchy.

I actually was hoping to see somebody to step up and volunteer to be the
l10n coordinator (see git-gui/po/README, which calls this person "the
internationalization coordinator", for the responsibility of this role).

I would envision that the workflow would go like this:

 (1) The l10n coordinator makes a fork of "git.git", and start his history
     at v1.7.9.  Let's call this the "git-po" repository.

 (2) The l10n coordinator prepares po/git.pot and makes a commit in
     "git-po" repository. It is l10n coordinator's responsibility to
     maintain this file.

 (3) There will be one l10n team for each supported locale. Jiang might
     volunteer to be the team leader for zh_CN.  Each team leader forks
     the git-po repository.  Let's call this the "git-po-zh_CN" repository
     (there will hopefully be more, like "git-po-is", "git-po-pt_BR",
     etc.)

 (4) Members of each locale team work to advance their "git-po-$locale"
     history. They make changes ONLY to po/$locale.po file and NOTHING
     ELSE. Specifically, locale teams are NOT expected to touch po/git.pot
     or any source files in their "git-po-$locale" repository.

     How the members in a locale team coordinate their work is up to the
     team. A large team might want to have their own mailing list, and I
     wouldn't stop it.

 (5) From time to time, each locale team asks the l10n coordinator to pull
     from their history, and the l10n coordinator will pull updated
     translations. Optionally, the locale team may want to clean up their
     history before asking the l10n coordinator to pull their work.

 (6) From time to time, the l10n coordinator will pull from "git.git" when
     meaningful number of changes are made to the translatable strings.  I
     hope this would happen much less often than once per week, preferably
     much less frequently. The l10n coordinator updates po/git.pot and
     makes a commit, and notifies the l10n teams.

 (7) The l10n teams will pull from "git-po" to get the updated po/git.pot
     file and will work on updating their "git-po-$locale" repository (go
     back to step (4) above).

 (8) From time to time, the l10n coordinator will ask me to pull from
     "git-po" repository.

One possible mechanism to use might be to host all of these at GitHub, to
leverage their service for all the "forking" and "requesting pull" above,
as well as intra-team communication.

And i18n patches that modify the _() markings in the source code, will
only go through "git.git" tree in the normal channel, IOW, this mailing
list.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] i18n: po for zh_cn
  2012-02-02  4:56     ` Junio C Hamano
@ 2012-02-02  6:43       ` Jiang Xin
  2012-02-02  8:15         ` Junio C Hamano
  0 siblings, 1 reply; 14+ messages in thread
From: Jiang Xin @ 2012-02-02  6:43 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Frederik Schwarzer, git

2012/2/2 Junio C Hamano <gitster@pobox.com>:
> Frederik Schwarzer <schwarzerf@gmail.com> writes:
>> l10n if translations are sent, i18n if patches to improve translation
>> support in the sources are sent.
>
> Yes, that was what I was getting at.

I just sent a updated patch with the correct commit log. ;-)

>> But maybe a separate mailing list
>> might be a good idea. So people interested could be subscribed there
>> without being overwhelmed by the amount of mails in here.
>
> I personally do not think git-l10n warrants a full mailing list dedicated
> to it (but see (4) below).
>

Nobody knows all languages, so a git-l10n mailing list for all translators may
lead chaos. But a mailing list for l10n coordinator to notify l10n teams
and for new l10n team setup maybe useful. Because this git list is some busy,
may lost notifications.

> I would envision that the workflow would go like this:
>
>  (1) The l10n coordinator makes a fork of "git.git", and start his history
>     at v1.7.9.  Let's call this the "git-po" repository.
>
>  (2) The l10n coordinator prepares po/git.pot and makes a commit in
>     "git-po" repository. It is l10n coordinator's responsibility to
>     maintain this file.

Yes, really needs a po/git.pot.

>
>  (3) There will be one l10n team for each supported locale. Jiang might
>     volunteer to be the team leader for zh_CN.  Each team leader forks
>     the git-po repository.  Let's call this the "git-po-zh_CN" repository
>     (there will hopefully be more, like "git-po-is", "git-po-pt_BR",
>     etc.)

It's my honor. Last three days I setup a one file repo for l10n of zh_CN,
and use one wiki page (https://github.com/gotgit/git-l10n-zh-cn/wiki/TaskList)
for translators to fetch/coordinate translation tasks.
Now it's time to start with a new repo with full history and files, maybe
git-po-zh_CN for Chinese language.

>
>  (4) Members of each locale team work to advance their "git-po-$locale"
>     history. They make changes ONLY to po/$locale.po file and NOTHING
>     ELSE. Specifically, locale teams are NOT expected to touch po/git.pot
>     or any source files in their "git-po-$locale" repository.

Also care about not writing commit log in native language.

>
>     How the members in a locale team coordinate their work is up to the
>     team. A large team might want to have their own mailing list, and I
>     wouldn't stop it.
>
>  (5) From time to time, each locale team asks the l10n coordinator to pull
>     from their history, and the l10n coordinator will pull updated
>     translations. Optionally, the locale team may want to clean up their
>     history before asking the l10n coordinator to pull their work.
>
>  (6) From time to time, the l10n coordinator will pull from "git.git" when
>     meaningful number of changes are made to the translatable strings.  I
>     hope this would happen much less often than once per week, preferably
>     much less frequently. The l10n coordinator updates po/git.pot and
>     makes a commit, and notifies the l10n teams.

notifies the l10n teams using another mailing list maybe.

>  (7) The l10n teams will pull from "git-po" to get the updated po/git.pot
>     file and will work on updating their "git-po-$locale" repository (go
>     back to step (4) above).
>
>  (8) From time to time, the l10n coordinator will ask me to pull from
>     "git-po" repository.
>
> One possible mechanism to use might be to host all of these at GitHub, to
> leverage their service for all the "forking" and "requesting pull" above,
> as well as intra-team communication.

Use GitHub organization account is highly recommended.
I wrote a open e-book (in Chinese) on this:
http://www.worldhello.net/gotgithub/04-work-with-others/030-organization.html

> And i18n patches that modify the _() markings in the source code, will
> only go through "git.git" tree in the normal channel, IOW, this mailing
> list.

Yeah,  works on the codes but not the po files still send to this list.

-- 
Jiang Xin

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] i18n: po for zh_cn
  2012-02-02  6:43       ` Jiang Xin
@ 2012-02-02  8:15         ` Junio C Hamano
  0 siblings, 0 replies; 14+ messages in thread
From: Junio C Hamano @ 2012-02-02  8:15 UTC (permalink / raw)
  To: Jiang Xin; +Cc: Frederik Schwarzer, git

Jiang Xin <worldhello.net@gmail.com> writes:

> 2012/2/2 Junio C Hamano <gitster@pobox.com>:
> ...
>>  (6) From time to time, the l10n coordinator will pull from "git.git" when
>>     meaningful number of changes are made to the translatable strings.  I
>>     hope this would happen much less often than once per week, preferably
>>     much less frequently. The l10n coordinator updates po/git.pot and
>>     makes a commit, and notifies the l10n teams.
>
> notifies the l10n teams using another mailing list maybe.

I personally think using the regular git@vger.kernel.org list would be
preferrable for this.  People who translate would want to learn the
reasoning that led to the final phrasing of the messages to come up with
usable translation, and following the main list would be one way to do
so. Having to follow two separate list will be an unnecessary burden.

But the choice of how to coordinate his or her work with the l10n teams is
entirely up to the l10n coordinator.

>> And i18n patches that modify the _() markings in the source code, will
>> only go through "git.git" tree in the normal channel, IOW, this mailing
>> list.
>
> Yeah,  works on the codes but not the po files still send to this list.

Many if not all of the po files in gitk and git-gui were discussed on this
list and integrated to the tree with the usual "format-patch to am" review
flow just fine.  You keep saying that l10n patches does not work, but that
is patently wrong.

It is a different matter if it is the most convenient for l10n patches for
both the l10n folks and others to review and discuss on this list, or on
web based services like GitHub.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] i18n: po for zh_cn
  2012-02-01 23:45 ` Junio C Hamano
  2012-02-02  4:47   ` Jiang Xin
       [not found]   ` <201202020111.33772.schwarzerf@gmail.com>
@ 2012-02-02 13:29   ` Nguyen Thai Ngoc Duy
  2012-02-02 16:42     ` Ævar Arnfjörð Bjarmason
  2012-02-02 18:49     ` Junio C Hamano
  2 siblings, 2 replies; 14+ messages in thread
From: Nguyen Thai Ngoc Duy @ 2012-02-02 13:29 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Jiang Xin, Git List, Ævar Arnfjörð Bjarmason

On Thu, Feb 2, 2012 at 6:45 AM, Junio C Hamano <gitster@pobox.com> wrote:
> Jiang Xin <worldhello.net@gmail.com> writes:
>
>> Git can speak Chinese now.
>>
>> Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
>> ---
>>  po/zh_cn.po | 3568 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>  1 个文件被修改, 3568 处添加(+), 0 处删除(-)
>>  create mode 100644 po/zh_cn.po
>
> I do not mind Chinese in the patch text (i.e. below), but I would have
> preferred the above not to be in Chinese, which I do not read---I can
> guess what 文件, 添加 and 删除 are, and I can also guess that 个 and 处
> are units of counting, but nevertheless...

Such a stat line would be wonderful in an all-Chinese environment
though. I'm thinking perhaps it's a good idea to support
core.officialLocale (or workingLanguage). Commands that produce stuff
for outside like format-patch would prefer core.exchangeLanguage over
$LANG. Commands in blurred zone can learn --official option to ignore
$LANG.

We can then have a shared config with core.officialLocale =
en_US.UTF-8 somewhere in git.git. Developers of multi-nation companies
would be pleased, I think.
-- 
Duy

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] i18n: po for zh_cn
  2012-02-02 13:29   ` Nguyen Thai Ngoc Duy
@ 2012-02-02 16:42     ` Ævar Arnfjörð Bjarmason
  2012-02-03  1:35       ` Jiang Xin
  2012-02-02 18:49     ` Junio C Hamano
  1 sibling, 1 reply; 14+ messages in thread
From: Ævar Arnfjörð Bjarmason @ 2012-02-02 16:42 UTC (permalink / raw)
  To: Nguyen Thai Ngoc Duy; +Cc: Junio C Hamano, Jiang Xin, Git List

On Thu, Feb 2, 2012 at 14:29, Nguyen Thai Ngoc Duy <pclouds@gmail.com> wrote:
> On Thu, Feb 2, 2012 at 6:45 AM, Junio C Hamano <gitster@pobox.com> wrote:
>> Jiang Xin <worldhello.net@gmail.com> writes:
>>
>>> Git can speak Chinese now.
>>>
>>> Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
>>> ---
>>>  po/zh_cn.po | 3568 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>  1 个文件被修改, 3568 处添加(+), 0 处删除(-)
>>>  create mode 100644 po/zh_cn.po
>>
>> I do not mind Chinese in the patch text (i.e. below), but I would have
>> preferred the above not to be in Chinese, which I do not read---I can
>> guess what 文件, 添加 and 删除 are, and I can also guess that 个 and 处
>> are units of counting, but nevertheless...
>
> Such a stat line would be wonderful in an all-Chinese environment
> though. I'm thinking perhaps it's a good idea to support
> core.officialLocale (or workingLanguage). Commands that produce stuff
> for outside like format-patch would prefer core.exchangeLanguage over
> $LANG. Commands in blurred zone can learn --official option to ignore
> $LANG.
>
> We can then have a shared config with core.officialLocale =
> en_US.UTF-8 somewhere in git.git. Developers of multi-nation companies
> would be pleased, I think.

For now we can also avoid this whole issue and just declare that
anything that's used for interchange or permanently stored
(git-format-patch output, reflogs, merge commit messages etc.) will be
in English.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] i18n: po for zh_cn
  2012-02-02 13:29   ` Nguyen Thai Ngoc Duy
  2012-02-02 16:42     ` Ævar Arnfjörð Bjarmason
@ 2012-02-02 18:49     ` Junio C Hamano
  1 sibling, 0 replies; 14+ messages in thread
From: Junio C Hamano @ 2012-02-02 18:49 UTC (permalink / raw)
  To: Nguyen Thai Ngoc Duy
  Cc: Jiang Xin, Git List, Ævar Arnfjörð Bjarmason

Nguyen Thai Ngoc Duy <pclouds@gmail.com> writes:

> On Thu, Feb 2, 2012 at 6:45 AM, Junio C Hamano <gitster@pobox.com> wrote:
>> Jiang Xin <worldhello.net@gmail.com> writes:
>>
>>> Git can speak Chinese now.
>>>
>>> Signed-off-by: Jiang Xin <worldhello.net@gmail.com>
>>> ---
>>>  po/zh_cn.po | 3568 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>  1 个文件被修改, 3568 处添加(+), 0 处删除(-)
>>>  create mode 100644 po/zh_cn.po
>>
>> I do not mind Chinese in the patch text (i.e. below), but I would have
>> preferred the above not to be in Chinese, which I do not read---I can
>> guess what 文件, 添加 and 删除 are, and I can also guess that 个 and 处
>> are units of counting, but nevertheless...
>
> Such a stat line would be wonderful in an all-Chinese environment
> though.

Yes, but the git mailing list is not all-Chinese environment. I was merely
asking that the future submissions will be prepared with something like a
one-shot "LC_ALL=C git format-patch ..."; it wasn't a suggestion not to i18n
the summary bit.

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] i18n: po for zh_cn
  2012-02-02 16:42     ` Ævar Arnfjörð Bjarmason
@ 2012-02-03  1:35       ` Jiang Xin
  0 siblings, 0 replies; 14+ messages in thread
From: Jiang Xin @ 2012-02-03  1:35 UTC (permalink / raw)
  To: Ævar Arnfjörð Bjarmason; +Cc: Git List, Nguyen Thai Ngoc Duy

2012/2/3 Ævar Arnfjörð Bjarmason <avarab@gmail.com>:
> For now we can also avoid this whole issue and just declare that
> anything that's used for interchange or permanently stored
> (git-format-patch output, reflogs, merge commit messages etc.) will be
> in English.

An extreme case is: Hg translated 'hg --versoin' and broke many other software.
For example, redmine had to grep hg version properly using 'LC_ALL=C
hg --version'.

I think Duy‘s patch maybe better for such cases.
http://thread.gmane.org/gmane.comp.version-control.git/189453/focus=189509
The call of interactive_use makes translations only available for human
but not for interchange and permanently stored.

-- 
Jiang Xin

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] i18n: po for zh_cn
  2012-02-02 10:04 Frederik Schwarzer
@ 2012-02-02 19:20 ` Junio C Hamano
  0 siblings, 0 replies; 14+ messages in thread
From: Junio C Hamano @ 2012-02-02 19:20 UTC (permalink / raw)
  To: Frederik Schwarzer; +Cc: git

Frederik Schwarzer <schwarzerf@gmail.com> writes:

> Translations of the former group are in many cases suboptimal. But the 
> latter group will not follow this mailing list.

Well, I would have to caution that translations by people who are not
familiar with Git would also be in many cases suboptimal, too.  Have you
seen translations of technical books by nontechnical people?

> ... In practice I guess interested Translators (who are not 
> interested in every code detail) will unsubscribe after a few days and 
> then miss all the fun.

Ever heard of mail filtering by say Subject: or even From: ? ;)

> A git-i18n mailing list could coordinate that. It would not be a list 
> for l10n teams to do their internal coordination, but for the i18n 
> coordinator to notify l10n teams about updated POT files (he might 
> even merge PO files) and for l10n teams to ask about strings they are 
> unsure about. These questions would then be digested by the i18n 
> coordinator and brought to the attention of the developers if needed.
>
> How does that sound?

That is entirely up to the l10n coordinator. Are you volunteering?

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH] i18n: po for zh_cn
@ 2012-02-02 10:04 Frederik Schwarzer
  2012-02-02 19:20 ` Junio C Hamano
  0 siblings, 1 reply; 14+ messages in thread
From: Frederik Schwarzer @ 2012-02-02 10:04 UTC (permalink / raw)
  To: git

Am Donnerstag, 2. Februar 2012, 09:15:38 schrieben Sie:

(damn, my mail programme always answers to the sender only ...)

Hi,

> Jiang Xin <worldhello.net@gmail.com> writes:
> > 2012/2/2 Junio C Hamano <gitster@pobox.com>:
> > ...
> > 
> >>  (6) From time to time, the l10n coordinator will pull from
> >>  "git.git" when
> >>  
> >>     meaningful number of changes are made to the translatable
> >>     strings.  I hope this would happen much less often than
> >>     once per week, preferably much less frequently. The l10n
> >>     coordinator updates po/git.pot and makes a commit, and
> >>     notifies the l10n teams.
> > 
> > notifies the l10n teams using another mailing list maybe.
> 
> I personally think using the regular git@vger.kernel.org list would
> be preferrable for this.  People who translate would want to learn
> the reasoning that led to the final phrasing of the messages to
> come up with usable translation, and following the main list would
> be one way to do so. Having to follow two separate list will be an
> unnecessary burden.
> 
> But the choice of how to coordinate his or her work with the l10n
> teams is entirely up to the l10n coordinator.

As I see it there are two kinds of people doing translations. 
Developers who also translate and people who want to translate 
software but are not involved in the development.

Translations of the former group are in many cases suboptimal. But the 
latter group will not follow this mailing list. They are not 
interested in all the details. They live in their room, get a piece of 
paper and translate it. In case something is unclear, they aks. But as 
it is now, it would look something like this:
Translators receive 100+ emails per day and are supposed to filter out 
the one email every 10 days that carries useful information for their 
work. In practice I guess interested Translators (who are not 
interested in every code detail) will unsubscribe after a few days and 
then miss all the fun.

A git-i18n mailing list could coordinate that. It would not be a list 
for l10n teams to do their internal coordination, but for the i18n 
coordinator to notify l10n teams about updated POT files (he might 
even merge PO files) and for l10n teams to ask about strings they are 
unsure about. These questions would then be digested by the i18n 
coordinator and brought to the attention of the developers if needed.

How does that sound?

Regards

PS: I would have even put all the POT/PO stuff in an extra Git 
repository. Working with translation is decoupled from development 
cleanly by the msginit/msgmerge process but well, it might not be woth 
that separation for a single project. :)

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2012-02-03  1:36 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-02-01 15:50 [PATCH] i18n: po for zh_cn Jiang Xin
2012-02-01 17:48 ` Ævar Arnfjörð Bjarmason
2012-02-02  3:56   ` Jiang Xin
2012-02-01 23:45 ` Junio C Hamano
2012-02-02  4:47   ` Jiang Xin
     [not found]   ` <201202020111.33772.schwarzerf@gmail.com>
2012-02-02  4:56     ` Junio C Hamano
2012-02-02  6:43       ` Jiang Xin
2012-02-02  8:15         ` Junio C Hamano
2012-02-02 13:29   ` Nguyen Thai Ngoc Duy
2012-02-02 16:42     ` Ævar Arnfjörð Bjarmason
2012-02-03  1:35       ` Jiang Xin
2012-02-02 18:49     ` Junio C Hamano
2012-02-02 10:04 Frederik Schwarzer
2012-02-02 19:20 ` Junio C Hamano

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.