掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 11110|回复: 16

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

[复制链接]

该用户从未签到

发表于 2008-9-26 01:12:20 | 显示全部楼层 |阅读模式
精华文章啊!!实在忍不住从口袋转载了过来:)
% C( b7 u& t- `& T6 p9 ^) h6 b4 y1 K3 S
原作者:linld97044
1 p' x& M  m6 G$ r8 v# j! x内容:$ h  Q# o( a. i1 }+ i
玩PDA多年,在坛子一向是潜水多贡献少,现在向坛子贡献下做mdict的方法。
/ |1 Z0 T8 G0 |+ N, \4 Q; C" {1 ?: |& ~- _0 T
做专业字典首先的难题是字典源文件,经搜索,看来stardict是比较好的源文件,字典量多货足。可以在以下链接大量下载:6 x6 ]) I( q$ x& g. V1 Y9 E
1)http://www.vayn.cn/sundries/files/stardict-dict.htm
" f! A6 D, o4 x3 K9 `2)http://reciteword.sourceforge.net/stardict/babylon.php
# W' K; ^8 T6 s/ ?) h* y3)http://stardict.sourceforge.net/Dictionaries_zh_CN.php
1 |5 T: G& ^8 I( Z- L
  Q# z1 t+ k, q, e) {本问题之前在http://bbs.pdafans.com/thread-608906-1-1.html(mdict自定义尝试-美国传统字典+湘雅医学词典+高级汉语词典3合1的mdict(附方法))中讨论过,现基本已解决,发帖总结下:
. h( y3 w' l: C0 ~3 q( o0 T
' m! N& z# X7 V. g0 A* I1、根据mdict作者邮件,比较旧的stardict可以用convstar命令转化成txt后用MDXBuilder 2.5 编成mdict的mdx文件。这一步比较简单,之前的帖子也详细说过了。
+ b+ J$ j% z. Q; m5 |  h
  [. r5 \# E: L2、第二种情况是stardict后期的词典,用了不同的编码格式,convstar直接转出现下面类似的错误:3 C$ O9 \0 c# i9 B
8 B" `2 n, X% C0 H; q! v, o
“Warning unknown mark: k (0x6b), following content will be ignored.- j, n- f1 o' ~# {% f' m
Summary of ignored marks:: Q8 w0 b8 K+ t8 t4 X
k (0x6b) 96281 times. t9 O2 D- q. r! \
Done!”
) C( m/ m0 O% @
( {4 h) Y- {# e5 f8 `& F$ w这种情况不能用http://www.octopus-studio.com里的convstar直接转。应做如下处理:
- B$ p. }" _  {( }  G0 }+ a. {( w2 a# x1 O8 S4 ^
1)先要用aisnote编写的CvtStarDict2Txt.exe转成txt3 j: T4 v2 K3 W' r; o2 Q  i
2)txt用ultraedit编辑成mdict标准格式
' ]7 S2 Q7 k6 A8 m# @. i3)用MDXBuilder编成mdx文件。- v+ |3 d/ X1 ?) Q4 I' Y- z" {
% G" f+ C2 g3 s9 d% d% k
以stardict-babylon-NEW_Babylon_German_English_dictionary-2.4.2为例给大家示范下stardict to mdict的全过程。
% s1 A# r. m- n' |: z/ E
" Z$ n( |6 \0 r9 f: y" L, i& e4 t9 F一、下载文件包,得到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 S3 `: y# C- H1 I& T) Z: R$ ?0 T' Q
注,用convstar,出现下列错误信息,说明convstar不能处理该文件:
8 c# F: x. p- W$ h7 f. v
  [0 I9 I: {5 l6 \) A0 h* q! c# r”C:\>C:\download\MdxBuilder\ConvStar\ConvStar.exe C:\download\German\stardict-bab
0 h) M7 ~" `; d% k7 Nylon-NEW_Babylon_German_English_dictionary-2.4.2\NEW_Babylon_German_English_dict% V; i- |: _  Y# R8 f
ionary.ifo c:\g-e.txt( Y7 u$ E# T, m, Z$ F1 c; r7 `
bookname: Babylon German-English , wordcount 1646380 D: e/ l6 V1 L; L
Total entries:164638+ G+ `/ I6 C% B( D
Warning unknown mark: h (0x68), following content will be ignored.
/ w' v8 ]* `/ WSummary of ignored marks:
1 r; S* X( b+ t$ b. Ih (0x68) 164638 times
, s1 |, o5 o- h& O5 mDone!“
9 J$ f+ H8 u* r" [
3 h! Y, k7 _+ ?二、用7-zip继续解压NEW_Babylon_German_English_dictionary.dict.dz,得到NEW_Babylon_German_English_dictionary.dict,该.dict文件应该解压在和另外几个文件在同一目录。8 e9 L% l6 \6 X7 |. n
见图1
0 x! f; P# j  }( u9 ^2 V
8 Q1 g% N2 n, l- H三、启动CvtStarDict2Txt.exe,选择NEW_Babylon_German_English_dictionary.ifo,再点convert。成功后对话框出现:”Word Count=164638; k, G) c% D- h( ^
=======
6 r* G) w  y4 bC:\download\German\stardict-babylon-NEW_Babylon_German_English_dictionary-2.4.2\NEW_Babylon_German_English_dictionary.txt
' Q( {: y; B  z* A1 y# qConvert Success!!3 v& R. @' O' J4 M8 V" s1 F
======“说明转化成功!8 Y8 t+ m* T9 a; m- U. U
见图2
* T( n1 L+ b4 f' C' M
" M( {1 N+ P( H8 J5 h- x
四、由于要做德英英德双向字典,依样画葫芦下载源转换,得到Babylon_English_German.txt和NEW_Babylon_German_English_dictionary.txt两个文件。
( U# z) ?" K" e2 M6 X9 \# H1 p6 h+ o% c" b8 J  A- ^
五、这2个txt文件在ultraedit打开,提示”do you want to convert to DOS format“,选是。本来想用copy命令合并这2个txt,但copy命令不知为何只拷贝了部分文件,所以这里用ultraedit全选一个txt全部文本,粘帖在另一个后面(Ctrl+End)。得到一个313468行的文件。
8 l  c* e0 A' B" Q. M2 w3 Y9 n1 o, F2 P
六、在ultraedit”Ctrl + R“把换行符”^p"替换成“^p</>^p”,如图,选replace All。就是在每一行加上换行及</>(mdict分节号)。" O/ n/ Z- u! D3 m& [* s9 T9 O0 n
如:
9 d0 i, @3 R2 O8 P6 x) O“abhorrence    <font color="blue">n.</font> Abscheu* h. M7 [& V1 T. N# a. g2 }
abhorrent    <font color="blue">adj.</font> abscheulich”8 @; R" Q% ]  n( w) p% }$ Z3 U
# W5 Z5 r/ |: \5 _1 ]# i1 M/ v
将转成:
5 y# w1 s& u8 U: N* G! \- D3 B# l"abhorrence    <font color="blue">n.</font> Abscheu0 ~( ^1 c% N  W& |) z; ^  [2 B1 U/ U' S
</>0 {: v$ Y* r$ ~
abhorrent    <font color="blue">adj.</font> abscheulich
9 S2 b8 \, l, L7 `- B+ ~4 E</>") H  ?3 ?, c6 v  ]/ y
再用一次替换“Ctrl+R”把 “^t"(Tab)替换成”^p“,转换成:
* Y2 V# H" h( a; u0 {. ?”abhorrence1 C" @" \! z$ V
<font color="blue">n.</font> Abscheu
: T" W, ~$ R/ \' R1 v, j9 |</>
/ G/ G( P  h" l5 u" d0 ^$ ~% Babhorrent" g6 F. s- \  M' V0 n) y0 q5 J
<font color="blue">adj.</font> abscheulich
: T3 i9 }, t1 g& L3 G3 Q& v' `8 M</>“$ j% R) Y8 P5 ?
得到mdx标准txt!存储为DOS Terminators-CR/LF ;UTF-8文件。
9 n* x' t# b- z8 f7 D6 O7 w3 n7 V3 t- t+ j. A: Q
见图3和图4/ N" F& D4 v0 @( Z5 v# g

/ O0 [# a; `$ k+ U, n7 ~七、mdxbuilder出动,注意source选txt源文件,target输入生成文件路径和名称,style应选example-style.txt,original format这里选Mdict(Compact HTML),Encoding选UTF-8.: u, y, v6 F1 n8 p& J; m
见图57 ]  a4 w5 o/ H3 k5 b

/ ^  L- Q* t/ A1 _八,完成了,就这么简单
) p$ k% n' y  v* f( d: R见图6" n' u6 ~% e* q( C4 t, r

0 {. e3 s) C( D& o附上几个必须文件:
+ J( S! V0 ~- {  Y2 Q3 L. E6 g( [  i, `) S# f: Q4 _. ]
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就出现错误报告:+ R- V7 c$ x# I: A
内容如下:4 J  S) R2 g; z1 H
<?xml version="1.0" encoding="UTF-16"?>
4 Z; q6 Q, |2 J0 b* j8 ?: ~9 r<DATABASE>
6 |! V, U$ k/ v* d* }4 u<EXE NAME="CvtStarDict2Txt.exe" FILTER="GRABMI_FILTER_PRIVACY">
2 J: c. ?3 C. f) u2 F    <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" />
6 a  c' `* Q0 P  o    <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]" />
+ m+ B0 J% u" D6 E4 c# F$ N    <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]" />
5 w$ D" C& `2 S    <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]" />2 K9 b$ p1 W7 S0 F
    <MATCHING_FILE NAME="libgtk-win32-2.0.dll" SIZE="2373542" CHECKSUM="0xCDFB5A3B" />) |& i0 g, S9 f2 n; \! w( [$ o
    <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" />7 ?" Q- N$ w- F: p* W, L" \3 g. p
    <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]" />
$ t) l) P- y! T. y" K- M</EXE>
4 D, u7 B7 e  l7 x9 G3 r; R' e) @<EXE NAME="kernel32.dll" FILTER="GRABMI_FILTER_THISFILEONLY"># b- |4 e2 @7 s0 t
    <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 C* a5 |3 ~* ^) B</EXE>
7 N5 B/ X( R1 C+ E</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的每日心情
    擦汗
    14 小时前
  • 签到天数: 2778 天

    [LV.Master]伴坛终老

    发表于 2010-7-12 18:02:19 | 显示全部楼层
    来学习一下~~
    0 {$ `3 S7 R0 k' X: V: l谢谢分享~~

    该用户从未签到

    发表于 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, 2026-7-29 22:06 , Processed in 0.039359 second(s), 29 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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