我测试使用的 goldendict 版本是 1.5.0-RC2+git, 没有出现任何错误.
- 我用的是這個版本:
- 換用
nonwill
發佈的GoldenDict++
正常匹配,看來是GoldenDict
的版本問題。
这是下载的什么?
由于是萌新 ,所以在这里问一下 是否词典mdx文件是由 txt文件打包制作成功,而txt文件所有的单词 释义都是用html写的。 我刚刚尝试解开了一个md ,发现340多万单词全部是html写的。
作者是否考虑加个打包成macOS Dictionary格式 ,我自己常用mac自带的词典。这个需求在隔壁网站应该也不少 占小部分人数
是的。而且这个txt文件的内容是HTML+CSS格式的。
基础知识见 【教学】三、MDX MDD 基础知识 - 技术交流与词典编修 - FreeMdict Forum
MDX的编译和反编译工具大多数是WIN平台的。如果是在MacOS平台,需要安装python包(如mdict-utils)。
macOS Dictionary格式应该也不是公开的,估计转换起来有点麻烦,没看到有现成的工具。
最简单的解决方案:使用MacOS平台支持mdx的软件
macOS Dictionary格式不公开,转换比较麻烦。有网友转换过,不过只能StarDict 词库使用DictUnifier 转换。不过成功的在少数,有时候转换过程一直在加载,加载2天还是这样,出现的问题比较多 。比较希望楼主支持一下转换Dictionary格式
好的, 加入支持计划中. 刚刚搜了以下, mac 词典格式也是不开源的
欸 楼主还在 你已经两个月没有新提交了
最近工作有点忙
感谢楼主, 精神支持你!!
劳逸结合!!
MDX 转换为 mac 词典的功能已经在 wikit v0.2.0 实现, 初此之外还支持直接从 MDX 源文件(文本文件)转换为 mac 词典, 经我测试在 mac bigsur 上可用, 其他功能比如内部跳转暂时还不支持, 这个后续有精力再完善. 需要注意的是, 转换为 mac 词典的功能只支持在 mac 上使用, 因为用到了 mac 平台的词典开发套件.
问下怎么指定词典名称和描述信息?
我用这个命令创建的: wikit dict 1.txt --output test.mdx --create
名称默认是 A generic MDX dictionary
描述默认是 Just for fun
这些目前可以修改吗?
试了下 MDX 换 mac 词典
wikit dict --create RHWDAE.mdx --output RHWDAE.dictionary
,测试的这个MDX:
报了一个错:
parser error : Opening and ending tag mismatch: link line 6 and d:entry </d:entry>
可以修改的, 可以通过 --meta
参数指定配置文件, 具体参考项目首页文档说明.
因为 mac 词典开发套件使用的是 XHTML, 也就是更严格的 HTML 标准, 这里的问题是 link 标签, 在 html 中 link 标签是可以不封闭的, 也就是说下面的写法是正确的
<link rel="stylesheet" href="rhwdae.css">
但是 XHTML 要求任何标签都必须是封闭的, 因此要写成
<link rel="stylesheet" href="rhwdae.css" />
这里本质的问题是如何将 html 标准化为 xhtml, 目前还没有标准的第三库来处理这个问题(或许后续我自己写一个), 只能遇到一个解决一个了.
版本 wikit v0.2.1 已解决 link 标签问题, 自测命令
wikit dict --create --css rhwdae.css --output RHWDAE.dictionary RHWDAE.mdx
生成的词典在 mac 词典应用中效果如下
另外我还测试了麦克米伦高阶英汉双解词典,效果如下
刚试了下,可以生成了。不过好像 .dictionary 没有自动拷贝到相应目录下面。
手动拷贝过去以后,可以了。
不过貌似有个bug,几秒后 Dictionary.app 会崩溃… 不知道为啥
我的系统是 macOS 11.5.2
可以了。不过又遇到个问题,就是生成的mdx文件不可以通过 mdict-utils 解压mdx到txt了。
又试了下,用wikit解压没问题。
Try Brutal Force on Encrypted Key Blocks
— Elapsed time: 0.000798 seconds —
Traceback (most recent call last):
File “/Users/xxxx/Library/Python/3.9/lib/python/site-packages/mdict_utils/base/readmdict.py”, line 101, in init
self._key_list = self._read_keys()
File “/Users/xxxx/Library/Python/3.9/lib/python/site-packages/mdict_utils/base/readmdict.py”, line 350, in _read_keys
key_block_info_list = self._decode_key_block_info(key_block_info)
File “/Users/xxxx/Library/Python/3.9/lib/python/site-packages/mdict_utils/base/readmdict.py”, line 134, in _decode_key_block_info
assert(key_block_info_compressed[:4] == b’\x02\x00\x00\x00’)
AssertionErrorDuring handling of the above exception, another exception occurred:
Traceback (most recent call last):
File “/Users/xxxx/Library/Python/3.9/bin/mdict”, line 8, in
sys.exit(run())
File “/Users/xxxx/Library/Python/3.9/lib/python/site-packages/mdict_utils/main.py”, line 102, in run
reader.unpack(args.exdir, args.mdict, split=split, convert_chtml=args.convert_chtml)
File “/Users/xxxx/Library/Python/3.9/lib/python/site-packages/mdict_utils/reader.py”, line 157, in unpack
mdx = MDX(source, encoding, substyle, passcode)
File “/Users/xxxx/Library/Python/3.9/lib/python/site-packages/mdict_utils/base/readmdict.py”, line 505, in init
MDict.init(self, fname, encoding, passcode)
File “/Users/xxxx/Library/Python/3.9/lib/python/site-packages/mdict_utils/base/readmdict.py”, line 104, in init
self._key_list = self._read_keys_brutal()
File “/Users/xxxx/Library/Python/3.9/lib/python/site-packages/mdict_utils/base/readmdict.py”, line 382, in _read_keys_brutal
assert key_block_info[:4] == b’\x02\x00\x00\x00’
AssertionError