掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 2918|回复: 14

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

  [复制链接]

该用户从未签到

发表于 2020-5-5 21:40:41 | 显示全部楼层 |阅读模式
本帖最后由 chigre3 于 2021-1-12 11:50 编辑
8 A9 h6 E& `5 V8 O% n
0 ?) R2 F5 X; ]  i; ~! t2021.01.12更新:# [4 H6 y( Q& u! E: m, H
MD5 HASH值【路径、文件名 都区分大小写】" U, w6 m" r: E* A6 a
1. DSL格式:.dsl 或者 .dsl.dz
" Q4 e; h! P# M5 _  H( D3 V2. STARDICT格式:.ifo' v) [* `% j; K6 i, U; Q7 m7 {
3. BABYLON格式:.bgl
, \- M+ ~8 y  x) f. [2 x( C2 n& n4. ...其他
+ F& p: B( l7 ]. {' d) n; j! l
' m; w- \/ V  y: }2021.01.11更新:* R, U9 {$ X+ P2 C# \1 A6 s
GoldenDict 安卓版的词典ID产生是转化带目录的文件名hash为MD5得到(STRING TO MD5):; a6 b! u/ }+ Y' U
https://www.md5hashgenerator.com/7 l2 N% h! \0 E9 E& D5 p$ P
ID事先可以确定,就可以有比较有趣的用途了!!4 n) {+ y% Y; f9 z, ?3 y
3 ~% V" K4 T% _7 ^( f' W$ E4 Q
例子①:a.dsl + a.dsl.files.zip  放置在 /goldendict/ 目录下8 c- p) G7 V( S3 Z
则:a.dsl ---> cf720ab20d00f14ea433254b99c5c1b8
! [6 f8 N* R: m) X3 }% x
) V/ s" Y4 X* j# R% |/ z+ e' `6 v例子②:a.dsl + a.dsl.files.zip  放置在 /goldendict/zzz/ 目录下
7 I, t0 F) h; A. k6 U8 e则:zzz/a.dsl ---> 5a4a28e8fab346d876be7e2218556487
& l, V) v0 n' w' t& P/ `- b/ f: I& j, B9 d6 h: O- @
+ D$ v& }7 W1 D6 y4 N; o" w  V

& L6 O. u& H( e为什么这么折腾?
; ?* V+ I: _3 ~) E. S2 ]3 r4 Y  1. 查词时不想输入特殊字符
# j; X$ s4 O8 @- m% I: j  2. 名词、形容词等变形、动词变位等等直接根据hunspell返回原形单词9 T, W0 O6 s7 M! L
  3. 个人制作的切词版词典,DSL+ZIP格式最为简单
4 r/ h! R! q" ]7 @安卓版goldendict能满足我个人上述使用要求,并且安卓版goldendict支持的词典格式也是很多的,详见安卓版官网:http://goldendict.mobi/
/ L# r6 \, ?( B$ ^% K' i5 }) h8 x
  • Lingoes .LD2 files
  • Babylon .BGL files
  • ABBYY Lingvo .LSD, .DSL, .LSA and .DAT files
  • StarDict files
  • Dictd files
  • Hunspell morphologies
    0 x4 ^; v% M. O0 K

3 k! y' t/ ?. o# o9 d  }/////////////////////////////////////////////////////////////////; S. k/ Y$ h( u5 a0 k/ W: k' T
9 r6 P, X, ~* m8 S' h3 i
额,先附上一个很早的帖子:安卓版 Goldendict 支持 .mdx .mdd 的方法 (经验)% \' y4 z' Y6 f, s4 G
https://www.pdawiki.com/forum/thread-13437-1-1.html3 |3 l1 C3 x) @$ T& m; I

( T) N4 B- Z* H, L% e. k2020.05.07 更新: 把goldendict安卓版原生的添加audio的js函数加上这样做的目的是让APP里不用点击自己设定的按钮键,直接点击APP上的工具栏上的发音键就可以了!(第一个音频)
( M% w+ n8 y; v% U1 E0 C5 X请参考gd本来的js函数 gdAddAudioLink( dictionaryId, url )8 Y( t: v0 r6 B; z4 z; |
<script language="JavaScript">gdAddAudioLink( '词典ID', "content://mobi.goldendict.android/audio/词典ID/音频名%2emp3" ); </script>3 f9 o( x8 g+ b0 S  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;
    ) P/ H3 n8 J) b9 A
  2. var gdAudioLinks = {};
    % P# P7 J0 W8 d) }5 a; c
  3. 4 B2 M1 M9 O2 {9 i# [
  4. function gdAddAudioLink( dictionaryId, url )
    # }% r+ ~- ?8 @2 W. T
  5. {% B. d2 Z! z. u$ f6 h' a3 @
  6.   if ( !gdAudioLink )* G( D. C' r8 F" P5 I( p
  7.   {
    0 W  \" P# _3 B9 c4 e1 m& t
  8.     gdAudioLink = url;
    6 V4 F# W6 V, U* ~$ }0 G3 c
  9. //    GDHost.setHasAudio();% H7 P8 H; j7 G) b* H: J) a
  10.     alert( 'setHasAudio://' );8 Q. r0 Q+ |' a* `8 h  }6 Z% O; O
  11.   }
    1 l2 k. {; U  s* d. ]7 S1 m8 Y! [6 ~6 c3 Z

  12. " g" P4 g: v5 r& R4 @
  13.   // Only add the first sound in the dictionary! H8 j% L; ?. U& e2 J, F7 `- J
  14.   if ( !( dictionaryId in gdAudioLinks ) )
    ; l/ y7 a3 N0 j2 O
  15.     gdAudioLinks[ dictionaryId ] = url;
      M" ~/ U: \; d8 x+ s1 d, D
  16. }
复制代码
" }! _  K0 t% k# h

) v/ ~0 C4 M7 o" j9 y$ W4 H4 X4 O: l* J  I! v1 |" D
2020.05.06 更新:测试词典和工具、教程下载链接:站内附件:
9 ?& `1 M( l4 L百度网盘:链接:https://pan.baidu.com/s/16YjbXM1YbdP-YR2-PG--0w  提取码:5lkl( u: c& h2 H* q$ @% j
0 {# z9 p! [+ B$ i/ i' ]4 F

3 E# h  A% O5 p" \9 D
" ]; {( v% }1 D4 U
. Y! `1 ]$ b$ n, ^- \) a6 u! Y. |/ p; s  }* l( B# B2 C  \, X# r
解压到文件夹,阅读:___ReadMe_请阅读我先.txt6 V1 Y+ ^* l" }* V* r$ P# l5 Z4 y. ^
你好!本文档为简略说明,请适当理解并自行DIY操作!# ~* R# t5 p/ _8 A3 C
---------------------
/ m% ?8 I) @" l/ C  {* T6 K目标:让安卓版Goldendict曲线支持MDX/MDD(MP3/图片/JS/CSS)
7 Y0 M5 n& c. i  h5 Y结果:/ ]/ F& n1 q7 \
MDX 转为 Stardict格式的.ifo .idx .dict或.dict.dz
3 }; \2 |% z8 A% ]6 d; MMDD 转为 空壳DSL+ZIP
" G" i7 u: d, k: f---------------------
# ~. c3 l) p- G4 G' B(1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾& ^9 j( k" }/ F9 r% e( d: C$ ^1 n
├── _GetDict_id(Any-Any).bmp$ k0 o- T/ i  l
├── _GetDict_id(Any-Any).dict" T" [+ H, C: p, i
├── _GetDict_id(Any-Any).idx* }- |* F/ C5 r, d6 x0 Z5 ?9 u3 J: }# f
└── _GetDict_id(Any-Any).ifo# i/ D0 m/ w7 @9 W# h

$ x! `5 F& m. F* a(2) 测试词典资源ZIP和空壳DSL
+ S8 n( O3 \7 |├── 测试词典.bmp【词典图标】
* ]- z8 ]3 O9 z3 d9 v$ B& S├── 测试词典.dsl【词典资源文件空壳DSL,仅设一个词条a,用于获取词典ID】
0 i1 B" X4 i3 W: y' h" e7 `└── 测试词典.dsl.files.zip【词典资源文件打包为zip,包含CSS/MP3/PNG】% G# r9 v' ~0 ?0 K4 M2 X) G8 U+ |
┈┈┈┈┈┈┈┈├── YHCD_IT-ZH.css+ U; b& V7 o4 a
┈┈┈┈┈┈┈┈├── p068052.mp36 m# V1 i: D& A9 L  [
┈┈┈┈┈┈┈┈└── 604_WW_001(1).png- j5 H4 v9 r+ F  r1 F" g
; l5 P+ r9 N" E! U" U: B% i; K
(3) 修改测试词典.txt里引用的资源文件的路径
) b) E5 t* g$ x  n* E/ \& D测试词典.txt 【词典MDICT文本】
7 Q) r& j( Z  D- `┈┈┈└── 测试词典.mdx 【词典MDICT格式MDX; 下一步使用GetDict2_6.exe转为stardict格式】0 L2 I/ o" d" b" p1 p
┈┈┈┈┈┈┈┈┈┈├── 测试词典.dict 【说明:可用 dictzip.exe 压缩】. b2 Z8 I# F1 q3 p
┈┈┈┈┈┈┈┈┈┈├── 测试词典.idx9 F5 u3 d8 ~6 [1 [, `# N) n2 L
┈┈┈┈┈┈┈┈┈┈└── 测试词典.ifo( i* j- @2 Q* `) n2 B; R
2 q) T0 k  _! {: G; k/ @3 V
(4) dictzip.exe 【压缩 .dict 为 .dict.dz】
  ?8 j: M- i) b0 O0 v(5) GetDict2_6.exe 【示例为用其转换MDX为StarDict文件】
; i* v1 Y$ Y9 g4 \- k) P/ f4 ^---------------------* v2 F+ |/ j! S& G3 V2 |8 H
1. 将(1)(2)的文件放入手机sdcard/GoldenDict目录下, 打开GoldenDict, 扫描词典进行索引化, 设置这2个词典的源语言例如为Aa(Afar) 目标语言为Any(Any), 并且(1)的词典顺序始终要在(2)之后
1 O; Y3 b4 }6 L/ u. o6 w2. 右上角设置语言对:Aa - Any,查询 a,得到(2)的词典ID
+ w; A5 g( Q5 h3. 修改测试词典.txt里相关的路径里的词典ID, 转为MDX, 再转为StarDict格式 (其中.dict可以使用dictzip.exe压缩)2 n7 s, A$ y3 b' I- u
4. 将上一步得到的词典文件 (.dict或.dict.dz, .idx, .ifo) 复制到手机sdcard/GoldenDict目录下, 打开软件扫描词典索引化# d- K3 s: b8 G8 S4 O
5. 查询provare, 测试:(1) CSS加载成功,版式显示正确; (2) 点击小喇叭, 单词发音正确; (3) 点击数字1/2,图片显示正确
% G) g( r2 K' P) \, {* ^5 X9 {; R4 B9 c# `; n, b+ P- p( L) m
注意点:: Z  W5 ]7 v7 _5 H- W4 w7 W+ P
CSS/图片/JS等路径:content://mobi.goldendict.android/resource/词典ID/文件名%2e后缀名/ i/ P2 B+ X9 s& |, ~2 b
MP3等Audio路径:<a type="audio" href="content://mobi.goldendict.android/audio/词典ID/文件名%2emp3">点击发音</a>
) l, f* P: f, d' V2 _' o9 W8 }
2020.05.05 更新:成功实现!!!
' d6 J+ d/ p$ _+ s. U1 Y3 o) u安卓系统的GoldenDict加载DSL/ZIP格式时发音文件路径调取如下:
7 b0 \( K; r# ~' l2 ~. q4 Z# Y1 b  c" r2 g
<span class="dsl_s_wav">4 S% S. w  l! O, p! _# A' l
<a href="content://mobi.goldendict.android/audio/词典ID/音频名%2eMP3">
  \5 ~: A7 f4 A: I! V* Z+ B( I% p( Z<img width="20" height="20" src="content://mobi.goldendict.android/asset/playsound.bmp" border="0" align="absmiddle" alt="Play">9 ]( r3 Q( b# D3 @7 s
</a>5 e6 J0 ]6 q7 ~/ c* Y# `. V1 Y6 N( ^
</span># j0 s2 ?! m1 C' e
7 S7 R6 s+ j! n: X: ?3 R
1. 新建一个空的外壳资源DSL/ZIP,复制到手机上,打开goldendict,通过JavaScript获取其词典ID8 N3 c: {1 x3 f8 J
2. 使用 GetDict2.6 转换MDX生成Stardict格式的词典(注意:MP3等资源文件的路径和.号)
6 _' ?, J/ d, Y% n1 W, |* e
1 w: D- Z' E/ O  ~  m一句话总结:STARDICT格式词典获取另外一个DSL/ZIP格式词典的资源作为己用
/ g! N, ~5 H" A方法有点曲线救国~~6 i% Q% o6 o4 F/ C/ J/ h! w

' }. E8 O1 y5 Y6 l2 a, o
* D: z% l9 f2 i. H+ U" O2 u0 t+ D

  S' a2 {- Y8 W/ A8 u! u% F8 I4 l  V- A1 [* Q  E

/ s! Y6 B3 ^- v: O: {  q2 h4 W- U5 M/ p
6 F4 ^/ O4 m+ w1 @8 t' L: B

本帖子中包含更多资源

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

x

评分

1

查看全部评分

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

    [LV.8]以坛为家I

    发表于 2020-5-5 21:49:15 | 显示全部楼层
    本帖最后由 EarthWorm 于 2020-5-5 21:53 编辑 - c! m" N3 {% E. i6 W% E
    , t8 E2 q" j" m" x3 K% s/ h# z8 Z% [
    楼主厉害了! 我们前两天刚刚把电脑上 gd 对 StarDict 词库发音的支持搞清楚...
    ( b$ x& a3 ~. B$ S' t
    4 h- K9 ?0 a; N) NStarDict 词库如果是用的 xdxf 格式, gd 可以原生支持 (至少电脑版是支持的)
    7 X1 |4 }6 l8 @( P, ^+ ~  M- k$ I* d如果 StarDict 词库用的是其它格式, 比如 html (mdx 绝大部分都是 html 的, 转过去自然也是), 那要 gd 能发音的话, 只能曲线救国...
    3 [  w7 H6 }1 P' |请问楼主可以转载不?7 }4 Q  |, z7 N
  • TA的每日心情
    开心
    2018-8-8 03:13
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2020-5-5 22:50:00 | 显示全部楼层
    本帖最后由 喬治兄 于 2020-5-5 22:53 编辑
    & O) m# g/ W( A# z$ q, {5 `3 l5 d. I9 B( \6 [* [
    @chigre3 兄:
    " D% i. l+ o9 Y: L! z@EarthWorm  兄:
    $ m$ f0 V- D; B% P! c4 V4 Y# S有空蒞臨指導一下.....
    6 b, S( c: j! o2 U  C[求助] 請賜教 : 非同步畫面的詞頭顯示....四樓7 G' B/ N2 I5 s7 i
    謝謝啦
    3 U4 M( Y$ `; m) {  |9 ^& R
  • 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
    5 ]5 U6 J; I9 r可否举个实例?

    $ u" @- ?5 F; \% w& e: a8 \+ W已更新实例,请参考。

    点评

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

    该用户从未签到

     楼主| 发表于 2020-5-7 13:51:19 | 显示全部楼层
    chigre3 发表于 2020-5-6 13:005 W  I$ v9 v! _+ I3 ]
    已更新实例,请参考。
    ! H) S9 S  S6 T
    (1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾
    + b) j4 ~; a4 _: _+ z! p: G% P├── _GetDict_id(Any-Any).bmp( H, k( u9 G. l! `+ e
    ├── _GetDict_id(Any-Any).dict2 d" p7 Y" ^  A7 e! r4 w
    ├── _GetDict_id(Any-Any).idx4 F2 j/ o  R; N2 w
    └── _GetDict_id(Any-Any).ifo7 h) ?3 a9 e% ^" X
    $ Z1 v% S1 E: o+ l
    这个词典只有一个词条:a
    , g" @- \# \6 @0 F/ z所以空壳DSL/ZIP也只需要1个词条:a
    ! z1 @/ p: g& _/ l* J
    - q4 L; ^- U5 E2 g9 Q这样两者可以同时显示,获取空壳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
    9 i  B( ]3 C2 u8 n5 o  ]词典应当是可安装在不同电脑或手机上的,如果锁定一个ID,是否只能在特定的电脑或手机上使用? ...
    ' ?3 M3 }; s3 e! o8 [
    对的。这样的对应ID的路径的只能特定化制作~~
  • TA的每日心情
    开心
    2021-1-21 08:47
  • 签到天数: 265 天

    [LV.8]以坛为家I

    发表于 2020-5-7 21:08:00 | 显示全部楼层
    chigre3 发表于 2020-5-7 13:51# {) z, Q- L) d0 b
    (1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾1 \0 `8 _! e, a4 K/ O3 F% N
    ├── _GetDict_id(Any-Any).bmp1 Q0 U: F$ g& M, D2 `4 p# X) m
    ...
    1 n) {' G8 [" P" u8 z
    真要弄成功的话,看来得手把手地教。已经放弃。

    该用户从未签到

    发表于 2020-12-28 22:54:53 | 显示全部楼层
    所以核心问题就在于获取词典ID了。# K, a9 K- }4 J7 Y1 `$ v5 [
    相比起来PC版的Goldendict确实强大不少,可以使用<a href="gdau://search/focus001.wav"></a>这种代码调取资源文件。

    该用户从未签到

     楼主| 发表于 2021-1-11 15:12:46 | 显示全部楼层
    2021.01.11更新:7 f3 ]& H  b$ y- a' }
    GoldenDict 安卓版的词典ID产生是转化带目录的文件名hash为MD5得到(STRING TO MD5):; t: [' b0 d4 ]
    https://www.md5hashgenerator.com/0 l( ^9 x* K% \
    ID事先可以确定,就可以有比较有趣的用途了!!% ], [8 j! M$ t+ N9 S; W9 J+ ?

    # F! Y# b/ w* N8 p  Z% `* V例子①:a.dsl + a.dsl.files.zip  放置在 /goldendict/ 目录下
    5 S& E2 o+ g9 q4 e" M4 F则:a.dsl ---> cf720ab20d00f14ea433254b99c5c1b8
    % |1 b6 i; q7 l7 Q9 P4 {3 k5 p( j' J: ^
    例子②:a.dsl + a.dsl.files.zip  放置在 /goldendict/zzz/ 目录下
    8 j; N% ~9 _2 h6 T则:zzz/a.dsl ---> 5a4a28e8fab346d876be7e2218556487

    该用户从未签到

     楼主| 发表于 2021-1-12 16:37:52 | 显示全部楼层
    * Y! |" K4 @4 _

    2 i6 t, t3 ~! W1 L( l: m/ q$ f, Z: U) b0 j
    9 Q: G1 O5 z! k) z$ X
    starmars早前分享的也可以使用到安卓版Goldendict上来* ]7 G( y3 a; e

    & K: B; @7 E+ u+ N* M2 d图片词典致命伤一屏无法显示多页!用“瀑布流”解决了!
    ) q1 h$ F* }/ s( i8 q- D. Ohttps://www.pdawiki.com/forum/fo ... hread&tid=41285  M- ]9 O* a3 M& P: P" K
    (出处: 掌上百科 - PDAWIKI)2 Z+ Z# N  n  V3 ]8 I0 k

    本帖子中包含更多资源

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

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

    [LV.3]偶尔看看II

    发表于 2021-2-25 00:03:30 | 显示全部楼层

    5 z& J5 b7 q1 s0 D4 C" t+ p2 ?谢谢楼主的爱心分享

    该用户从未签到

     楼主| 发表于 2021-10-28 17:01:28 | 显示全部楼层
    GoldenDict 词典 ID 生成算法
    7 [. T; @, h4 }6 ?# d3 d! Ehttps://www.pdawiki.com/forum/fo ... hread&tid=219134 n% [- r3 K& i* M4 {; K3 w9 g
    (出处: 掌上百科 - PDAWIKI)
    ) ]: E/ O, l7 [- a) G
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-5-5 22:22 , Processed in 0.049470 second(s), 9 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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