掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 8561|回复: 14

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

  [复制链接]

该用户从未签到

发表于 2020-5-5 21:40:41 | 显示全部楼层 |阅读模式
本帖最后由 chigre3 于 2021-1-12 11:50 编辑
0 _  M( w8 N" {  o( U) N' \" T+ T
; U1 \, q  y/ I, P2021.01.12更新:
- d6 I1 A. [2 Q. t; v& _4 ^: ?MD5 HASH值【路径、文件名 都区分大小写】
5 i# h9 e9 N" o1. DSL格式:.dsl 或者 .dsl.dz
: U4 G7 T) q& z8 t' f2. STARDICT格式:.ifo, f4 U/ o0 ?5 E
3. BABYLON格式:.bgl! n! U3 x# t5 Y  b+ _% W- R7 }
4. ...其他! i- \% f' e% T6 `+ F

$ T' h7 f# q9 j; d; a& w  J* ?2021.01.11更新:
1 N! `8 W, M$ V, v+ GGoldenDict 安卓版的词典ID产生是转化带目录的文件名hash为MD5得到(STRING TO MD5):" z, {; M* R! k( `( o
https://www.md5hashgenerator.com/
" l, H. X) C1 q: TID事先可以确定,就可以有比较有趣的用途了!!
9 h, h2 ^, q: E& u% \4 z" }
# m; `6 {+ T, V! g& p' u例子①:a.dsl + a.dsl.files.zip  放置在 /goldendict/ 目录下
! n1 M; w9 Z( C则:a.dsl ---> cf720ab20d00f14ea433254b99c5c1b8
0 i3 F) b5 _6 A3 H+ W2 W9 q6 h% G. C0 V: h
例子②:a.dsl + a.dsl.files.zip  放置在 /goldendict/zzz/ 目录下
; E- M  K3 z% \; x( e则:zzz/a.dsl ---> 5a4a28e8fab346d876be7e2218556487
! n" J6 @% A. \5 Z# c5 r
: D( A) h9 _  u- @* J2 g. ?: O3 ?. G! y5 \  p/ t+ r3 j) v

" e( I: f+ w  K! ~( ^  A, t* t为什么这么折腾?, h1 R" _8 V* x
  1. 查词时不想输入特殊字符4 H+ j: _- @. H7 j. [
  2. 名词、形容词等变形、动词变位等等直接根据hunspell返回原形单词
' `* M8 T, ^9 }/ U# A' p& G( F  3. 个人制作的切词版词典,DSL+ZIP格式最为简单, `: }+ ^" B4 v# E
安卓版goldendict能满足我个人上述使用要求,并且安卓版goldendict支持的词典格式也是很多的,详见安卓版官网:http://goldendict.mobi/
* d- E  w4 n8 ]! W! ]9 R# o
  • Lingoes .LD2 files
  • Babylon .BGL files
  • ABBYY Lingvo .LSD, .DSL, .LSA and .DAT files
  • StarDict files
  • Dictd files
  • Hunspell morphologies
    % M5 L" {2 Q3 Z8 W( M
8 w4 c  n5 I& B  y: W, n
/////////////////////////////////////////////////////////////////3 z1 [. _3 ~8 G4 t) w! O& d
8 Z( V6 u0 w" X4 R8 i" c: l
额,先附上一个很早的帖子:安卓版 Goldendict 支持 .mdx .mdd 的方法 (经验)
$ `& _$ b% O" ?https://www.pdawiki.com/forum/thread-13437-1-1.html  ?! u4 l. h1 f' \
4 P' l, E# p4 W- Q- r
2020.05.07 更新: 把goldendict安卓版原生的添加audio的js函数加上这样做的目的是让APP里不用点击自己设定的按钮键,直接点击APP上的工具栏上的发音键就可以了!(第一个音频)
3 o6 c2 B8 S7 |( }3 c6 q$ W请参考gd本来的js函数 gdAddAudioLink( dictionaryId, url )
6 [) x+ K( |# r. R
<script language="JavaScript">gdAddAudioLink( '词典ID', "content://mobi.goldendict.android/audio/词典ID/音频名%2emp3" ); </script>) }3 q+ o% K+ ~" y
<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;
    # X6 t% m* {9 c, I" v
  2. var gdAudioLinks = {};
    ) ]1 g3 f4 Z; K  K% {6 e; E* s2 J. n
  3. / F& G( j; @# _6 K
  4. function gdAddAudioLink( dictionaryId, url )8 B. ?3 u$ b. U+ V. l
  5. {; o2 Z- e+ \! _, Q( P2 s5 y& |
  6.   if ( !gdAudioLink )
    9 J8 Y9 n$ m% D+ G' ^
  7.   {
    4 @; ~6 C" a5 t" d; z
  8.     gdAudioLink = url;+ h9 \/ U3 y" t! k- _
  9. //    GDHost.setHasAudio();
    $ @" S( p: u) x; c: F" l* [' h- o
  10.     alert( 'setHasAudio://' );) z" K$ ^0 L- {# q6 H
  11.   }
    ; x& l: ]# O4 @6 G. Z3 H  q
  12. ' Z- x& V! Y( R
  13.   // Only add the first sound in the dictionary7 O  c3 P. C- r0 D; x0 t
  14.   if ( !( dictionaryId in gdAudioLinks ) )" s& Y, R+ |, z8 G6 H
  15.     gdAudioLinks[ dictionaryId ] = url;
    & ]  s  {8 X! F" X
  16. }
复制代码

, f2 X2 u! G. o7 e5 E" r% u+ N1 a" e+ T% a, u! O* W$ f

5 M" m( t5 h4 q! ^0 ]  [, Y0 a# W2020.05.06 更新:测试词典和工具、教程下载链接:站内附件: 9 n5 W7 m4 s8 Z1 b
百度网盘:链接:https://pan.baidu.com/s/16YjbXM1YbdP-YR2-PG--0w  提取码:5lkl
/ e1 B* g$ t/ a; X1 J, h$ _6 V8 f3 B( Q

8 b5 t" `3 T! o6 J; ?$ D3 I$ l5 b1 W2 ^! V1 r* |
- M# H2 Z2 y# W3 o/ f

: J/ {1 j2 {; ]3 B9 e解压到文件夹,阅读:___ReadMe_请阅读我先.txt0 E, c0 E, o# B  j: j. b0 n
你好!本文档为简略说明,请适当理解并自行DIY操作!
2 j4 X9 V! K) Q% N---------------------$ d) \' w" I7 K$ c; P0 y
目标:让安卓版Goldendict曲线支持MDX/MDD(MP3/图片/JS/CSS)
- P, S* s/ f' y) |! q! H: ~) }结果:* ~6 }) x/ p! W( C
MDX 转为 Stardict格式的.ifo .idx .dict或.dict.dz
5 F! C7 T$ |8 NMDD 转为 空壳DSL+ZIP
% u5 r* a! _* N---------------------
5 f) H2 m' r2 V* T; a(1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾
+ P1 @4 j. @) ~$ ~├── _GetDict_id(Any-Any).bmp. ~8 B: [$ c3 ]$ p) r& x1 k) |
├── _GetDict_id(Any-Any).dict
+ D/ O5 I1 F# [0 i├── _GetDict_id(Any-Any).idx
! U* X# q1 j: q. b& {' _, Z* U└── _GetDict_id(Any-Any).ifo9 c$ A) H' J9 @* V4 v

% ?' m& F) U( Q5 Z( G+ `0 a) A! c(2) 测试词典资源ZIP和空壳DSL
, v: R* T# t% R( u7 m8 s9 k* e0 z├── 测试词典.bmp【词典图标】' h5 S3 ]' E- c2 ^7 y  S
├── 测试词典.dsl【词典资源文件空壳DSL,仅设一个词条a,用于获取词典ID】* S) g0 C9 c! [1 d
└── 测试词典.dsl.files.zip【词典资源文件打包为zip,包含CSS/MP3/PNG】
  R8 |9 D1 X% v: K, [' v3 i┈┈┈┈┈┈┈┈├── YHCD_IT-ZH.css9 Y" j+ c' U3 H, P
┈┈┈┈┈┈┈┈├── p068052.mp3
8 Q0 ]3 A: U4 y9 k! _, \┈┈┈┈┈┈┈┈└── 604_WW_001(1).png
' L0 Z/ K2 u. f' }% r: a( o' _/ q8 `8 H1 n4 \
(3) 修改测试词典.txt里引用的资源文件的路径
; H; ?: f2 O' R1 L测试词典.txt 【词典MDICT文本】9 \0 |# {/ u$ x7 b# b7 Z
┈┈┈└── 测试词典.mdx 【词典MDICT格式MDX; 下一步使用GetDict2_6.exe转为stardict格式】
( ?) g" U6 @  ~: V: e8 b# ~┈┈┈┈┈┈┈┈┈┈├── 测试词典.dict 【说明:可用 dictzip.exe 压缩】
; O3 ]0 R1 w- C5 ^┈┈┈┈┈┈┈┈┈┈├── 测试词典.idx8 Y1 c% h6 c% `
┈┈┈┈┈┈┈┈┈┈└── 测试词典.ifo' `' g: o3 e" {5 e9 r/ u7 t- N
/ p0 ]+ k* w4 [1 Q# [+ r1 d
(4) dictzip.exe 【压缩 .dict 为 .dict.dz】
: n9 Z. T' h0 {& [! u) J+ [(5) GetDict2_6.exe 【示例为用其转换MDX为StarDict文件】+ {: L# b1 n! [
---------------------
' ~& i4 d3 T( Z, F) C, _5 i* B/ F) D  A9 `1. 将(1)(2)的文件放入手机sdcard/GoldenDict目录下, 打开GoldenDict, 扫描词典进行索引化, 设置这2个词典的源语言例如为Aa(Afar) 目标语言为Any(Any), 并且(1)的词典顺序始终要在(2)之后* r$ X% l2 x1 X  }1 W
2. 右上角设置语言对:Aa - Any,查询 a,得到(2)的词典ID
* Z+ N: c! s/ {( y3. 修改测试词典.txt里相关的路径里的词典ID, 转为MDX, 再转为StarDict格式 (其中.dict可以使用dictzip.exe压缩)# D" O( u+ O* U- n) g# n
4. 将上一步得到的词典文件 (.dict或.dict.dz, .idx, .ifo) 复制到手机sdcard/GoldenDict目录下, 打开软件扫描词典索引化
) k6 n3 Z. t* o: c: Q5. 查询provare, 测试:(1) CSS加载成功,版式显示正确; (2) 点击小喇叭, 单词发音正确; (3) 点击数字1/2,图片显示正确( b, n6 i% t: L& U: O

' `; c7 X3 a, \8 l注意点:3 O# W7 M: M, r4 Q
CSS/图片/JS等路径:content://mobi.goldendict.android/resource/词典ID/文件名%2e后缀名6 D6 n9 V! f8 Z# G
MP3等Audio路径:<a type="audio" href="content://mobi.goldendict.android/audio/词典ID/文件名%2emp3">点击发音</a>
( c9 o8 j1 P/ D9 r( b. c+ L
2020.05.05 更新:成功实现!!!* b" G/ M) ]: m4 H/ Y7 m
安卓系统的GoldenDict加载DSL/ZIP格式时发音文件路径调取如下:
# T1 R, f& a7 U* `, P# d( [
6 ^: k; C" ]' u9 k$ o<span class="dsl_s_wav">! l% s) Z9 y. N
<a href="content://mobi.goldendict.android/audio/词典ID/音频名%2eMP3">$ L4 ^( h) s3 \
<img width="20" height="20" src="content://mobi.goldendict.android/asset/playsound.bmp" border="0" align="absmiddle" alt="Play">; ^7 m3 z1 `2 a
</a>' i( }) Y# g* Q2 S
</span>
) _: _' z, o) @
# m3 g. ?' [1 P$ a' d+ z1. 新建一个空的外壳资源DSL/ZIP,复制到手机上,打开goldendict,通过JavaScript获取其词典ID# k" q1 B" J+ w6 s2 P
2. 使用 GetDict2.6 转换MDX生成Stardict格式的词典(注意:MP3等资源文件的路径和.号)
# m: J# {5 j7 e3 H8 s  r5 y& r' r8 }/ S8 }+ p) }9 t
一句话总结:STARDICT格式词典获取另外一个DSL/ZIP格式词典的资源作为己用
; E4 I/ b( i! f- J方法有点曲线救国~~
" i: ]/ ]: W+ |4 P, _
* @5 [. t7 D$ E- m  ]4 E% e6 y' c% k! P9 l6 Z" H

+ @( K( `0 f! m$ h% ^( i' |& m5 o

! p5 I- ~( e* i! W1 E" a6 F+ I: q, A9 s4 b( V0 \

) V7 n8 r0 B/ O8 [! d/ H+ {2 U" \4 B. L& l

本帖子中包含更多资源

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

x

评分

1

查看全部评分

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

    [LV.8]以坛为家I

    发表于 2020-5-5 21:49:15 | 显示全部楼层
    本帖最后由 EarthWorm 于 2020-5-5 21:53 编辑
    1 J  o" }  x) V4 F
    . o4 y1 r4 p) \" _3 V1 Z楼主厉害了! 我们前两天刚刚把电脑上 gd 对 StarDict 词库发音的支持搞清楚.../ u: O* t; ^3 t6 E
    ) Z; O% ^7 i! |
    StarDict 词库如果是用的 xdxf 格式, gd 可以原生支持 (至少电脑版是支持的)' u4 e2 r( p5 T( Y; Y: _7 }
    如果 StarDict 词库用的是其它格式, 比如 html (mdx 绝大部分都是 html 的, 转过去自然也是), 那要 gd 能发音的话, 只能曲线救国...
    / {! y- l1 ~  p$ V2 }& k# |请问楼主可以转载不?
    # ~4 I) f1 v  t
  • TA的每日心情
    开心
    2018-8-8 03:13
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2020-5-5 22:50:00 | 显示全部楼层
    本帖最后由 喬治兄 于 2020-5-5 22:53 编辑 + j# K7 B  D% J' s

    2 T! e  }* T1 g# ]+ ?@chigre3 兄:
    . e5 P' L% a1 v@EarthWorm  兄:2 R) n# G9 {) ^& z+ t% j2 ?2 y6 ~
    有空蒞臨指導一下.....- s: {8 ~, K" g% l' F
    [求助] 請賜教 : 非同步畫面的詞頭顯示....四樓
    : c: o; L& H8 z謝謝啦+ f- y8 U8 r# ~, U  o
  • 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# m4 }5 b8 h7 {; Z
    可否举个实例?
    + h4 Q4 n3 C  w! V8 ~9 ^$ n
    已更新实例,请参考。

    点评

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

    该用户从未签到

     楼主| 发表于 2020-5-7 13:51:19 | 显示全部楼层
    chigre3 发表于 2020-5-6 13:006 k0 ], Y, }: F8 q, r- k
    已更新实例,请参考。
    + t; P2 t( T7 a) C8 c' v( ^
    (1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾
    4 r' m8 D9 n' h5 t1 Z├── _GetDict_id(Any-Any).bmp8 a5 N- W. ?" Q3 B) z
    ├── _GetDict_id(Any-Any).dict( l. K# T6 F' {! C2 ?7 s
    ├── _GetDict_id(Any-Any).idx# u( {% o: C. w! _  d6 z
    └── _GetDict_id(Any-Any).ifo
    0 W; V3 r3 G+ k5 c* L7 f6 z
    + l1 r1 k: ^5 `  V6 X% e5 A+ d+ g2 P这个词典只有一个词条:a
    0 S% m+ }9 B! g所以空壳DSL/ZIP也只需要1个词条:a
    # L1 l, [0 z1 q& O( E
    : [- _' I. o+ {/ I1 ]  z  i这样两者可以同时显示,获取空壳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- o' Y5 `+ D7 h2 n' s9 s: D
    词典应当是可安装在不同电脑或手机上的,如果锁定一个ID,是否只能在特定的电脑或手机上使用? ...

    " {6 s% J1 T! Y4 K5 N( C! G对的。这样的对应ID的路径的只能特定化制作~~
  • TA的每日心情
    开心
    2021-1-21 08:47
  • 签到天数: 265 天

    [LV.8]以坛为家I

    发表于 2020-5-7 21:08:00 | 显示全部楼层
    chigre3 发表于 2020-5-7 13:51
    / C! g: A0 A  o/ r7 s+ K(1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾( f- l- n- j1 f" E( S
    ├── _GetDict_id(Any-Any).bmp6 ?$ p2 W- ^; J8 v* C. ~" U/ @2 o1 [
    ...

    2 k* G8 \0 N0 s! s. _" X3 z- [真要弄成功的话,看来得手把手地教。已经放弃。

    该用户从未签到

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

    该用户从未签到

     楼主| 发表于 2021-1-11 15:12:46 | 显示全部楼层
    2021.01.11更新:; K7 [. j: I* p; ?6 p& K- E
    GoldenDict 安卓版的词典ID产生是转化带目录的文件名hash为MD5得到(STRING TO MD5):+ z" {0 |/ k) W" ]" c" r8 ?
    https://www.md5hashgenerator.com/5 W* q0 Y* ]$ Q, h
    ID事先可以确定,就可以有比较有趣的用途了!!1 ~' U# @8 Q, j' O- e
    : x" B$ H& g" z  C  K* q
    例子①:a.dsl + a.dsl.files.zip  放置在 /goldendict/ 目录下
    , B" [4 {. i# L& J则:a.dsl ---> cf720ab20d00f14ea433254b99c5c1b8
    8 e' }2 f* w$ e+ K0 _' @8 B: g6 V) b% R- {: e8 }5 Z
    例子②:a.dsl + a.dsl.files.zip  放置在 /goldendict/zzz/ 目录下" F% d: U/ Q8 i0 v* y/ p5 J
    则:zzz/a.dsl ---> 5a4a28e8fab346d876be7e2218556487

    该用户从未签到

     楼主| 发表于 2021-1-12 16:37:52 | 显示全部楼层
    8 F* U1 o. ^3 P8 x8 j
    ) n8 U, N  V4 g) {1 Z" w3 q
    & R9 Y. K6 ]& y) T) d4 j

    : u5 {5 s# h2 ^7 Pstarmars早前分享的也可以使用到安卓版Goldendict上来  L, j8 {, M+ t! B
    , ]2 x( i- A7 J* t& H0 P. W; `
    图片词典致命伤一屏无法显示多页!用“瀑布流”解决了!. m  a! s3 ?  N# ~+ [
    https://www.pdawiki.com/forum/fo ... hread&tid=412855 }- W# N4 j% G5 q
    (出处: 掌上百科 - PDAWIKI)
      _! O- H! a) V9 b# k5 \4 M

    本帖子中包含更多资源

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

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

    [LV.3]偶尔看看II

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

    + P8 a* N+ o8 h' p  T$ U' |谢谢楼主的爱心分享

    该用户从未签到

     楼主| 发表于 2021-10-28 17:01:28 | 显示全部楼层
    GoldenDict 词典 ID 生成算法
    # _& T) {9 C5 J* hhttps://www.pdawiki.com/forum/fo ... hread&tid=21913
    ! u: O' p# ?( N$ x+ |( H(出处: 掌上百科 - PDAWIKI)% A+ @3 Y: {" }, c# h* u9 V
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2026-11-8 03:19 , Processed in 0.022932 second(s), 23 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

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