J̥H́-交流 - 词典软件词库制作技术探索之StarDict词典排版设计与多媒体支持

这个问题的相关前序问题在

这里新开主题是想和坛有交流下,StarDict词库的排版问题。

胡正给出的三个最为相关的词典制作说明如下链接

  1. https://github.com/huzheng001/stardict-3/blob/master/dict/doc/HowToCreateDictionary
  2. https://github.com/huzheng001/stardict-3/blob/master/dict/doc/TextualDictionaryFileFormat
  3. https://github.com/huzheng001/stardict-3/blob/master/dict/doc/StarDictFileFormat

关于多媒体的运用主要在第三个链接里面。

可能是我 下的力气还不够,所以理解起来还是不够。

从胡正本人提供的StarDict下载中,我感兴趣的词典中(实在没精力每本都去看),又没有找到好的示例,所以在此发帖,也寻一下坛友关于StarDict 词典排版和多媒体支持的经验


20200426, according to https://github.com/goldendict/goldendict/issues/99 and also https://github.com/goldendict/goldendict/issues/621, GoldenDict can now Handle Stardict resources in zip archive but without further folder inside the zip file.


似乎胡正网站上提供的StarDict 大部分都是黑乎乎的没什么颜色也没有多媒体(图片、音频等)的传统文字词典,示例见下图。

以上词库截图对应的词典均下载自胡正本人提供的官网下载页面


为提升对比视觉效果,加个mdx+mdd词典的视觉对比图。

以上两图所示为ff制作的牛津高阶8词典mdx+mdd词库bus词条的查询结果截图 - 图1为中文切换开关未打开时的样子,图2为中文切换开关打开以及点击放大图片时的样子。

以上两图可以说明紧靠Web前端技术的mdx+mdd可以实现非常灵活的多彩的以及包括多媒体的词条集合词库。


有朋友手里有 设计和排版好的多彩的包括图片以及音频StarDict词库么?我想知道StarDict提供的词典设计空间究竟多大,却苦于没遇到眼前一亮的示例。


多谢 @EarthWorm 分享自己的StarDict排版杰作,我也确认了StarDict的排版效果完全不输,mdx+mdd可以实现的效果。


而且意外之喜,正如EarthWorm兄所言,StarDict词条内部跳转的支持真的很赞。

经由 @nonwill 指示,我也在胡正网站上找到了无论排版精美程度还是图片支持都不错的词典示例。

现在尚还待确认的就是

  1. 词条间跳转支持问题
  2. 音频支持问题

当然,标准还是使用GoldenDict词典软件读取。

StarDict文件格式默认使用32位表示词条在文件的偏移位置,所以能够支持4G大小以内的文件。如果文件大于4G,可以ifo文件在的设置idxoffsetbits=64使用64位表示词条在文件的偏移位置。

1 Like

StarDict 本身是支持 html 的, 只是并不是像 MDict 那种几乎完全就是一个完整的网页结构, 之前我说过 StarDict 的多媒体支持比较特殊, 我昨晚看到这个贴就又一次试图读 StarDict 的文档, 奈何一个是英语水平低下, 二个是编程水平低下, 说是读文档, 效果就是催眠…但个人认为问题的关键在你给出的三个链接中的第 2 个和第 3 个

我有自己做的牛 8 的 StarDict 版的词库, 显示效果和 MDict 版的一样, 但是我搞不定图片和发音, 所以就只是一个纯文字版的, 颜色排版都有, 词性跳转也能实现, 但复杂的跳转没有效果, 简单说来就是一个单词内的跳转都能正常实现, 但跨词的跳转不起作用, 这个估计是跟具体的词典程序有关.

下面是 StarDict 的牛 8, 不过这个词典不是用胡正的编译器编译的, 没法反编译成源文件, 所以我把源文件也放里面了, 但这个源文件也没法用胡正的编译器编译成词典…具体的编译工具是另一个高手用 Python 写的可以处理同义词标记的, 胡正的词典结构支持, 但胡正自己的编译器却不能处理, 那个 Python 的程序我换了电脑一时找不到, 你可以在网上搜搜看.

3.zip (32.3 MB)

看了这句话真的好想笑。。。

stardict的源文件就是纯文本

这是事实, 只能说明胡正当年的 StarDict 整体的完成度不高, StarDict 的词典规范或者说结构是支持词条的关键词用 “|” 来处理多词一意, 也就是多个词头指向同一个释义, 这个胡正在他的词典文档里写了, 但他自己的编译器并不支持编译带 “|” 的源文件, 这也就像大家在这里讨论的 StarDict 的多媒体问题一样, 胡正的文档里写了 StarDict 可以实现包含图片, 音频和视频的内容, 但到目前为止, 我没见过任何一部 StarDict 的词库文件中带有以上内容, 单词的发音到目前为止都是以另外的一种方式来实现的.
我手机里使用的词典程序是 iOS 的 Dictionary Universal, 这个程序只支持 StarDict, 但这个程序的使用感受甩目前的各种 MDict 词典程序几十条街, 所以个人是非常希望能够找到能让 StarDict 的词库实现 MDict 词库相同效果的方法.

1 Like

源文件是纯文本, 但我做的这个词库的词头包含 “|” 来处理多个词头对应一个释义, 所以胡正自己的编译器处理不了…

看了下这个 app 收费的,能介绍下有什么优势吗?

可能只是个人使用习惯了而已, 它只是一个词典程序且只支持 StarDict 和简化的 DSL 词库, 本身不带任何的词库.

个人觉得其最大优势是对小语种的词头排序支持非常友好, 对学习小语种的人来说比较实用.举个例子, 在 MDict 的词典程序里, 你要查 rosé, 但这个词排在 rosy 之后, 你输入 rose 在词头索引排序里你就看不到 rosé 这个词. 对于一些小语种特殊字母开头的单词, 在 MDict 中如果不是在制作词库的时候就处理好的话, 你要精确的输入要查的单词, 单词才能出现, 但这个程序你只要输入相近的字母, 单词就能出现…这个不是很好描述, 你试试欧陆, 欧陆的处理方式类似这个程序, 如果你的使用环境是英文, 这个优点完全可以忽略不计.

还有一点就是这个程序的多词典是横向排列的, 也就是说同一个单词, 你想看不同词库的释义是左右滑动, 而不是 MDict 或者欧陆那种上下滑动, 这个对于学习型的人来说困扰不大, 但对于快速查询来说影响还是比较大的, 比如一个单词有多种词性, 你根据上下文在查之前就能判断出来它的词性, 而你在 MDict 或者欧陆的词库组中排在第一个的词典里这个单词的相应词性下的解释你觉得都不太靠谱的时候, 左右滑动切换词典的好处就显现出来了.

当然, 这些都是我自己的个人使用感受, 这个程序也有很多的小毛病, 最大的问题就是更新缓慢, 一般情况下几乎不更新, 基本都是随着 iOS 的大版本更新而更新, 而且在 iOS 大版本更新之后会持续一段时间有各种小毛病 (我个人认为是 iOS 大版本更新后系统的问题, 因为一般这些小问题都会随着 iOS 的进一步更新消失). 最近的一次更新增加了dark 模式, 但效果非常的灾难而又没有开关可以单独关掉, 我只能强制系统处于明亮模式或者去自定义词典的背景为白色, 要不根本没法用…

最后, 如果想试试, 其实你可以先付款买了, 如果感觉不爽, 申请退款就是了, 只要不是经常退款的, 苹果退款还是很容易的.

1 Like

感谢分享 探索经验积累和心得!

感谢分享,rosé处理成 rose,主要还是程序没有做二次索引的问题,对小语种来说确实很重要。

  1. StarDict 转成 txt 文件的话, 你可以试试这个: https://sites.google.com/site/aisnotesoft/convert-stardict-to-txt 注意转换前要解压 .dz 文件
  2. 我说的那个 Python 的编译器可能是这个: https://www.pdawiki.com/forum/thread-14699-1-1.html

谢谢,简直良心推荐,尤其喜欢Python版本的。因为开源,所以可以学习。

昨天在你的另一个帖子里和别的坛友讨论后似乎找到了在 StarDict 里显示图片以及控制发音甚至可能视频也能播放的方法, 准备尝试下, 但我估计还是要看不同的词典程序是如何处理词库的…

是的,HTML标准是一个参照,实际情况还是得看具体终端软件的支持情况。我个人觉得以开源的GoldenDict作为实践的标准比较好。因为GoldenDict是de facto的被借鉴/抄袭对象。