Mdx排序转换工具

之前做的词典遇到排序问题比较麻烦,我一个个手动改也很费劲,所以决定做个转换工具,有需要的可以自行转换,下面是使用说明:

MDict Sort Converter

当前版本:1.1.1

用于在两种 MDX key 物理排序之间转换词典:

  • mdict-utils:对完整 Unicode 字符执行 lower() 后应用 StripKey。适合深蓝词典。
  • MdxBuilder:只折叠 ASCII A-Z,重音大写字母保持不变,再应用 StripKey。与 MdxBuilder 3.0 RC1 一致,适合 MDict 和 DictTango。

转换只改变 key block 的物理顺序,不改变 key 的原始拼写、正文内容或同名记录的先后顺序。

图形界面

直接双击 MDictSortConverter.exe,或不带参数运行:

MDictSortConverter.exe

可反复添加多个 .mdx、MDict 源 .txt 或目录。“添加目录”旁的“包含子目录”勾选框决定随后添加的目录是否递归扫描,列表的“扫描范围”列会保留每个目录添加时的选择。界面还可选择排序方式、输出目录、文件名后缀、是否保持原目录结构、是否覆盖以及是否复制同名 MDD/CSS/PNG。

命令行

MDictSortConverter.exe dictionary.mdx --style mdict-utils
MDictSortConverter.exe dictionary.txt --style mdxbuilder
MDictSortConverter.exe a.mdx b.mdx dictionaries --style mdxbuilder --output-dir converted
MDictSortConverter.exe dictionaries --no-recursive --flatten --output-dir converted
MDictSortConverter.exe dictionary.mdx --style mdict-utils --in-place

常用参数:

--style mdict-utils|mdxbuilder
--output-dir DIR
--suffix TEXT
--overwrite
--in-place
--no-recursive
--preserve-structure
--flatten
--copy-resources
--source-encoding UTF-8|UTF-16|GBK|BIG5

默认不会覆盖源文件。指定输出目录时,默认按每个输入目录的相对路径保持原始层级;--flatten 可将结果平铺到输出目录,若产生重名会在转换前报告冲突。输出后缀分别为 _mdict_utils_mdxbuilder--in-place 会原子替换输入 MDX,应仅在已有备份时使用。

TXT 输入采用标准 MDict 文本结构:第一行为 key,随后是正文,以单独一行 </> 结束记录。输出统一为未加密的 UTF-8 MDX 2.0。已有 MDX 的 Title、Description、重复 key 和正文会保留;其他厂商私有头字段与原加密方式不会原样复制。

MDictSortConverter.zip (12.7 MB)

话说没有什么排序是都适应的么,从pda还是本站下载的之前的西语词典貌似都没有出现过某些词条只能在深蓝/DicTango某一平台搜索到这种问题,按说正常就应该是全适应吧

看有没有大写词条,如果都是小写应该不会触发这个问题

文本大、词条多的情况,是否适应?我发现 mdxbuilder 3.0 是32位的,文本大、词条多的情况下有点吃力,有时候报错退出。64位的 4.0版本倒是没问题了,但排序方式与 3.0不一样,排序选项也没有说明,无从修改。

我没测试过文本特别大的情况,如果你有数据可以试试

像之前这两个学习词典之所以很多词只能深蓝搜索到,是不是就是因为开头有一堆Conjugación还有一堆括号开头的词汇,如果是的话不知道能不能通过在开头加汉字,比如附录,或者变位的方式规避适配性问题呢


另外,pda有个西语版的简明大英百科,我看这个辞典不仅有一堆大写字母开头的,而且还是一大堆,动不动上面小写下面开头大写的,这个却也深蓝,DictTango都没问题