掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 2899|回复: 14

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

  [复制链接]

该用户从未签到

发表于 2020-5-5 21:40:41 | 显示全部楼层 |阅读模式
本帖最后由 chigre3 于 2021-1-12 11:50 编辑
$ v9 q6 D) ~. {* ?9 z: t* ^* p  {- t; L' e/ y% J
2021.01.12更新:' n% T. v5 F6 w# z$ h" M+ J
MD5 HASH值【路径、文件名 都区分大小写】- z4 e* |& l7 }8 j0 b+ J4 k
1. DSL格式:.dsl 或者 .dsl.dz
5 i, Q; c5 R; `# C) \2. STARDICT格式:.ifo
4 c& @( x3 I9 e  {8 r' X3. BABYLON格式:.bgl
* k; f6 C$ A" ]5 T- g4. ...其他+ i, K' P3 A- n! B3 r+ I
- i6 e$ B+ `; i# B% m* q
2021.01.11更新:! V4 |2 I" J6 z0 w7 t; F& ^
GoldenDict 安卓版的词典ID产生是转化带目录的文件名hash为MD5得到(STRING TO MD5):+ {* X8 A  w8 G: i
https://www.md5hashgenerator.com/
- W# ~  ~" h; Q6 _& xID事先可以确定,就可以有比较有趣的用途了!!) r; B) U$ R; U: ?) _

  S7 Y" ?* L9 y" s% ?, k+ ~# {例子①:a.dsl + a.dsl.files.zip  放置在 /goldendict/ 目录下
, j6 ]7 k5 X1 _) r' g" o# @则:a.dsl ---> cf720ab20d00f14ea433254b99c5c1b82 x& j2 h) [* p. W/ I' S

" Y) [" K0 W' F, O例子②:a.dsl + a.dsl.files.zip  放置在 /goldendict/zzz/ 目录下
: y" P# J" B( Y! y7 A- t. r! K; e则:zzz/a.dsl ---> 5a4a28e8fab346d876be7e2218556487
, y5 `* M- U$ B% l
, p; ~! `  {8 m! K1 Q' `# S9 |2 ~; a, @' m3 m
3 Q8 r6 x, S2 F6 D/ Y: B. L# ~. Y- h
为什么这么折腾?
" y- n; F- P  p& k. N: O7 C  1. 查词时不想输入特殊字符
) ]0 i2 g+ z# R9 x+ y# ^/ L3 q  2. 名词、形容词等变形、动词变位等等直接根据hunspell返回原形单词
, K5 H. f3 P% A5 `  3. 个人制作的切词版词典,DSL+ZIP格式最为简单
- ^4 w* \! u: M, Q# o安卓版goldendict能满足我个人上述使用要求,并且安卓版goldendict支持的词典格式也是很多的,详见安卓版官网:http://goldendict.mobi/# L& H% V6 L/ ~5 `+ a4 K+ ~" @4 K
  • Lingoes .LD2 files
  • Babylon .BGL files
  • ABBYY Lingvo .LSD, .DSL, .LSA and .DAT files
  • StarDict files
  • Dictd files
  • Hunspell morphologies/ _  Y7 q& U! A  t# f6 M  v
, U/ r* Z3 `2 x: c( p/ w9 t
/////////////////////////////////////////////////////////////////3 R& y( B& M$ G6 U" i& H% S
3 z5 Y( ~7 l) N9 U; ~
额,先附上一个很早的帖子:安卓版 Goldendict 支持 .mdx .mdd 的方法 (经验)
0 s! \6 z5 u3 k# v# @" e4 R* R& V7 ]https://www.pdawiki.com/forum/thread-13437-1-1.html! G* i% r6 n/ \0 P( e, q7 `2 p# M, A
# A3 C, ^2 r4 B* z* p' e; F
2020.05.07 更新: 把goldendict安卓版原生的添加audio的js函数加上这样做的目的是让APP里不用点击自己设定的按钮键,直接点击APP上的工具栏上的发音键就可以了!(第一个音频)/ ]9 K3 S1 @9 J
请参考gd本来的js函数 gdAddAudioLink( dictionaryId, url )
( Q& X$ k: ~$ R' u% H3 N
<script language="JavaScript">gdAddAudioLink( '词典ID', "content://mobi.goldendict.android/audio/词典ID/音频名%2emp3" ); </script>
1 e7 a$ N$ K6 u<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;5 I% C  V0 ~3 T& t( @* Y
  2. var gdAudioLinks = {};) \/ H4 H' A# t; {/ {3 L4 ?5 E
  3. + s* h: `+ `( o) j
  4. function gdAddAudioLink( dictionaryId, url )* k# k4 R) U9 {
  5. {% i6 d0 H# s& w4 r2 Z$ P
  6.   if ( !gdAudioLink )
    ; h: {. g! L% G4 b; D; L* z
  7.   {+ w$ I- g8 @1 V7 V$ B7 {
  8.     gdAudioLink = url;
    + Y# ?" ?/ f9 d
  9. //    GDHost.setHasAudio();
    % q: ]3 q4 Y0 V' C9 Y9 U/ Y! `
  10.     alert( 'setHasAudio://' );
    5 m  v: n% X, j* l
  11.   }# p6 _5 S9 `1 r! L, B* Y

  12. ; [+ I) h$ z0 X* a3 Y
  13.   // Only add the first sound in the dictionary* O% h6 ]" H% o. o* f7 y
  14.   if ( !( dictionaryId in gdAudioLinks ) )
      Y! [7 R! w9 V! V
  15.     gdAudioLinks[ dictionaryId ] = url;
    * o2 z+ t2 q2 Z5 `" D- }. c
  16. }
复制代码
) W7 F9 k# I9 t5 [; T
! ^1 Z+ Y5 C; ?2 Y0 W$ F& }5 H8 J
9 R, E5 C$ E' m+ X. {1 l$ ?
2020.05.06 更新:测试词典和工具、教程下载链接:站内附件: 4 N8 y, ?8 i3 |6 o9 B7 v+ [
百度网盘:链接:https://pan.baidu.com/s/16YjbXM1YbdP-YR2-PG--0w  提取码:5lkl7 Y$ P# T& b1 j! k( g
) ?$ _6 w+ ~" Y4 Z! Z5 B7 `

7 I3 h" F5 H& W1 w
7 @2 V$ _) s& p0 B  ^/ p) R, C4 x  S9 Z, N4 e( w1 }
8 W/ N* [+ @; R9 V1 [3 I
解压到文件夹,阅读:___ReadMe_请阅读我先.txt5 i8 f6 D. x6 h
你好!本文档为简略说明,请适当理解并自行DIY操作!
  D) \4 a* n' t1 }# i---------------------
% t; i5 E& \0 Y$ K4 T& R9 D目标:让安卓版Goldendict曲线支持MDX/MDD(MP3/图片/JS/CSS)9 E) [$ ?" w: i* V8 @; q  @- k9 ~" [
结果:
5 r& ?* U& P' F8 Z8 EMDX 转为 Stardict格式的.ifo .idx .dict或.dict.dz
8 c# l. A$ G, Q/ X' X  ~+ aMDD 转为 空壳DSL+ZIP7 P% I9 m; T8 }6 v0 @3 S, W
---------------------7 r* U6 \$ g8 Z! f7 S4 |
(1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾
  B* ?. o: e! s9 |( S( D├── _GetDict_id(Any-Any).bmp/ i! O7 ~1 c( K, m5 m
├── _GetDict_id(Any-Any).dict* @2 |# {+ s7 a! R5 m' L  M
├── _GetDict_id(Any-Any).idx
0 t; _* V- R0 ~# e# Z0 t% k└── _GetDict_id(Any-Any).ifo: W5 v! D1 }6 u8 D  j1 r0 i0 K

! o; \+ E; ^# {  `9 y  P(2) 测试词典资源ZIP和空壳DSL5 \: A5 [3 p! v- y% _5 c1 G4 D
├── 测试词典.bmp【词典图标】9 T+ `! R6 X5 J4 R2 w: L
├── 测试词典.dsl【词典资源文件空壳DSL,仅设一个词条a,用于获取词典ID】
, Q# K1 p  @0 C* o( R' ~/ U└── 测试词典.dsl.files.zip【词典资源文件打包为zip,包含CSS/MP3/PNG】
9 e. M4 s! ~+ W' n+ z6 E┈┈┈┈┈┈┈┈├── YHCD_IT-ZH.css
$ ^( B( G' p! a; q┈┈┈┈┈┈┈┈├── p068052.mp3
6 K9 ^$ o% m0 a┈┈┈┈┈┈┈┈└── 604_WW_001(1).png& G5 H+ g$ P/ m) Y$ F2 u. ?

: s- |3 c8 U' z5 c) j, N(3) 修改测试词典.txt里引用的资源文件的路径9 F2 u2 R3 a/ I8 v( Z' Q2 O8 U4 F8 b. }
测试词典.txt 【词典MDICT文本】6 |; x( y* e6 @  t' A! Z9 Z- @, T
┈┈┈└── 测试词典.mdx 【词典MDICT格式MDX; 下一步使用GetDict2_6.exe转为stardict格式】+ e8 O* x: I. |+ x$ J' m
┈┈┈┈┈┈┈┈┈┈├── 测试词典.dict 【说明:可用 dictzip.exe 压缩】$ m; m8 [& [! n4 N7 O9 C
┈┈┈┈┈┈┈┈┈┈├── 测试词典.idx
% _7 \2 [7 g* [6 g┈┈┈┈┈┈┈┈┈┈└── 测试词典.ifo
; w4 j7 N3 t5 E: j7 A- i: C) R
7 i/ h, O2 k  S$ h! R/ E+ B" z$ z; K(4) dictzip.exe 【压缩 .dict 为 .dict.dz】
+ M/ P# [2 b7 B% _  j2 k(5) GetDict2_6.exe 【示例为用其转换MDX为StarDict文件】6 P9 x6 D3 ?3 b: w
---------------------4 z' n  Z+ Y1 i: a. S
1. 将(1)(2)的文件放入手机sdcard/GoldenDict目录下, 打开GoldenDict, 扫描词典进行索引化, 设置这2个词典的源语言例如为Aa(Afar) 目标语言为Any(Any), 并且(1)的词典顺序始终要在(2)之后
8 u- B$ t' Q* }7 O7 W: W2 V7 W2. 右上角设置语言对:Aa - Any,查询 a,得到(2)的词典ID
% y# w0 f4 ?1 X2 y3. 修改测试词典.txt里相关的路径里的词典ID, 转为MDX, 再转为StarDict格式 (其中.dict可以使用dictzip.exe压缩)
# z+ u& ]% ~, M; p) s% ?4 F4. 将上一步得到的词典文件 (.dict或.dict.dz, .idx, .ifo) 复制到手机sdcard/GoldenDict目录下, 打开软件扫描词典索引化$ R) p, i0 w& t. I; R
5. 查询provare, 测试:(1) CSS加载成功,版式显示正确; (2) 点击小喇叭, 单词发音正确; (3) 点击数字1/2,图片显示正确
( m1 Y9 R. [, T( K1 ?+ e% y% m# _# f. C3 s5 |  Y3 r
注意点:
. S) A- O, O5 W4 X4 NCSS/图片/JS等路径:content://mobi.goldendict.android/resource/词典ID/文件名%2e后缀名* ]& [" v& N: v" Z9 ?/ v4 o* P3 T
MP3等Audio路径:<a type="audio" href="content://mobi.goldendict.android/audio/词典ID/文件名%2emp3">点击发音</a>
* X6 U5 ?% K/ K. y& h, e- E9 L
2020.05.05 更新:成功实现!!!: s8 o$ H" R  C- r; J
安卓系统的GoldenDict加载DSL/ZIP格式时发音文件路径调取如下:
# }" Y3 n" n1 t  \8 n/ y% z" N- K0 o9 K9 j
<span class="dsl_s_wav">+ V) f" K  b/ l- g6 ~1 h+ E. `7 K! d
<a href="content://mobi.goldendict.android/audio/词典ID/音频名%2eMP3">4 ?6 A* q6 X& R- [) H4 l+ g
<img width="20" height="20" src="content://mobi.goldendict.android/asset/playsound.bmp" border="0" align="absmiddle" alt="Play">  L5 l3 a+ B3 }% w6 {5 I  l5 o& {- A
</a>+ t' v3 l, ]2 C$ c# z5 P3 ~
</span>4 J3 y% H4 `/ w% |+ u' o/ S7 |
6 |4 q/ P$ E* H
1. 新建一个空的外壳资源DSL/ZIP,复制到手机上,打开goldendict,通过JavaScript获取其词典ID
5 \. Q# y  ~1 Y, ]" z2. 使用 GetDict2.6 转换MDX生成Stardict格式的词典(注意:MP3等资源文件的路径和.号)
- x6 }* \1 e- i6 h2 P" q
  O2 V- T, Y" _3 @7 @8 X一句话总结:STARDICT格式词典获取另外一个DSL/ZIP格式词典的资源作为己用" N0 h  u) c% G: w& s4 S
方法有点曲线救国~~
! [8 ~% c4 N$ i- w! [# Y' e' X6 V4 Y. Q+ p
$ Q0 C+ R: T6 v8 R- l
5 v/ c( n0 ^, u: m5 @+ d( {

2 `; p" Y+ ?# H: O- z4 A" u- p5 k5 T- U: D) l0 y0 w

9 c+ I6 S8 P; U! z' X7 ?
/ Y2 k& j$ c# ^- y; v, {: W# _7 t( ]- W

本帖子中包含更多资源

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

x

评分

1

查看全部评分

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

    [LV.8]以坛为家I

    发表于 2020-5-5 21:49:15 | 显示全部楼层
    本帖最后由 EarthWorm 于 2020-5-5 21:53 编辑
    $ O- a$ T5 G9 n' w4 ?* o: P* E$ {/ ]: m' X4 @
    楼主厉害了! 我们前两天刚刚把电脑上 gd 对 StarDict 词库发音的支持搞清楚...
    1 i0 ^! N, t( c" w- r" i
    , D0 O. k- J% i% }% ^0 g2 @StarDict 词库如果是用的 xdxf 格式, gd 可以原生支持 (至少电脑版是支持的)3 c; ?4 J, A# H4 b; v; L3 y5 g1 ^
    如果 StarDict 词库用的是其它格式, 比如 html (mdx 绝大部分都是 html 的, 转过去自然也是), 那要 gd 能发音的话, 只能曲线救国...
      `6 x. i9 L$ t+ X" ^- Q请问楼主可以转载不?) }5 Y( D: H$ o5 J
  • TA的每日心情
    开心
    2018-8-8 03:13
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2020-5-5 22:50:00 | 显示全部楼层
    本帖最后由 喬治兄 于 2020-5-5 22:53 编辑 . d6 y7 |+ p! a7 e2 q

    ) h3 h+ b1 E4 C, z" E8 b@chigre3 兄:
    8 p7 P, u: z7 d@EarthWorm  兄:
    6 y; l+ K: @( T3 T* f- u有空蒞臨指導一下.....; c4 q3 A1 H3 ?1 o1 Y
    [求助] 請賜教 : 非同步畫面的詞頭顯示....四樓
    2 V, P; }6 ^0 E6 b4 J' T" `1 {謝謝啦
    2 }; [, W+ {( i# ?& Y4 ^
  • 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
    ! f8 n5 ]* R; v: V可否举个实例?

    & N; n4 U/ [. V: k已更新实例,请参考。

    点评

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

    该用户从未签到

     楼主| 发表于 2020-5-7 13:51:19 | 显示全部楼层
    chigre3 发表于 2020-5-6 13:00
      Z  X, Q: |8 G已更新实例,请参考。
    3 V4 t0 @& ~1 \, D
    (1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾* C2 }3 P9 R2 s( d
    ├── _GetDict_id(Any-Any).bmp2 f) D. ^% x1 T( G5 x$ k& ?
    ├── _GetDict_id(Any-Any).dict
    3 r7 ^# r. o) Q( D├── _GetDict_id(Any-Any).idx
    / ~0 e2 B0 x8 t└── _GetDict_id(Any-Any).ifo
    ( \5 \, w' C( z- ^8 z! U* p
    2 b, M8 J8 L" n% A! [# ^这个词典只有一个词条:a
    : u( q$ N5 s' M1 T0 I* ?. X, I, _所以空壳DSL/ZIP也只需要1个词条:a
    1 Y, j0 F# X, y! D- i: ~5 J3 d+ V5 a# a$ c- C3 c
    这样两者可以同时显示,获取空壳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
    * _; H! y) L6 p/ b9 J词典应当是可安装在不同电脑或手机上的,如果锁定一个ID,是否只能在特定的电脑或手机上使用? ...

    ; w% c6 }0 P5 j1 m+ o/ X对的。这样的对应ID的路径的只能特定化制作~~
  • TA的每日心情
    开心
    2021-1-21 08:47
  • 签到天数: 265 天

    [LV.8]以坛为家I

    发表于 2020-5-7 21:08:00 | 显示全部楼层
    chigre3 发表于 2020-5-7 13:51% V( H  P0 T8 X7 {/ _# y+ t2 N6 J
    (1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾4 u0 r# \% y* C2 w1 r
    ├── _GetDict_id(Any-Any).bmp
    ) M1 b$ c% Z- S7 D9 X6 [; l ...

      z0 h  ]* J: _2 R" }真要弄成功的话,看来得手把手地教。已经放弃。

    该用户从未签到

    发表于 2020-12-28 22:54:53 | 显示全部楼层
    所以核心问题就在于获取词典ID了。
    " R, Y  C% p" g& j5 ^  u, U3 s相比起来PC版的Goldendict确实强大不少,可以使用<a href="gdau://search/focus001.wav"></a>这种代码调取资源文件。

    该用户从未签到

     楼主| 发表于 2021-1-11 15:12:46 | 显示全部楼层
    2021.01.11更新:
    , n2 n! G9 L- C! h7 n8 |GoldenDict 安卓版的词典ID产生是转化带目录的文件名hash为MD5得到(STRING TO MD5):
    0 A" Z  ?! o$ t% y1 H/ {https://www.md5hashgenerator.com/
    " l* V' ?* _2 k, u% Y3 k( RID事先可以确定,就可以有比较有趣的用途了!!# C! A! H$ l+ A1 \' N
    3 d$ I' K# s" j, W" g
    例子①:a.dsl + a.dsl.files.zip  放置在 /goldendict/ 目录下
    7 W0 W( U' }: J* r; M, g则:a.dsl ---> cf720ab20d00f14ea433254b99c5c1b8
    ! \5 u; p. I, ?  t- o0 Y8 ~7 }) U$ n
    例子②:a.dsl + a.dsl.files.zip  放置在 /goldendict/zzz/ 目录下9 D3 t% }  O" ?4 |
    则:zzz/a.dsl ---> 5a4a28e8fab346d876be7e2218556487

    该用户从未签到

     楼主| 发表于 2021-1-12 16:37:52 | 显示全部楼层
    + A, Z9 Z& u  M0 N' n" E0 K$ `0 G" O) P
    , O& U& ~3 v: e% L! f

    : n! O; o5 X4 I3 b
    2 v2 c4 K; A; J4 istarmars早前分享的也可以使用到安卓版Goldendict上来+ ~0 h$ Z' ]8 o9 J4 ~5 D& ?& p( }0 u
    ; C( G% t# N" y7 U" \4 p, T4 Z
    图片词典致命伤一屏无法显示多页!用“瀑布流”解决了!
    - R* _- z- ]3 I( X/ q' qhttps://www.pdawiki.com/forum/fo ... hread&tid=41285* ~; _1 C6 A- z! {% s
    (出处: 掌上百科 - PDAWIKI)
    $ _! I8 U9 i- ^# o3 M/ X8 t1 h

    本帖子中包含更多资源

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

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

    [LV.3]偶尔看看II

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

    3 _& {* P. Q, f谢谢楼主的爱心分享

    该用户从未签到

     楼主| 发表于 2021-10-28 17:01:28 | 显示全部楼层
    GoldenDict 词典 ID 生成算法
    ' E- O8 i' L0 t- N2 Y& K9 h. ehttps://www.pdawiki.com/forum/fo ... hread&tid=21913. F* x1 b: D/ N" k2 {8 ?3 Z
    (出处: 掌上百科 - PDAWIKI)) |$ k% g# B. H
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-27 02:13 , Processed in 0.056357 second(s), 9 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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