掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 8090|回复: 14

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

  [复制链接]

该用户从未签到

发表于 2020-5-5 21:40:41 | 显示全部楼层 |阅读模式
本帖最后由 chigre3 于 2021-1-12 11:50 编辑 + X' H2 h( o% `* J6 L6 R+ s! t

0 }/ I# h2 y9 R2021.01.12更新:
0 e, j. O  G% f3 B) \3 M, nMD5 HASH值【路径、文件名 都区分大小写】: g, q$ ?* P0 I3 p
1. DSL格式:.dsl 或者 .dsl.dz
, \  v% D/ P. l4 O8 n2. STARDICT格式:.ifo, s- N' x; X8 ?. I
3. BABYLON格式:.bgl7 Y- N" k( D2 w  f! l5 R2 g9 P
4. ...其他
( I' I9 \1 N! V' d% {, E- k
2 s  A( P6 ~  A; }2021.01.11更新:: U  S  P& G/ {! Z
GoldenDict 安卓版的词典ID产生是转化带目录的文件名hash为MD5得到(STRING TO MD5):* ]+ q  c' z2 ~7 ^& t+ C1 u+ j! B
https://www.md5hashgenerator.com/
9 O/ o# `* l  FID事先可以确定,就可以有比较有趣的用途了!!9 ?. M/ J3 R, _3 b, F
% N3 O+ q9 L) e2 v& Z# u8 |
例子①:a.dsl + a.dsl.files.zip  放置在 /goldendict/ 目录下
0 d& I+ p! l2 G/ ?! ]( y则:a.dsl ---> cf720ab20d00f14ea433254b99c5c1b8
% y* {- A2 t3 X7 |
: I9 a* x: F! m- a; q9 S7 j9 }0 r, c5 q例子②:a.dsl + a.dsl.files.zip  放置在 /goldendict/zzz/ 目录下7 A+ N& {# f2 Y: n( i  J5 L8 I
则:zzz/a.dsl ---> 5a4a28e8fab346d876be7e2218556487
1 o- q3 I2 V9 Y" E; n0 C0 P0 O9 }/ m  w' T9 m  p
7 e* \8 ~* b4 r7 n8 p

% T$ T. I; P$ k  V2 S! i& `" J为什么这么折腾?. C+ s0 T4 q$ I3 \* ~' Q8 s
  1. 查词时不想输入特殊字符/ C: T5 }! t1 ?; q" L1 j6 M
  2. 名词、形容词等变形、动词变位等等直接根据hunspell返回原形单词
: J9 a8 H( x* b7 t' x; F' B' m  3. 个人制作的切词版词典,DSL+ZIP格式最为简单
' T- A, H; N. b3 Q2 [* e+ U  q安卓版goldendict能满足我个人上述使用要求,并且安卓版goldendict支持的词典格式也是很多的,详见安卓版官网:http://goldendict.mobi/
$ C1 d# s! K' w
  • Lingoes .LD2 files
  • Babylon .BGL files
  • ABBYY Lingvo .LSD, .DSL, .LSA and .DAT files
  • StarDict files
  • Dictd files
  • Hunspell morphologies; S- s, d5 m% D
# q1 r" q1 I7 g! Z& h
/////////////////////////////////////////////////////////////////; [0 i) O- o0 E0 M6 T
* `& @- {8 ~" Z
额,先附上一个很早的帖子:安卓版 Goldendict 支持 .mdx .mdd 的方法 (经验). H0 W  ^5 A; w
https://www.pdawiki.com/forum/thread-13437-1-1.html
; Z. Y/ ?: |! ^% t6 L" N/ _$ m
5 \3 i; D% d( h, |2020.05.07 更新: 把goldendict安卓版原生的添加audio的js函数加上这样做的目的是让APP里不用点击自己设定的按钮键,直接点击APP上的工具栏上的发音键就可以了!(第一个音频)' K2 q# M% t0 ^' E$ Q+ D+ T
请参考gd本来的js函数 gdAddAudioLink( dictionaryId, url )
1 {3 |# J2 u% q1 F
<script language="JavaScript">gdAddAudioLink( '词典ID', "content://mobi.goldendict.android/audio/词典ID/音频名%2emp3" ); </script>" r# L5 n  I" p9 T% N
<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;4 x! D# f7 V# E  k
  2. var gdAudioLinks = {};7 I/ g' v% n; B1 P% K2 z2 [5 H# O
  3. 2 }6 e( V2 x- [; O4 b2 ?
  4. function gdAddAudioLink( dictionaryId, url )) p+ l1 S; E/ f8 u0 N& T/ ^
  5. {
    9 I# S( w2 |0 N
  6.   if ( !gdAudioLink )
    2 a1 j5 n8 k7 U4 {
  7.   {
    , ?% T, B& R( D
  8.     gdAudioLink = url;, q' V9 V7 y- ^
  9. //    GDHost.setHasAudio();
    3 t- t3 H$ |5 K7 i. e; f& Q
  10.     alert( 'setHasAudio://' );
    4 P3 d1 z" X1 x* Y
  11.   }
    - @3 z+ D( g9 G$ @  Q5 I, o

  12. 0 [2 }, P# C) V1 J( s
  13.   // Only add the first sound in the dictionary- ~* a4 y3 u  U
  14.   if ( !( dictionaryId in gdAudioLinks ) )! t( i6 b5 U3 T
  15.     gdAudioLinks[ dictionaryId ] = url;
    & W3 ^: k; h- S- }% ~" g" Q& A
  16. }
复制代码

. h! g6 |# ~7 ?! k; t2 P/ p# G/ U7 m* w' t+ ^6 k

" _$ {5 S( Y) A" C; f- e2020.05.06 更新:测试词典和工具、教程下载链接:站内附件: 0 k% L$ _. B9 a6 w' e
百度网盘:链接:https://pan.baidu.com/s/16YjbXM1YbdP-YR2-PG--0w  提取码:5lkl$ x* P1 F  J' A/ x% W
5 w  z8 x7 F8 s
. E9 y2 E' {( I" L3 Y. X# e
/ p5 @+ N# d$ r0 X( A

4 r% K3 I2 n5 G2 ?' Y  h8 @
0 q5 G& c( D" |7 V! O解压到文件夹,阅读:___ReadMe_请阅读我先.txt
& M2 E9 m! D0 q( H
你好!本文档为简略说明,请适当理解并自行DIY操作!
2 c9 r3 s* B# K9 v$ t. P---------------------- e4 b& r2 J+ `# c7 z
目标:让安卓版Goldendict曲线支持MDX/MDD(MP3/图片/JS/CSS)
6 F. h) N, s* |, F3 a* j) x2 ~结果:7 H' {" u7 A7 O- F  p
MDX 转为 Stardict格式的.ifo .idx .dict或.dict.dz
4 B* z5 C$ d% ]8 s$ K; ]MDD 转为 空壳DSL+ZIP
! T, Z# x5 i) D' ~% _  G6 f---------------------% M& q. q8 O: ~: c  T' c0 t
(1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾
3 o! ], A5 Y8 |7 |├── _GetDict_id(Any-Any).bmp2 Y. |7 r3 V" [/ N5 ?0 M4 ~
├── _GetDict_id(Any-Any).dict
8 T0 [7 L; F. z! s├── _GetDict_id(Any-Any).idx
* x& t/ o+ Q' ]# I└── _GetDict_id(Any-Any).ifo
% Z+ T* k& k$ d0 o3 k, U' O" _9 j, u5 t
(2) 测试词典资源ZIP和空壳DSL) _' E" ?& [2 [. z1 j; C
├── 测试词典.bmp【词典图标】: T9 b7 p( \* ~& ~2 t; `
├── 测试词典.dsl【词典资源文件空壳DSL,仅设一个词条a,用于获取词典ID】& r# j8 i- V9 q; S
└── 测试词典.dsl.files.zip【词典资源文件打包为zip,包含CSS/MP3/PNG】
- h9 V) A( |3 y+ ~4 e+ b/ c┈┈┈┈┈┈┈┈├── YHCD_IT-ZH.css; q) R1 O2 s& i5 d
┈┈┈┈┈┈┈┈├── p068052.mp3* B/ ?: a) t7 l
┈┈┈┈┈┈┈┈└── 604_WW_001(1).png
3 k, ^( f9 S" ~/ h2 I9 D& m/ ^2 @& h$ W5 i+ _" s: E
(3) 修改测试词典.txt里引用的资源文件的路径
4 ]4 V$ k, b3 M* }测试词典.txt 【词典MDICT文本】
. {- g7 t+ \: h. Z# f# ~┈┈┈└── 测试词典.mdx 【词典MDICT格式MDX; 下一步使用GetDict2_6.exe转为stardict格式】
+ {) q5 q: z0 ]" g: {( ~: ]- X5 B┈┈┈┈┈┈┈┈┈┈├── 测试词典.dict 【说明:可用 dictzip.exe 压缩】7 [+ j+ i7 r+ s9 Q/ z, v$ O
┈┈┈┈┈┈┈┈┈┈├── 测试词典.idx- {( E+ K: ^5 k; |( U# F
┈┈┈┈┈┈┈┈┈┈└── 测试词典.ifo2 Z- H& k7 Z  ?8 a9 v

* z5 s' _( L& l# @; R7 Q(4) dictzip.exe 【压缩 .dict 为 .dict.dz】8 Q5 I" Z1 n# E2 L
(5) GetDict2_6.exe 【示例为用其转换MDX为StarDict文件】
. P8 z$ r+ X  Q( b---------------------1 U& z: @" H) Y2 M0 M) `. q
1. 将(1)(2)的文件放入手机sdcard/GoldenDict目录下, 打开GoldenDict, 扫描词典进行索引化, 设置这2个词典的源语言例如为Aa(Afar) 目标语言为Any(Any), 并且(1)的词典顺序始终要在(2)之后( H  ]- z  Z% l1 k
2. 右上角设置语言对:Aa - Any,查询 a,得到(2)的词典ID
5 o- L9 j, K' J+ W* X6 @3. 修改测试词典.txt里相关的路径里的词典ID, 转为MDX, 再转为StarDict格式 (其中.dict可以使用dictzip.exe压缩)% O5 C  Z+ T  i9 A* A
4. 将上一步得到的词典文件 (.dict或.dict.dz, .idx, .ifo) 复制到手机sdcard/GoldenDict目录下, 打开软件扫描词典索引化
( T. [& w- k# M3 o- }4 j5. 查询provare, 测试:(1) CSS加载成功,版式显示正确; (2) 点击小喇叭, 单词发音正确; (3) 点击数字1/2,图片显示正确- O) O( Y# ^# }
3 p/ ]" B( h8 a7 |* Y6 h: i5 ?6 h3 x
注意点:& t; g5 x& ?3 p! u" B0 K
CSS/图片/JS等路径:content://mobi.goldendict.android/resource/词典ID/文件名%2e后缀名
6 D( l  G6 B' _9 ~MP3等Audio路径:<a type="audio" href="content://mobi.goldendict.android/audio/词典ID/文件名%2emp3">点击发音</a>
- X- T( J7 M5 ]8 T9 m- E
2020.05.05 更新:成功实现!!!: c+ C$ f" |9 m# ?- }6 Z7 {8 f: g
安卓系统的GoldenDict加载DSL/ZIP格式时发音文件路径调取如下:( R; T" B8 i( y% N( `
0 |* n' F5 ]* V! j8 w, @
<span class="dsl_s_wav">
+ J0 a. i) ^5 p* f8 U( X<a href="content://mobi.goldendict.android/audio/词典ID/音频名%2eMP3"># S' }$ O9 U9 x( c! _2 Z
<img width="20" height="20" src="content://mobi.goldendict.android/asset/playsound.bmp" border="0" align="absmiddle" alt="Play">
# J: l3 H  D- q6 p; P9 s) C</a>
1 a) l- O3 D  n' y+ P</span>
9 t) a2 _/ }7 E: f8 B$ M4 E8 q; ^
7 f# f4 ?! V0 `/ W/ J" \+ E# F1. 新建一个空的外壳资源DSL/ZIP,复制到手机上,打开goldendict,通过JavaScript获取其词典ID4 s! x; A% C: i- \. Z
2. 使用 GetDict2.6 转换MDX生成Stardict格式的词典(注意:MP3等资源文件的路径和.号)
% T/ [1 |5 ^! F7 z
  J7 {; N6 ~, \/ |一句话总结:STARDICT格式词典获取另外一个DSL/ZIP格式词典的资源作为己用, ^  T+ m! y! N! t6 M; a, g$ y( K) l
方法有点曲线救国~~& u1 R2 p* o! C1 m2 p8 B# E

) _  H8 h( W- {/ W$ D9 q- v  ^+ t1 k0 S, A9 u) S2 c5 p

' V6 L1 M! ~. `: C/ }* ~9 u
+ T7 D+ D/ x7 z  I  f0 \" z  [- @# B! U" H( M2 Z7 [  l7 ^, t
8 ~; j% R9 ]' l6 N
! C2 v3 J& B! v* X; z
/ S4 ]% ^  r, H' M4 Z, d

本帖子中包含更多资源

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

x

评分

1

查看全部评分

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

    [LV.8]以坛为家I

    发表于 2020-5-5 21:49:15 | 显示全部楼层
    本帖最后由 EarthWorm 于 2020-5-5 21:53 编辑
    8 p! f+ D6 p) m4 {
    / o" E- V4 H/ F9 l; s  o楼主厉害了! 我们前两天刚刚把电脑上 gd 对 StarDict 词库发音的支持搞清楚...
    * w7 b( K- d  x4 n0 }' x; [3 k, J4 q$ ]5 J* I/ s: [6 C# N
    StarDict 词库如果是用的 xdxf 格式, gd 可以原生支持 (至少电脑版是支持的)
    6 a: O5 e1 A% I+ a' g  o3 o如果 StarDict 词库用的是其它格式, 比如 html (mdx 绝大部分都是 html 的, 转过去自然也是), 那要 gd 能发音的话, 只能曲线救国..., U6 z$ G0 {6 ?) G
    请问楼主可以转载不?
    / ^& i- L0 S! J, i
  • TA的每日心情
    开心
    2018-8-8 03:13
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2020-5-5 22:50:00 | 显示全部楼层
    本帖最后由 喬治兄 于 2020-5-5 22:53 编辑
    * q- ~+ b5 n. Y
    ( B+ l2 S9 R8 a) i( w: v. v; f5 l+ [@chigre3 兄:
    ) j; ^$ u: p# T( K* }@EarthWorm  兄:
    1 f* n1 m1 m9 B% @有空蒞臨指導一下.....
    8 d* w2 [) ?( F/ s+ K[求助] 請賜教 : 非同步畫面的詞頭顯示....四樓: O; R* s2 N# c. F' A
    謝謝啦$ T* q) q0 J8 M0 s
  • 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
    , X  K& w7 Q# o) X4 R可否举个实例?
    + w5 Q: h. Q& J. W2 `! D2 q8 Q, C
    已更新实例,请参考。

    点评

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

    该用户从未签到

     楼主| 发表于 2020-5-7 13:51:19 | 显示全部楼层
    chigre3 发表于 2020-5-6 13:00
    6 H! s" ]4 |. Y% A已更新实例,请参考。

    9 d2 o, j# D7 W$ o(1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾0 n' d, J2 y( m' }# g( q* H
    ├── _GetDict_id(Any-Any).bmp
      V% j1 }( h  n! ^8 o3 G├── _GetDict_id(Any-Any).dict! w5 Q$ E8 _+ u* G1 M
    ├── _GetDict_id(Any-Any).idx! w( n! C% g0 H1 l: j6 B
    └── _GetDict_id(Any-Any).ifo
    # g9 W! u  c* k+ X7 i, t  M/ z8 u0 h+ F% ~; s6 C
    这个词典只有一个词条:a; J+ v0 H6 z9 W  i. d
    所以空壳DSL/ZIP也只需要1个词条:a% w$ @$ W! C5 a

    8 v$ y7 q7 ^/ i5 v这样两者可以同时显示,获取空壳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+ _6 C" E+ J+ X/ [
    词典应当是可安装在不同电脑或手机上的,如果锁定一个ID,是否只能在特定的电脑或手机上使用? ...

    $ w) h2 n/ q( a% n% E) r/ w对的。这样的对应ID的路径的只能特定化制作~~
  • TA的每日心情
    开心
    2021-1-21 08:47
  • 签到天数: 265 天

    [LV.8]以坛为家I

    发表于 2020-5-7 21:08:00 | 显示全部楼层
    chigre3 发表于 2020-5-7 13:51
    0 t" u" Y1 A- i  l. p& r(1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾
    ! l% u) I  N' B8 \; `# p8 n2 e$ M├── _GetDict_id(Any-Any).bmp) R: {+ q7 W7 @3 d
    ...
    ' M% F" ?& p" f6 i0 ?
    真要弄成功的话,看来得手把手地教。已经放弃。

    该用户从未签到

    发表于 2020-12-28 22:54:53 | 显示全部楼层
    所以核心问题就在于获取词典ID了。8 z  w* o" H, U+ z' M! T- T) X) }
    相比起来PC版的Goldendict确实强大不少,可以使用<a href="gdau://search/focus001.wav"></a>这种代码调取资源文件。

    该用户从未签到

     楼主| 发表于 2021-1-11 15:12:46 | 显示全部楼层
    2021.01.11更新:
    , d+ R' l1 Q, `! ~+ LGoldenDict 安卓版的词典ID产生是转化带目录的文件名hash为MD5得到(STRING TO MD5):
    # _" k, i4 s5 C4 g( g1 Uhttps://www.md5hashgenerator.com/) ^( T/ W, N- U7 M* m: P* C
    ID事先可以确定,就可以有比较有趣的用途了!!
    2 a2 W* x( O2 [6 e% `5 V/ R5 a
    / c- u# s3 m2 P/ P& F/ O1 ^8 n$ s例子①:a.dsl + a.dsl.files.zip  放置在 /goldendict/ 目录下6 F  Z  x8 B# ?1 [' m
    则:a.dsl ---> cf720ab20d00f14ea433254b99c5c1b86 o$ G1 F* Q- w

      W5 ^! f$ _$ r* ]7 l1 Z例子②:a.dsl + a.dsl.files.zip  放置在 /goldendict/zzz/ 目录下! g& L* `& }% V; P
    则:zzz/a.dsl ---> 5a4a28e8fab346d876be7e2218556487

    该用户从未签到

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

    / F+ C+ o6 C# o8 k+ P/ f6 \$ T& T; z$ C# c6 w& S& B+ b: D1 f" s) M

    7 d- i! B& c+ y" X! y2 T! P
    3 O* ^0 \+ n) b& T7 D& \5 m7 t; mstarmars早前分享的也可以使用到安卓版Goldendict上来' u, {9 S9 z5 C- w4 M1 e

    5 H6 w6 ]: e% [图片词典致命伤一屏无法显示多页!用“瀑布流”解决了!8 R9 ?! |( A1 @
    https://www.pdawiki.com/forum/fo ... hread&tid=412859 @  a/ A0 F/ d2 t, g0 T2 `& X
    (出处: 掌上百科 - PDAWIKI)
    ( y+ C- n0 z/ U) r9 Z) y

    本帖子中包含更多资源

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

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

    [LV.3]偶尔看看II

    发表于 2021-2-25 00:03:30 | 显示全部楼层
    * ~; T& R/ x0 K' B) S- x: V
    谢谢楼主的爱心分享

    该用户从未签到

     楼主| 发表于 2021-10-28 17:01:28 | 显示全部楼层
    GoldenDict 词典 ID 生成算法) C' A8 k2 A# O/ g
    https://www.pdawiki.com/forum/fo ... hread&tid=219135 Y# {% ]- _0 P4 U: \
    (出处: 掌上百科 - PDAWIKI). P  o6 i( I& M
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2026-9-7 20:13 , Processed in 0.024195 second(s), 23 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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