本人从未制作过一本词典,只是在使用中有些感受,更希望大家可以集体补充。
目前词典制作的质量各有特色。对制作词典中使用的资源的方式进行下规范,希望对词典的制作有个参考。
词典制作
- js使用
- js使用的时候如果引用了第三方库如jquery等,要使用noConflict并定义自己的 $别名。 防止影响其他词典或者被其他词典影响。
- 如果需要对全局事件处理,考虑到多词典共存的 情况下兼容及影响。 from 词典与词典软件制作规约 - #14,来自 demo
- 不要依赖浏览器本身的函数定义。如chrome中的$
- css使用
- css中尽量不要出现全局定位的样式,避免对其他词典产生影响,如果想出现一些全局浮层,也只保证在自己的词典范围内出现(可能需要js控制)
- 图片使用
- 目前的主流图片格式,词典软件应该都支持。如果新词典,建议使用webp格式。大小质量都比较好。开源格式,一般的软件都是内嵌浏览器实现的,对开源格式支持比较好
- 音频使用
- 首选开源,使用范围广泛的音频格式,如ogg、speex等。 这个不强求,目前音频支持一般问题不大。
- 视频使用
- 建议使用webm等开源格式。mp4一般由于专利授权,需要专门授权,造成词典软件使用的内嵌浏览器支持性有问题。目前词典软件一般内嵌webkit、webengine,对开源格式支持较好
词典软件
目前词典对词典软件的要求,应该集中中探测定期使用的词典软件是goldendict,bluedict之类的方式,并据此提供一些特性。
检测的方式各种各样,有检测useragent,有检测 document element的。(当然原则上还是希望词典可以通用,不要为了某个软件做单独优化)
词典制作也可以对词典软件提出要求,用于方便探测。
比如几种方式:
- 输出的html中,包含特定的html字段。
- 输出的html中,含有特定的js全局变量。(命名冲突避免)
如
__DICT__VERSION__={
"name":"xxx dict",
"version":"1.0.0",
"description":""
}
- useragent包含特定信息,这个不通用。各软件实现方式也可能有困难。
2 Likes
shaoshi
4
兄台自言“本人从未制作过一本词典”,没做过怎么就侃侃而谈,指导起实际做过的人呢?
建议兄台先卷起袖子动手,至少做过一本,了解了其中甘苦后,再来发言。
补充:
我应该再加几句:这些建议很好,不过大概无法在所有阅读器中实现,特别是旧的阅读器。
我没有贬低兄台的意思。我个人觉得有点陈义太高,但也许是因为我用的阅读器比较旧。也许在新的阅读器中是可以实现的?
或者兄台按照自己的建议,做一个词典示范一下?
3 Likes
mooned
9
新格式也需要修圖軟件廣泛支援格式導出方可。
敝人當下主要精力在古漢語論著的圖片詞典製作這塊,很自然會用到老馬套裝處理掃描影像,
但 ComicEnhancerPro
目前是不支援導出 webp
格式的,如果說再換用第三方軟件倒騰一遍,這也是麻煩事,不可能回回都增加額外工作。
楼主高屋建瓴,谈的都切中要害,但更期望能做一个或修改一个词典作为范本。
统一标准是不容易,但主要是缺少像楼主这样有思想有技术的人振臂一呼并耐心普及,当大家都尝到其中的好处,自然异议就少了
demo
14
支持楼主的建议,词典越规范维护就越方便。
本人在测试楼主升级 GoldenDict WebEngine 期间收集了350+词典,遇到最多的问题就是全局 CSS & JS 对其它词典的干扰。切换到 GoldenDict WebEngine 版后按F12打开开发者工具快且对 CSS & JS 支持好了,但也看到很多JS错误与资源加载失败错误。
看 GoldenDict 刚嵌入 jquery 3.6.0 时以为是它版本过高导致的JS兼容问题还向楼主误反馈过,经过对比测试发现兼容性反而更好了,因为好多词典中的JS用到了 jquery 但没有带上它。@xiaoyifang 目前我自用的版本已经屏蔽了noConflict并定义自己的 $别名,还在试用中。
词典中JS另一个常见问题是注册全局事件与用 innerHTML 修改词典内容,导致一些怪问题。比如:
《海•词(豪华版)》中的js会为img标签注册error事件并尝试重新加载,导致开发者工具中看到大量重复的404
《辞海第七版》中的JS会在 document.ready 后修改body.innerHTML 内容,导致很多词典点标签切换没反应
CSS干扰问题在测试期间遇到的也多,主要是不同词典释义内容标签的 class 值重叠,而一些词典带的CSS太全就干扰了。由于测试词典多加上CSS干扰导致查词典结果后半部分排版基本都是乱的,目前只能把常用的词典放前面,空了花点时间修改CSS解决。
最后一个遇到较多的问题就是词典HTML内容不规范,很多标签没有关闭,尤其是 div 标签没有关闭导致后面的词典被干扰了。
1 Like
如果阁下能把自己发现的问题归类共享,作为这个规约的技术细则,这个规约才可能落到实处
1 Like
上面的建议都很好,但因为楼主自己没制作过词典,所以看的角度会有局限。
一部词典通常制作者用着没什么问题才会考虑分享出来。所以你提的这些恰恰是制作者不需要关心的东西,因为制作者本地使用一切正常。至于不同客户端、不同词典、不同用户遇到了问题,用爱发电的制作者可以解决也可以不管。
一个没有办法用来盈利的东西,恐怕是不需要规约,实际上也很难搞出一个规约来让别人遵守。一旦有利可图,即便没有规约制作者也会精益求精,更新修复层出不穷,参考隔壁某些作品 
2 Likes
我提个引子,大家可以共同完善、补充。作为目标,不作为即刻实现的要求。
我觉得与其称作【规约】,不如叫【参考建议】比较好,楼主提出的问题是制作词典会遇到比较通用的问题。
你说的没问题,我们当然不可能强迫用爱发电的人遵守什么,但是这些人其中总会有乐于修复兼容性问题的,所以这个帖子能够做的就是帮助这些人定位这些问题,了解问题的来源并且去解决。