掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 2906|回复: 14

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

  [复制链接]

该用户从未签到

发表于 2020-5-5 21:40:41 | 显示全部楼层 |阅读模式
本帖最后由 chigre3 于 2021-1-12 11:50 编辑 6 }: F8 t5 G% l, p$ Q! Q

% |. x5 E+ o7 O2021.01.12更新:
( I3 C  m0 }) K4 g+ [MD5 HASH值【路径、文件名 都区分大小写】+ `( J- L7 k, u3 n
1. DSL格式:.dsl 或者 .dsl.dz
' q; r/ V  U0 c' z6 j) `) y2. STARDICT格式:.ifo* p0 l7 m% Q$ F7 k
3. BABYLON格式:.bgl
, u# G& E% P' d, g' Z2 B" G4. ...其他: g& R2 I- E; B. Q

. l9 {1 z4 I1 \& j2021.01.11更新:+ q. [& g0 ]. X( i( r- ?
GoldenDict 安卓版的词典ID产生是转化带目录的文件名hash为MD5得到(STRING TO MD5):
, |" r* x+ v$ ~: T# b/ f$ bhttps://www.md5hashgenerator.com/; P& W' I: K; G% ]' r8 ~
ID事先可以确定,就可以有比较有趣的用途了!!' e* s; g; d- g5 R2 U4 p

6 _& K! a# d# S1 A# r" S例子①:a.dsl + a.dsl.files.zip  放置在 /goldendict/ 目录下9 K# Y" [9 }# M/ Q  d
则:a.dsl ---> cf720ab20d00f14ea433254b99c5c1b87 d- a/ ~* e" I  L
/ |+ T1 U/ V4 o
例子②:a.dsl + a.dsl.files.zip  放置在 /goldendict/zzz/ 目录下3 a- ~) V9 T. |2 t8 P, _4 @* ?4 l
则:zzz/a.dsl ---> 5a4a28e8fab346d876be7e2218556487
. f8 D+ a$ v. Y+ v+ D8 \
) e8 a; d: H) M! m. z! N) _& }2 X0 C5 }) g) Z0 u: t* c1 b) h9 j

7 ~  i! K; A) L3 u  J  F为什么这么折腾?  p- e' [1 C4 Y/ t4 P' z
  1. 查词时不想输入特殊字符6 {3 E# t- p# u- j& o0 l+ X
  2. 名词、形容词等变形、动词变位等等直接根据hunspell返回原形单词. J, _  e. J2 W4 Q( A( e+ P
  3. 个人制作的切词版词典,DSL+ZIP格式最为简单! i9 i0 P7 _2 z
安卓版goldendict能满足我个人上述使用要求,并且安卓版goldendict支持的词典格式也是很多的,详见安卓版官网:http://goldendict.mobi/
5 l" `/ J1 b- K' P6 U8 Z
  • Lingoes .LD2 files
  • Babylon .BGL files
  • ABBYY Lingvo .LSD, .DSL, .LSA and .DAT files
  • StarDict files
  • Dictd files
  • Hunspell morphologies; [. b' t/ D6 s

: E/ W+ @( `! {4 O/////////////////////////////////////////////////////////////////
* @' f! H1 x( S' J* ^  @0 Y  v7 @
额,先附上一个很早的帖子:安卓版 Goldendict 支持 .mdx .mdd 的方法 (经验)
- O7 ?  r* p7 I) ^' U9 \( Ahttps://www.pdawiki.com/forum/thread-13437-1-1.html
2 B& ?- M9 H0 [5 n7 z
. N% v( ]% g  @7 y( }2020.05.07 更新: 把goldendict安卓版原生的添加audio的js函数加上这样做的目的是让APP里不用点击自己设定的按钮键,直接点击APP上的工具栏上的发音键就可以了!(第一个音频)
3 i1 ]' g! @9 G$ k* @& S请参考gd本来的js函数 gdAddAudioLink( dictionaryId, url )
- ]+ d! ]- C' @! n0 e* b& x( o/ R. I
<script language="JavaScript">gdAddAudioLink( '词典ID', "content://mobi.goldendict.android/audio/词典ID/音频名%2emp3" ); </script>0 j0 q1 R8 `+ T
<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 z7 t0 M0 _" a2 b" H+ K% }
  2. var gdAudioLinks = {};
    9 \) ^4 ?6 U' x- J, L. F
  3. 8 v; r/ d" C* e& f
  4. function gdAddAudioLink( dictionaryId, url )
    ' q4 Y& L, z, v; T4 T; C; a
  5. {
    1 {: w: S: m& E
  6.   if ( !gdAudioLink )
    9 f; z* _- [# R! `8 a
  7.   {
    ; C' V% |0 f( U4 Z* p" ~5 q. l+ M
  8.     gdAudioLink = url;
    / W7 `  G" t1 X+ `
  9. //    GDHost.setHasAudio();& }* w6 i# q  b4 z- Q2 z$ L
  10.     alert( 'setHasAudio://' );
      ]- D( g5 n. {8 |
  11.   }- N, H% p% [0 N+ i4 [) M0 X
  12. 0 V+ V9 @. e& ~/ {- z, e. ]% K
  13.   // Only add the first sound in the dictionary9 o. q8 J, y0 J5 @$ c; C/ Q: L+ a
  14.   if ( !( dictionaryId in gdAudioLinks ) )
    8 ^" }9 @+ t4 e, ]6 j" ^# p
  15.     gdAudioLinks[ dictionaryId ] = url;( w& {2 n7 o6 e" H$ x( R/ o
  16. }
复制代码
/ Y2 ^' U% d: b) ]

3 X2 I+ \! m( m) O1 X" B: t* O* [3 [8 v8 E9 E5 I
2020.05.06 更新:测试词典和工具、教程下载链接:站内附件: , i3 O: [' Y7 l5 X* c+ T' P) W
百度网盘:链接:https://pan.baidu.com/s/16YjbXM1YbdP-YR2-PG--0w  提取码:5lkl+ g, }% A, a4 U4 Y3 [; P" I
* _# S4 h. @, V; u4 K2 j4 l
! P; P) ^2 D! G4 j, C
" e& u! W2 i3 n0 t! ^9 V
- V( o/ W" \- a4 |4 S6 N+ }, R
5 Z* X7 j5 ^; {+ ~& `7 g) }
解压到文件夹,阅读:___ReadMe_请阅读我先.txt
/ ]4 C3 v7 d0 f8 K3 }. \
你好!本文档为简略说明,请适当理解并自行DIY操作!# N4 c6 ?' {0 S1 p0 Z
---------------------
9 B* |9 s' }/ I目标:让安卓版Goldendict曲线支持MDX/MDD(MP3/图片/JS/CSS)& V' S( G8 L; l" m/ w0 z- t  M7 m
结果:6 B$ i' B3 p3 n" w2 P4 G
MDX 转为 Stardict格式的.ifo .idx .dict或.dict.dz
9 u. ^- x% n) d4 D) d0 |* iMDD 转为 空壳DSL+ZIP- g0 `7 z- A, V4 p, Q" m
---------------------
1 Q8 D  ~8 ]  V( K(1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾; C  O1 h) }* ~8 U5 ?
├── _GetDict_id(Any-Any).bmp
; b& b  q( M! a├── _GetDict_id(Any-Any).dict
0 n4 K+ q( ]4 z# M& _' @├── _GetDict_id(Any-Any).idx
7 F* {" C8 r: p0 |- K' o  g└── _GetDict_id(Any-Any).ifo
& I' `% g0 @3 T( R) t6 c  e# D: o" O, Q2 {- x
(2) 测试词典资源ZIP和空壳DSL
* H. {  f8 |+ f% V  S5 i. H8 S├── 测试词典.bmp【词典图标】
2 R/ @1 b# Y4 }9 B) g├── 测试词典.dsl【词典资源文件空壳DSL,仅设一个词条a,用于获取词典ID】
& ^9 ]0 ^2 L# |! D└── 测试词典.dsl.files.zip【词典资源文件打包为zip,包含CSS/MP3/PNG】
3 M; s) H: q" W$ K5 ^, s2 U3 D. }( O┈┈┈┈┈┈┈┈├── YHCD_IT-ZH.css; V. l/ l* @) z+ Y8 X$ M3 {
┈┈┈┈┈┈┈┈├── p068052.mp3. e' y" P" U" K
┈┈┈┈┈┈┈┈└── 604_WW_001(1).png3 F/ Y9 f/ w8 h3 x

5 R4 s, k* [( B) o) E& K& @(3) 修改测试词典.txt里引用的资源文件的路径) W1 R; @! }0 ^: R- {4 Q
测试词典.txt 【词典MDICT文本】
( k, o: _4 }. H' F. n$ G; \! {┈┈┈└── 测试词典.mdx 【词典MDICT格式MDX; 下一步使用GetDict2_6.exe转为stardict格式】) u. {' v8 ^* C1 }" P8 _
┈┈┈┈┈┈┈┈┈┈├── 测试词典.dict 【说明:可用 dictzip.exe 压缩】
' m+ J6 P% M) G7 q2 S┈┈┈┈┈┈┈┈┈┈├── 测试词典.idx' c/ c; T7 |1 {8 C. U( Q
┈┈┈┈┈┈┈┈┈┈└── 测试词典.ifo) J/ y) Q/ D5 X; C

" p. t, W0 i: `- K7 ~/ d1 c6 ~(4) dictzip.exe 【压缩 .dict 为 .dict.dz】, L1 r2 K- w3 c6 J4 L" H! S
(5) GetDict2_6.exe 【示例为用其转换MDX为StarDict文件】$ t. Z% F1 Q, |1 i8 c& C
---------------------( _1 ^/ {# \' A6 t: l7 k! t, @
1. 将(1)(2)的文件放入手机sdcard/GoldenDict目录下, 打开GoldenDict, 扫描词典进行索引化, 设置这2个词典的源语言例如为Aa(Afar) 目标语言为Any(Any), 并且(1)的词典顺序始终要在(2)之后
. u4 F$ d  h8 C" ?2. 右上角设置语言对:Aa - Any,查询 a,得到(2)的词典ID
! V0 Z: x6 d. R- S6 [3. 修改测试词典.txt里相关的路径里的词典ID, 转为MDX, 再转为StarDict格式 (其中.dict可以使用dictzip.exe压缩)3 j/ \$ R3 z5 k& v
4. 将上一步得到的词典文件 (.dict或.dict.dz, .idx, .ifo) 复制到手机sdcard/GoldenDict目录下, 打开软件扫描词典索引化
4 b" i( s- r9 c2 {4 J& N5. 查询provare, 测试:(1) CSS加载成功,版式显示正确; (2) 点击小喇叭, 单词发音正确; (3) 点击数字1/2,图片显示正确; u5 j8 W: w9 ]0 Z+ n2 P
2 V0 L$ j7 K+ g3 x8 s+ I
注意点:
- p* |: s/ W- e: f& vCSS/图片/JS等路径:content://mobi.goldendict.android/resource/词典ID/文件名%2e后缀名! T  `  R2 @4 {  z
MP3等Audio路径:<a type="audio" href="content://mobi.goldendict.android/audio/词典ID/文件名%2emp3">点击发音</a>

3 ^0 P  o; g. y2 N" T) }9 `, D  V4 V6 f2020.05.05 更新:成功实现!!!$ m5 P% e; ~& o
安卓系统的GoldenDict加载DSL/ZIP格式时发音文件路径调取如下:# m, f* e- K& q6 Z7 A/ l* H% V

1 ]0 Z5 C% Y+ h0 [* D+ ~<span class="dsl_s_wav">' k; y4 _: ^6 F0 T
<a href="content://mobi.goldendict.android/audio/词典ID/音频名%2eMP3">
6 E. p2 F& P6 c<img width="20" height="20" src="content://mobi.goldendict.android/asset/playsound.bmp" border="0" align="absmiddle" alt="Play">7 h. S4 e9 c6 e) b" L( w0 l
</a>3 h, |& u% I) Y0 C
</span>
' ]; Q6 N' g0 N+ l. i7 _; M2 G, ^. x% r* t
1. 新建一个空的外壳资源DSL/ZIP,复制到手机上,打开goldendict,通过JavaScript获取其词典ID
* q  o7 q0 H3 V, e: [2. 使用 GetDict2.6 转换MDX生成Stardict格式的词典(注意:MP3等资源文件的路径和.号)4 v, }/ [4 P7 U
- ~  B6 a4 C1 o+ A% X3 O/ ^
一句话总结:STARDICT格式词典获取另外一个DSL/ZIP格式词典的资源作为己用
% h( J( i* l) J( C9 u- Y) |方法有点曲线救国~~! R6 ^% g  ~9 b; r" o2 Y, J

$ o( W- C9 `2 L% @$ O' g% _# {6 ?" b- D
5 e, j6 {8 Y1 _. b6 S) H* m) M

: U5 p% H9 }0 {6 A+ v8 h& f$ Y
. e. V3 ]7 U7 ]: J# k) A3 k0 i

: j3 B( x' ^( e: z8 P/ z- n) M
4 P5 Z$ c9 R& J0 W# q7 d1 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 编辑 " F9 d) R6 `* t& n
    . ~! f$ `  _. s- R- r
    楼主厉害了! 我们前两天刚刚把电脑上 gd 对 StarDict 词库发音的支持搞清楚...
    / l/ {" J- g$ U2 V3 t# |& |; \& l9 e/ s# ?/ b
    StarDict 词库如果是用的 xdxf 格式, gd 可以原生支持 (至少电脑版是支持的)
    ) V7 {1 _- a0 K6 F1 b! K3 P/ ?如果 StarDict 词库用的是其它格式, 比如 html (mdx 绝大部分都是 html 的, 转过去自然也是), 那要 gd 能发音的话, 只能曲线救国...! M3 \4 N+ M7 `' ~
    请问楼主可以转载不?* t+ S7 F4 H# F: Y, D# X9 s5 `
  • TA的每日心情
    开心
    2018-8-8 03:13
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2020-5-5 22:50:00 | 显示全部楼层
    本帖最后由 喬治兄 于 2020-5-5 22:53 编辑 4 z9 |+ U9 S6 s6 B: Q5 I+ d' n

    5 S" A7 J' q5 _2 p/ S+ U$ x4 ]@chigre3 兄:
    ! \3 y8 x6 E) P/ w@EarthWorm  兄:+ Q7 v- `, I# c  }; X2 I5 l6 w
    有空蒞臨指導一下.....
    7 t6 R; C0 K# _+ v) k1 I+ I2 o[求助] 請賜教 : 非同步畫面的詞頭顯示....四樓
    3 }3 P: N/ h1 Z謝謝啦; M1 s7 i) y& I) w" s6 \% Q( z
  • 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
    * V2 @3 e1 m: L5 J可否举个实例?
    ' `& k' b( s% N
    已更新实例,请参考。

    点评

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

    该用户从未签到

     楼主| 发表于 2020-5-7 13:51:19 | 显示全部楼层
    chigre3 发表于 2020-5-6 13:00# R8 w5 b. N: s5 k# T9 R0 ]! P
    已更新实例,请参考。
    & D# F0 G! j0 C0 |
    (1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾
    6 z6 D. b! ~* N/ `8 F, g├── _GetDict_id(Any-Any).bmp
    ! u  B2 e& a' d; x0 |3 Q. U├── _GetDict_id(Any-Any).dict+ N7 L3 ~( {1 e; n5 ?/ p
    ├── _GetDict_id(Any-Any).idx
    9 o9 p! j& f2 n, p/ U└── _GetDict_id(Any-Any).ifo
    0 ~: O5 }4 Z  z0 S: ~7 \, l
    , k6 {* Z# s$ P5 r4 }这个词典只有一个词条:a
    $ @- R" h0 Y( [/ r; I/ \0 ]/ }所以空壳DSL/ZIP也只需要1个词条:a* A* M/ i1 Y% P& M/ L
    * ?# H' a: j9 ~5 Q4 f
    这样两者可以同时显示,获取空壳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
    1 p& T6 ^9 j2 ?词典应当是可安装在不同电脑或手机上的,如果锁定一个ID,是否只能在特定的电脑或手机上使用? ...
    : I; Y# j4 a5 x/ T1 Z+ b/ s5 I' r3 P
    对的。这样的对应ID的路径的只能特定化制作~~
  • TA的每日心情
    开心
    2021-1-21 08:47
  • 签到天数: 265 天

    [LV.8]以坛为家I

    发表于 2020-5-7 21:08:00 | 显示全部楼层
    chigre3 发表于 2020-5-7 13:517 Z: I0 u) p' s# N6 g& o9 e
    (1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾) y: K: M& w. D- O" @. p
    ├── _GetDict_id(Any-Any).bmp
    6 H& x5 [/ M3 E2 D$ {% ?" f ...
    5 U' {) {0 U. m& M+ b- e
    真要弄成功的话,看来得手把手地教。已经放弃。

    该用户从未签到

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

    该用户从未签到

     楼主| 发表于 2021-1-11 15:12:46 | 显示全部楼层
    2021.01.11更新:
    ; _* z  l& b6 Q/ M* D0 }4 [GoldenDict 安卓版的词典ID产生是转化带目录的文件名hash为MD5得到(STRING TO MD5):
    3 Y7 }: g5 H. B9 thttps://www.md5hashgenerator.com/
    7 Q* b  @! j" L2 s. vID事先可以确定,就可以有比较有趣的用途了!!9 p1 D2 P' R1 D" s1 O: ?
    2 S4 s6 B5 k# h, t5 X& w# N* k
    例子①:a.dsl + a.dsl.files.zip  放置在 /goldendict/ 目录下
    9 `+ ^/ o: {; `# O3 [7 y则:a.dsl ---> cf720ab20d00f14ea433254b99c5c1b8- @/ t$ O% T" `4 C2 S/ o
    8 n( x# ]. |" |% o4 q6 z# G
    例子②:a.dsl + a.dsl.files.zip  放置在 /goldendict/zzz/ 目录下
    , ?+ @1 k- n8 O% H1 m3 F' r则:zzz/a.dsl ---> 5a4a28e8fab346d876be7e2218556487

    该用户从未签到

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

    # x' V1 V2 i# M8 ^; s+ l( X- I1 c' X; }) q" U9 Y

    / W& A4 K4 i! Z# l7 L
    ' ?2 J( }$ `# U0 _  G4 wstarmars早前分享的也可以使用到安卓版Goldendict上来
    " z8 @* L# Y2 m) s0 u( W
    $ A5 K, v% E3 o图片词典致命伤一屏无法显示多页!用“瀑布流”解决了!" ?- }- D, C# k" x
    https://www.pdawiki.com/forum/fo ... hread&tid=41285
    & W- X) p9 Z5 W; z(出处: 掌上百科 - PDAWIKI)
    . g$ {! p: d4 c4 p$ U% L' j3 D

    本帖子中包含更多资源

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

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

    [LV.3]偶尔看看II

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

    # W* Y# F* h# w# b$ v5 X# C谢谢楼主的爱心分享

    该用户从未签到

     楼主| 发表于 2021-10-28 17:01:28 | 显示全部楼层
    GoldenDict 词典 ID 生成算法
    1 F! x- j7 o) t! @0 Vhttps://www.pdawiki.com/forum/fo ... hread&tid=21913" Q* h( C! |- c$ ]' I3 ]8 ^
    (出处: 掌上百科 - PDAWIKI)
    & e! f( {% C" q
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-4-30 19:18 , Processed in 0.063509 second(s), 13 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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