[2021.01.11]安卓版Goldendict曲线全面支持MDX/MDD:发音/图片/JS/CS

文章正文
发布时间:2025-10-20 03:50

本帖最后由 chigre3 于 2021-1-12 11:50 编辑
  s) o; S9 ]2 T' C- X1 G3 n
( f+ K, `! X% D' {# |9 |7 t2021.01.12更新:+ Q4 e- h) ~  ?; g8 u6 p# F
MD5 HASH值【路径、文件名 都区分大小写】' m$ i5 G% @- e1 n) ^
1. DSL格式:.dsl 或者 .dsl.dz
! o! G5 L3 c3 G' ]) c1 c2. STARDICT格式:.ifo
# f/ u% A3 e  J! U; Y1 y' G$ I( }3. BABYLON格式:.bgl# E5 E6 @! v( S, u5 p. M, _6 r
4. ...其他' |: W+ @6 y1 b2 q* x; ~: I
1 z' S* [* b, H" x
2021.01.11更新:
2 |$ W4 b1 J/ `& B+ j' \2 aGoldenDict 安卓版的词典ID产生是转化带目录的文件名hash为MD5得到(STRING TO MD5):# u1 [; o+ D, D" r! D  t) Z
https://www.md5hashgenerator.com/
" C8 n! G( b8 @% dID事先可以确定,就可以有比较有趣的用途了!!
  P: v, S1 L/ n# X% ~* O3 C2 G5 E1 C. r9 t- j" X% O" h
例子①:a.dsl + a.dsl.files.zip  放置在 /goldendict/ 目录下; @5 N; [7 D% u! N3 ^0 f1 N
则:a.dsl ---> cf720ab20d00f14ea433254b99c5c1b8
) S! Q* S# k% i5 c  Z: x& _. B* G
! c( ]/ C& `( u. J& z5 Y2 d例子②:a.dsl + a.dsl.files.zip  放置在 /goldendict/zzz/ 目录下) y) T+ a7 k" b9 H
则:zzz/a.dsl ---> 5a4a28e8fab346d876be7e22185564877 t- q# p, N( `" u1 D# q0 H1 W
( S/ v; M5 k2 n& W( ]  b) K5 \( J0 Q) q

- q$ O7 D: I/ {1 A
$ R9 W9 J% `2 d  o6 ?8 e3 w+ X
为什么这么折腾?6 `5 a* S* c% L5 r" K
  1. 查词时不想输入特殊字符4 T+ C, ~. E3 U6 ]8 a4 N' R' V
  2. 名词、形容词等变形、动词变位等等直接根据hunspell返回原形单词
0 W2 g' U$ Z, U9 b) |  B2 A  3. 个人制作的切词版词典,DSL+ZIP格式最为简单
- y2 V& @1 b2 R) ]( \安卓版goldendict能满足我个人上述使用要求,并且安卓版goldendict支持的词典格式也是很多的,详见安卓版官网:5 ], e+ `+ t( |  @8 _

Lingoes .LD2 files

Babylon .BGL files

ABBYY Lingvo .LSD, .DSL, .LSA and .DAT files

StarDict files

Dictd files

Hunspell morphologies
- X6 h& m* l6 v+ i8 A4 _6 Y% q$ c# k7 n! F' A$ d4 h
/////////////////////////////////////////////////////////////////
& c0 N7 o7 R- G# R/ O2 W9 L1 Q/ P3 u1 o$ w$ n  v2 Q7 w
额,先附上一个很早的帖子:安卓版 Goldendict 支持 .mdx .mdd 的方法 (经验)
5 P9 Q; L0 {  q  \6 I9 `https://www.pdawiki.com/forum/thread-13437-1-1.html' w' P% l( |; w, F2 t/ G
% s* F( X8 b% D8 A
2020.05.07 更新: 把goldendict安卓版原生的添加audio的js函数加上这样做的目的是让APP里不用点击自己设定的按钮键,直接点击APP上的工具栏上的发音键就可以了!(第一个音频): N" R+ k& F2 P- Q( T; n
请参考gd本来的js函数 gdAddAudioLink( dictionaryId, url )
9 v- E  v6 |/ r8 P& u2 f5 z

<script language="JavaScript">gdAddAudioLink( '词典ID', "content://mobi.goldendict.android/audio/词典ID/音频名%2emp3" ); </script>
' Z! t: u% b' K<a href="content://mobi.goldendict.android/audio/词典ID/音频名%2emp3"><img width="20" height="20" src="content://mobi.goldendict.android/asset/playsound.bmp" border="0" align="absmiddle" alt="Play"></a>

var gdAudioLink;
) `) C4 G; m! O! z# t

var gdAudioLinks = {};. X. ]+ c; L# j; F8 v


8 J. h2 f) X2 G; f

function gdAddAudioLink( dictionaryId, url )
; ~7 Y3 {4 e! N8 W' C; y

{6 V8 k4 n' I) f& o9 C

  if ( !gdAudioLink )
3 ]+ k/ M5 `/ p+ F+ I! A& l* \& r

  {) q4 V! F% k% O# Z) r

    gdAudioLink = url;
. F9 Z$ r4 C1 X% ?) j" t* Q

//    GDHost.setHasAudio();
. K, }1 K% ]* u6 r8 x) k9 l# j7 J

    alert( 'setHasAudio://' );4 A% }3 d+ S7 ?+ Q

  }
* \8 W% {% u2 M- t


4 J% V- V$ d+ @$ ?

  // Only add the first sound in the dictionary
+ ]* |# ]9 B7 R: ?1 P" m) F8 m

  if ( !( dictionaryId in gdAudioLinks ) )
5 A8 V; `  e. e) d1 N& t( Q

    gdAudioLinks[ dictionaryId ] = url;' {+ X3 `! `4 L: e; Z

}

复制代码

2 K7 @/ }! c2 W

$ a% `+ G. `8 Y( R8 q& R8 W
$ c$ v  ^5 d! O: X7 v2020.05.06 更新:测试词典和工具、教程下载链接:站内附件:
/ Q4 I$ m, G6 V! Y- l8 h百度网盘:链接:https://pan.baidu.com/s/16YjbXM1YbdP-YR2-PG--0w  提取码:5lkl
5 L5 x/ ]1 @8 N8 I1 o* X& e$ M1 B  U* I- S1 d9 b


/ W2 r# N' C/ b- U5 M' v2 P( z# t4 ]: J% }# \9 e


6 ?" }6 @; m- ~" ~; }6 W( q9 _  g& l1 r
解压到文件夹,阅读:___ReadMe_请阅读我先.txt
3 U. e; Z. M. v0 t

你好!本文档为简略说明,请适当理解并自行DIY操作!; T! \  X, w' v3 S
---------------------
$ a2 u: L6 _3 U目标:让安卓版Goldendict曲线支持MDX/MDD(MP3/图片/JS/CSS)/ B5 [/ ]( f3 N/ H) y8 {) `
结果:
! d4 `! R! h" E5 }# e' F6 BMDX 转为 Stardict格式的.ifo .idx .dict或.dict.dz
7 R5 w- P. z, A5 R% LMDD 转为 空壳DSL+ZIP! S( w9 T6 g4 z9 H: d3 a# l
---------------------% F# m7 \8 k) a% G
(1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾! \& J! B% d0 _. {: q
├── _GetDict_id(Any-Any).bmp
/ p% M( w$ ]0 L├── _GetDict_id(Any-Any).dict
4 W6 {- G- U$ c& @; t├── _GetDict_id(Any-Any).idx. R, i+ I) I. o. [3 ]
└── _GetDict_id(Any-Any).ifo
( \  C+ [% m. ^6 ^0 }
9 Q# K0 H9 H# a8 |(2) 测试词典资源ZIP和空壳DSL1 l5 Q* R) S2 @- b% E2 n4 j9 c  N
├── 测试词典.bmp【词典图标】' O" ~! e! B' I% I: `
├── 测试词典.dsl【词典资源文件空壳DSL,仅设一个词条a,用于获取词典ID】! Y3 ^- _+ j2 T6 E- l
└── 测试词典.dsl.files.zip【词典资源文件打包为zip,包含CSS/MP3/PNG】
9 `. I7 N; }. w% l5 f8 d& \- G7 a┈┈┈┈┈┈┈┈├── YHCD_IT-ZH.css* |2 r" V$ h6 Q: a% D6 d2 I& n# b- L, C
┈┈┈┈┈┈┈┈├── p068052.mp3
( l! l3 j" l+ \: M┈┈┈┈┈┈┈┈└── 604_WW_001(1).png
& A" z- a( Y" ]1 |
2 a  }) [8 z; ^* p) H+ o6 W: g(3) 修改测试词典.txt里引用的资源文件的路径
) B/ G2 k$ \5 J! J' D测试词典.txt 【词典MDICT文本】" A; \7 Y, V# C. z8 j
┈┈┈└── 测试词典.mdx 【词典MDICT格式MDX; 下一步使用GetDict2_6.exe转为stardict格式】: U3 p' E9 g" t6 d, f% y7 [+ I
┈┈┈┈┈┈┈┈┈┈├── 测试词典.dict 【说明:可用 dictzip.exe 压缩】# o& S5 Y! M- p2 ^! v
┈┈┈┈┈┈┈┈┈┈├── 测试词典.idx
5 r, X  d: l# T& A8 [* i" }2 N┈┈┈┈┈┈┈┈┈┈└── 测试词典.ifo' j7 j7 @9 a9 [& r$ t  ?: V+ ~
6 b+ K: `% O) \3 C6 V
(4) dictzip.exe 【压缩 .dict 为 .dict.dz】
$ w' f( i; f* j3 m) f7 q: r(5) GetDict2_6.exe 【示例为用其转换MDX为StarDict文件】
  }% P% K7 M6 ^) n---------------------
& N: \5 f$ u: w, A1 f/ O: B1. 将(1)(2)的文件放入手机sdcard/GoldenDict目录下, 打开GoldenDict, 扫描词典进行索引化, 设置这2个词典的源语言例如为Aa(Afar) 目标语言为Any(Any), 并且(1)的词典顺序始终要在(2)之后
3 u4 ^, K4 Z% a2. 右上角设置语言对:Aa - Any,查询 a,得到(2)的词典ID- B# E) |; V, y$ [/ c" s
3. 修改测试词典.txt里相关的路径里的词典ID, 转为MDX, 再转为StarDict格式 (其中.dict可以使用dictzip.exe压缩)
( z% K( T( g' |  Z: y$ Q4. 将上一步得到的词典文件 (.dict或.dict.dz, .idx, .ifo) 复制到手机sdcard/GoldenDict目录下, 打开软件扫描词典索引化6 K4 z$ T0 I  I6 z  w/ M2 v& k: M& L, l
5. 查询provare, 测试:(1) CSS加载成功,版式显示正确; (2) 点击小喇叭, 单词发音正确; (3) 点击数字1/2,图片显示正确9 H& D, ]5 v# E2 C! w" Q! H$ X" A

- A( N" \6 j9 i' w/ j# J4 l. x注意点:# C2 A0 ^# h' l5 i1 d' \
CSS/图片/JS等路径:content://mobi.goldendict.android/resource/词典ID/文件名%2e后缀名. H* s" J# v- n3 W
MP3等Audio路径:<a type="audio" href="content://mobi.goldendict.android/audio/词典ID/文件名%2emp3">点击发音</a>


3 A# s  _7 |0 e" z, ]4 P2020.05.05 更新:成功实现!!!
3 P) D+ w% W9 S+ y2 F: r2 N( t) G安卓系统的GoldenDict加载DSL/ZIP格式时发音文件路径调取如下:3 t, Q) A6 J3 c( [: x
: e  G5 j! E# M1 w) \2 y
<span class="dsl_s_wav">
8 x2 [. p5 c' R- C( }# v3 J<a href="content://mobi.goldendict.android/audio/词典ID/音频名%2eMP3">
0 M( F% D! l( ]! i% z) c0 }<img width="20" height="20" src="content://mobi.goldendict.android/asset/playsound.bmp" border="0" align="absmiddle" alt="Play">) Y" }6 U# d# V9 a9 ?& t1 o
</a>) t6 F* K: h, i7 s# o! ^" G
</span>! u. f9 X* t3 B  ^, ~5 F! a* `
4 L4 e: w' ]7 K& o2 e
1. 新建一个空的外壳资源DSL/ZIP,复制到手机上,打开goldendict,通过JavaScript获取其词典ID
0 N2 I, {- u; b9 y2. 使用 GetDict2.6 转换MDX生成Stardict格式的词典(注意:MP3等资源文件的路径和.号)
8 c" M. d6 h0 }7 q0 [9 o% X
3 p+ \* ^0 |. G1 t9 O1 T. ~) Z1 N一句话总结:STARDICT格式词典获取另外一个DSL/ZIP格式词典的资源作为己用1 O2 |* |% F/ ?8 {7 N
方法有点曲线救国~~
0 G, M8 S$ e3 [6 A* j9 m7 I4 ~
% D7 p* J9 k8 P
" q: m9 ~+ U% ~! C2 k5 N. P" |% [, X4 Y5 G& c5 e
# V5 e- _1 `& I& F8 l: J! a

* s) D) n4 T2 G7 \; P8 q' w8 |! e4 a8 |6 U9 T6 q* G! P
2 `1 H* n4 K. i5 O

7 ^7 c( K+ S- \/ u$ F  

本帖子中包含更多资源

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