|
发表于 2016-3-10 00:15:26
|
显示全部楼层
% k0 w+ ]- y P: ]
-
( U4 H" S N( C6 W: z我决定可以先试试把您已有的 StarDict 词典文件直接转换为 mdx 格式。6 ~5 I2 d# L5 @3 r4 n
或者再看看3 y( c* h, f5 A+ \3 E
内部重定向(内容链接):4 Y2 C' p. j, Z' h6 j* T
1) 当两个关键字所指向的内容是一样的时候,可以采取重定向的方式来达到"链接"的效果。内部重定向的格式为:% P* x4 i2 {! }& P6 O
@@@LINK=关键字 r5 r9 m4 D8 k" c
例如color 和 colour 都指向相同的内容,制作词典时可以正常编写color词条,但对于colour词条,可以写成:
1 a6 n5 i+ |& c
" J# |$ M3 L2 L$ n" m Bcolour
+ H, b5 O5 I. g@@@LINK=color% w2 E/ W, W$ D7 N v4 S
</>6 W+ i6 e5 w s$ F% _6 B
0 b$ T; E: [4 n+ n- f/ C1 `
当显示colour条目的内容时,程序会自动找到color的内容进行显示,链接是可以多重嵌套的。
5 P0 U0 e9 J1 T! ~: \-9 x) |0 o4 g0 O
试试阅读 http://www.octopus-studio.com/download/MdxBuilder.zip 里的文件。- J3 h7 z# e- r$ p
\MdxBuilder\ConvStar\ReadMe_Chn.txt0 H! D0 B3 c% J! L
转换Star Dict文件到mdx格式的步骤:
0 x# u$ Q4 [9 \1) 从http://stardict.sourceforge.net/Dictionaries.php下载tarball格式的辞典文件
* y) s" X# ~6 M w9 Y) Y下面的步骤以http://stardict.sourceforge.net/Dictionaries_ja.php内的辞典为示范
. K9 {2 O: L3 S/ a* T; Y5 {
9 n2 G9 v! @) V! m& m, W2) 下载 "JMDict-en-ja dictionary" 和 "JMDict-ja-en dictionary"
3 O3 C& N4 a. @/ s; t& `5 D, s* z8 t通常一个辞典一个文件, 下面会示范如何合并两个辞典文件所有要下载两个辞典
- I8 U- f1 Y/ D( _" S/ k* }8 I5 e* ^0 z" y! j
3) 将文件解压到c:\temp
$ N& S2 B8 i6 b) u. \4 zc:\temp目录下应该有4个文件:
8 a5 u4 X. H+ _2 q! v2003-07-04 01:47 1,414,385 jmdict-en-ja.dict.dz
( J2 b% r; ^+ `- m( v2003-11-12 19:38 2,392,521 jmdict-en-ja.idx5 K& c) y* k* ~8 n: E d* O9 i
2003-11-12 19:38 351 jmdict-en-ja.ifo3 P# P+ d( ~7 P5 X3 n6 G
2003-07-04 01:47 2,702,509 jmdict-ja-en.dict.dz0 N: z* o0 E5 r4 O) f1 r9 D* U
2003-11-12 19:38 3,732,514 jmdict-ja-en.idx: _, F2 z8 J$ l/ G* E O
2003-11-12 19:38 352 jmdict-ja-en.ifo" y$ S f( ], p% E, q% o3 ]. e8 A
9 b# C U# U! c; T5 A
4) 将"convstar.exe" 和 "star_style.txt" 也copy到 c:\temp 目录下) ?0 J& A7 T+ C$ u+ b+ c
0 w) G+ W F4 f, I5) 运行:
1 H2 ]! d/ U n/ V3 @5 d1 u3 ja) convstar jmdict-en-ja.ifo e2j.txt5 p- g+ E+ l* U0 R3 Q3 P0 c, d
b) convstar jmdict-ja-en.ifo j2e.txt+ P" k& D) a6 a7 Y
c) copy e2j.txt+j2e.txt all.txt /b
6 x" u' x1 b8 Z0 _" w如果你不想合并辞典,可以省略b) 和 c)
' \, z& }# t2 Q, d: F1 T! \. x" u y* i6 ^- W! [/ y! A' [" D2 F3 o+ [
6) 运行 MdxConvert, 填入以下参数; H; h3 E6 t0 L
Source: C:\temp\all.txt) n# @5 A1 u2 }6 [
Target: C:\temp\JMDict.mdx) ?$ |; Q7 j3 ?6 j6 ]2 g
Format: C:\temp\star_style.txt
4 d, k: X0 N2 ~! {Original Format: MDict(Compact HTML)% z. D6 X+ b: k" U; P5 w, P
Encoding: UTF-8(Unicode) <---Must use UTF-8 for all stardict dictionaries6 r6 d) m2 H6 h! c' H
Title: JMDict English-Japnanese Dictionary6 h4 @& ~0 }2 ~5 M; C' m! M" n9 ~% Q& K
Description: <font size=5 color=red>JMDict English-Japnanese Dictionary</font>
( G# W, ^. J1 U& t# T
; |# | s. I5 z8 U A7) Click Start" H1 _3 F7 C5 v5 h! V8 Z" M
3 V! ^& \$ L" F; L' x# _* @
8) Done. 8 | m6 l% H* y& @
5 ?0 w/ o4 {" e7 I
注意: 部分辞典含有国际音标(International phonetic alphabets(IPA) symbols), 如果需要正常显示音标的话, 需要在PDA中安装支持IPA的TrueType字体, 例如win98/2000/XP 中的"Lucida Sans Unicode" ( 将windows\fonts\l_10646.ttf copy到PDAs的\windows\ or \windows\fonts\, 可能需要软启动你的Pocket PC) 7 I! E0 A# Y1 {- N
MdxBuilder.zip 里有个 manual_Chn.txt 文件,内容如下,注意加粗加红部分:! g) B8 ]# f0 z+ x& g( O$ L
6 e# J2 e3 k3 {6 {" R转换程序支持格式:: g, E/ S2 j* m
# S3 v( b. r( e. g4 T1) 扩展的SugarDict格式:
' z) e, M8 S/ ^
! R) z7 p- L0 L6 `每个项目(词条)一行,缺省最大为32K. 格式为: 关键字
6 h. e2 N2 G- f% b* @解释(就是关键字和解释之间用空格分开)" g1 L1 \ P& P
$ N: q5 R7 j& H/ ^6 D关键字: 可以是大小写的组合, 每个单词的最大长度是255个字符。. d- j9 F# G- {; [
关键字和解释中的'_', '^'在转换后会被替换成空格和回车
9 m* Q$ w1 E- b& A0 k
' t$ q4 T3 n' ?, ?* K& W a例子:
9 ^0 d# r9 s3 Tbreak_through /'bri:k_MQru:/ ^v. 突破^n. 突破
# h% Z6 I' R' K! O+ K% u( \+ I: Dgood ^adj.好^adj.贼好^adj.好得不得了9 M! X+ t9 V6 E* w: T1 V
- f7 f5 J& i$ B, |+ @
2) KDict解码后的tab格式
* S" m( A8 y5 `: C# g每个条目一行,关键字和解释之间用"tab"分隔. 其中的"\n"会被转换成换行2 b. w# {: u2 Z* J+ [) S
/ y/ S+ c! R9 @( D. R* R0 ?
例如:
) Z7 j( L4 E& S2 F' ^' m, C7 |good adj.好\nadj.贼好\nadj.好得不得了. Y( X& A8 J5 x& Y' _# A& u3 j; Z
k- j& L0 j. @8 [1 ^
j- ?- \: P1 `1 E, m, [; l3) MDict的html格式
2 ~. e, R& P# u- d+ _) @! @# I! X每个项目两行, m+ W+ X8 u, ?7 T, r2 h
第一行是关键字
5 ^* }) g* A8 a a' b6 I第二行开始是正文, 这里的正文应该包括关键字。可以使用html的标记(不要包含<html>. \3 B% E% A3 j7 Q
<body></body></html>, 这个程序会自动加上, 另注意在转换时要指明源数据为html).
% t- q- T5 j8 }; h$ G* M& y* {* A如果需要显示音标的话,可以利用html指定字体就可以显示了。(参见下面的例子)6 n% B0 b/ T, t' n" o ]; {
正文结束后必须用一行</>表示结束
) K6 D* Z5 p9 r: c. K7 v* u* e1 |4 Z! g
例子:& z* Q& Y, u$ X" P3 c0 c" D
Whole
" A" Y: s( F6 q2 Q<font size=5>whole</font>
" w, ]2 p- T X: C, P# ~9 w<br>
" h. W# N" c% e) h3 x<font face="Kingsoft Phonetic Plain, Tahoma">(hol,hJl; houl)</font>- U" |: R9 `+ j+ K8 [) n
</>
* b7 l p i- ?% h% ^7 L# s
: q! z4 i7 O! Y0 Y* V(注意"</>"和下一个记录间不要有任何其他空行,请参考example.txt中的例子)
) D; W5 H9 g* i5 w9 G/ x- W
& r8 V! z# w3 W+ x! k* }5 B在html中连接到其它关键字的方法:
; d$ y [4 ~1 H4 x/ Q4 k2 Q<a href="entry://key#section">key</a>
) ~1 l, n% k" v4 ]/ L6 b其中key是关键字,section是对应关键字页面中的section名称.& E0 s. Z# N# X
4 Z2 j, t% ]' p
在html中嵌入图片的方法:(PC版的MDict 1.0以上版本才支持图片)
) x0 F3 A e% B) O( E( c m1 k; c! u4 u<img src="file://abc.gif"> 或者 <img src="/abc.gif"> 其中src指向的文件名大小写不敏感0 N2 `0 }4 q& z+ A6 [( t/ j8 h! l
并将所有图片文件放在一个单独的目录中(不要与词典源文件放在同一目录中). 数据目录中可以
0 X% Z. k0 c; W' t% E) [带有子目录。在使用MdxBuilder制作词库时,将Data路径指向上面存放数据的目录,该目录中的. E* E6 \" H1 |
所有文件都会被压缩到后缀名为.mdd文件中,使用时该.mdd文件应当与.mdx文件在同一目录下。9 Q& n! h+ E% e4 j1 j4 `
! b1 h& M9 ~+ Z7 m3 d
在html中嵌入声音的方法:
$ Q; j9 x0 C A* A: K' j使用链接<a href="sound://keyword.spx">keyword</a> 这样的形式,点击该链接的时候可以进行发音
9 B2 b9 X3 q U) V2 ~0 U, }2 \发音仅支持.wav和.spx格式的音频文件。
. \/ A3 }6 O% E2 e8 C7 p, k4 ?3 J7 e! R, Z" P8 S" V
内部重定向(内容链接):
' z1 C, k6 e& u1 Y% `1) 当两个关键字所指向的内容是一样的时候,可以采取重定向的方式来达到"链接"的效果。内部重定向的格式为:
) I+ H7 i6 W8 z, [$ m* B@@@LINK=关键字* j: b* T. \( P$ q. p7 G( L
例如color 和 colour 都指向相同的内容,制作词典时可以正常编写color词条,但对于colour词条,可以写成:; N D, V g m4 v0 d3 `$ a4 S: Y
B& m! g/ k8 V- @! B( v
colour
5 x$ r# L0 c. m. q4 |1 I@@@LINK=color
" b5 B: u3 G3 Z' ^8 ]0 r</>* V6 c K( S& ?; t
5 G6 s" w8 j3 ~' |. e' E
当显示colour条目的内容时,程序会自动找到color的内容进行显示,链接是可以多重嵌套的。
* F% a3 V; T9 ^+ w8 U3 c* M5 W
; k3 [5 f2 r3 W2)当重复的内容是数据文件时,同样可以采用内部重定向的方式解决冗余问题,只是改为将链接文件的内容设置为:! u% D" i6 d7 Z
@@@LINK=目标文件名全路径 (注意编码方式必须是UTF-16)3 a8 P$ Q6 p: R Y$ A& f
例如abc.spx和123.spx的内容是一样的时候,123.spx的内容可以设置为:6 ?+ C6 l' D0 N0 q$ J( E
@@@LINK=\abc.spx1 K9 t2 l' A$ m f6 @) h) k$ X
) V3 N e8 v: Y6 N
* @ f4 P% I$ s
4) MDict的紧凑型html格式(Compat Html)+ k) Z2 {: \% X
这个格式由两个文件组成,正文文件格式基本和2)一样,但在正文里可以使用记号。另外
0 Z+ x$ a/ [0 o4 ^一个是记号文件。
, F2 |. @1 U' m) h9 W, ~! c6 e
9 X* a7 F* L7 S k: ]( ^记号文件的格式:- Z9 U5 a) C O
由多个记号定义组成,每个记号定义有3行
7 h2 i: X# P/ T1 `3 f% i第一行: 记号的名称(只能用数字,必须大于0,最大不超过255)
! F% t# i; C" \' R第二行: 开始字符串(可以为空)/ d" O5 d; f7 f1 k
第三行: 结束字符串(可以为空)2 n6 P& L- y$ o4 F" B8 e
使用时在正文里使用`记号`(键盘左上角的那个符号)就会将后续的文字直到下一个记号前的文( H, ~: D. C6 ?- x6 x
字用记号定义的开始字符串和结束字符串括起来。正文里如果需要显示` 则用"`"表示。内
) G3 g5 t( T6 }7 @' o码应该和正文的一样(例如正文如果是用Unicode的话,记号文件也应该用Unicode): A. l O) S* {3 o2 f6 K9 o. s
1 G$ R: h' \' {. N0 P1 c9 s/ q
例如:
& O& C n4 V; @2 u" N7 f. i记号文件:
( b, T" `0 b9 f& f# Q1; P T+ I9 n! I' O9 {, i" o
<font size=5>
9 {. z' u% a- e8 q</font>
( h1 T: o8 j0 x# }2
6 l2 z+ J( `8 w5 L9 X( Y/ S k<br>- D2 ?2 U8 L+ t }5 i% ]8 ]6 {
- R4 q) Z0 o8 s8 z
3
8 G& A( k. l2 i Y- \! S- Q<font face="Kingsoft Phonetic Plain, Tahoma">
$ O% S: a7 X5 F$ ^5 J- U O0 M) {! h2 f</font>9 U1 T* ~3 v: k6 J! n, P0 R" s
! A& w5 I) y3 L& Y4 Q
, h: Z$ ^. \- Z+ s+ m+ ]
8 x& }! S& ?/ i3 c) @$ U3 B4 i正文文件:, g& ~8 y5 |6 s& m1 Y& p) {; g
whole6 I2 b2 S# X. X+ g+ p9 z- H
`1`whole`s`2`<p>`3`(hol,hJl; houl)3 {! r0 W# `5 @9 Z
</>
4 @& E- t% w7 {# A7 G0 V9 G' E# K( H4 P
最后在显示的时候就会被替换成4 k1 h( `* i% {* x8 U2 K' a
<font size=5>whole&#%96;s</font><br><p><font face="Kingsoft Phonetic Plain, Tahoma">(hol,hJl; houl)</font>0 u; ~9 S8 n8 ~. j% Q" ^
: z2 L l! b# b) u8 F2 k
% k) Y* v: {* r6 I- K
备注:
( u; h+ B2 g1 C! G如果你的数据里含有国际音标,建议使用Unicode格式
9 S$ l0 v% ]; g, J9 s* F(请参考http://www.phon.ucl.ac.uk/home/wells/ipa-unicode.htm)1 I9 m! R, P* s
将音标用对应的Unicode进行表示。这样只要用户装有支持IPA的字体文件就能够显示音标。
* |/ s# }0 j6 P: ^- ^4 _6 I0 _8 u(Windows里的Lucida Console就包含有IPA对应的字体) |
|