掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 4546|回复: 14

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

  [复制链接]

该用户从未签到

发表于 2020-5-5 21:40:41 | 显示全部楼层 |阅读模式
本帖最后由 chigre3 于 2021-1-12 11:50 编辑 $ a1 f, k7 Y9 U$ j( D
0 O! B/ u4 s: V% b  Q* U$ O
2021.01.12更新:
* o  F) p: {; t. C% ^$ p. fMD5 HASH值【路径、文件名 都区分大小写】
2 Y6 l; q# T, u8 {/ V1 h1. DSL格式:.dsl 或者 .dsl.dz, k4 J1 N; \# \2 K' e5 k
2. STARDICT格式:.ifo/ _  ~$ O( ~8 L8 N1 ?. H
3. BABYLON格式:.bgl
' a# j. X" i6 z* n5 J4. ...其他
4 y. G$ ?" B% w9 I1 n% W. z' u" G! i9 n. R% O; n
2021.01.11更新:
% `8 ?4 k9 a% M. J/ _  ]8 aGoldenDict 安卓版的词典ID产生是转化带目录的文件名hash为MD5得到(STRING TO MD5):
2 a/ H! O2 v; C9 @) j$ Whttps://www.md5hashgenerator.com/
  y7 B8 K  C  E- W4 k7 Y, vID事先可以确定,就可以有比较有趣的用途了!!
9 ^& t* S; z& u+ e4 q; q/ c3 I7 i2 F4 l3 }2 c/ Q
例子①:a.dsl + a.dsl.files.zip  放置在 /goldendict/ 目录下
% E5 P% R) _; G! d& Z则:a.dsl ---> cf720ab20d00f14ea433254b99c5c1b8
+ q, O6 K# g% y6 f( C' ]4 |' F- c; B! Z# j
例子②:a.dsl + a.dsl.files.zip  放置在 /goldendict/zzz/ 目录下
  G6 d% d* p& z  \则:zzz/a.dsl ---> 5a4a28e8fab346d876be7e2218556487
. I5 u7 G  u0 `! R4 V/ d0 |  V; m  `: @, d' _( b- p

% ]9 Y- L. G1 J6 [- U4 J- {: ~9 L  `1 H# J3 q" J  L2 t" I  Q
为什么这么折腾?
  R/ C% ]/ X% s6 B  1. 查词时不想输入特殊字符
' R! H* h3 C$ Z, {7 ~* m9 H0 l, H3 S  2. 名词、形容词等变形、动词变位等等直接根据hunspell返回原形单词
1 A9 \: m; S/ \  3. 个人制作的切词版词典,DSL+ZIP格式最为简单
1 O# O. K) \( U4 W安卓版goldendict能满足我个人上述使用要求,并且安卓版goldendict支持的词典格式也是很多的,详见安卓版官网:http://goldendict.mobi/$ X# q, s4 F. x6 S/ t. x8 }
  • Lingoes .LD2 files
  • Babylon .BGL files
  • ABBYY Lingvo .LSD, .DSL, .LSA and .DAT files
  • StarDict files
  • Dictd files
  • Hunspell morphologies+ B  C8 ]( b( k3 E0 n
9 j8 s/ s5 h+ k$ s! D
/////////////////////////////////////////////////////////////////1 j. s/ |# s$ U
7 o0 F: l) V. E3 e' o& D" A1 f3 D  O
额,先附上一个很早的帖子:安卓版 Goldendict 支持 .mdx .mdd 的方法 (经验)
# A0 ~4 ]7 Z1 h3 J9 [https://www.pdawiki.com/forum/thread-13437-1-1.html
4 A2 E/ X2 a, C$ A
/ W" E% V3 ?; ^2 H8 G0 C2020.05.07 更新: 把goldendict安卓版原生的添加audio的js函数加上这样做的目的是让APP里不用点击自己设定的按钮键,直接点击APP上的工具栏上的发音键就可以了!(第一个音频)
) Z! s0 _3 C8 e9 j2 M2 c+ d4 _+ E5 _请参考gd本来的js函数 gdAddAudioLink( dictionaryId, url )! {' |7 a! C- e: S& q; a7 i2 S" e
<script language="JavaScript">gdAddAudioLink( '词典ID', "content://mobi.goldendict.android/audio/词典ID/音频名%2emp3" ); </script>
& e7 z1 _+ H: 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;& p3 f# c8 [, H+ v
  2. var gdAudioLinks = {};
    ; p5 u( s9 K4 L) X/ L+ u/ b

  3. ; Y" S1 R4 }- Z. i  X
  4. function gdAddAudioLink( dictionaryId, url )
    * L9 M" ^" W* \+ J0 g
  5. {
    0 _) [( W! c2 h/ a
  6.   if ( !gdAudioLink )
    / A9 h( @) m! d; U" v" r& G2 ^# D
  7.   {# S8 ~3 O" o3 ?6 G* d* ?8 X# J
  8.     gdAudioLink = url;; J; m$ A4 `  g9 a- l  K0 {
  9. //    GDHost.setHasAudio();
    5 q2 Y' D- N$ e3 w; e
  10.     alert( 'setHasAudio://' );* O% B# z+ C4 o) g: `  i
  11.   }; ]5 O  [: l# l& M

  12. - U/ K8 |: P7 b" t$ V, s
  13.   // Only add the first sound in the dictionary
    % Q' Q' W2 t6 J& o. r8 m
  14.   if ( !( dictionaryId in gdAudioLinks ) )0 I0 ~+ T1 m9 X0 a8 X
  15.     gdAudioLinks[ dictionaryId ] = url;; x4 D) x8 i) U/ g
  16. }
复制代码

5 m  |' }" b: o
- b# K9 G0 m) S) M9 Q; e% q: V  _# U! Q7 T4 p) e/ ^' Z
2020.05.06 更新:测试词典和工具、教程下载链接:站内附件:
& [' y5 b$ P# J  A百度网盘:链接:https://pan.baidu.com/s/16YjbXM1YbdP-YR2-PG--0w  提取码:5lkl& t2 q- [" a- y. l

, W- Y0 w2 L2 ?* ^1 J* n7 x/ l9 o( d4 {6 K& I( M0 q

3 I0 U6 q& k; v5 O8 z1 o( `9 M8 q3 @, P: j: c# I: o" Y5 {  }

5 z. I+ v# U: [3 y解压到文件夹,阅读:___ReadMe_请阅读我先.txt
5 f" I1 u  i- g  X7 F
你好!本文档为简略说明,请适当理解并自行DIY操作!
. e, C7 n  d5 k+ v---------------------
, L% @: P. m3 X4 f' T; s, U目标:让安卓版Goldendict曲线支持MDX/MDD(MP3/图片/JS/CSS)8 W, j8 M" ~" z- G0 c
结果:
- U; u$ u& c. \% \" I- g0 QMDX 转为 Stardict格式的.ifo .idx .dict或.dict.dz
* Y4 k# N" y# C+ M( u! K8 q/ n0 aMDD 转为 空壳DSL+ZIP8 [* n4 O; @$ [0 y% y2 j# A: B
---------------------9 R8 L; p8 W. v- I( Q* `7 ?
(1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾
* l, `. L  j% W1 v├── _GetDict_id(Any-Any).bmp
* R- t2 R$ i4 P* n8 p├── _GetDict_id(Any-Any).dict7 y: E5 H+ Y( y: ^
├── _GetDict_id(Any-Any).idx4 S# p& T3 B1 U
└── _GetDict_id(Any-Any).ifo
4 g3 [5 I% |$ F* R- W
: {  ]% a# h. K& D5 ]# \, S+ B* m(2) 测试词典资源ZIP和空壳DSL9 e- k& u& p$ J9 d+ V8 n4 n
├── 测试词典.bmp【词典图标】1 F) I! E+ L$ h; U  \
├── 测试词典.dsl【词典资源文件空壳DSL,仅设一个词条a,用于获取词典ID】
1 t, ]8 S; l0 D3 \: i, {3 p% V2 q└── 测试词典.dsl.files.zip【词典资源文件打包为zip,包含CSS/MP3/PNG】
; ]1 ?5 M% r8 {9 B5 s# w: z┈┈┈┈┈┈┈┈├── YHCD_IT-ZH.css* t9 f1 }; m0 s: V: S) r
┈┈┈┈┈┈┈┈├── p068052.mp3
" y' R1 c# N5 I; ^: [7 ?9 j) n┈┈┈┈┈┈┈┈└── 604_WW_001(1).png
9 x% r, }% v# e# p, j1 C( s0 O
( \# {! ^! \0 j: c(3) 修改测试词典.txt里引用的资源文件的路径
" S: @" T) g$ u# o! U& V测试词典.txt 【词典MDICT文本】
+ E$ O+ K. m9 k% q┈┈┈└── 测试词典.mdx 【词典MDICT格式MDX; 下一步使用GetDict2_6.exe转为stardict格式】) ~) V2 W  e; m* z7 N' C1 {
┈┈┈┈┈┈┈┈┈┈├── 测试词典.dict 【说明:可用 dictzip.exe 压缩】1 G9 J3 u4 @" T, E9 D3 m: Z
┈┈┈┈┈┈┈┈┈┈├── 测试词典.idx1 m' J4 e. v, L) O9 _+ k
┈┈┈┈┈┈┈┈┈┈└── 测试词典.ifo
  ]( t, U# _# t1 B" V" v
* y  R& O4 d6 F# s! U(4) dictzip.exe 【压缩 .dict 为 .dict.dz】
2 }9 b, F, M) Q5 q: p(5) GetDict2_6.exe 【示例为用其转换MDX为StarDict文件】! t+ d% e' a, A/ c
---------------------
% u0 y4 M! A6 `! L9 D7 m& `) v1. 将(1)(2)的文件放入手机sdcard/GoldenDict目录下, 打开GoldenDict, 扫描词典进行索引化, 设置这2个词典的源语言例如为Aa(Afar) 目标语言为Any(Any), 并且(1)的词典顺序始终要在(2)之后
4 W6 W) X, X% d" B2. 右上角设置语言对:Aa - Any,查询 a,得到(2)的词典ID' }- l7 I! j, }) }
3. 修改测试词典.txt里相关的路径里的词典ID, 转为MDX, 再转为StarDict格式 (其中.dict可以使用dictzip.exe压缩)$ A4 s+ d+ K' C* U. M& M, [8 L
4. 将上一步得到的词典文件 (.dict或.dict.dz, .idx, .ifo) 复制到手机sdcard/GoldenDict目录下, 打开软件扫描词典索引化
% ?2 ]* g* Z6 [1 R: r5. 查询provare, 测试:(1) CSS加载成功,版式显示正确; (2) 点击小喇叭, 单词发音正确; (3) 点击数字1/2,图片显示正确
7 I; {5 c& H! D0 ?* D- s
( T' o4 N6 J2 I- J% M6 n; C注意点:
+ v# S8 i! k( _' ?9 ]CSS/图片/JS等路径:content://mobi.goldendict.android/resource/词典ID/文件名%2e后缀名
& r1 P6 T1 s; K3 jMP3等Audio路径:<a type="audio" href="content://mobi.goldendict.android/audio/词典ID/文件名%2emp3">点击发音</a>
) B8 A' A! y& m" X
2020.05.05 更新:成功实现!!!9 V* w: f( ]3 p% `& y% W
安卓系统的GoldenDict加载DSL/ZIP格式时发音文件路径调取如下:
& C+ d4 R$ n0 g. k3 }- @. m; x* F4 R3 k' ^
<span class="dsl_s_wav">
4 o2 Q8 O4 d- s3 X<a href="content://mobi.goldendict.android/audio/词典ID/音频名%2eMP3">; F- r  F9 h+ A! o* b) ^
<img width="20" height="20" src="content://mobi.goldendict.android/asset/playsound.bmp" border="0" align="absmiddle" alt="Play">
% y1 m* }2 _- R, _4 Q</a>
  u1 l6 b) W- H& s6 j</span>! {% Y, g! U2 M; {: P- A

; _. V/ F8 \: m. f9 T+ F- _" p4 x  D1. 新建一个空的外壳资源DSL/ZIP,复制到手机上,打开goldendict,通过JavaScript获取其词典ID
3 V/ u# z6 q+ T" S( b2. 使用 GetDict2.6 转换MDX生成Stardict格式的词典(注意:MP3等资源文件的路径和.号)- e. f8 I' F3 ~  M7 m- V
& x% S. {8 f) X! U$ a
一句话总结:STARDICT格式词典获取另外一个DSL/ZIP格式词典的资源作为己用: N$ y0 x6 S8 n0 i; V1 u" j  s
方法有点曲线救国~~
. \7 d  R# q- H) v
7 x9 B! m9 y1 q3 N
/ \  S& S) e. D
& `$ |/ O  _7 ]+ l4 L
+ d0 U" [' L" j* e3 T6 W$ ~
& C) X7 O& \8 X5 Q1 k. y# Z6 A" F  ]- h( w% _% j

( y% o: ?% J. m- Q
- F  N+ B7 B- u$ d# F( N

本帖子中包含更多资源

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

x

评分

1

查看全部评分

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

    [LV.8]以坛为家I

    发表于 2020-5-5 21:49:15 | 显示全部楼层
    本帖最后由 EarthWorm 于 2020-5-5 21:53 编辑
    0 A" @6 q5 h3 H  u8 C) q; g7 Q0 ~: i" L
    楼主厉害了! 我们前两天刚刚把电脑上 gd 对 StarDict 词库发音的支持搞清楚...' Z2 B0 t) w, z7 z

    0 d% o$ ~( Y! X& E9 \StarDict 词库如果是用的 xdxf 格式, gd 可以原生支持 (至少电脑版是支持的)
    : D) H4 u+ @# |* n% U. ]! C$ Z/ \如果 StarDict 词库用的是其它格式, 比如 html (mdx 绝大部分都是 html 的, 转过去自然也是), 那要 gd 能发音的话, 只能曲线救国...8 ~0 Z$ _# Y( I! _7 \
    请问楼主可以转载不?
    9 v+ n2 p- W) I- g: u; k4 ?
  • TA的每日心情
    开心
    2018-8-8 03:13
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2020-5-5 22:50:00 | 显示全部楼层
    本帖最后由 喬治兄 于 2020-5-5 22:53 编辑 5 s: O- d( F( X7 `  b  U, ^0 x6 T- n4 k
    8 J& j' \8 u( w! P
    @chigre3 兄:
    * D- i, I8 M6 u- l) A! L/ C# h@EarthWorm  兄:6 B. `! n7 F3 f! b9 Y9 ]! W
    有空蒞臨指導一下.....4 x7 l6 \  `6 A) T2 a: \" S& v
    [求助] 請賜教 : 非同步畫面的詞頭顯示....四樓% x2 c2 _1 u/ `
    謝謝啦. {) \' v0 E. G, {
  • 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:358 e  a' y5 a+ f. q' B
    可否举个实例?

    0 F, `4 p$ R$ G! b  s8 ~7 N已更新实例,请参考。

    点评

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

    该用户从未签到

     楼主| 发表于 2020-5-7 13:51:19 | 显示全部楼层
    chigre3 发表于 2020-5-6 13:00
    3 x0 d+ q4 o. h已更新实例,请参考。

    , Y5 [& V# E! f, n(1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾
    $ l' a% y8 v0 h/ R# D├── _GetDict_id(Any-Any).bmp3 c2 H- j+ s$ U9 I2 J  a, L
    ├── _GetDict_id(Any-Any).dict; y3 L' i# z4 X$ c* {
    ├── _GetDict_id(Any-Any).idx
    0 w3 f- ]* a; ~, l/ h- K# N└── _GetDict_id(Any-Any).ifo8 X$ N+ V" g! O1 S6 j" q* ~% g

    & s) e0 \4 L( Q& q# Z这个词典只有一个词条:a2 ]# k: @; c8 F' @2 ?( A
    所以空壳DSL/ZIP也只需要1个词条:a7 n% e' q8 N/ r6 L; H
    - z1 P! D, T$ X  K# h$ ^9 U) w" e0 ?
    这样两者可以同时显示,获取空壳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- A) k* R* j3 A9 D
    词典应当是可安装在不同电脑或手机上的,如果锁定一个ID,是否只能在特定的电脑或手机上使用? ...

    , m* [+ t+ G, c对的。这样的对应ID的路径的只能特定化制作~~
  • TA的每日心情
    开心
    2021-1-21 08:47
  • 签到天数: 265 天

    [LV.8]以坛为家I

    发表于 2020-5-7 21:08:00 | 显示全部楼层
    chigre3 发表于 2020-5-7 13:51+ ~% x7 L; n  L* o( I) M
    (1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾7 p& l$ y% r! I- a7 G
    ├── _GetDict_id(Any-Any).bmp
    8 o* r8 @4 k+ U1 F7 r% \% Q! d+ E ...

    1 l  j0 W5 F2 ?* r6 N$ |% n, h真要弄成功的话,看来得手把手地教。已经放弃。

    该用户从未签到

    发表于 2020-12-28 22:54:53 | 显示全部楼层
    所以核心问题就在于获取词典ID了。( D$ o6 g/ B. N4 i' B* V# a6 t
    相比起来PC版的Goldendict确实强大不少,可以使用<a href="gdau://search/focus001.wav"></a>这种代码调取资源文件。

    该用户从未签到

     楼主| 发表于 2021-1-11 15:12:46 | 显示全部楼层
    2021.01.11更新:6 A5 W8 z+ d: ?
    GoldenDict 安卓版的词典ID产生是转化带目录的文件名hash为MD5得到(STRING TO MD5):( m$ D4 A* R6 q" w* O% S
    https://www.md5hashgenerator.com/, u9 T; X5 C* [5 W8 y' {
    ID事先可以确定,就可以有比较有趣的用途了!!/ S% o/ o% c! i" k
    + P2 ^- N% ~! Z/ w6 j- _  l
    例子①:a.dsl + a.dsl.files.zip  放置在 /goldendict/ 目录下" L7 j* A- y- c; b% h  ^% B6 d/ t8 q
    则:a.dsl ---> cf720ab20d00f14ea433254b99c5c1b8
    & |# A8 x  f7 L1 D0 q" M5 D' @' {# n+ j
    例子②:a.dsl + a.dsl.files.zip  放置在 /goldendict/zzz/ 目录下3 P" L% l# M* Y& P/ p, i
    则:zzz/a.dsl ---> 5a4a28e8fab346d876be7e2218556487

    该用户从未签到

     楼主| 发表于 2021-1-12 16:37:52 | 显示全部楼层
    * h, Q" L! [9 W( J' v- g5 Z

    & d) \* p, \3 k! w, L7 e+ U, ?) \" j1 w$ t' {- x# d

    7 X% G# I+ o, o( Xstarmars早前分享的也可以使用到安卓版Goldendict上来: p: T9 }2 @+ v) V  ~7 q; ^' b
    , A# w! L4 v( S4 l: P
    图片词典致命伤一屏无法显示多页!用“瀑布流”解决了!  J$ Q1 ^" T- y3 \' I
    https://www.pdawiki.com/forum/fo ... hread&tid=41285, K! S" N* [$ Z( H
    (出处: 掌上百科 - PDAWIKI)
    , k, o& g; C7 K, q

    本帖子中包含更多资源

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

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

    [LV.3]偶尔看看II

    发表于 2021-2-25 00:03:30 | 显示全部楼层
    3 ]1 H1 Q2 y9 H; w, T
    谢谢楼主的爱心分享

    该用户从未签到

     楼主| 发表于 2021-10-28 17:01:28 | 显示全部楼层
    GoldenDict 词典 ID 生成算法
    % V) ?4 B/ @- E! a1 Nhttps://www.pdawiki.com/forum/fo ... hread&tid=21913; g4 w: B8 U4 r+ l# @/ H
    (出处: 掌上百科 - PDAWIKI)
    4 q7 _$ a, [2 M# Q- M; M
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2025-5-11 15:34 , Processed in 0.024389 second(s), 23 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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