用户操作
[即时聊天] [发私信] [加为好友]
血色残阳ID:wangjun_pfc
78671次访问,排名1271(-1)好友11人,关注者12
wangjun_pfc的文章
原创 257 篇
翻译 0 篇
转载 206 篇
评论 58 篇
最近评论
gaoqin:看了你的资料我的问题已解决,不过属性文件名我只能写成
messages_zh.properties (中文)
messages_en.properties (英文)
如果像你那样就又出现那个问题,那是什么原因呀!
eagle:nios的这个编译器做的真叫垃圾,界面乱糟糟的都不知道是些什么,而且编译速度还很慢。比起ADS来那是差远了,用的真是难受。
mayll:我也成功了
caohenghui:SB.copy 别人的东西有意思吗!
江桃:还不错,请继续
文章分类
收藏
相册
C技术网站
CSDN.NET - 中国最大的IT技术社区
java技术网站
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

转载 汉化 Web 程序的注意事项收藏

新一篇: button按钮用ActionScript添加事件 | 旧一篇: PDA mambot 让网站自动适应掌上电脑(PPC)阅读版面

 

最近,有个朋友来信与我探讨汉化问题,他准备将另一个开源的大型 web程序 group-office 汉化了。看了他的汉化包我大吃一惊,感到很有必要在此给所有想要进入汉化工作的新手提一些建议(老手就不必看了)。以下以汉化为例,如果要将中文版本翻译成其他国家语言(国际化),也可以参考下面思路。

说明一点:本文所说的 web 程序仅指 php 程序,因为 php 是免费的。而且 php 的运行平台 Linux 也是免费的。

我始终认为:一个工程,如果在一开始没有清晰的思路和合理的流程,规范的框架,最后的结果越多,你就把自己弄得越糊涂。对于大型软件更是要倍加小心,从起步就制定好严格的计划。

1、首先,绝不可以直接汉化英文语言文件!

很多人可能还不太了解汉化方法,或者有时候有点懒,他们没有制作 simplified_chinese.php 或者 zh-CN.ini 或者 cn.xml 这样的汉化语言文件,而是直接将源程序包中的英文语言文件打开直接汉化。这种“偷梁换柱”的结果是非常不便于交流。例如,当你放弃汉化,其他人想要接着继续汉化时,很难找到你在怎么汉化的。在比如,如果把你的汉化成果发送给官方来制作多国语言版,对方根本不能理解你为何发来了 english 语言文件?如果就这么封装到安装包里,势必导致原有的英文语言没有了。


2、保持原有的目录结构、文件路径

有一些web程序的语言文件不止一个,就拿 group-office 来说,除了根目录下的 language 目录里含有主要语言文件,而且 modules 目录里每一种模块都有自己的语言文件目录。因此,汉化者一开始就必须严格按照源程序的目录结构来存储自己的汉化结果,而不是把所有的 zh-cn.inc 语言文件都放在同一级别的目录中。

保持原有文件路径的好处是,当你完成汉化时,直接将最高级的目录拖入原程序安装包内就可以一次添加所有的汉化文件;而当官方将源程序升级后,你也很容易对照你结构创建新的语言文件或者找到原来的语言文件进行升级。

3、选择恰当的文件格式和文件名

目前语言文件的格式很多,在 Joomla! 里面大部分是 .php 文件(Joomla! 1.0.x 最常见),也有 .xml 格式和 .ini(Joomla! 1.5 最常见) 格式。另外,在其他开源程序中还有 .mo / .inc / .txt 等格式。因此汉化者必须弄清楚源程序中的语言文件格式。最简便的方法就是将英文(因为大部分人都是从英文版本来汉化)语言文件复制一份,然后更改为中文语言名称。

而选择什么样的中文语言文件名称也很有讲究。拿 Joomla! 1.0.x 来说,英文语言文件名是 english.php ,简体中文就必须用 simplified_chinese.php,繁体中文就必须用 traditional_chinese.php;而在 Joomla! 1.5 之中,语言文件的名称换用另一种方案,例如英文是 en-GB.ini,那么简体中文就必须用 zh-CN.ini,而繁体中文就必须用 zh-TW.ini(注意大小写)。所以,在汉化时注意分析其他语言文件的命名方式,如果英文仅用 en,中文就是 cn 和 tw;如果英文仅用 eng,那么中文可以分别用 chs 和 cht 。

还有一种情况,就是每一种语言在 language 目录里面占用一个专门的文件夹,汉化者必须复制整个文件夹,修改文件夹名称但不能更改里面的文件名称。例如拿 OpenAds 这个开源程序来说,其  language 目录里有一个文件夹叫做 english_us,这个文件夹里面有8个文件,按照官方的说法,其汉化方法是:复制 english_us 这个文件夹,更改名称为 chinese,进入 chinese 文件夹后逐个翻译8个文件,但不能改动这些文件的名称。换句话说,chinese 文件夹里面的8个文件名称与 english_us 文件夹里面完全相同。

那么,主程序如何知道哪个文件夹里面是中文?这里又引出另一种语言映射方法:在 chinese 这个文件夹里面,有一个文件叫做 index.lang.php,打开该文件,只有3行代码,分别填写语言名称、译者名称和译者电邮。也就是说,主程序自动扫描 language 目录里面每一个文件夹下的 index.lang.php 文件,据此列出所有现存语言的名称,然后在前台供用户选择。这样一来,我们的文件夹名称叫 chinese 或者 zh_cn 或者 zhongwen 都可以了,只要在 index.lang.php 文件里面声明语言名称是“简体中文”,则前台的语言选择下拉框中就有了这种语言。

4、选择正确的字符编码和换行符格式

很多情况下汉化后中文出现乱码都是因为字符编码(character encoding)出错了。因为在 windows XP 平台,简体中文默认的字符编码是 gb2312,繁体中文默认的字符编码是 big5;在 windows 2000 平台,简体中文的字符编码是 GBK。因此你的编辑器可能在保存语言文件时采用了默认编码,而大多数 web 程序已经逐渐走向 utf-8 编码。因此上传后会发现前台的中文出现了乱码。

我在此想重申一下:中国制造的 gb2312 虽然是我们的“国粹”,但却是程序国际化的一大障碍。这个让中国人骄傲的产品背后隐藏的是自私与狭隘,可能还有自立标准的狂妄。Unicode 才是我们应该选择的正确方向。因此,希望开发人员及汉化人员在保存文件时尽量选择 utf-8 编码。

本站会员 indra 在论坛曾经提醒关于文件的“行终结字符”,也就是换行符问题。他的观点是正确的。由于 php 程序运行的最佳平台就是 LAMP (Linux + Apache + MySQL + php),而 Linux 系统的文件换行符是 Unix 格式;我们大多数人在 windows 平台编辑文件之后保存时会默认将换行符设置为 windows 系统格式。这样就容易造成当文件上传到 Linux 服务器上运行时出现问题。因此,在保存语言文件时请注意将换行符选择为 Unix 格式。


5、设置好语言文件的映射或者安装参数

例如在 group-office,当你仅仅将中文语言文件复制到 language 目录中是不行的,你会发现在前台的语言选择下拉列表中根本没有中文的选项。这时就必须打开 /language/languages.inc 文件,参照其他国家语言的方式添加一段代码(声明语言文件映射关系),这就等于告诉 group-office 程序现在增加了一种新的语言文件,名叫“简体中文”。当然了,别忘记保存这个文件时选择 utf-8 字符编码。然后上传 languages.inc 文件并覆盖原文件,再刷新前台,就会发现下拉选单中有了“简体中文”的选项。

在汉化 Joomla! 组件时,将新的语言文件添加到安装包的 .zip 文件中也不能实现汉化,你会发现在安装该组件后根本没有出现中文界面。那是因为安装程序是按照 .zip 包中的 .xml 文件来上传文件的。.xml 文件相当于安装指令集。因此,你汉化之后,必须修改 .xml 文件,将新的语言文件添加到该文件中,具体代码格式参照其他已有语言的安装代码,一般来说搜索 english 就能找到相关代码。


6、汉化包里不要与语言无关的程序文件

在汉化时,尽量不要去碰与语言无关的程序文件。汉化结束后制作语言包时,也不要把其他的源程序文件包含进来。因为主程序的作者很可能不定时升级软件,如果你的语言包中含有其他程序文件,那么就会造成在上传语言包之后,主程序文件被影响了。

7、选择舒适的编辑器

俗话说“工欲善其事,必先利其器”。很多人可能还在用 windows 平台的“记事本”(Notepad)来做汉化,这样做很辛苦,因为 Notepad 功能很弱。很多高手都在使用 UltraEdit 或者 EmEditor,但是这两个都是收费软件(不要老想着盗版,如果你是程序员就能体会到开发人员的辛苦)。我推荐使用开源的 Notepad++ 编辑器,免费而且功能强大。在 Notepad++ 的参数中可以预设字符编码为 utf-8,换行符为 Unix 格式,保存设置后以后每次使用都自动执行,无须再担心上述两个问题。另外,Notepad++ 也有一些插件可以实现程序代码的自动完成高亮显示正则表达式等等,这些都是程序员喜爱的功能。

当然,最新版的 Notepad++ 有一个缺点就是对中文支持仍然不够好,我发现在选择或者删除中文时,仍然有“半个字”乱码现象。说明它对于双字节字符的支持还没有完善。不过作者侯今吾很勤奋,一直在改进,因此我对这个软件很看好。

8、保持开放心态

开源精神就是共享精神。我希望有志于汉化的同道能够保持一种开放的心态。在你准备汉化某个程序时,首先与程序作者联系,询问是否已经有人做了汉化,如果没有就请求汉化,如果已有就跟该汉化作者联系,看看他是否已经停止汉化,或者看看能否合作继续汉化。以免你辛苦翻译了很久,最后发现在世界的另一个角落有个家伙竟然在做同样的事情,重复劳动岂不是很冤枉!

同样的,当你开始某个汉化工程后,也尽量公布这个信息,以便其他想要汉化的人能够及时联系到你,集思广益,多方合作,整个工程也有质量保证。例如,我希望想要汉化 Joomla! 扩展套件的朋友提前在本站论坛中声明一下准备做的工作,很可能你正想要汉化的某个扩展套件我已经在做了—— 因为我的习惯是多个工程同时开始,大部分我选中的扩展套件都汉化到 30% 的程度了。

发表于 @ 2008年01月19日 17:15:00|评论(loading...)|编辑

新一篇: button按钮用ActionScript添加事件 | 旧一篇: PDA mambot 让网站自动适应掌上电脑(PPC)阅读版面

评论:没有评论。

发表评论  


登录
Csdn Blog version 3.1a
Copyright © 血色残阳