掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 2967|回复: 14

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

  [复制链接]

该用户从未签到

发表于 2020-5-5 21:40:41 | 显示全部楼层 |阅读模式
本帖最后由 chigre3 于 2021-1-12 11:50 编辑
8 j( u/ T( I. H% [- n3 A# a& ?% y3 m% Q: N' |6 p
2021.01.12更新:
* R# K& G2 j7 |% K; @MD5 HASH值【路径、文件名 都区分大小写】/ V' s' H4 q( j# A0 T& V
1. DSL格式:.dsl 或者 .dsl.dz+ l2 I4 n1 U" l0 O
2. STARDICT格式:.ifo9 D1 ]/ }4 ~/ c- n
3. BABYLON格式:.bgl
( l! C( r3 Y, m4. ...其他
4 c  d* S4 k) C- u3 E  S! E0 }; Q
3 X# \$ b8 b- f4 t: z2021.01.11更新:3 e7 A/ {$ d4 b) v0 Z4 }4 S
GoldenDict 安卓版的词典ID产生是转化带目录的文件名hash为MD5得到(STRING TO MD5):3 k8 k3 j; s5 o/ v" n& E
https://www.md5hashgenerator.com/& W8 r* d7 A8 q
ID事先可以确定,就可以有比较有趣的用途了!!
7 ^! q/ ?; s4 d" O6 f7 i+ T( \. [5 k4 n
例子①:a.dsl + a.dsl.files.zip  放置在 /goldendict/ 目录下5 O6 G) `! i! Z4 ^0 N! O
则:a.dsl ---> cf720ab20d00f14ea433254b99c5c1b8+ k3 Q2 R1 A& Z

8 i; e8 ^* g8 V$ [/ Z5 n7 l例子②:a.dsl + a.dsl.files.zip  放置在 /goldendict/zzz/ 目录下
3 t7 `% h& q1 [9 C( D# R5 o; g) T则:zzz/a.dsl ---> 5a4a28e8fab346d876be7e2218556487
% J; `8 u" S; j1 J: w. D# J' ?7 r0 ~# S6 K
5 c9 ]& g1 F+ d  f( M

% m* i0 O5 T4 i% V" J$ z为什么这么折腾?
+ n/ I* u$ ?/ o# b  1. 查词时不想输入特殊字符- D4 G6 y% c2 P& [; w) C- }
  2. 名词、形容词等变形、动词变位等等直接根据hunspell返回原形单词) H1 a: i( g$ q
  3. 个人制作的切词版词典,DSL+ZIP格式最为简单
. x, u' C$ d' t安卓版goldendict能满足我个人上述使用要求,并且安卓版goldendict支持的词典格式也是很多的,详见安卓版官网:http://goldendict.mobi/
6 C+ `8 G- q5 p9 h3 R
  • Lingoes .LD2 files
  • Babylon .BGL files
  • ABBYY Lingvo .LSD, .DSL, .LSA and .DAT files
  • StarDict files
  • Dictd files
  • Hunspell morphologies
    $ n* }- U0 v& W
9 D! r9 M. C: \! m# t/ c
/////////////////////////////////////////////////////////////////* J2 y, |# @* v, I, N

" f5 J* ^, h. \( q# J6 P, [额,先附上一个很早的帖子:安卓版 Goldendict 支持 .mdx .mdd 的方法 (经验)
+ Y- h2 ~9 L# Q+ u& bhttps://www.pdawiki.com/forum/thread-13437-1-1.html# W5 x/ ?4 `" L4 }: I

8 }% \* e1 l  f* {/ z' A5 i2020.05.07 更新: 把goldendict安卓版原生的添加audio的js函数加上这样做的目的是让APP里不用点击自己设定的按钮键,直接点击APP上的工具栏上的发音键就可以了!(第一个音频)) |/ b2 R- z- e2 M" z
请参考gd本来的js函数 gdAddAudioLink( dictionaryId, url )
  j7 S8 U2 `7 N4 i0 p3 T
<script language="JavaScript">gdAddAudioLink( '词典ID', "content://mobi.goldendict.android/audio/词典ID/音频名%2emp3" ); </script>
% U3 U& u' a7 Y6 i- H; J9 ^<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;
    + i2 y. t5 [3 [- A5 z
  2. var gdAudioLinks = {};
    ) Z+ \/ b( j& ^$ _% b! Q

  3. % t- c6 {! L# v9 J
  4. function gdAddAudioLink( dictionaryId, url )  H. s. i' |+ R2 @$ p# T
  5. {
    - j/ Z! J4 R- ~) e! y
  6.   if ( !gdAudioLink )
    1 u: z6 ^, L# b, s( L
  7.   {+ s0 T. }- x' K" R. l5 s+ i7 M
  8.     gdAudioLink = url;
    ( ~9 g; X4 y. ~) O6 c8 a
  9. //    GDHost.setHasAudio();
    % x7 U/ V/ S& Z' x, Y
  10.     alert( 'setHasAudio://' );
    . R+ x! x2 C6 C* O9 s5 G* I6 k/ T5 D
  11.   }
      J; W$ l2 l6 z, ?

  12. & P* }5 E  ^$ K. ?% V7 J; K0 t
  13.   // Only add the first sound in the dictionary" i8 z0 w! q- ^* A
  14.   if ( !( dictionaryId in gdAudioLinks ) ): g7 \$ |1 K. ~
  15.     gdAudioLinks[ dictionaryId ] = url;' E) ~4 P' ?# s: ]& t
  16. }
复制代码
% i" Q1 v7 |+ h# d5 b5 t: G
) I/ n% }1 C. Z1 D  Z. v5 [
1 {/ x6 _# S% J$ D- Q2 I% K& q; S
2020.05.06 更新:测试词典和工具、教程下载链接:站内附件: ) R  e! D* [7 h( F
百度网盘:链接:https://pan.baidu.com/s/16YjbXM1YbdP-YR2-PG--0w  提取码:5lkl
# p9 g4 L3 `2 p+ O, K- ?
2 f4 q$ T' Z. d9 Q# L1 O" Y; n8 o2 T2 F# O5 l& Y: K; I' ]
- d. H. c; y/ G1 e. M

8 z' \* \: l3 M4 t& i+ n+ M
/ F; u3 \9 ?" L5 K5 Y解压到文件夹,阅读:___ReadMe_请阅读我先.txt
) r0 z+ E/ j% a  O+ Z9 y
你好!本文档为简略说明,请适当理解并自行DIY操作!
- v6 {( o( y1 G---------------------
% ]$ m" ?2 }& t5 Z. Y目标:让安卓版Goldendict曲线支持MDX/MDD(MP3/图片/JS/CSS)! N4 n9 S* h( k9 y. w8 t" f7 V
结果:5 m( i& T6 y* F8 ~2 ?
MDX 转为 Stardict格式的.ifo .idx .dict或.dict.dz
5 `7 r; Q  ^' z6 Z8 s6 DMDD 转为 空壳DSL+ZIP
) J% [) m9 I/ z5 @! H. z  z% W---------------------
$ z& F8 B, \3 Z- z(1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾/ n6 t& I- r3 N4 C6 L
├── _GetDict_id(Any-Any).bmp
# v4 x. n. D& X* ^& ^' S; E├── _GetDict_id(Any-Any).dict
# x+ z9 n% t, J3 Y├── _GetDict_id(Any-Any).idx' x9 n& H( n  I. ?- W) [
└── _GetDict_id(Any-Any).ifo0 t3 N$ {& V0 e4 }. T; o4 M: T
" B  @9 T; x' `3 \
(2) 测试词典资源ZIP和空壳DSL
( J3 K9 w' T5 e, Q├── 测试词典.bmp【词典图标】
9 B7 d8 X1 k  T0 m8 @8 x- I├── 测试词典.dsl【词典资源文件空壳DSL,仅设一个词条a,用于获取词典ID】- ~# P1 t  {5 K3 V4 C8 T
└── 测试词典.dsl.files.zip【词典资源文件打包为zip,包含CSS/MP3/PNG】$ T5 @0 c/ }$ m) |* U2 l
┈┈┈┈┈┈┈┈├── YHCD_IT-ZH.css
' V7 t! K. Y  r! A9 W┈┈┈┈┈┈┈┈├── p068052.mp3
2 X! y7 ]9 G* b! d9 P" d┈┈┈┈┈┈┈┈└── 604_WW_001(1).png
5 v# N4 C9 m, \/ |0 K" W
3 u1 I# i: g/ p, Z- {+ M, l5 m(3) 修改测试词典.txt里引用的资源文件的路径6 C4 l5 ~# u: P. ?/ k- J
测试词典.txt 【词典MDICT文本】
# \. M* L! r4 P1 E; |┈┈┈└── 测试词典.mdx 【词典MDICT格式MDX; 下一步使用GetDict2_6.exe转为stardict格式】! i; W! V* c% l! M& O
┈┈┈┈┈┈┈┈┈┈├── 测试词典.dict 【说明:可用 dictzip.exe 压缩】
. t/ G' O! P1 u2 N+ ~# J1 m! s9 m┈┈┈┈┈┈┈┈┈┈├── 测试词典.idx
' ?0 f( T3 H# K3 z4 J┈┈┈┈┈┈┈┈┈┈└── 测试词典.ifo/ q* q5 {$ A/ {
2 a5 z' S9 k* X0 J- S4 N# m" O
(4) dictzip.exe 【压缩 .dict 为 .dict.dz】
+ J7 P1 G  l! D7 b(5) GetDict2_6.exe 【示例为用其转换MDX为StarDict文件】
* p( ?" u3 g3 N2 A! d---------------------
. n& [6 a: `7 C2 ?1 \+ \1. 将(1)(2)的文件放入手机sdcard/GoldenDict目录下, 打开GoldenDict, 扫描词典进行索引化, 设置这2个词典的源语言例如为Aa(Afar) 目标语言为Any(Any), 并且(1)的词典顺序始终要在(2)之后$ [$ \$ `2 u; M8 h5 z1 G& E
2. 右上角设置语言对:Aa - Any,查询 a,得到(2)的词典ID
& b' u5 s' s+ `  s6 r3. 修改测试词典.txt里相关的路径里的词典ID, 转为MDX, 再转为StarDict格式 (其中.dict可以使用dictzip.exe压缩)
  |9 m. m6 L8 l* u4. 将上一步得到的词典文件 (.dict或.dict.dz, .idx, .ifo) 复制到手机sdcard/GoldenDict目录下, 打开软件扫描词典索引化) W: P+ n; d0 q. o
5. 查询provare, 测试:(1) CSS加载成功,版式显示正确; (2) 点击小喇叭, 单词发音正确; (3) 点击数字1/2,图片显示正确$ G- c4 [9 u. e9 d9 T0 k" }4 O
/ o% e' |" P* L6 j9 ], ?
注意点:) l& h1 p5 p% R) Z7 K" s; r+ ^
CSS/图片/JS等路径:content://mobi.goldendict.android/resource/词典ID/文件名%2e后缀名
& _6 h3 d; U$ l1 }: Y/ vMP3等Audio路径:<a type="audio" href="content://mobi.goldendict.android/audio/词典ID/文件名%2emp3">点击发音</a>

3 r$ Q6 B8 r* Q5 P2020.05.05 更新:成功实现!!!  G2 d8 e, H, f* _1 `
安卓系统的GoldenDict加载DSL/ZIP格式时发音文件路径调取如下:
6 ]2 U# f+ i* _$ Y1 P. K& U" e
8 C+ ~: X# R0 n. X8 j- w<span class="dsl_s_wav">" Z5 p2 q7 j# u0 P
<a href="content://mobi.goldendict.android/audio/词典ID/音频名%2eMP3">
) V5 i) u0 A  F/ }2 I+ [: Z+ R6 E<img width="20" height="20" src="content://mobi.goldendict.android/asset/playsound.bmp" border="0" align="absmiddle" alt="Play">& l$ K+ Y4 ~5 B, x6 T
</a>% o! v% ~" u/ u" f  O. x5 W9 b/ ~* B
</span>! b9 A$ ?0 ?) P5 g' _2 `

& ~; b" T- |4 f4 G; W- x- g1. 新建一个空的外壳资源DSL/ZIP,复制到手机上,打开goldendict,通过JavaScript获取其词典ID
% \7 B0 ~7 l: b+ C5 Q3 a$ [2. 使用 GetDict2.6 转换MDX生成Stardict格式的词典(注意:MP3等资源文件的路径和.号)
1 r0 G5 @: I+ W- z! f# @+ S
: L  j/ R' n( P0 ]$ \. t7 O一句话总结:STARDICT格式词典获取另外一个DSL/ZIP格式词典的资源作为己用$ n% s& a0 m# c+ V# s2 ?6 m3 ?- [
方法有点曲线救国~~- m3 Y% i( R- |
1 {5 j7 j/ X' t" n, ?6 B; t
8 [0 H6 v: f) S- l) W/ Z0 n. |6 K
- `' K( T1 x6 h3 {8 G+ s$ U7 G* h

. J  {, ]/ r' `$ k7 n) C- F/ x  X; F4 s: Z
  w- C4 x. W5 S/ ]0 u6 i  k

! I: C5 x( N5 Q# u$ j* @# I* q0 U( E) T; m2 D+ U

本帖子中包含更多资源

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

x

评分

1

查看全部评分

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

    [LV.8]以坛为家I

    发表于 2020-5-5 21:49:15 | 显示全部楼层
    本帖最后由 EarthWorm 于 2020-5-5 21:53 编辑
    ! H! u7 A7 N  G" p
    " p, E% s" l* l- D+ \& O. E楼主厉害了! 我们前两天刚刚把电脑上 gd 对 StarDict 词库发音的支持搞清楚...
    * n: ^- ^; l0 q5 {5 m* w8 }; \$ h, _
    StarDict 词库如果是用的 xdxf 格式, gd 可以原生支持 (至少电脑版是支持的)! W) [/ H, g' `! p# l. o
    如果 StarDict 词库用的是其它格式, 比如 html (mdx 绝大部分都是 html 的, 转过去自然也是), 那要 gd 能发音的话, 只能曲线救国...! w- ?$ D+ U7 W4 m7 W  |3 e$ O
    请问楼主可以转载不?4 R) t" f$ ]3 |7 ^! ?/ c5 H
  • TA的每日心情
    开心
    2018-8-8 03:13
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2020-5-5 22:50:00 | 显示全部楼层
    本帖最后由 喬治兄 于 2020-5-5 22:53 编辑
    " R5 e" x9 Q& j% I, a  S% d7 n$ P; x3 x* B
    @chigre3 兄:
    + Q; g) Z$ u0 Q0 ^8 O1 V- I& J@EarthWorm  兄:" o6 t5 r0 m2 b7 h% o+ O" |8 j
    有空蒞臨指導一下....., u1 G" o6 k# v9 F
    [求助] 請賜教 : 非同步畫面的詞頭顯示....四樓; u  Z- a5 d- L" N
    謝謝啦# F4 J8 I( F5 k* g* b- c8 l+ Q, X
  • 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
    - Q4 N0 g# J6 M' R) L" V可否举个实例?
    2 |3 T# }; U1 b' d
    已更新实例,请参考。

    点评

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

    该用户从未签到

     楼主| 发表于 2020-5-7 13:51:19 | 显示全部楼层
    chigre3 发表于 2020-5-6 13:00
    ) c+ s: n1 C( R- @% M- Z已更新实例,请参考。

    , T8 _4 ]7 o  X3 ]6 O( P(1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾3 q! Q) h+ |2 D( l/ M$ P7 c  [- \
    ├── _GetDict_id(Any-Any).bmp: \, A1 v4 L/ P
    ├── _GetDict_id(Any-Any).dict
      d8 b% J* U+ [* ]/ m├── _GetDict_id(Any-Any).idx
    1 G) q: ]& N3 S  A' f└── _GetDict_id(Any-Any).ifo
    $ N  k( I3 C8 X; M$ H  O* n2 ^4 J, m. {0 {: v' _8 K
    这个词典只有一个词条:a$ Z0 V8 E2 u& R
    所以空壳DSL/ZIP也只需要1个词条:a
    ! _' j5 I! {: C) b& W9 B, ~3 t7 }9 s. L9 P& 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:515 r$ M6 V) f( f) v& M. P; M8 O- Y
    词典应当是可安装在不同电脑或手机上的,如果锁定一个ID,是否只能在特定的电脑或手机上使用? ...

    ( v+ H1 K) m* _% A* M& I' b对的。这样的对应ID的路径的只能特定化制作~~
  • TA的每日心情
    开心
    2021-1-21 08:47
  • 签到天数: 265 天

    [LV.8]以坛为家I

    发表于 2020-5-7 21:08:00 | 显示全部楼层
    chigre3 发表于 2020-5-7 13:51
    $ J2 Z& @" ]2 y6 ~(1) 获取词典ID的词典, 注意在Goldendict词典管理界面将其放置至末尾7 }8 ]" i4 k/ e- n& X
    ├── _GetDict_id(Any-Any).bmp, \" |7 i! w) b3 V. t. S, X
    ...

    . v1 L+ n, S  v9 T9 ^真要弄成功的话,看来得手把手地教。已经放弃。

    该用户从未签到

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

    该用户从未签到

     楼主| 发表于 2021-1-11 15:12:46 | 显示全部楼层
    2021.01.11更新:
    9 h. ~9 e4 \' f6 X! ^2 X7 w3 @GoldenDict 安卓版的词典ID产生是转化带目录的文件名hash为MD5得到(STRING TO MD5):) [+ R" C! R+ ]  U8 S6 B
    https://www.md5hashgenerator.com/# i/ r7 j; P& a) W* `5 k1 a7 }
    ID事先可以确定,就可以有比较有趣的用途了!!
    , h" ~; r) B) x% j6 ~, h% \2 d1 I) q8 V# [  Z
    例子①:a.dsl + a.dsl.files.zip  放置在 /goldendict/ 目录下- h: u2 k( L9 _/ q
    则:a.dsl ---> cf720ab20d00f14ea433254b99c5c1b8
    . @: [- ~2 W. t6 l7 `# s  ~
    ! Y! B* f! z9 ]! P例子②:a.dsl + a.dsl.files.zip  放置在 /goldendict/zzz/ 目录下" O; l% y; V' {2 k
    则:zzz/a.dsl ---> 5a4a28e8fab346d876be7e2218556487

    该用户从未签到

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

    * V, v0 A& W& m! f8 Q+ o3 n( `& F9 Y- w! q

    8 |5 p7 f( b$ x  {1 z' `/ d& D7 p8 g& r9 j. G* V; i2 J
    starmars早前分享的也可以使用到安卓版Goldendict上来
    2 f) [+ ?' G8 _) A: H* L
      X  s3 {1 k4 G' @; V图片词典致命伤一屏无法显示多页!用“瀑布流”解决了!8 u4 v$ E+ A& P& x4 h
    https://www.pdawiki.com/forum/fo ... hread&tid=41285% ]$ M5 ], Q3 w: E+ X( J- ]
    (出处: 掌上百科 - PDAWIKI)& E" }' s5 q' N

    本帖子中包含更多资源

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

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

    [LV.3]偶尔看看II

    发表于 2021-2-25 00:03:30 | 显示全部楼层
    % i. V4 r3 |, C& }2 ?
    谢谢楼主的爱心分享

    该用户从未签到

     楼主| 发表于 2021-10-28 17:01:28 | 显示全部楼层
    GoldenDict 词典 ID 生成算法
    : K  m; H: j9 k+ B1 c9 d) n  w* Bhttps://www.pdawiki.com/forum/fo ... hread&tid=21913; `! e& ?! ]' U; |3 p: P' i3 E
    (出处: 掌上百科 - PDAWIKI)
    + I, x; E# k0 J2 s4 C* Z
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

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

    GMT+8, 2024-5-19 06:04 , Processed in 0.056330 second(s), 14 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2023, Tencent Cloud.

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