我正在多语言环境中构build一个C ++ / MFC程序。 我有一个主要(国家)语言和三种国际语言。 每当我为该计划增加一个function时,我都必须使国际语言与国家语言保持一致。 Visual Studio中的资源编辑器不是非常有用,因为我经常最终留下一个string,对话框等,未翻译。
我想知道你们是否知道一个可以编辑资源(.rc)文件的程序
退房Lingobit Localizer 。 昂贵,但非常值得。
这里是我用来生成资源文件以用不同的语言进行测试的脚本。 它只是解析babelfish的回应,所以翻译的质量和醉猴的质量差不多,但对于测试等是有用的
for i in $trfile do key=`echo $i | sed 's/^\(.*\)=\(.*\)$/\1/g'` value=`echo $i | sed 's/^\(.*\)=\(.*\)$/\2/g'` url="http://babelfish.altavista.com/tr?doit=done&intl=1&tt=urltext&lp=$langs&btnTrTxt=Translate&trtext=$value" wget -O foo.html -A "$agent" "$url" *&> /dev/null tx=`grep "<td bgcolor=white class=s><div style=padding:10px;>" foo.html` tx=`echo $tx | iconv -f latin1 -t utf-8 | sed 's/<td bgcolor=white class=s><div style=padding:10px;>\(.*\)<\/div><\/td>/\1/g'` echo $key=$tx done rm foo.html
检查appTranslator ,它相对便宜,工作得很好。 开发它的人真的对增强请求和错误报告有反应,所以你得到了很好的支持。
你可以看看Sisulizer http://www.sisulizer.com 。 昂贵,但。 我们正在评估它在我的公司使用,以管理正在进行的翻译的头痛。 我在他们的关于页面上看到,该公司是由离开Multilizer和其他类似公司的人创立的。
根据我的经验,国际化不仅仅需要翻译字符串。 翻译时有很多字符串,在对话框上需要更多的空间。 正因为如此,能够为每种语言定制对话框是有用的。 否则,您必须为翻译后的字符串创建带有额外空间的对话框,然后在用英语显示时看起来不太理想。
一段时间以来,我使用的是一个MFC应用程序的翻译工具,但生产该软件的公司停止了销售。 当我试图找到一个价格合理的更换,我没有找到一个。
如果没有一个,那么循环遍历一个资源中的所有字符串将是非常容易的,将它们与国际资源进行比较。 你可以用一个简单的网格来做到这一点。
最后,我们最终建立了自己的外部工具来管理这个工具。 我们的开发人员在英文字符串表中工作,每个自动构建都会将我们添加/更改并删除的字符串发送到翻译管理器。 他还可以随时从旧版本中运行报告,以确定翻译所需的内容。
看看RC-WinTrans 。 它是我公司使用的商业工具。 它基本上将我们的.RC文件(或.resx文件)导入到我们发送到另一个办公室进行翻译的数据库中。 然后该工具可以从数据库中为每种语言导出翻译后的.RC文件(或.resx文件)。 它甚至有一个基本的对话框编辑器,所以翻译者可以调整对话框中的各种控件的大小,以确保翻译的文本适合。
它还接受许多命令行参数,并具有COM自动化接口,因此您可以更轻松地将其集成到构建过程中。 它对我们来说工作得很好,而且我们实际上有成千上万的字符串和对话框等等。
(我们目前有版本7,所以我说的可能会有点不同于他们的最新版本8)
另请尝试AppTranslator: http : //www.apptranslator.com/ 。 它有一个内置的资源编辑器,以便翻译人员可以在需要时扩大文本框。 它为开发人员和翻译人员提供了不同的版本。
我们正在使用Multilizer( http://www.multilizer.com/ ),虽然有时候使用起来有点棘手,但最后还是有点耐心,它的工作非常好。
我们甚至有一个翻译网站,翻译人员可以下载我们的项目,然后使用Multilizer命令行功能上传翻译。
使用.rc文件和Visual Studio管理本地化和翻译不是一个好主意。 通过exe开始本地化是非常聪明(虽然反直觉)。 在这里阅读为什么: http : //www.apptranslator.com/misconceptions.html
ResxCrunch即将推出,它将在一个表中编辑多种语言的多个资源文件。
我最近写了这个,集成到VS中:
https://github.com/ekkis/Powershell/blob/master/MT.ps1
主要是因为我对这里的解决方案不满意。 你需要从M $获得一个客户ID(但是他们给你2M字/月的免费翻译 – 不错)