掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 9307|回复: 16

[教程] 转载:【PDAFANS】stardict to mdict完全手册-做你自己的mdict

[复制链接]

该用户从未签到

发表于 2008-9-26 01:12:20 | 显示全部楼层 |阅读模式
精华文章啊!!实在忍不住从口袋转载了过来:)
1 b# q9 N: w8 Z$ w  Q0 a9 |& H# {3 k. \% F; s
原作者:linld970442 D' ^, ], l) E; l4 c- Y! Y
内容:
& R3 X; J' V( P! s2 A* h' K2 G' J" T2 f玩PDA多年,在坛子一向是潜水多贡献少,现在向坛子贡献下做mdict的方法。
7 V7 x' H1 S, R" D- a/ h
9 E$ Q* W" ^% w: A做专业字典首先的难题是字典源文件,经搜索,看来stardict是比较好的源文件,字典量多货足。可以在以下链接大量下载:
/ t+ I5 y+ P+ z5 W+ m8 m1)http://www.vayn.cn/sundries/files/stardict-dict.htm! e5 L2 H- c% W8 d! F
2)http://reciteword.sourceforge.net/stardict/babylon.php# t0 j# F) v8 {+ D9 x
3)http://stardict.sourceforge.net/Dictionaries_zh_CN.php
: b8 a, h' Q* Q+ m9 \: |4 \5 X: y& ^! [) c4 p
本问题之前在http://bbs.pdafans.com/thread-608906-1-1.html(mdict自定义尝试-美国传统字典+湘雅医学词典+高级汉语词典3合1的mdict(附方法))中讨论过,现基本已解决,发帖总结下:
+ _, U# `* Z6 S+ f% _+ K+ v, e! W! R: ]* `  q; q
1、根据mdict作者邮件,比较旧的stardict可以用convstar命令转化成txt后用MDXBuilder 2.5 编成mdict的mdx文件。这一步比较简单,之前的帖子也详细说过了。
, H  W7 ]. Z* ?3 ]2 i- h
+ i% {/ ]+ I' P5 e( t2、第二种情况是stardict后期的词典,用了不同的编码格式,convstar直接转出现下面类似的错误:
# L; L  E: ]: y  T- F, S. z3 G) e
“Warning unknown mark: k (0x6b), following content will be ignored.
$ ]4 \' ]- L* u$ @- X- ZSummary of ignored marks:
. X+ k) c$ R& z& @k (0x6b) 96281 times1 C+ [8 a% \. y' d6 C- L
Done!”
2 _& x$ N! m) X% V" y  F  B7 H
* _( B' r7 H6 l' T这种情况不能用http://www.octopus-studio.com里的convstar直接转。应做如下处理:
3 R' I: Z$ B5 t# o7 ]; c- A3 z- c  F0 J
1)先要用aisnote编写的CvtStarDict2Txt.exe转成txt
3 ~& `8 i7 |& T+ `$ n# m2)txt用ultraedit编辑成mdict标准格式& }: _/ j; X9 s5 p
3)用MDXBuilder编成mdx文件。8 l0 _4 F4 p9 h" @# ]

$ \- @) K, Q$ `" d$ R6 {以stardict-babylon-NEW_Babylon_German_English_dictionary-2.4.2为例给大家示范下stardict to mdict的全过程。
# e% i( H% M2 T( a
" F" Y( I3 I; C一、下载文件包,得到stardict-babylon-NEW_Babylon_German_English_dictionary-2.4.2.tar.bz2,该文件可以用winrar解压,得到NEW_Babylon_German_English_dictionary.dict.dz;NEW_Babylon_German_English_dictionary.idx;NEW_Babylon_German_English_dictionary.ifo;NEW_Babylon_German_English_dictionary.syn四个文件。
0 N' _4 D1 X0 e; M8 R- A! }, C7 P; l8 o
注,用convstar,出现下列错误信息,说明convstar不能处理该文件:
9 p' d6 p& }, X% e- h
% K! U- G6 \1 V! \; {4 T/ A7 C. O  i”C:\>C:\download\MdxBuilder\ConvStar\ConvStar.exe C:\download\German\stardict-bab/ \3 {  v* a  @+ _) ]1 n1 w& X: |
ylon-NEW_Babylon_German_English_dictionary-2.4.2\NEW_Babylon_German_English_dict
* H. J/ s  n% t! u2 ^9 {2 y( J5 B& kionary.ifo c:\g-e.txt0 Q1 ~' f5 p0 I1 `+ g
bookname: Babylon German-English , wordcount 164638
2 u8 T( S: n  }" c4 p& uTotal entries:164638: c3 x" \( j4 C8 [: K5 \
Warning unknown mark: h (0x68), following content will be ignored.
0 A4 G: W+ D0 I/ g7 Q9 DSummary of ignored marks:
5 K# G" O# n1 y. T! T7 _( Oh (0x68) 164638 times! j  x$ b& V! S3 B' h5 |
Done!“+ f0 O+ Y! p" j9 l! E% j6 a
7 K6 N; _' E0 [: B: f
二、用7-zip继续解压NEW_Babylon_German_English_dictionary.dict.dz,得到NEW_Babylon_German_English_dictionary.dict,该.dict文件应该解压在和另外几个文件在同一目录。
, `8 u0 ]- g" n% ~0 h见图19 ~2 h$ t: Y+ \( n$ [* M- D
* [# D# W/ v% k3 U9 N6 z+ T0 b3 n& w
三、启动CvtStarDict2Txt.exe,选择NEW_Babylon_German_English_dictionary.ifo,再点convert。成功后对话框出现:”Word Count=164638
: v- R1 q7 z' Z+ T=======, u- m# ]% v$ t  A
C:\download\German\stardict-babylon-NEW_Babylon_German_English_dictionary-2.4.2\NEW_Babylon_German_English_dictionary.txt
  m2 w# i; T6 n- h* P5 w1 sConvert Success!!0 F& q% Z2 [$ f( b5 N3 e
======“说明转化成功!
3 w* y2 O6 Q% a$ j见图28 ~! {" u  Y5 n3 b

+ \+ z; x* N& m四、由于要做德英英德双向字典,依样画葫芦下载源转换,得到Babylon_English_German.txt和NEW_Babylon_German_English_dictionary.txt两个文件。
: S" v2 k# i: ?$ Q3 Y* d' \* n3 j- Q! k/ X, J. C1 ~( u
五、这2个txt文件在ultraedit打开,提示”do you want to convert to DOS format“,选是。本来想用copy命令合并这2个txt,但copy命令不知为何只拷贝了部分文件,所以这里用ultraedit全选一个txt全部文本,粘帖在另一个后面(Ctrl+End)。得到一个313468行的文件。
) P. U' j: m: M9 _; F5 {( U3 }+ F
2 _4 v' ~% a4 u六、在ultraedit”Ctrl + R“把换行符”^p"替换成“^p</>^p”,如图,选replace All。就是在每一行加上换行及</>(mdict分节号)。
+ g0 K4 s6 |# o5 b" E如:
% S: F+ ?) u& {2 a1 w“abhorrence    <font color="blue">n.</font> Abscheu
, P2 H: K& B+ S2 m9 [5 l: N8 xabhorrent    <font color="blue">adj.</font> abscheulich”
& o0 q' s5 d: C4 R+ E8 n
" L( y/ `) y7 T4 S* \将转成:" l7 \. Q, a+ A1 O, ~# l( o
"abhorrence    <font color="blue">n.</font> Abscheu7 p' S2 \0 c* T- m
</>
; Z6 _: `4 I. labhorrent    <font color="blue">adj.</font> abscheulich) S# j4 D( l' u9 c" `5 G" d# K( T
</>"( z4 Y6 y% k. e% ?
再用一次替换“Ctrl+R”把 “^t"(Tab)替换成”^p“,转换成:
! E7 X6 C. Y' D3 v* t+ t”abhorrence( G( z; F3 ^" g* z" ?( e
<font color="blue">n.</font> Abscheu; u; y9 s9 O9 I& |
</>
0 |7 o3 O6 Q& Habhorrent. p' a3 u$ ~7 g) P% H- ^9 O
<font color="blue">adj.</font> abscheulich# j9 {* m* M* K# G+ T5 w) S/ T  G; a
</>“5 q  e2 v& a7 w/ j' Y2 V
得到mdx标准txt!存储为DOS Terminators-CR/LF ;UTF-8文件。
. B( x' s1 V' p; a! M* I  ]- S' [
: ?/ P( n, K5 U见图3和图44 ~/ ?* ^. @, \4 ]) f/ C
. s& \- H: F/ F! T
七、mdxbuilder出动,注意source选txt源文件,target输入生成文件路径和名称,style应选example-style.txt,original format这里选Mdict(Compact HTML),Encoding选UTF-8.' G  p% i; R! f" @% S( m, ~
见图5
' W1 i7 s1 J8 t7 l2 e2 ]
* A9 z5 N  ~9 x+ i7 f3 I5 I八,完成了,就这么简单
2 Y/ c+ f( y! l" K4 C& _+ q0 g见图6/ z% F6 h- F3 T9 |" R

+ K; F$ d: q5 ]( F' f4 p; _附上几个必须文件:
$ U4 U, R- x+ \, t) M9 n+ F9 n3 f( y1 l. y) g. Y# v, Z% Y
CvtStarDict2Txt.exe

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?免费注册

x

本帖被以下淘专辑推荐:

该用户从未签到

发表于 2008-9-26 10:05:20 | 显示全部楼层

回复 1楼 Macli 的帖子

:loveliness:
lin_5151 该用户已被删除
发表于 2008-9-26 19:16:13 | 显示全部楼层
看不懂,可是要顶。
eugene 该用户已被删除
发表于 2008-10-11 10:41:13 | 显示全部楼层
好像做点什么,可是还不会。。。

该用户从未签到

发表于 2008-12-22 00:34:01 | 显示全部楼层
顶一个吧

该用户从未签到

发表于 2009-1-3 21:16:26 | 显示全部楼层
不行啊,我的电脑执行CvtStarDict2Txt.exe的时候,点击convert就出现错误报告:4 K' }' \/ @6 W  s
内容如下:
) \% R, x$ j# U' C* ~9 K  a<?xml version="1.0" encoding="UTF-16"?>: P- G0 a$ P/ U- R# Y
<DATABASE>1 n) J  S4 [/ N% A$ k
<EXE NAME="CvtStarDict2Txt.exe" FILTER="GRABMI_FILTER_PRIVACY">2 P% J# Y' m6 @$ N
    <MATCHING_FILE NAME="ConvStar.exe" SIZE="184320" CHECKSUM="0x3268197E" MODULE_TYPE="WIN32" PE_CHECKSUM="0x3BD3C" LINKER_VERSION="0x0" LINK_DATE="05/05/2008 14:17:42" UPTO_LINK_DATE="05/05/2008 14:17:42" />
$ \4 }% F8 P' H- A5 K6 V    <MATCHING_FILE NAME="CvtStarDict2Txt.exe" SIZE="69632" CHECKSUM="0xC5993943" BIN_FILE_VERSION="1.0.0.1" BIN_PRODUCT_VERSION="1.0.0.1" PRODUCT_VERSION="1, 0, 0, 1" FILE_DESCRIPTION="CvtStarDict2Txt Module" COMPANY_NAME="" PRODUCT_NAME="CvtStarDict2Txt Module" FILE_VERSION="1, 0, 0, 1" ORIGINAL_FILENAME="CvtStarDict2Txt.exe" INTERNAL_NAME="CvtStarDict2Txt" LEGAL_COPYRIGHT="Copyright 2008" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x0" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="1.0.0.1" UPTO_BIN_PRODUCT_VERSION="1.0.0.1" LINK_DATE="07/08/2008 13:06:04" UPTO_LINK_DATE="07/08/2008 13:06:04" VER_LANGUAGE="English (United States) [0x409]" />
) e1 w8 x: ]0 v    <MATCHING_FILE NAME="intl.dll" SIZE="104861" CHECKSUM="0x707C047B" BIN_FILE_VERSION="0.17.0.0" BIN_PRODUCT_VERSION="0.17.0.0" PRODUCT_VERSION="0.17" FILE_DESCRIPTION="LGPLed libintl for Windows NT/2000/XP/Vista and Windows 95/98/ME" COMPANY_NAME="Free Software Foundation" PRODUCT_NAME="libintl: accessing NLS message catalogs" FILE_VERSION="0.17" ORIGINAL_FILENAME="intl.dll" INTERNAL_NAME="intl.dll" LEGAL_COPYRIGHT="Copyright (C) 1995-2007" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x10004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x28460" LINKER_VERSION="0x10000" UPTO_BIN_FILE_VERSION="0.17.0.0" UPTO_BIN_PRODUCT_VERSION="0.17.0.0" LINK_DATE="01/24/2008 22:54:47" UPTO_LINK_DATE="01/24/2008 22:54:47" VER_LANGUAGE="English (United States) [0x409]" />
, D1 \, F( x- G$ ]7 k3 j1 Z    <MATCHING_FILE NAME="libglib-2.0-0.dll" SIZE="1001834" CHECKSUM="0x52944E10" BIN_FILE_VERSION="2.16.3.0" BIN_PRODUCT_VERSION="2.16.3.0" PRODUCT_VERSION="2.16.3" FILE_DESCRIPTION="GLib" COMPANY_NAME="The GLib developer community" PRODUCT_NAME="GLib" FILE_VERSION="2.16.3.0" ORIGINAL_FILENAME="libglib-2.0-0.dll" INTERNAL_NAME="libglib-2.0-0" LEGAL_COPYRIGHT="Copyright &copy; 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald. Modified by the GLib Team and others 1997-2004." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x4" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0xFB24A" LINKER_VERSION="0x10000" UPTO_BIN_FILE_VERSION="2.16.3.0" UPTO_BIN_PRODUCT_VERSION="2.16.3.0" LINK_DATE="04/17/2008 07:25:17" UPTO_LINK_DATE="04/17/2008 07:25:17" VER_LANGUAGE="English (United States) [0x409]" />
7 I/ m) W: L% J9 e& D    <MATCHING_FILE NAME="libgtk-win32-2.0.dll" SIZE="2373542" CHECKSUM="0xCDFB5A3B" />$ o6 P4 e- E6 T% `! s( u
    <MATCHING_FILE NAME="MdxExport.exe" SIZE="303104" CHECKSUM="0xA46ED5F8" MODULE_TYPE="WIN32" PE_CHECKSUM="0x4C68B" LINKER_VERSION="0x0" LINK_DATE="10/18/2008 02:58:10" UPTO_LINK_DATE="10/18/2008 02:58:10" />
9 p5 I! C; D2 m' x    <MATCHING_FILE NAME="zlib1.dll" SIZE="59904" CHECKSUM="0x7697A3DC" BIN_FILE_VERSION="1.2.3.0" BIN_PRODUCT_VERSION="1.2.3.0" PRODUCT_VERSION="1.2.3" FILE_DESCRIPTION="zlib data compression library" PRODUCT_NAME="zlib" FILE_VERSION="1.2.3" ORIGINAL_FILENAME="zlib1.dll" INTERNAL_NAME="zlib1.dll" LEGAL_COPYRIGHT="(C) 1995-2004 Jean-loup Gailly &amp; Mark Adler" VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x10004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0xF587" LINKER_VERSION="0x0" UPTO_BIN_FILE_VERSION="1.2.3.0" UPTO_BIN_PRODUCT_VERSION="1.2.3.0" LINK_DATE="07/20/2005 09:48:10" UPTO_LINK_DATE="07/20/2005 09:48:10" VER_LANGUAGE="English (United States) [0x409]" />
4 Z1 p0 Z, A, P</EXE>  f4 y' ?, r$ [# G
<EXE NAME="kernel32.dll" FILTER="GRABMI_FILTER_THISFILEONLY">1 X; F& ~0 z; y) q
    <MATCHING_FILE NAME="kernel32.dll" SIZE="984576" CHECKSUM="0xF0B331F6" BIN_FILE_VERSION="5.1.2600.3119" BIN_PRODUCT_VERSION="5.1.2600.3119" PRODUCT_VERSION="5.1.2600.3119" FILE_DESCRIPTION="Windows NT BASE API Client DLL" COMPANY_NAME="Microsoft Corporation" PRODUCT_NAME="Microsoft&reg; Windows&reg; Operating System" FILE_VERSION="5.1.2600.3119 (xpsp_sp2_gdr.070416-1301)" ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32" LEGAL_COPYRIGHT="&copy; Microsoft Corporation. All rights reserved." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0xF9293" LINKER_VERSION="0x50001" UPTO_BIN_FILE_VERSION="5.1.2600.3119" UPTO_BIN_PRODUCT_VERSION="5.1.2600.3119" LINK_DATE="04/16/2007 15:52:53" UPTO_LINK_DATE="04/16/2007 15:52:53" VER_LANGUAGE="English (United States) [0x409]" />2 Z$ ?0 i" n! z- s- X
</EXE>
/ o2 l. Z+ R; T( d* m</DATABASE>

该用户从未签到

发表于 2009-7-28 22:06:59 | 显示全部楼层
这是要找的工具,准备试用。

该用户从未签到

发表于 2009-7-30 19:24:53 | 显示全部楼层
向老师们学习一下同,谢谢!!

该用户从未签到

发表于 2010-2-21 22:12:18 | 显示全部楼层
thank you very much
至尊笨 该用户已被删除
发表于 2010-2-25 17:07:09 | 显示全部楼层
需要一条一条的做吗?
  • TA的每日心情
    奋斗
    昨天 11:09
  • 签到天数: 2328 天

    [LV.Master]伴坛终老

    发表于 2010-7-12 18:02:19 | 显示全部楼层
    来学习一下~~! M& u& y6 I2 i: c
    谢谢分享~~

    该用户从未签到

    发表于 2010-7-15 18:40:30 | 显示全部楼层
    非常好的教材. 不过还是看不懂. 要得自己一点点做做试验, 一点点摸索.

    该用户从未签到

    发表于 2012-1-20 17:19:31 | 显示全部楼层
    收藏了,顶好帖

    该用户从未签到

    发表于 2012-3-5 22:10:10 | 显示全部楼层
    看不懂,可是要顶。

    该用户从未签到

    发表于 2013-10-16 14:09:59 | 显示全部楼层
    xiexie

    该用户从未签到

    发表于 2016-11-16 04:21:28 | 显示全部楼层
    Thank you for the information provided

    该用户从未签到

    发表于 2022-6-19 10:36:46 | 显示全部楼层
    好东西!感谢!!
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2025-5-2 04:46 , Processed in 0.032919 second(s), 29 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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