掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 9213|回复: 16

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

[复制链接]

该用户从未签到

发表于 2008-9-26 01:12:20 | 显示全部楼层 |阅读模式
精华文章啊!!实在忍不住从口袋转载了过来:) 4 T. L$ C6 ]7 x% N' R
, ]! H' ?* G+ X9 a4 [$ t
原作者:linld97044! r! V) g6 E, d' H! ~, t
内容:
6 e& @$ k) `$ g& z8 n. d玩PDA多年,在坛子一向是潜水多贡献少,现在向坛子贡献下做mdict的方法。
  M1 i' d7 j6 S) ^1 |8 s
6 W7 b/ k( l, b1 Q9 p做专业字典首先的难题是字典源文件,经搜索,看来stardict是比较好的源文件,字典量多货足。可以在以下链接大量下载:( g/ m$ g  T3 ~2 P
1)http://www.vayn.cn/sundries/files/stardict-dict.htm
" F4 t  g0 P5 ?4 M: w3 ~# H2)http://reciteword.sourceforge.net/stardict/babylon.php$ _$ ?' a7 l4 [: |; k% Y/ |
3)http://stardict.sourceforge.net/Dictionaries_zh_CN.php4 \  C* d2 N. P6 a

% f! H9 T4 y/ I" Q* ?# V6 O4 l本问题之前在http://bbs.pdafans.com/thread-608906-1-1.html(mdict自定义尝试-美国传统字典+湘雅医学词典+高级汉语词典3合1的mdict(附方法))中讨论过,现基本已解决,发帖总结下:# s  G2 z3 j) Q# f

' b% E7 z* E" w2 w1 U& a/ d1 I2 g* j1、根据mdict作者邮件,比较旧的stardict可以用convstar命令转化成txt后用MDXBuilder 2.5 编成mdict的mdx文件。这一步比较简单,之前的帖子也详细说过了。
* i8 g( c( \5 |3 s9 ^' J) e+ G; d0 R7 s! y# A6 q
2、第二种情况是stardict后期的词典,用了不同的编码格式,convstar直接转出现下面类似的错误:: c) D& Y1 J" `( s

, m2 o3 r+ r% X) \/ w“Warning unknown mark: k (0x6b), following content will be ignored.9 G) `5 ^9 h# t' A
Summary of ignored marks:
% i2 R  x; m6 i7 S+ u0 rk (0x6b) 96281 times; P+ R, ^: O9 k. Y' I
Done!”
; \  f" m- ?4 ^6 x) |, {% M' p* T* b
3 d& D1 D, p/ ]2 s6 H3 n这种情况不能用http://www.octopus-studio.com里的convstar直接转。应做如下处理:
, L3 m& _* `/ Z* ]/ S0 c" g
7 k! ]  G* g8 z$ I5 e1)先要用aisnote编写的CvtStarDict2Txt.exe转成txt
; R: O; H0 c! f( t# X7 u2)txt用ultraedit编辑成mdict标准格式2 ]/ K: S( Y2 E. W+ I' i: U2 n$ V
3)用MDXBuilder编成mdx文件。
$ S7 b2 Z; i* L4 \& n1 w" x* V! W* F; j  _, q
以stardict-babylon-NEW_Babylon_German_English_dictionary-2.4.2为例给大家示范下stardict to mdict的全过程。
  \. \8 S0 ^' y2 D' z( ]
2 q  C0 `' s" X/ X3 Y: j9 V$ M4 L1 g一、下载文件包,得到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四个文件。
9 }: g1 E% H4 M" w, d+ j" m) O- l
( b# r1 ^7 ], n- m$ m" s5 X注,用convstar,出现下列错误信息,说明convstar不能处理该文件:' n3 L% w9 T* G( {/ ^; i; |3 u1 s

" r& B; ^* {* r1 x" f+ l% [”C:\>C:\download\MdxBuilder\ConvStar\ConvStar.exe C:\download\German\stardict-bab
' g% r+ W5 p* D9 e# y2 gylon-NEW_Babylon_German_English_dictionary-2.4.2\NEW_Babylon_German_English_dict
( @) ?+ B9 ?2 I+ h, Dionary.ifo c:\g-e.txt
1 i) W9 [: N8 b$ n1 sbookname: Babylon German-English , wordcount 164638
% k  Y: ?5 t9 QTotal entries:1646384 j! o/ t4 P5 Q& G
Warning unknown mark: h (0x68), following content will be ignored.
) Q1 f: ~/ D. l- c% O$ aSummary of ignored marks:5 M8 P! \1 L" f! x( W/ L
h (0x68) 164638 times
3 F7 H! }/ J' d9 \Done!“0 Y2 d6 x9 C6 q3 }, }' k2 K2 s2 O
+ @) O3 {& Y3 l
二、用7-zip继续解压NEW_Babylon_German_English_dictionary.dict.dz,得到NEW_Babylon_German_English_dictionary.dict,该.dict文件应该解压在和另外几个文件在同一目录。$ N+ Y& T( Y# X8 N. o
见图1" Q- ^5 o% ?% S
( D4 {4 g3 A9 z& H
三、启动CvtStarDict2Txt.exe,选择NEW_Babylon_German_English_dictionary.ifo,再点convert。成功后对话框出现:”Word Count=1646381 ?' y" f6 S  B/ ^
=======$ C; d) M0 ~/ t
C:\download\German\stardict-babylon-NEW_Babylon_German_English_dictionary-2.4.2\NEW_Babylon_German_English_dictionary.txt 3 f* k2 r* o. }. D/ x$ B
Convert Success!!2 z1 d( T5 ]( h- w  Z
======“说明转化成功!3 x* z! d2 u7 P( ]  v
见图2
( z  A( M! D# r( {( x/ {

3 y& c4 G, [. f, @3 K# s( [四、由于要做德英英德双向字典,依样画葫芦下载源转换,得到Babylon_English_German.txt和NEW_Babylon_German_English_dictionary.txt两个文件。8 h; C6 H. z% D4 S* ]( m; \$ I% h% _5 `
# v& D7 G0 w3 A1 b0 N5 S4 X
五、这2个txt文件在ultraedit打开,提示”do you want to convert to DOS format“,选是。本来想用copy命令合并这2个txt,但copy命令不知为何只拷贝了部分文件,所以这里用ultraedit全选一个txt全部文本,粘帖在另一个后面(Ctrl+End)。得到一个313468行的文件。9 x+ I: \9 Q6 x( ?% k5 ~- _; n/ h

1 A3 P* u$ e( Z" q2 P* q六、在ultraedit”Ctrl + R“把换行符”^p"替换成“^p</>^p”,如图,选replace All。就是在每一行加上换行及</>(mdict分节号)。4 S/ x4 x/ g2 i$ P# o, T
如:" p5 K; Q+ g) n4 ~
“abhorrence    <font color="blue">n.</font> Abscheu
. B# e* b, v0 n, K2 labhorrent    <font color="blue">adj.</font> abscheulich”
0 o8 \, ]" |; s& m1 @+ s
+ V: f0 j6 R* `  e. ~将转成:8 W+ q0 M) u! [1 y8 n2 [
"abhorrence    <font color="blue">n.</font> Abscheu" b- v; b6 S1 N* s
</>4 l5 q7 y! u2 ^8 K/ y
abhorrent    <font color="blue">adj.</font> abscheulich2 r0 B! ~5 h4 U! W4 G- L; W
</>"# A2 N/ G; s: j: W8 e
再用一次替换“Ctrl+R”把 “^t"(Tab)替换成”^p“,转换成:; T7 ~6 [, U0 ]* Q* ~  |4 m9 E
”abhorrence  O1 a. _3 ~: i- a/ o
<font color="blue">n.</font> Abscheu
" F" A; `( }3 s& d8 d1 k* F</>
/ w, V/ \2 o. s( O3 a3 Fabhorrent3 T9 ?: v8 p4 a$ h$ f' s" E
<font color="blue">adj.</font> abscheulich
  U9 R% a+ |. t0 D% A</>“
8 p+ y% ^' ^' c, f4 V- P# r得到mdx标准txt!存储为DOS Terminators-CR/LF ;UTF-8文件。
  {; ^; X$ v( {- x& m
( [3 [% H7 U. U见图3和图4
  Y$ n7 s8 r* [+ X
* q9 i" K9 u5 i! y& U
七、mdxbuilder出动,注意source选txt源文件,target输入生成文件路径和名称,style应选example-style.txt,original format这里选Mdict(Compact HTML),Encoding选UTF-8.
1 @, y* W7 O! P5 @# u4 P# n* p见图5
  [8 A2 P% O7 J* H( b; I; H1 {) W, U& i. k" S4 }# I
八,完成了,就这么简单
6 H8 F8 A; G4 i' ~见图68 L/ ^8 L: V# j" l0 P+ ?3 M

( e, z$ f0 a: F, i0 M5 ]' A附上几个必须文件:
# ~4 N+ v/ z; ^" g
4 C* j! o: m2 A1 X( e1 pCvtStarDict2Txt.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就出现错误报告:3 A& p: d- M1 D
内容如下:
4 M9 w6 Y/ m8 R8 }+ X  O<?xml version="1.0" encoding="UTF-16"?>
8 c4 f2 E( h: N: z<DATABASE>
1 v  B, N, c7 {7 ~; l- v5 k. q<EXE NAME="CvtStarDict2Txt.exe" FILTER="GRABMI_FILTER_PRIVACY">2 a; g) b9 J+ m; \, Z
    <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" />+ g: u0 Z; H( \" _( w
    <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]" />+ N; |: W& r6 S" o: ]- e$ w
    <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]" />: N. y% K" T) n) T8 U
    <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]" />
& `* k& a7 I, w- y    <MATCHING_FILE NAME="libgtk-win32-2.0.dll" SIZE="2373542" CHECKSUM="0xCDFB5A3B" />, q5 V7 s4 u) g0 ?3 z
    <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" />" o! Z1 E/ O" q! k$ J
    <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]" />
' v( _+ n' \$ p/ @</EXE>, o% n9 H" a- V( S
<EXE NAME="kernel32.dll" FILTER="GRABMI_FILTER_THISFILEONLY">* s, H$ B& f8 d) X& j
    <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]" />
6 A6 Q; F0 c1 O, ^- Z</EXE>- v! m6 o8 E2 o# I+ Z5 u
</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的每日心情
    开心
    昨天 06:35
  • 签到天数: 2303 天

    [LV.Master]伴坛终老

    发表于 2010-7-12 18:02:19 | 显示全部楼层
    来学习一下~~
    , S: q+ I( p/ L" z8 s+ `. b& [谢谢分享~~

    该用户从未签到

    发表于 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-4-7 02:51 , Processed in 0.033648 second(s), 29 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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