掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 9247|回复: 16

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

[复制链接]

该用户从未签到

发表于 2008-9-26 01:12:20 | 显示全部楼层 |阅读模式
精华文章啊!!实在忍不住从口袋转载了过来:)
7 E1 F* m( C3 D6 o# S2 n
0 X: I9 |( H& |4 X# m原作者:linld97044: n( E; u# q* i
内容:# ]& u. {" `% B5 t( n& s6 p/ `
玩PDA多年,在坛子一向是潜水多贡献少,现在向坛子贡献下做mdict的方法。7 i2 z& J0 v* q  C

9 d( I$ b9 n! c! d/ X做专业字典首先的难题是字典源文件,经搜索,看来stardict是比较好的源文件,字典量多货足。可以在以下链接大量下载:
' y3 Y$ y6 `( Q! D# v: m. [. e/ Z( A+ t1)http://www.vayn.cn/sundries/files/stardict-dict.htm' E2 o2 B" Q, s1 n5 t
2)http://reciteword.sourceforge.net/stardict/babylon.php
8 P* F6 j' r- J3)http://stardict.sourceforge.net/Dictionaries_zh_CN.php
1 s4 w; V2 q% v" ^0 t" U, Z! P( `$ P' q, V2 ~, p' c
本问题之前在http://bbs.pdafans.com/thread-608906-1-1.html(mdict自定义尝试-美国传统字典+湘雅医学词典+高级汉语词典3合1的mdict(附方法))中讨论过,现基本已解决,发帖总结下:' U4 G0 ?  ?7 q0 @# f

; t$ M" s! g2 E8 R1、根据mdict作者邮件,比较旧的stardict可以用convstar命令转化成txt后用MDXBuilder 2.5 编成mdict的mdx文件。这一步比较简单,之前的帖子也详细说过了。
5 w& p0 J' P% z  \) H* K
$ Y, b  E- U% o8 f2、第二种情况是stardict后期的词典,用了不同的编码格式,convstar直接转出现下面类似的错误:; A4 R6 K. L$ H3 t8 [
, e+ [: ?  U' \, F1 N  u
“Warning unknown mark: k (0x6b), following content will be ignored.
- \1 d8 ?) W4 \8 F! J& eSummary of ignored marks:
- T6 z9 i2 K: P- k3 @$ K3 Lk (0x6b) 96281 times$ K& `" P. m& F6 t' B
Done!”7 d  R$ I# A' R# ?& z: g

+ [9 r. {7 P2 O% P5 Y7 o: a这种情况不能用http://www.octopus-studio.com里的convstar直接转。应做如下处理:
' y7 K" q1 I  a5 v( j, `7 w7 {" r% L0 \; e7 J# M  t0 ]6 x
1)先要用aisnote编写的CvtStarDict2Txt.exe转成txt  U! A5 n+ I- V5 i
2)txt用ultraedit编辑成mdict标准格式6 [) d. a' `  V) ]4 c( S* B$ f! C
3)用MDXBuilder编成mdx文件。5 ^" x. G; Q$ t. e5 ^8 ~- o8 J
7 U$ T6 {1 }7 \- i( u5 ]
以stardict-babylon-NEW_Babylon_German_English_dictionary-2.4.2为例给大家示范下stardict to mdict的全过程。, o0 T( |0 |6 U' Y( g- Y  N) a
9 p2 G( I" F+ E2 s9 O* m" h% _# N
一、下载文件包,得到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四个文件。* ]  }1 E6 H# o! @: F; ?) ]  b+ X

" I# `5 w+ M& b& H4 Y注,用convstar,出现下列错误信息,说明convstar不能处理该文件:* l( k3 T  w$ p% z" F

; |: l9 u' e. b  H5 e" U; F- M/ S”C:\>C:\download\MdxBuilder\ConvStar\ConvStar.exe C:\download\German\stardict-bab
" O) [$ F* h' y$ G% q, i% N" ~2 wylon-NEW_Babylon_German_English_dictionary-2.4.2\NEW_Babylon_German_English_dict3 X- L( z2 X$ ]9 N
ionary.ifo c:\g-e.txt. x1 g& D% ~: {% m! D6 S
bookname: Babylon German-English , wordcount 164638
# f8 A: i4 W" R' wTotal entries:164638
3 d" u* M5 O+ j2 Z! B: p9 f& k+ lWarning unknown mark: h (0x68), following content will be ignored.
; e& l8 X& t2 ]6 r# V5 I. ISummary of ignored marks:4 Z8 K+ K' ^6 r/ r, g, E
h (0x68) 164638 times
/ H9 ?/ d$ T% D7 S1 |Done!“
" a. b5 F* h7 [2 I% W
* G3 P9 S- i# y二、用7-zip继续解压NEW_Babylon_German_English_dictionary.dict.dz,得到NEW_Babylon_German_English_dictionary.dict,该.dict文件应该解压在和另外几个文件在同一目录。! }3 T. Z) I! j$ o" `( M  J5 {
见图1
; z. N0 `* d+ M5 n# D2 |& M6 i7 Y6 Q5 E" \; i5 i
三、启动CvtStarDict2Txt.exe,选择NEW_Babylon_German_English_dictionary.ifo,再点convert。成功后对话框出现:”Word Count=164638
* r- K+ `$ @8 Z, T2 ^: I) S! {=======2 D: \! y" E: F$ s5 o, o
C:\download\German\stardict-babylon-NEW_Babylon_German_English_dictionary-2.4.2\NEW_Babylon_German_English_dictionary.txt 2 ^2 e! a9 C: ^( i. @
Convert Success!!
0 U: P' m' G7 I# r, M  h6 O======“说明转化成功!
0 Z3 X, b/ `& @. d( e见图27 m  G0 W4 ~$ N/ A1 h4 S2 A

& ]" @, @& y6 ^7 K- o" t" P* A: @四、由于要做德英英德双向字典,依样画葫芦下载源转换,得到Babylon_English_German.txt和NEW_Babylon_German_English_dictionary.txt两个文件。
6 D5 m. g4 F+ p( f1 S! |
5 Z4 ]3 A. S: w, w- Y6 M五、这2个txt文件在ultraedit打开,提示”do you want to convert to DOS format“,选是。本来想用copy命令合并这2个txt,但copy命令不知为何只拷贝了部分文件,所以这里用ultraedit全选一个txt全部文本,粘帖在另一个后面(Ctrl+End)。得到一个313468行的文件。* b) c. X) u+ I( ?  F8 }

) ?0 M, ]$ J; c( b7 o3 O- F六、在ultraedit”Ctrl + R“把换行符”^p"替换成“^p</>^p”,如图,选replace All。就是在每一行加上换行及</>(mdict分节号)。4 [6 b" q4 D; Z: K9 Q% Y+ Z
如:9 Q7 t7 W1 Y9 O- B* \
“abhorrence    <font color="blue">n.</font> Abscheu
5 g# Q; @+ m; \! Yabhorrent    <font color="blue">adj.</font> abscheulich”$ Z' J' H6 ]7 j$ G! P. T+ s: v

. `, y1 r! O% _$ d8 @将转成:
) q. p4 v  O5 F; e"abhorrence    <font color="blue">n.</font> Abscheu2 D& N8 c( I8 E, z9 [
</>% O9 O/ B: G, [0 N5 m3 \' W. }: b1 B
abhorrent    <font color="blue">adj.</font> abscheulich5 ?1 k! `$ U$ F* Y0 o
</>"( p2 K- V1 N0 k7 w- k
再用一次替换“Ctrl+R”把 “^t"(Tab)替换成”^p“,转换成:: h) s/ g6 a; t. P# x- Q( O$ X. w+ g4 @. i
”abhorrence  l$ t/ R7 S% z  \9 C
<font color="blue">n.</font> Abscheu
  @. s0 h1 @2 v9 {. ~</>
' S- A* s8 W4 i' F/ Sabhorrent+ s  S/ F. F% g1 A- B
<font color="blue">adj.</font> abscheulich  L# z; Y! @3 I9 L: V
</>“( v' t6 p& N' J  o
得到mdx标准txt!存储为DOS Terminators-CR/LF ;UTF-8文件。
6 j3 ]0 \  n- s; Z3 S9 J1 Y, x* H/ H# w
见图3和图4' g7 @& H5 m8 @! p

3 ^! ~4 I2 |! I! D七、mdxbuilder出动,注意source选txt源文件,target输入生成文件路径和名称,style应选example-style.txt,original format这里选Mdict(Compact HTML),Encoding选UTF-8.! z+ s9 g* C6 L; O1 _/ N1 l8 e
见图5
8 ~; @! P! W" `4 D. l
7 n: o/ m$ n6 f- y5 y$ \3 P% J3 u9 B八,完成了,就这么简单, y! A% a0 ]: b, ?8 e. f
见图6+ ?' u1 _* d& U* s8 Y! b5 X, ^( H

* F& Q/ E7 X  B" @. I附上几个必须文件:  Z7 j/ }4 v/ v6 N( N
  ?; T: m. i. Q+ Z) {; S# P! L
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就出现错误报告:
/ m8 _3 S" H5 N0 k+ `: R# }内容如下:
' X# Z5 m' C8 s1 ~: }<?xml version="1.0" encoding="UTF-16"?>5 |+ X9 O" _( i. t" _
<DATABASE>/ P9 p) ?. M0 v# o. J
<EXE NAME="CvtStarDict2Txt.exe" FILTER="GRABMI_FILTER_PRIVACY">1 v8 Z2 E( S7 J# H, i, a
    <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" />( z2 w; M6 H2 {: v2 }
    <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]" />4 _' O7 X" ]8 ^# ~5 y" k2 n2 @
    <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]" />
( X) W' L$ u; ?% S8 A    <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' e5 N% Y1 r: `! X9 [( Z
    <MATCHING_FILE NAME="libgtk-win32-2.0.dll" SIZE="2373542" CHECKSUM="0xCDFB5A3B" />
' E$ H6 C" N+ n$ d0 Y9 E    <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" />2 b. Q2 j; T, j  z
    <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]" />- `* q5 Y1 J1 ?" a2 J$ A/ J- O
</EXE>7 G; \8 g9 ?( r. t5 e
<EXE NAME="kernel32.dll" FILTER="GRABMI_FILTER_THISFILEONLY">; d9 M5 }8 V9 X
    <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 R- _) p) B# O- C9 q- g</EXE>% D. G. S6 Q' `1 c1 B
</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的每日心情
    开心
    4 小时前
  • 签到天数: 2318 天

    [LV.Master]伴坛终老

    发表于 2010-7-12 18:02:19 | 显示全部楼层
    来学习一下~~: I' z5 n+ @! H0 E; b% j- ~% C* A
    谢谢分享~~

    该用户从未签到

    发表于 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-21 11:07 , Processed in 0.033077 second(s), 29 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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