Perldoc Help Chinese Planning
Perl
Pull request Compare This branch is 2 commits behind songzan:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
bin
data
dict
project
tools
README.pod

README.pod

Perldoc 中文文档计划

将最新的 Perldoc 核心文档翻译成中文。供大家免费使用。 本项目使用的是 5.14.1 版本 源代码中的 pod 文件夹。

http://www.cpan.org/src/5.0/perl-5.14.1.tar.gz

解析算法

1. 检查 POD 文档,根据标准模块 Pod::Checker 获取其中不规范的地方。

2. 预处理 Pod 文档,将其中的一些不规范的,不利于解析的进行处理。

3. 格式化字符提取,将POD文档中不需要翻译的标记符号提取出来, 生成dict_format.txt字典。

4. 解析POD文档,根据现有字典,生成中英文对照的文本格式。用于手工翻译。 同时将无法解析翻译的段落中的匹配的短语和单词制作成列表,排列在后参照。

5. 验证翻译结果,根据翻译翻译对照表,和字典,生成中文pod文档。 手工进行验证,是否完全翻译,或者翻译是否正确。根据结果调整算法和 字典。完善翻译过程。

目录结构

 tools  扩展工具,用于生成可以自由发放的 PDF html chm Latex 版本 (pl脚本)
 en     英文 POD 文件夹 (pod格式)
 cn     中文 POD 文件夹 (pod格式)
 dict   词典 (txt格式)
    dict_common.txt 常用单词词典
    dict_rare.txt   生僻单词词典
    dict_code.txt   专有名字词典
    dict_unknown.txt 未识别单词
 data   例句数据库 (txt格式)
 temp   临时文件夹 (pod文件格式)
 doc    待处理规范文件夹 (pod文件格式)
 parse_dict.pl 维护词典脚本
 parse_dict.bat Windows平台上执行此脚本的批处理脚本
 translate_tips.pl 生成翻译对照文本的脚本
 translate_tips.bat Windows平台上执行此脚本的批处理脚本
 parse_pod.pl 生成中文POD文档的脚本
 parse_pod.bat Windows平台执行此脚本的批处理脚本
 debug.pod 调试程序输出临时文档

解析步骤,首先运行词典解析脚本 parse_dict.pl, 将文档中的生僻词 查找出来,通过人工办法添加到词典文档中。然后运行翻译提示对照脚本 translate_tips.pl, 生成与输入文本同名的翻译对照文件。

词典解析脚本 parse_dict.pl

维护三个词典 dict_common.txt dict_rare.txt dict_code.txt

1. 常用词词典 dict_common.txt

最常用的字典,无须提示翻译者,提供词义参考时忽略的部分。 如:a think say...

2. 生僻词词典 dict_rare.txt

专业词汇,生僻词汇,如果不能整句翻译,则提供这些词的提示语义。 将生僻词和常用词合并,对简单的词不予翻译,对于没有在词典中的词 使用(?) 标注。尽量将词典的翻译对应,设置成一个固定的词。

3. 专有词词典 dict_code.txt

专有词汇,变量名称,函数名称,常用缩写等无需翻译的单词。 删除此词典,所有的转悠名次将使用内置的正则表达式动态匹配。 所有的单词形式的专有名次将放入 ignore.dict 词典,忽略翻译。 如:Perl perl int 脚本将动态生成这个字符串字典。 用于原文表现文本中的格式化代码。这个字典是根据 [BLXSFI]<...> 解析生成的。

维护脚本将分析前三个词典,判断是否有重复定义。分析动态生成的 词典是否符合规范,以便优化相关脚本。

前三个词典手工添加维护。

此脚本同时拆分文本中的所有可翻译的单词,匹配所有词典,将不能匹配的 单词列表输出 dict_unknown.txt,供手工查询补充添加,分析错误,验证分析。 ,并维护此脚本。同时需要制作一个小脚本 filter_dict.pl, 用于将 做好标记的 dict_unknown.txt 拆分,添加到前三个词典中。 生僻词添加 || 分隔符,需要忽略的不动,属于代码的前面加一个空格。

使用 Pod::Simple::Text 模块解析 Pod 文档,生成的文件保存 到标量中,用于提取单词,但后缀问题。如何处理。

使用 my $parser = Pod::Simple::Text->new() 建立解析器。

使用 $parser->parse_file( $some_filename ); 解析文件。

使用 $parser->parse_string_document( $all_content ); 解析字符串

使用 $parser->output_string( \$some_string ) 输出标量,用于 解析带格式的关键字列表.

这个脚本中的一些部分要做成独立的模块。避免代码重用造成的维护困难。

需要建立一个抽象层,预处理脚本,对原生英文POD文档进行规范。 使用递归替换,替换掉这些标记字符串,结果进行单词分析。 匹配网址,文件名,专有名词,全大写缩写等字符,判断是否已经格式化。 姓名,函数名,程序名。。。如果过多,很难看。抽象层隐藏起来。

翻译提示脚本 translate_tip.pl

在全文替换模式下,不需要拆分,只有在中英文对照模式下时,拆分才能 增加翻译的重用性。 根据输入的文本,查询字典数据库,例句数据库,从长到短选择合适的匹配 内容,如不能在例句数据库中找到,则提供词典提示。同时提供部分匹配的 例句提示。

自带测试例句,可以单独执行,输出结果。生成翻译对照文本。

Pod 解析脚本 parse_pod.pl

根据例句文档,建立例句数据库,所有的翻译成果,都应当保存在此数据库中。 翻译对照资料,应当是可以解析数据到此数据库中的格式。 中文POD文档,应当是根据例句数据库自动生成的。

根据例句数据库和词典,生成格式可调的中文POD格式。

将POD中的格式化文本提取出来,parse_format.pl

预处理POD文档中的格式化文本,建立字典。 dict_format.txt 就是生成的文本。

预处理POD precess_pod.pl

预处理POD,去除错误,将需要格式化的单词格式化处理。

拆分段落

拆分段落前,进行句号格式化。提前匹配电子邮件,函数名,网址 等信息,提前保护起来。 忽略代码格式,忽略前面是标题提示符的。只有没有这两个条件, 才进行拆分。

Pod 格式规范

先使用 Pod 格式规范化工具,对 Pod 英文进行检查,消除所有明显的问题。

将POD进行解析,分成中英文对照格式,用于手工翻译,可解析提取翻译结果, 将解析结果放置在数据库中,再次解析,只有中文和部分。

按照段落先行解析,然后,在按照句子,短语,格式化文本解析,最后,按照 单词解析,如果不能完全翻译,则将结果中的单词建立列表,进行翻译。

在VIM语法文件POD.VIM中增加如下段落,可改变高亮

" Tranlator special setup syn match podCN /^=CN.*$/ syn match podEN /^=EN.*$/

" Hilink setup highlight link podCN Function highlight link podEN Comment

关于大小写

大小写的意思很多地方是不同的,在Pod中,大写作为标题,小写作为内容。 有着完全不同的意思,所以,保持对大小写的敏感是重要的。

=关于平台

词典是共享的,但句子是分项目的,按照共享分配资源。 建立句子项目,解析句子,Pod 检查,解析词典。