2017年11月

事情是这样的。

我在这里 EPWING for the classics 发现了质量非常好的拉丁语古希腊语辞典文件,所有变形都能查到,非常方便,不过只能用于 EB 系列。

欣闻 GoldenDict 的 Windows 版支持此格式,然试用后发现外字(GAIJI)处理很成问题,不能 Unicode 化,非常难看,且不能复制。

联想到上次经历(伟大献礼(误)致 GoldenDict 德语辞典用户),意识到可以调用 EBWin4 的命令行模式,同样地处理编码问题后,于是有如下。

import sys
import os

# Version 1.0
# 需要配合 EBWin4 使用,词典分组需要设置好


def output(o):
    fullstr = '<meta charset="utf-8">'
    for l in o:
        fullstr += l
    # print(fullstr)
    sys.stdout.buffer.write(fullstr.encode('utf-8'))


s = sys.argv[1].strip()
# s = "organon"

result = os.popen(
    '"C:\Program Files (x86)\EBWin4\ebwinc.exe" /G=KL /C=1 /O=h ' + s).readlines()
output(result)

希望使用者可以在词典列表中设置执行此程序,注意输入正确的参数。

本程序使用 MIT License,不对其功能作任何担保。

CHANGE LOG

18.11.2017 v1.01: 强行指定编码,防止 GBK 破坏。

痛点破坏!

一言不合:

import sys

# Version: 1.01
# 需要配合 GoldenDict 中拼写检查功能使用

def output(o):
    fullstr = '<meta charset="utf-8"><a href="' + o + '">' + o + '</a>'
    # print(fullstr)
    sys.stdout.buffer.write(fullstr.encode('utf-8'))

s = sys.argv[1].strip().split(' ')

# Er sieht gern fern.
if len(s) > 2:
    output(s[-1] + ' ' + s[0])

# Er braucht nicht fernzusehen.
if len(s) == 1 and 'zu' in s[0]:
    w = s[0]
    pos = w.find('zu')
    if pos > 1 and w[-1] == 'n':
        output(w[:pos] + w[pos+2:])

sys.exit(0)

其实中间需要多点一步,然而这已经算不得什么了。

本程序旨在提升划词搜索的体验。

希望使用者可以在词典列表中设置执行此程序,注意输入正确的参数。

判断条件十分粗糙不耐用,极大概率出错,故不能完全依赖之。

本程序使用 MIT License,不对其功能作任何担保。

已知问题:

»Man sieht fern.« 这种中间没有被其他词间隔开的无法在程序中处理,因与 GoldenDict 自身判断机制冲突。似乎只要程序有输出,额外的联想就不会进行。征求优雅的解决方案。