将最新的 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, 生成与输入文本同名的翻译对照文件。
维护三个词典 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文档中的格式化文本,建立字典。 dict_format.txt 就是生成的文本。
预处理POD precess_pod.pl
预处理POD,去除错误,将需要格式化的单词格式化处理。
拆分段落前,进行句号格式化。提前匹配电子邮件,函数名,网址 等信息,提前保护起来。 忽略代码格式,忽略前面是标题提示符的。只有没有这两个条件, 才进行拆分。
先使用 Pod 格式规范化工具,对 Pod 英文进行检查,消除所有明显的问题。
将POD进行解析,分成中英文对照格式,用于手工翻译,可解析提取翻译结果, 将解析结果放置在数据库中,再次解析,只有中文和部分。
按照段落先行解析,然后,在按照句子,短语,格式化文本解析,最后,按照 单词解析,如果不能完全翻译,则将结果中的单词建立列表,进行翻译。
" Tranlator special setup syn match podCN /^=CN.*$/ syn match podEN /^=EN.*$/
" Hilink setup highlight link podCN Function highlight link podEN Comment
大小写的意思很多地方是不同的,在Pod中,大写作为标题,小写作为内容。 有着完全不同的意思,所以,保持对大小写的敏感是重要的。
=关于平台
词典是共享的,但句子是分项目的,按照共享分配资源。 建立句子项目,解析句子,Pod 检查,解析词典。