掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 4549|回复: 14

[经验交流] [2021.01.11]安卓版Goldendict曲线全面支持MDX/MDD:发音/图片/JS/CSS

  [复制链接]

该用户从未签到

发表于 2020-5-5 21:40:41 | 显示全部楼层 |阅读模式
本帖最后由 chigre3 于 2021-1-12 11:50 编辑 - _: \3 ]4 W8 M- H. p& {- N
" j: m4 L% m6 P" i4 a8 U; C2 z
2021.01.12更新:6 _1 F# l/ q" _  p7 {; M+ o* _8 O
MD5 HASH值【路径、文件名 都区分大小写】" t& h$ D7 Z$ ^( B# {5 @
1. DSL格式:.dsl 或者 .dsl.dz
+ {" E& ^+ b6 t( F6 I/ t; n/ E2 t2. STARDICT格式:.ifo
9 Q$ R0 c. S+ O) K; C6 `3. BABYLON格式:.bgl) }  x9 y/ y1 Q; W0 R6 A
4. ...其他
+ K% p' I5 z, b/ m% O
  d$ f* d' V1 _1 E- g2021.01.11更新:/ v/ t7 R, f2 o: u1 E( n
GoldenDict 安卓版的词典ID产生是转化带目录的文件名hash为MD5得到(STRING TO MD5):( o4 I" V$ j& p1 b% q  h
https://www.md5hashgenerator.com/
/ B9 `6 I# _) Y1 o/ q1 \- uID事先可以确定,就可以有比较有趣的用途了!!8 P+ R9 _9 _# \; `
0 W& C4 U2 m5 J- ?
例子①:a.dsl + a.dsl.files.zip  放置在 /goldendict/ 目录下: \1 F: U+ e4 I$ r( i9 N
则:a.dsl ---> cf720ab20d00f14ea433254b99c5c1b89 t' L0 F" F  D

, i( E2 O+ V: Z2 H; Y例子②:a.dsl + a.dsl.files.zip  放置在 /goldendict/zzz/ 目录下
7 P8 d, N# Q1 J  T2 X; B则:zzz/a.dsl ---> 5a4a28e8fab346d876be7e22185564879 F+ D3 J" z) }0 N
, h, `) U, i, o; b2 @6 V* Z

3 K& B  w, |1 S5 ~9 L9 w
) M  o- g* p, V为什么这么折腾?; a! n" a/ b1 i8 K* _& w2 H! _
  1. 查词时不想输入特殊字符
9 {3 p) [& X' g: f' O7 [2 p2 ~  2. 名词、形容词等变形、动词变位等等直接根据hunspell返回原形单词
0 }& p7 a8 k' O; \$ @  3. 个人制作的切词版词典,DSL+ZIP格式最为简单. Q7 S7 U) S! V  A7 p6 Z
安卓版goldendict能满足我个人上述使用要求,并且安卓版goldendict支持的词典格式也是很多的,详见安卓版官网:http://goldendict.mobi/7 ~$ i+ n  Y9 \& S; e! k& B
  • Lingoes .LD2 files
  • Babylon .BGL files
  • ABBYY Lingvo .LSD, .DSL, .LSA and .DAT files
  • StarDict files
  • Dictd files
  • Hunspell morphologies; M. M3 C/ i2 Z  E3 F

' U+ u5 e; {' e6 e1 I; s! U/////////////////////////////////////////////////////////////////( v& C, P/ Q( C# `  y$ g$ u) S

& f" |6 p5 d% L2 U! N; b额,先附上一个很早的帖子:安卓版 Goldendict 支持 .mdx .mdd 的方法 (经验)0 {7 X0 j- }+ _
https://www.pdawiki.com/forum/thread-13437-1-1.html, r" l" n2 G% o, ]2 Y
+ W4 X/ _( o% s- ^9 Q
2020.05.07 更新: 把goldendict安卓版原生的添加audio的js函数加上这样做的目的是让APP里不用点击自己设定的按钮键,直接点击APP上的工具栏上的发音键就可以了!(第一个音频)
: @" E5 ?. G9 C( V' T: h请参考gd本来的js函数 gdAddAudioLink( dictionaryId, url )! A/ R2 D$ L" i& c, b& ]
<script language="JavaScript">gdAddAudioLink( '词典ID', "content://mobi.goldendict.android/audio/词典ID/音频名%2emp3" ); </script>
$ |# L  o9 U$ M<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>
  1. var gdAudioLink;: J) f6 @" d0 h3 h
  2. var gdAudioLinks = {};# H$ T1 Q* o* I  O5 b
  3. * V" O! A1 W3 D7 A" B" K
  4. function gdAddAudioLink( dictionaryId, url )
    2 P) I; Y7 z. g/ J
  5. {. f& H: U4 o% j
  6.   if ( !gdAudioLink )
    7 j7 k9 W8 @# q  B$ H
  7.   {
    , P9 i) ~) t# R1 W0 }" F
  8.     gdAudioLink = url;/ @" }5 d% Z$ l) T
  9. //    GDHost.setHasAudio();
    , y# O* z- f0 r# S. X7 M  `. k# a
  10.     alert( 'setHasAudio://' );1 m; i1 V2 T0 o
  11.   }
    - h- k1 W6 o* Q2 a/ n2 o
  12. " [/ Z( S# O. \' h) H
  13.   // Only add the first sound in the dictionary) M- v7 o# g& V& i- N& x
  14.   if ( !( dictionaryId in gdAudioLinks ) )
    ' m0 L* A* [/ G' h
  15.     gdAudioLinks[ dictionaryId ] = url;
    $ w3 ~# \- s0 ~
  16. }
复制代码

8 y$ [/ S% j: g5 J2 u8 e2 o/ Q5 a' h0 J3 c$ {, d2 Z( J1 r

# l3 U6 M, T' T: H8 b& E2020.05.06 更新:测试词典和工具、教程下载链接:站内附件: 4 @0 s/ ], ?$ B- ]# Y7 M: W
百度网盘:链接:https://pan.baidu.com/s/16YjbXM1YbdP-YR2-PG--0w  提取码:5lkl
' N3 c5 F1 P' `' |3 [- _& |" _6 Q4 W  w. X
  q. B6 G, b; T: c% @

  _5 L/ R. p- x5 F5 z8 }* s8 r7 s& R+ t6 H/ M1 f$ f

0 u) w+ c. h; l# V1 N解压到文件夹,阅读:___ReadMe_请阅读我先.txt8 K2 e% H, Z0 @' E7 D
你好!本文档为简略说明,请适当理解并自行DIY操作!, L* G1 \/ F' k6 O2 P& e( \
---------------------4 C' N% v1 u% i
目标:让安卓版Goldendict曲线支持MDX/MDD(MP3/图片/JS/CSS). H) t, ?- B. v& {
结果:
) b4 P: `& B3 O2 ?$ ^' F2 rMDX 转为 Stardict格式的.ifo .idx .dict或.dict.dz0 B! p, B5 d) l, E8 t
MDD 转为 空壳DSL+ZIP( [- N9 e' a0 @+ L7 l% n+ n
---------------------: z# W' K! v5 C7 g  T
(1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾! m- B! F' Q( N
├── _GetDict_id(Any-Any).bmp
* `- T7 d: x' O# B! B9 x' N├── _GetDict_id(Any-Any).dict
9 A& i) }- p: V, l├── _GetDict_id(Any-Any).idx
" h& N; c; _8 m7 ]& Q, p3 t└── _GetDict_id(Any-Any).ifo
1 `/ F% i( \$ l7 T. x" o
8 v/ L8 M# }4 R5 l6 [; A(2) 测试词典资源ZIP和空壳DSL
- r  L! R+ s& o├── 测试词典.bmp【词典图标】
; B3 F" B5 i3 k/ c( R├── 测试词典.dsl【词典资源文件空壳DSL,仅设一个词条a,用于获取词典ID】
& L9 O8 Y9 B) j$ a3 {/ W└── 测试词典.dsl.files.zip【词典资源文件打包为zip,包含CSS/MP3/PNG】
# Q0 v+ \4 ~$ O2 J% f┈┈┈┈┈┈┈┈├── YHCD_IT-ZH.css
: W( o; [+ x! c5 y. H  E┈┈┈┈┈┈┈┈├── p068052.mp3
0 j0 _' W- U1 K┈┈┈┈┈┈┈┈└── 604_WW_001(1).png
( A/ W! L# J& N, a
6 R2 f, N% T, J(3) 修改测试词典.txt里引用的资源文件的路径
' |) Q, Y; R' ~4 A  \: A% [# f测试词典.txt 【词典MDICT文本】
# p2 n9 Q0 a5 v6 t  I( Y9 D┈┈┈└── 测试词典.mdx 【词典MDICT格式MDX; 下一步使用GetDict2_6.exe转为stardict格式】
5 V+ _2 V6 x1 I/ |┈┈┈┈┈┈┈┈┈┈├── 测试词典.dict 【说明:可用 dictzip.exe 压缩】3 w" l$ `2 Q& x$ A- x3 i6 `
┈┈┈┈┈┈┈┈┈┈├── 测试词典.idx6 C! T( b9 x' K* Y" U; i, u! N5 V
┈┈┈┈┈┈┈┈┈┈└── 测试词典.ifo
/ _; `: L9 r2 l# d2 t* ^: v5 E! u0 Q) y0 d8 }
(4) dictzip.exe 【压缩 .dict 为 .dict.dz】( F7 H& B7 U/ p$ N, Q, g. O
(5) GetDict2_6.exe 【示例为用其转换MDX为StarDict文件】
, k0 B% ?5 W/ V8 Q3 Q) R---------------------
2 u/ N% K! |0 m8 R$ N1. 将(1)(2)的文件放入手机sdcard/GoldenDict目录下, 打开GoldenDict, 扫描词典进行索引化, 设置这2个词典的源语言例如为Aa(Afar) 目标语言为Any(Any), 并且(1)的词典顺序始终要在(2)之后* X7 o6 ^/ w+ X8 m3 s
2. 右上角设置语言对:Aa - Any,查询 a,得到(2)的词典ID
4 T7 s1 E9 t; j# l! z- n$ ^" ^6 p3. 修改测试词典.txt里相关的路径里的词典ID, 转为MDX, 再转为StarDict格式 (其中.dict可以使用dictzip.exe压缩); q/ m+ ]4 v: C
4. 将上一步得到的词典文件 (.dict或.dict.dz, .idx, .ifo) 复制到手机sdcard/GoldenDict目录下, 打开软件扫描词典索引化0 }& D& {; Z2 e* m$ q  [% s1 n$ J
5. 查询provare, 测试:(1) CSS加载成功,版式显示正确; (2) 点击小喇叭, 单词发音正确; (3) 点击数字1/2,图片显示正确) }+ w( ~9 C! E. I# F
* H3 i, b% n5 k2 V  D$ `+ U; [5 E
注意点:
9 c; d9 a1 G/ ^2 O% P0 ~CSS/图片/JS等路径:content://mobi.goldendict.android/resource/词典ID/文件名%2e后缀名$ W- i) A# J: S
MP3等Audio路径:<a type="audio" href="content://mobi.goldendict.android/audio/词典ID/文件名%2emp3">点击发音</a>

: Z' [3 n+ ~; _  {" T4 n6 _2020.05.05 更新:成功实现!!!
# l& b7 X" o+ v6 r/ H安卓系统的GoldenDict加载DSL/ZIP格式时发音文件路径调取如下:+ }) K( i& M' \( E; X

3 n# k7 l* E! s9 O& J4 v/ \" }<span class="dsl_s_wav">6 t0 w+ ]- y, g" [" Q
<a href="content://mobi.goldendict.android/audio/词典ID/音频名%2eMP3">
1 ]$ V; e* w% |! S; P3 z<img width="20" height="20" src="content://mobi.goldendict.android/asset/playsound.bmp" border="0" align="absmiddle" alt="Play">
1 }0 h2 t6 l! v  i8 z& G</a>
3 |1 {9 m) h6 G$ l0 u</span>, b  z/ |8 \" ?7 `

0 p/ q8 S7 S1 |1. 新建一个空的外壳资源DSL/ZIP,复制到手机上,打开goldendict,通过JavaScript获取其词典ID
! E' U6 ]) A8 w$ o6 n$ w2. 使用 GetDict2.6 转换MDX生成Stardict格式的词典(注意:MP3等资源文件的路径和.号)
& S4 b' K. \" X2 K# g) {3 P* m% t+ o0 r; b6 \9 z+ d
一句话总结:STARDICT格式词典获取另外一个DSL/ZIP格式词典的资源作为己用
2 {! `- J! s( m- J% ?$ _  a  u6 S" m方法有点曲线救国~~
1 l# h8 I$ g" s, K; f. z0 F( o5 \6 F& j
) o! ^) s8 b/ Z2 F" _! S0 B- \+ w
& f& t1 p; N/ s0 e8 b, A1 v
. I! h# k" p# Y

4 j2 Y2 f# _# R) G% J5 c" y+ Z6 w9 z& m3 X
' T( U7 |+ S/ A
5 p( R0 `  C0 U7 \: b. |0 G

本帖子中包含更多资源

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

x

评分

1

查看全部评分

  • TA的每日心情
    无聊
    2021-1-15 05:13
  • 签到天数: 271 天

    [LV.8]以坛为家I

    发表于 2020-5-5 21:49:15 | 显示全部楼层
    本帖最后由 EarthWorm 于 2020-5-5 21:53 编辑
    ; G" _$ O! D- s6 C# N
    $ _& n% r$ {* l' ^; g楼主厉害了! 我们前两天刚刚把电脑上 gd 对 StarDict 词库发音的支持搞清楚...
    % G3 @- g* t2 y
    - N3 b; R" x! p: b; ~6 i" NStarDict 词库如果是用的 xdxf 格式, gd 可以原生支持 (至少电脑版是支持的)
    # W2 _% ?- F* t; y) j" q' k; n如果 StarDict 词库用的是其它格式, 比如 html (mdx 绝大部分都是 html 的, 转过去自然也是), 那要 gd 能发音的话, 只能曲线救国...
    . z, h, x# C  I. T& {: [请问楼主可以转载不?
    & c, M3 m7 I* `- S! q
  • TA的每日心情
    开心
    2018-8-8 03:13
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2020-5-5 22:50:00 | 显示全部楼层
    本帖最后由 喬治兄 于 2020-5-5 22:53 编辑
    , Q7 p& I2 Y$ U/ t4 u; |
    9 Q& K; I6 }' u# U/ N' d@chigre3 兄:- ?% g' Z* |& r3 Y; R* `& r
    @EarthWorm  兄:# T# m5 Z$ z* L. {" P8 n
    有空蒞臨指導一下....., o. X/ |7 `% n) I/ \
    [求助] 請賜教 : 非同步畫面的詞頭顯示....四樓0 X/ m; I0 _- Q, U
    謝謝啦
    0 o4 K4 e* b; n9 _; y
  • TA的每日心情
    开心
    2021-1-21 08:47
  • 签到天数: 265 天

    [LV.8]以坛为家I

    发表于 2020-5-5 23:35:29 | 显示全部楼层
    可否举个实例?

    该用户从未签到

     楼主| 发表于 2020-5-6 13:00:34 | 显示全部楼层
    dalaowangma 发表于 2020-5-5 23:35
    " ]/ ]1 l# j1 m2 z4 T6 H( M% S9 ]可否举个实例?
    3 P, k; Y: Z7 {: [! w! f* ]/ h
    已更新实例,请参考。

    点评

    非常棒的方法。研究了半天仍然没有搞明白。词典地址如何获取?15年的旧贴可以并到一个文件夹内,似乎不必新建文件夹。  发表于 2020-5-7 13:09

    该用户从未签到

     楼主| 发表于 2020-5-7 13:51:19 | 显示全部楼层
    chigre3 发表于 2020-5-6 13:00
    5 P. Q; H: Q, n: K. ^已更新实例,请参考。
    ( b. n2 e: Y" y3 c" D% Y# \; n
    (1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾7 k0 L( n" @; h
    ├── _GetDict_id(Any-Any).bmp  L2 r4 q# g- b) t4 s& K, m$ G
    ├── _GetDict_id(Any-Any).dict9 M! g) w$ o7 c7 x+ q+ `
    ├── _GetDict_id(Any-Any).idx
    & L5 N, Z* T) k0 b└── _GetDict_id(Any-Any).ifo
    0 @7 x8 A: F3 l; v' A/ Q% d1 p. a! ~
    这个词典只有一个词条:a* M- w8 K* W5 m9 ^  ^
    所以空壳DSL/ZIP也只需要1个词条:a
    ; j5 J/ e! I" T7 c" ^4 y9 n& T# e* W8 m% v! @/ Y& ~/ M/ a* Q7 `
    这样两者可以同时显示,获取空壳DSL的词典ID
  • TA的每日心情
    开心
    2021-1-21 08:47
  • 签到天数: 265 天

    [LV.8]以坛为家I

    发表于 2020-5-7 20:51:38 | 显示全部楼层
    词典应当是可安装在不同电脑或手机上的,如果锁定一个ID,是否只能在特定的电脑或手机上使用?

    该用户从未签到

     楼主| 发表于 2020-5-7 21:03:11 | 显示全部楼层
    dalaowangma 发表于 2020-5-7 20:51! \; J" i3 B- `- m6 B
    词典应当是可安装在不同电脑或手机上的,如果锁定一个ID,是否只能在特定的电脑或手机上使用? ...
    - j8 ]1 F9 ?1 |1 k+ N
    对的。这样的对应ID的路径的只能特定化制作~~
  • TA的每日心情
    开心
    2021-1-21 08:47
  • 签到天数: 265 天

    [LV.8]以坛为家I

    发表于 2020-5-7 21:08:00 | 显示全部楼层
    chigre3 发表于 2020-5-7 13:513 T' R( {  V" X
    (1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾, ?  U4 c: ^' _
    ├── _GetDict_id(Any-Any).bmp
    ' |, u# H% p0 {4 H' I ...
    & S# K9 v5 C4 R9 b2 d, P! f
    真要弄成功的话,看来得手把手地教。已经放弃。

    该用户从未签到

    发表于 2020-12-28 22:54:53 | 显示全部楼层
    所以核心问题就在于获取词典ID了。
    - }" O/ L6 E( C4 d) @0 D& s* X相比起来PC版的Goldendict确实强大不少,可以使用<a href="gdau://search/focus001.wav"></a>这种代码调取资源文件。

    该用户从未签到

     楼主| 发表于 2021-1-11 15:12:46 | 显示全部楼层
    2021.01.11更新:4 a' H# K: K* x
    GoldenDict 安卓版的词典ID产生是转化带目录的文件名hash为MD5得到(STRING TO MD5):9 |+ \5 r+ @6 h3 m0 f, K
    https://www.md5hashgenerator.com/
    ' [0 c5 b: j- T0 MID事先可以确定,就可以有比较有趣的用途了!!
    - U3 l8 P/ V$ n0 J2 b  ^1 p3 I( }$ A3 H0 V  q
    例子①:a.dsl + a.dsl.files.zip  放置在 /goldendict/ 目录下0 n) Q' u$ R5 s* F" j, A1 X
    则:a.dsl ---> cf720ab20d00f14ea433254b99c5c1b8  X; L, a& |  s6 W  M% c& \

    5 l3 w# q; w2 w例子②:a.dsl + a.dsl.files.zip  放置在 /goldendict/zzz/ 目录下- S3 Q8 x1 D# |/ }
    则:zzz/a.dsl ---> 5a4a28e8fab346d876be7e2218556487

    该用户从未签到

     楼主| 发表于 2021-1-12 16:37:52 | 显示全部楼层

    9 g. l7 f! K) ~! T! c/ S! A; d; f" M$ ]$ Q" i+ `
    & i: L- T; d1 _9 R; Y5 L& G

    % i) A; `- x9 pstarmars早前分享的也可以使用到安卓版Goldendict上来, r+ a; R$ f, p4 T  ^/ }
    4 [+ `; h) d( C( J8 f' K
    图片词典致命伤一屏无法显示多页!用“瀑布流”解决了!+ |3 P2 L- [+ F) t( l# m
    https://www.pdawiki.com/forum/fo ... hread&tid=41285
    / R" f+ u8 x" i; D' y% a. G1 K. g+ K(出处: 掌上百科 - PDAWIKI)
    9 o3 E) |1 U$ E: q: N

    本帖子中包含更多资源

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

    x
  • TA的每日心情
    慵懒
    2021-3-14 00:55
  • 签到天数: 9 天

    [LV.3]偶尔看看II

    发表于 2021-2-25 00:03:30 | 显示全部楼层
    ( a9 i7 K2 i% g1 @  R/ L  R$ e
    谢谢楼主的爱心分享

    该用户从未签到

     楼主| 发表于 2021-10-28 17:01:28 | 显示全部楼层
    GoldenDict 词典 ID 生成算法
    2 ?1 E+ g0 U1 F  e' P) @https://www.pdawiki.com/forum/fo ... hread&tid=21913
    * J- J, y) P6 Y(出处: 掌上百科 - PDAWIKI)
    + H, _$ H+ G- L+ q9 m" S( Z
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    小黑屋|手机版|Archiver|PDAWIKI |网站地图

    GMT+8, 2025-5-12 14:37 , Processed in 0.025141 second(s), 23 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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