制作TortoiseSVN最新版本的中文DLL(转)

转自:http://blog.donews.com/feihu/archive/2005/05/13/377920.aspx

自从发现了SVN后,我在自己的项目中总是使用SVN来做源代码管理,在windows上使用TortoiseSVN做客户端。TortiseSVN作为windows客户端有个非常好的用途,就是不需要SVN的服务器,就可以管理本机硬盘上的代码和文档。我也一直这样使用。可以参见猛禽的Blog,SVN的Local方式:个人源码管理的好办法(CSDN的blog到底出了什么问题,都不能访问了)

一直用了TortiseSVN1.1.3没有升级,今天早上,手工检查了一下,发现升级到1.1.7.3332,就去下载了看看。尽管我不用翻译后的TSVN,但基于习惯,总是要去下载一个中文包。嗯,却没有发现有相应的中文语言包下载。再看了一下转移到http://tortoisesvn.berlios.de的TSVN的帮助站点,才发现现在帮助方式已经修改了,采用了PO文件作为翻译方式。PO文件其实是UTF-8的文本文件,非常容易编辑,这样也方便了翻译。但最后需要注入近语言DLL,才能被TSVN使用。目前TortiseSVN的版本比较新,所以还没有相应的中文DLL出来。一时有兴趣了,就自己来编译个中文DLL吧。

首先,要看看TortiseSVN的帮助了,现在转到http://tortoisesvn.berlios.de,帮助内容丰富了许多,首页右侧的常见问题,一定要看看。

关于TSVN的language的问题,有个页面谈到了:http://tortoisesvn.berlios.de/faq/index.php?action=artikel&cat=4&id=162&artlang=en&highlight=language。里面的这个链接就是关于TSVN的翻译的完整说明:http://svn.collab.net/repos/tortoisesvn/trunk/Languages/translations.txt

1,首先下载翻译好的语言文件:Tortoise_zh_CN.po
http://svn.collab.net/repos/tortoisesvn/tags/version_1.1.7/Languages/下载最新的Tortoise_zh_CN.po,因为简体翻译还在进行中,所以在http://tortoisesvn.berlios.de/l10n有更新的,可以看到翻译了96.5%。在文件中可以了解两位中文简体翻译者
NetCobra <netcobra@gmail.com>
Cecil Sheng <
zcecil@csie.org>
在此表示感谢。

2,然后下载注入软件:ResText
http://tortoisesvn.tigris.org/files/documents/406/14560/ResText.zip下载。它是一个将PO里的数据注入到你自己的资源DLL的软件。

3,最后是下载两个空的语言资源DLL:TortoiseProcLang.dll(主程序使用),TortoiseMergeLang.dll(合并比较程序使用)
http://tortoisesvn.tigris.org/servlets/ProjectDocumentList?folderID=1847下载,一定要下载版本对应的空DLL。当当当当,在这个页面没有1.1.7。我试了一下1.1.5的DLL,确实是不行的。后来就想,自己来编译一下TSVN,这就是OpenSource的好处啊。

编译语言资源DLL:
利用老版本的TSVN,CheckOut出:
http://svn.collab.net/repos/tortoisesvn/tags/version_1.1.7/src/。看看build.txt,编译整个的TSVN,需要的资源(很多配套软件,磁盘空间1.5G等等)。但我们只是编译两个资源文件,是不需要这些的。用VS2003打开整个解决方案,可以看到有两个专门的语言项目:TortoiseMergeLang;TortoiseProcLang。

先将项目根目录下的version.in另存为version.h,将头文件里面的$WCREV$全部替换成3332。然后在VS里面编译且只编译:TortoiseProcLang,TortoiseMergeLang项目。这样在..\..\languages目录下就有了TortoiseMergeLang.dll,TortoiseProcLang.dll。

4,PO注入到DLL:
将四个文件:TortoiseMergeLang.dll,TortoiseProcLang.dll,ResText.exe,Tortoise_zh_CN.po放到一个目录下。从http://www.microsoft.com/globaldev/reference/lcid-all.mspx查询到简体中文的localID是2052。然后再控制台里输入:
restext apply TortoiseMergeLang.dll TortoiseMerge2052.dll Tortoise_zh_CN.po
restext apply TortoiseProcLang.dll TortoiseProc2052.dll Tortoise_zh_CN.po

将生成的两个xxx2052.dll copy到TSVN的目录下的languages目录(必定是C:\Program Files\TortoiseSVN\Languages\,TSVN安装的时候没有让选择目录。)

然后在右键关联菜单TortoiseSVN条目中选择“Settings”,就可以设置中文语言包了。

使用了1.1.7版本的TSVN后,发现了我一直想要的功能,就是自动关于提示窗口,比如checkout,commit后,没什么问题的话,提示窗口会自动关闭了,如果你使用多TSVN后,就能感觉,这个功能是多么的实用。

看截图,可以看到还有一些地方没有翻译,我按照Tortois.pot里面的条目,在中文PO中添加了两处翻译。

#: Control-ID:1066,
msgid "&Close windows automatically"
msgstr "自动关闭提示窗口(&C)"

#: Control-ID:1123,
msgid "D&on’t close on conflicts"
msgstr "提示冲突时不要关闭(&o)"

重新注入,程序提示中:没有翻译的地方少了4个(不知道为什么)。将新的TortoiseProc2052.dll覆盖过去,然后再看看,呵呵,这两处地方已经是中文的了。

如果谁需要TortoiseSVN 1.1.7.332版本的中文DLL,可以发Email给我。

原文地址:https://www.cnblogs.com/meetrice/p/2495380.html