掌上百科 - PDAWIKI

 找回密码
 免费注册

QQ登录

只需一步,快速开始

查看: 1131|回复: 9

[经验交流] 解决dsl词典部分内容不显示问题

[复制链接]
  • TA的每日心情
    开心
    2018-5-24 00:07
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2018-5-24 03:10:37 | 显示全部楼层 |阅读模式
    本帖最后由 Arran 于 2018-5-24 03:13 编辑
    ' [+ E) U7 T1 P: X
    & k; z$ X* ?8 Y' e" N, b4 I5 ~先说结论,把附件解压得到的article-style.css放到~/.goldendict/下面就好,windows应该是%APPDATA%/goldendict1 q, m# W6 \/ _' }
    其实就是把官方的article-style.css第450行关于.dst_opt的内容从display:none改成了display:inline.5 C2 |  @4 f7 \$ m: k
    , S) O2 N  M/ R; U* D
    下了一个dsl版本的longman DOCE 5th,然后发现好多内容是白的,如下图。
    - k3 K* k7 N& c! N0 W1 `% _" P4 X& {- z

    , ~3 b/ Q" i2 j6 \9 k1 T最开始我以为是字典下坏了,不过语音什么都是正常的,能清晰地听到“apple pie”,然后我就把dsl.dz解压打开看了下,没问题呀,有这个短语。
    9 e6 X1 M2 z1 {8 h- m& C& ?* v; L/ |; K& L
    . ^: [0 L% q4 }
    关于怎么打开dsl.dz有够折腾的- -
    3 A' g% ^8 ^$ {* k0 C8 _4 \0 ^
    + N/ ]( U4 F$ K/ _" y4 z后来发现mac版的goldendict好像是用的mac自带的webkit内核浏览器控件,自带一个“审核元素”,看到一个很可恶的none  C' z% K+ Q+ _1 n1 s; }
    $ o/ `. {' m( X) ~& q+ I/ U! J+ z7 X- P; f

    ( ?5 J' J( V7 s# _通过元素审查器查看css文件以后,第一句话就是
    5 e, u5 u7 c2 C" l, M+ o: i. p+ K<!-- Built-in css -->  c1 T) l5 s( ^5 X6 q0 h5 k
    然后我去github上看了下代码库,是内置的article-style.css,本来我以为这种资源文件应该会被放在application包内的某个文件夹下面,找了一圈发现并没有,应该是被QT直接嵌到某个静态资源文件里面了。
    # V' l9 }5 Y( [: s( n7 Z* M本来打算clone下来修改好从新编译下,后来发现他存配置文件的目录~/.goldendict下面有个style文件夹,猜测是放自定义样式的,放进去以后并没有用,Google了一下应该放到~/.goldendict文件下面,放进去以后真的管用了。# I8 P* S8 m7 X- B6 L
    7 e. [& o2 f! I0 a2 T$ D+ K% K

    $ b; Z4 A7 x+ d. e/ q4 X下面是打开dsl.dz的过程,可能跟c语言程序有点关系不感兴趣的可以返回了。
    3 p% v4 T* [, h% C$ O% p------------------------------------------------睿智的分割线------------------------------------------
    3 P% g8 h3 `- \5 @+ Bdsl.dz使用dictzip压缩的文件,打算在mac上装一个。
    : p' Q) I5 r  @" K从github上clone下来以后发现并没有做mac平台适配,并且6年没更新了,跟着他的INSTALL装了一下,然后就发现他用的libtool编译的。1 ^) s$ y! m3 e$ ~$ }
    都知道macOS上面Xcode Command Tools装的libtool和Linux的libtool完全是两个东西,于是装个一个glibtool,接着把Makefile里面,
    1. LIBTOOL = libtool
    复制代码
    这一行改成
    1. LIBTOOL = glibtool
    复制代码
    # r2 N1 n8 G; ?  f# Z" B9 n* e: L( J
    总算是能开始编译了。
    / l  ]# T; G6 j3 T  o5 S我不知道写这个程序的人6年前是怎么编译通过的,有一行
    1. #include "getopt_long.h"
    复制代码
    但是他的代码库里面并没有这个文件,Google了一波说是有个头文件叫<getopt.h>里面定义了函数getopt_long(**),看了一下他确实是用了getopt_long这个函数,于是帮他改成了
    1. #include <getopt.h>
    复制代码
    顺便还加上了
    1. #include <limits.h>
    复制代码

    " h" a* h1 ?7 {- k( n接着就是一大段的“Undefined symbols”,大量用到了一个"PRINTF(**)"看上去明显是一个自定义宏,但是
    1. cat *.h | grep PRINTF
    复制代码
    并没有找到这个定义,Google一下也没找到这个是哪个库的宏。7 Z) {) m2 b7 ^' q& t( s
    本来想算了懒得搞了,不过注意到他PRINTF的用法是
    1. PRINTF(DBG_**, ("**", **))
    复制代码
    。“DBG”,直觉上讲是DEBUG的缩写,看上去应该是打印debug信息调试用的,于是全部注释掉。  p& }+ w+ N  {7 W. P! p
    还不错编译完了。
    " k( ?' W) u8 Q: G! b! H接着就是喜闻乐见的"segmentation fault",不过好在在看dictzip用法的时候发现他man写的不错,应该是不打算维护了然后写下来交给别人的。
    . I& c" ]& C% R) F' [description第一句话就是"dictzip  compresses files using the gzip(1) algorithm (LZ77) in a manner which is completely compatible with the gzip file format."
    4 u* |' F9 t& s  g/ Z3 u于是直接mv成.gz,然后gunzip就解出来dsl了,dsl又是纯文本文件能直接打开,虽然大了点,不过好点的文本编辑器都支持分段加载多以打开也是很快的。+ O1 ~! \- ~& d- h
    emmm....所以,为啥不直接用gzip呢。

    本帖子中包含更多资源

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

    x

    评分

    4

    查看全部评分

    本帖被以下淘专辑推荐:

  • TA的每日心情
    开心
    2019-1-21 17:00
  • 签到天数: 376 天

    [LV.9]以坛为家II

    发表于 2018-5-24 05:16:29 来自手机 | 显示全部楼层
    本帖最后由 simonfire 于 2018-5-24 05:28 编辑 ' J! }' Q0 i0 F, |, k/ o

    $ N9 c5 c3 V" _8 i" u- _不用那么麻烦,在首选项高级里勾选展开可选部分就行了。/ n; X4 Y6 s0 D* U; }9 G5 W
    当年我也遇到这个问题,死活搞不懂,因为之前那个版本的GD是可以显示的,就没往设置上想,当时的解决办法是用老版的配置文件覆盖新版的。直到有一次看到设置里这个展开可选部分选项,瞬间泪流满面。
    2 v  D  |# F0 {; w; z: F1 y) k5 i7 z9 o1 [% x- _1 M
    我当时覆盖的应该是配置文件config里的这一句,0就不显示,1是显示
    : I' f- U+ N5 g1 E; e7 T0 J0 j
    1. <alwaysExpandOptionalParts>1</alwaysExpandOptionalParts>
    复制代码

    / s6 D0 |7 q2 s1 V' d. [  U! m

    评分

    2

    查看全部评分

  • TA的每日心情
    开心
    2018-5-24 00:07
  • 签到天数: 15 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-5-24 10:01:04 来自手机 | 显示全部楼层
    simonfire 发表于 2018-5-24 05:16
    8 A- ?% T  a" E4 D  y/ j) ?: \不用那么麻烦,在首选项→高级里勾选展开可选部分就行了。
    / Z5 }) s9 i( b, ^! F4 f( J" c) A当年我也遇到这个问题,死活搞不懂,因为之前那 ...

    - ~& v* q6 a/ q# k4 ~7 P) c" L0 U蓝瘦……_(:3」∠)_
  • TA的每日心情
    开心
    2020-10-25 03:32
  • 签到天数: 395 天

    [LV.9]以坛为家II

    发表于 2018-5-24 12:10:54 | 显示全部楼层
    都是牛人,所以杀鸡习惯用牛刀
  • TA的每日心情
    开心
    2018-5-24 00:07
  • 签到天数: 15 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-5-24 13:08:47 | 显示全部楼层
    hyqq2015 发表于 2018-5-24 12:10
    ' w) \1 e- ]& q+ N都是牛人,所以杀鸡习惯用牛刀

    / g- `8 h, y* c% J& E* t至少折腾数来dsl.dz是咋回事了。. \. L; _) ~) w  f9 F% [2 u- Y
    打算抽空弄明白goldendict是怎么把那dsl标签变成html标签的,说不定能弄出来一个自动做anki卡片的小玩意。
  • TA的每日心情
    开心
    2020-10-25 03:32
  • 签到天数: 395 天

    [LV.9]以坛为家II

    发表于 2018-5-24 13:50:17 | 显示全部楼层
    Arran 发表于 2018-5-24 13:083 R. F& ~- t, ~9 z) t4 c0 H8 M
    至少折腾数来dsl.dz是咋回事了。, |9 c+ M; G2 r1 h% W8 L
    打算抽空弄明白goldendict是怎么把那dsl标签变成html标签的,说不定能弄 ...

      Q* p, _1 W" ~" l$ a  `折腾肯定是有收获的。& K) y/ l  h2 c; g" e( L

    . j* ~4 s8 W/ a3 M- G& d2 i' k- f期待你的anki小玩意。
  • TA的每日心情

    2018-10-3 18:30
  • 签到天数: 75 天

    [LV.6]常住居民II

    发表于 2018-5-24 19:48:08 | 显示全部楼层
    本帖最后由 vigorous 于 2018-5-24 20:26 编辑 2 B$ g2 e5 u7 N4 |+ |
    0 ^' C' m3 V5 F0 T4 r, P' O
    不知道你用的是什么版本,不钩选“展开可选部分”选项时,试试点击最上面主词条右边的“+”号切换显示和隐藏 [​*][/*] 的内容。/ b1 U" }0 i0 t/ C1 c2 q
    还有一个快捷键是 Ctrl+8,这个操作会重新加载页面。
    . U( y. ]) F7 I0 p7 G+ s) w3 N& X% ?0 h  o, M
    Ctrl+8, Ctrl+* (In main and popup windows) expand/collapse optional areas for all articles
      z4 Y: ?, ~, M7 `2 w" P
    8 f9 o& Z1 O, J2 q0 n1 a* q5 l: [
    如果卡片太长,您可以减少屏幕上显示的文本数量。使用 [​*] 和 [/*] 标记将卡片的某些部分标为可选:
    . }# O1 S$ ~7 l5 ?+ `这些部分仅在完整方式下才显示。您可以将卡片除词条之外的任何部分用 [​*] 和 [/*] 标记括起来。ABBYY Lingvo x3 以不同的颜色显示可选文本。
    7 D( {5 k% m  H) `! t6 x/ d6 ?% }/ b
    DSL 标签可以参考官方的文档 DSL卡片结构
    - F) R4 p& A, [) Z7 D2 N6 U# E6 d( }
    不过感觉 GoldenDict 上的 DSL 词典只用到最基本的功能,可能复杂的功能不支持?
  • TA的每日心情
    开心
    2018-5-24 00:07
  • 签到天数: 15 天

    [LV.4]偶尔看看III

     楼主| 发表于 2018-5-26 13:24:53 | 显示全部楼层
    vigorous 发表于 2018-5-24 19:48
    7 {  E* J: C# R$ {. w; ~; c& M' t* G不知道你用的是什么版本,不钩选“展开可选部分”选项时,试试点击最上面主词条右边的“+”号切换显示和隐 ...

    0 s5 @3 S0 z5 b/ f" {0 C他的文档里面倒是有结构和标签说明,应该是要自己想怎么换成html,直接用GoldenDict的逻辑好了,他的代码有关读取和转换dsl的部分就放在"dsl.cc"和"dsl_details.cc"里面。解析dsl成DOM-tree也还好,麻烦的是可能会有很多非闭合标签,各种不正常的嵌套关系,类似于
    1. [b]ap[c]p[/b]le[/c]
    复制代码
    这种1 ~0 _! v* w* V. }+ Q

    该用户从未签到

    发表于 2018-6-26 11:15:57 | 显示全部楼层
    2楼的很管用,很方便。谢谢!顺便问一下,这个软件是免费的,不存在侵权问题吧?
  • TA的每日心情
    慵懒
    5 天前
  • 签到天数: 465 天

    [LV.9]以坛为家II

    发表于 2018-6-26 22:17:07 | 显示全部楼层
    谢谢楼主。难得找到一个定义得这么全面的css。下载试试GD手机版有没有效。
    您需要登录后才可以回帖 登录 | 免费注册

    本版积分规则

    顶部qrcode底部
    关注掌上百科官方微信公众号送积分
    关注掌上百科官方微信公众号
    关注微信公众号 pdawiki,获取邀请码,看文抢积分,抽奖得浮云! Follow our Wechat official account "pdawiki", get invitation codes, and play the lottery to earn points (积分)!

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

    GMT+8, 2021-3-3 03:15 , Processed in 0.034156 second(s), 16 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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