|
楼主 |
发表于 2007-3-5 20:54:36
|
显示全部楼层
看了linux公社的KDE和cavendish两位兄弟的回贴以后,我已经意识到了这样翻译后果很严重。也尝试过 xml2po 工具, 但是无法完成这个任务,所以之前的翻译已经停止了。
由于gtk+(以及其它gnome开发包)的文档都使用了gtkdoc, 文档是写在源文件中的, 通过gtkdoc工具转换生成html. 因此最近在尝试写一个工具,通过直接读取源文件, 根据gtkdoc格式标准从中取出需要翻译的内容,直接产生pot文件。然后就可以把这个po文件翻译成不同语言(不仅仅局限于中文)。 最后将翻译的po文件合并到源文件中,再编译产生html等格式。
如果这项工作能完成的话,那么只要使用gtkdoc产生的文档都可以翻译成多国语言,呵呵。
目前,这个工具只实现了从源代码文件产生po文件这一步骤, 具体可以下载这个文件看一下:
ftp://download.inlsd.org/gtk+-2.10.6.po.tgz
这是从gtk+-2.10.6的源代码产生的相应po文件, 其中的PACKAGE.pot是一个总的文件,也就是通过msgcat把其它po文件合并后产生的。
为了便于后面再将po文件合并到源代码中,我对po文件做了一点加工,比如:
- # #-#-#-#-# gtkwidget.pott (PACKAGE VERSION) #-#-#-#-#
- # used by: GtkWidget::parent-set:
- # #-#-#-#-# gtkwidget.pott (PACKAGE VERSION) #-#-#-#-#
- # used by: GtkWidget::style-set:
- #: /tmp/gtk+-2.10.6/gtk/gtkwidget.c:626@1
- #: /tmp/gtk+-2.10.6/gtk/gtkwidget.c:653@1
- msgid "@widget: the object on which the signal is emitted"
- msgstr ""
复制代码
以# #-#-#-#-#开头的不用管。
#used by:GtkWidget::style-set: :表示这个msgid被GtkWidget::style-set使用。如果使用poedit翻译的话,就能看到这是个注释。
/tmp/gtk+-2.10.6/gtk/gtkwidget.c:653@1: 表示这个条目在源文件中的行号及从本行起共占用的行数。像这行的内容表示在gtkwidget.c文件中第653行,只占一行。同时也出现在第626行。后面的@1是我加上去的,目前看来用gettext工具可以正常处理。
像@widget是gtkdoc的格式,翻译时要保留原样。
再如:
- # #used by: GtkWidget::drag-data-get:
- #: /tmp/gtk+-2.10.6/gtk/gtkwidget.c:1245@4
- msgid ""
- "The ::drag-data-get signal is emitted on the drag source when the drop site "
- "requests the data which is dragged. It is the responsibility of the signal "
- "handler to fill @data with the data in the format which is indicated by "
- "@info. See gtk_selection_data_set() and gtk_selection_data_set_text()."
- msgstr ""
复制代码
说明这个条目被函数GtkWidget::drag-data-get使用,开始于源文件gtkwidget.c的1245行,共4行内容,即1245到1248行。
关于正式翻译中要注意的事项, 等我把这个工具做完以后 ,再写一个详细的手册。
现在希望能有更多的人关注, 等一切准备妥当以后大家再讨论具体的翻译事项, 也许可以请i18n上面的人帮忙或者直接提交到i18n。 |
|