-
刚刚接触 Git 时,通篇阅读了官方的 Pro Git Book ,实际操作时命令行一个也没记住,就直接使用了Git-GUI。
-
官网下载的 Git 安装包,只有英文界面,没有任何其它语言。网上能找到的中文语言文件大概是10多年前的了。
-
语言文件本身内容是纯文本的,格式是符合某规范的,工具在源码里也有。在规范不了解,工具不会用的情况下完全纯手工打造应该更快一些。
- 如果 $GITROOT/mingw64/share/git-gui/lib/msgs/zh_cn.msg 文件存在,在中文系统中 Git-GUI 就会自动显示中文界面。
- 可以从源码或分支中获得需要翻译的内容。
- $git-master\git-gui\po\git-gui.pot 是模板文件,包含了需要翻译的英文。
- $git-master\git-gui\po\zh_cn.po 是中文源文件(已经10多年没有更新了,包含了某些翻译内容)。
- $git-master\git-gui\po\glossary\zh_cn.po 是中文术语表,翻译时尽可能参照这个。
- 制作语言文件就是把 zh_cn.po 参照 git-gui.pot 转换成 zh_cn.msg。
- po、pot、msg 文件中,以井号(#)开头的行为注释行,不起作用。
- zh_cn.po 或 git-gui.pot 文件:
- # 开头的行为注释行,不起作用。
- msgid 开始的多行为原文,即英文界面显示的内容。
- msgstr 开始的多行为翻译后的文本,即中文界面显示的内容。
- 文件中 msgid 为空的行及其相关的 msgstr 是提供给工具使用的。
- zh_cn.msg 文件:
- 由若干行文本组成,每行为一项翻译内容。
- 以井号(#)开头的行为注释行,不起作用。
- 有效行格式固定为:::msgcat::mcset zh_cn "msgid" "msgstr" 。
- 其中,**msgid **为英文原文,msgstr 为翻译后的中文。
-
使用软件 Notepad3 打开源文件 zh_cn.po 和 git-gui.pot 。
-
删除文件中以 # 开头的注释行。
- 使用 “Ctrl+H” 快捷键,调出“替换”对话框;
- “查找目标:”框中输入
^#.*$\n
; - 删除“替换为:”框中的所有内容,使其为空;
- 勾选“循环查找”;
- “查找模式”选择“正则表达式”;
- 点击“替换所有打开文件”。
-
合并文件中 msgid 和 msgstr 后面的多行字符串为1行。
- 方法参考第 2 步;
- “查找目标:”框中输入
"\n"
即可。
-
合并 msgstr 行的内容到 msgid 行后面,同时去除字符 msgstr ,保留空白符和字符串。
- 方法参考第 2 步;
- “查找目标:”框中输入
\nmsgstr
即可。
-
替换字符 msgid 为 ::msgcat::mcset zh_cn ,保留空白字符。
- 方法参考第 2 步;
- “查找目标:”框中输入
msgid
; - “替换为:”框中输入
::msgcat::mcset zh_cn
即可。
-
删除空白行,此时文件内容格式与 zh_cn.msg 一致。
- 方法参考第 2 步;
- “查找目标:”框中输入
^\s+
即可。
-
对文件 zh_cn.po 和 git-gui.pot 分别进行排序,以便于合并文件。注意:由于Notepad3没有此功能,请使用其它工具软件进行排序操作。
- 依次选择菜单 “编辑” -> “行操作” -> “升序排列文本行”;
- 排序号首行会变为空白行,删除即可;
- 此时文件 git-gui.pot 为 580 行,文件 zh_cn.po 为 391 行,可知有好多行未翻译。
-
使用比较软件合并 zh_cn.po 文件内容到 git-gui.pot 文件中。
-
合并原 zh_cn.msg 文件内容 到 git-gui.pot 文件中,生成新的 zh_cn.msg 文件。
-
格式为:::msgcat::mcset zh_cn "msgid" "" 的行需要在末尾的引号中间添加相应的翻译内容;否则,Git-GUI 界面上原来显示 msgid 的地方将显示为空白。
-
可以在行首添加字符 # 注释掉不需要翻译的行,则界面上将显示原文 msgid。
-
双引号中的
"$[]
等符号需要在前面添加转义字符\
,否则 git-gui 会报错,运行失败。 -
将文件 zh_cn.msg 拷贝到前述位置即可。
- git-gui 中 “图形化显示分支” 的菜单会调用 gitk 工具,gitk 是英文界面。
- 源码中也提供了 gitk 的 zh_cn.po 文件,可参照上述过程制作 zh_cn.msg 文件。
- 因为 gitk 不支持 msgid 为空的翻译,所以要删除该行,也就是 zh_cn.msg 文件的首行。
- 拷贝到 $GITROOT/mingw64/share/gitk/lib/msgs/zh_cn.msg 即可。