LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 720|回复: 0

HTML2POT and PO2HTML Ver 0.3 and combine Ver 0.1 release

[复制链接]
发表于 2004-3-1 03:28:25 | 显示全部楼层 |阅读模式
为了解决 html 文件翻译后译文不能继承的问题,经过历时一个月的努力,终于实现了这种转换,这样我们就能利用 gettext 软件包的 msgmerge 实现新、老翻译的继承。

下载:
http://i18n.linux.net.cn/download/gettext-autowork/getpo.tar.bz2

_______________________________________________________________________
请看范例:
msgid "<H1 align=\"center\">About Qt</H1>"
msgstr "<H1 align=\"center\">关于 Qt</H1>"

msgid "Qt is a multiplatform C++ GUI application framework. It provides application developers with all the functionality needed to build state-of-the-art graphical user interfaces. Qt is fully object-oriented, easily extensible, and allows true component programming."
msgstr "Qt是一个多平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立 艺术级的图形用户界面所需的所用功能。Qt是完全面向对象的很容易扩展,并且 允许真正地组件编程。"

msgid "<>Since its commercial introduction in early 1996, Qt has formed the basis of many thousands of successful applications worldwide. Qt is also the basis of the popular <A href=\"http://www.kde.org/\">KDE</A> Linux desktop environment, a standard component of all major Linux distributions.</P>"
msgstr "<>自从 1996年 早些时候,Qt 进入商业领域,它已经成为全世界范围内数千种成功的应用 程序的基础。Qt 也是流行的 Linux 桌面环境 <A href=\"http://www.kde.org/\">KDE</A> 的基础,KDE 是所有主要的 Linux 发行版的一个标准组件。</P>"

msgid "<>Qt is supported on the following platforms:</P>"
msgstr "<>Qt 支持下述平台:</P>"

msgid "<>"
msgstr ""        <------这里无须翻译!

msgid "<LI><B>MS/Windows</B> - 95, 98, NT 4.0, ME, and 2000</LI>"
msgstr "<LI><B>MS/Windows</B> - 95、98、NT 4.0、ME、和 2000</LI>"

_____________________________________________________________________
_____________________________________________________________________

                          使用说明
    这套脚本是专为解决 HTML 文件的翻译继承问题而开发的。包括三种功能:实现
HTML 到 POT 格式的转换;实现 PO 到 HTML 格式的转换;给定两个*同源* HTML 文件
可以生成一个 PO 文件。它具有如下优点:
    1. 不依赖原始 HTML 文件。一旦由 HTML 转换成 POT,就可以完全抛弃原始 HTML
文件,最终将由 PO 直接生成 HTML;
    2. 译者拥有极大的自主权。拆分算法不会因为格式标签拆散句子,译者可以在行内
调整语序,尤其是比较长的句子、段落;他(她)甚至可以修改 HTML 标签,以便达到更
好的显示效果,只要他(她)保证生成的 HTML 可以正常浏览即可;
    3. 对于不必/不会/尚未翻译的条目,会自动用原文代替;对于 FUZZY 的条目会自动
将原文列在译文的后面并且标注 Comment:。

测试环境:perl Ver 5.8.3,tidy Ver 1st September 2003,gettext Ver 0.12.1。
估计在较老的软件版本上也能平滑运转。

**注意**
    1. 所有使用的 HTML、PO、POT 文件必须事先转换成 UTF-8 编码,否则脚本不能正常
工作。转化方法参见 i18n 主页上“工作流程”部分关于编码格式的说明。例如:
iconv -f gb2312 -t utf-8 about.htm.gb2312 > about.htm.utf-8
    2. 如果 gettext 版本低于 0.12.0,则用于生成 POT 文件的 HTML 文件必须是英文版
(ISO-8859-1 编码)。
    3. 所谓同源 HTML 文件指的是由同一个原始 HTML 文件衍生出的不同(可以相同,但这没
有意义)语言版本,包括但不限于英文版本,它们的文档结构和版本必须相同。也就是说,如果
译者修改了文档结构,例如加入了元数据行或注释行,将导致这两个 HTML 文件无法生成一个
PO 文件。解决的办法是设法消除这种文档结构的差异。

___________________________________________________________________________________

html2pot.pl
    这是一个独立的 perl 脚本,功能是实现 HTML 文件到 POT 文件格式的转换。它对标准的
HTML 文件、各种变种 HTML 文件,以及内嵌脚本的 HTML 文件均能良好支持,而且对语言种类
没有限制,前提是它们必须都是 UTF-8 编码。
用法:
    cat foo.html | ./html2pot.pl > foo.html.pot


batchhtml2pot.sh
    此脚本用于批量转换 HTML 文件到 POT 文件格式。HTML 文件存放在 html 目录里,生成的
POT 文件存放在 pot 目录里。(html-->pot)
用法:
    ./batchhtml2pot.sh


po2html.pl
    这是一个独立的 perl 脚本,功能是实现 PO 文件到 HTML 文件格式的转换。这里的 PO 文
件必须是由 html2pot.pl 或 batchhtml2pot.sh 生成的。
用法:
    cat foo.html.po | ./po2html.pl > foo.html


batchpo2html.pl
    此脚本用于批量转换 PO 文件到 HTML 文件格式。PO 文件存放在 po 目录里,生成的 HTML
文件存放在 html.new 目录里。(po-->html.new)
用法:
    ./batchpo2html.pl


combine.sh
    此脚本位于 combine 目录下,功能是通过两个同源 HTML 文件生成一个 PO 文件。第一个
参数指定的 HTML 文件将用于生成 msgid,第二个参数指定的 HTML 文件将用于生成 msgstr。
第三个参数用于指定生成的 PO 文件名。
用法:
    ./combine.sh foo.htm.en foo.htm.fr foo.htm.fr.po


batchcombine.sh
    脚本位于 combine 目录下,功能是通过两个目录里的同源 HTML 文件生成一组 PO 文件。
第一个参数指定的目录里的 HTML 文件将用于生成 msgid,第二个参数指定的的目录里的 HTML
文件将用于生成 msgstr。第三个参数用于指定生成的 PO 文件存放的目录。
用法:
    ./batchcombine.sh en zh_CN.utf-8 po.new

___________________________________________________________________________________

    鉴于 Cavendish 翻译 QT 的 HTML 文档的时候使用了 GB2312 编码,并且加入了译者信息
和元数据,导致文档结构破坏,必须首先修正这一问题。在 combine 目录下还有一个脚本:
fix_html.sh 用以修正这些问题。
用法:在 zh_CN.gb2312 目录里存放所有 Cavendish 的 QT 文档中文 HTML 译本,然后执行:
     ./fix_html.sh

    可以在 zh_CN.utf-8 目录里找到修正的 HTML 文件。对于其他译者翻译的 HTML 文件,如也存
在这种问题,可以自行修改 prel 脚本 filter_html.pl 中如下几行,使成为译者的正确信息,
然后再执行上述脚本:

# 用 UTF-8 编码代替 gb2312:
{ $s = s /<meta http-equiv="Content-Type" content="text\/html; charset=gb2312">/<meta http-equiv="Content-Type" content="text\/html; charset=UTF-8">/is;
  $CondReg ||= $s;
}

# 注意 /  / 中的数据将从处理后的文件中消失!
if( m /<meta name="Translator" content="Cavendish">/s )
{ $doPrint = 0;
  goto EOS;
}

if( m /<meta name="Qt zh_CN Documents Website" content="http:\/\/www.qiliang.net\/qt">/s )
{ $doPrint = 0;
  goto EOS;
}

if( m /<td><a href="zh_CN.html">译者:Cavendish<\/a>/s )
{ $doPrint = 0;
  goto EOS;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表