Skip to content

kiwivip/perldoc-cn

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 检查,解析词典。

About

Perldoc Help Chinese Planning

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Perl 100.0%