{"id":28547090,"url":"https://github.com/skywind3000/translator","last_synced_at":"2025-07-07T07:32:05.966Z","repository":{"id":43478889,"uuid":"191917161","full_name":"skywind3000/translator","owner":"skywind3000","description":"命令行聚合翻译工具，支持谷歌，必应，有道，百度，词霸，360","archived":false,"fork":false,"pushed_at":"2020-05-08T14:49:12.000Z","size":153,"stargazers_count":236,"open_issues_count":7,"forks_count":48,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-06-10T00:09:10.499Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/skywind3000.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-06-14T09:39:58.000Z","updated_at":"2025-04-29T09:30:46.000Z","dependencies_parsed_at":"2022-07-14T18:47:11.839Z","dependency_job_id":null,"html_url":"https://github.com/skywind3000/translator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/skywind3000/translator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skywind3000%2Ftranslator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skywind3000%2Ftranslator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skywind3000%2Ftranslator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skywind3000%2Ftranslator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/skywind3000","download_url":"https://codeload.github.com/skywind3000/translator/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/skywind3000%2Ftranslator/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264034559,"owners_count":23547233,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-10T00:09:18.083Z","updated_at":"2025-07-07T07:32:05.961Z","avatar_url":"https://github.com/skywind3000.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Translator\n\n命令行聚合翻译工具，支持谷歌，必应，有道，百度，词霸，360\n\n## Preface\n\n命令行翻译工具，可单独使用，可集成 Vim/Emacs，也可搭配 GoldenDict，之前用别人的命令行有道翻译，用着用着接口就挂了，网上找了两段百度翻译的代码，调试下发现接口已经过期。\n\n最终找到一个桌面软件：QTranslate，同时支持十大翻译引擎，这个挂了可以用那个，这个翻译的不好可以看另外一个。所以我打算模仿一下 QTranslate，在命令行下面写这么一个东西，目标是：\n\n- 支持代理：很多工具不支持代理，导致某些引擎就没法使用，所以代理是一等公民。\n- 多种引擎：初期支持：谷歌，必应，有道，百度，词霸，360，并且不断更新。\n- 同引擎多实现：官方接口（有的话），页面爬虫（如果官方接口要付费的话）。\n- 三种输出：纯文本，HTML（方便集成字典），xterm（终端色彩高亮）。\n- 可以方便的同 GoldenDict 等工具集成。\n\n## Screenshots\n\n### 命令行\n\n![](images/linux.png)\n\n### GoldenDict\n\n![](images/goldendict.png)\n\n同一个页面内同时集成多个翻译引擎，一次查询所有结果同时显示。\n\n## Requirements\n\nPython 3.5+ 以及 requests 库：\n\n```bash\npip install requests\n```\n\n想要支持代理的话，安装 requests 的 socks 包：\n\n```bash\npip install requests[socks]\n```\n\n\n## Configuration\n\n配置位于 `~/.config/translator/config.ini`，内容类似：\n\n```ini\n# 所有翻译引擎共享的公共设置，比如网络超时，代理设置\n[default]\ntimeout = 10\n\n# 谷歌翻译 （使用国内可以访问的地址）\n[google]\nhost = translate.google.cn\n\n# 必应翻译\n[bing]\nproxy = socks5://localhost:1080\n\n# 百度翻译：默认实现需要自行申请 apikey/secret\n[baidu]\napikey = xxxxx\nsecret = xxxxx\n\n# 百度：页面爬虫实现\n[baidu-web]\nxxx\n\n```\n\nWindows 下面的话，该文件位于：\n\n    C:\\Users\\你的用户名\\.config\\translator\n\n用记事本打开编辑即可。\n\n## Usage\n\n```bash\ntranslator.py [--engine=引擎名称] [--from=语言] [--to=语言] {文字}\n```\n\n测试：\n\n```bash\npython translator.py 吃饭了没有?\n```\n\n输出：\n\n```\nHave you eaten yet?\n\n-------------\nAlternatives\n- 吃饭了没有?\n  * Have you eaten yet?\n  * Eat yet?\n```\n\n测试：（有道引擎）\n\n```bash\npython translator.py --engine=youdao 吃饭了没有?\n```\n\n输出：\n\n```\nHave a meal not?\n---------\nhave you eaten yet\n```\n\n\n## Engines\n\n可以使用下面引擎\n\n| 引擎名称 | 说明 | 标准接口 | 国内直连 | 需要 Key 吗 | 免费 | 状态 |\n|---------|--------|--|--|--|--|--|\n| google | 谷歌 | Yes | Yes* | No | 免费 | 完成 |\n| azure | 微软 | Yes | Yes | **Yes** | 每月1万条内免费 | 完成 | \n| baidu | 百度 | Yes | Yes | **Yes** | 每月1万条内免费 | 完成 |\n| youdao | 有道 | No | Yes | No | 免费 | 完成 | \n| bingdict | 必应词典（只能中英） | Yes | Yes | No | 免费 | 完成 |\n| ciba | 词霸 | Yes | Yes | No | 免费 | 完成 |\n| sogou | 搜狗 | Yes | Yes | No | 免费 | TODO |\n| baiduweb | 百度 | No (爬虫) | Yes | No | 免费 | TODO |\n\n说明：\n\n- 微软 Azure 的翻译服务（必应），自己去 [Azure](https://portal.azure.com/) 申请一个免费 Key，每月 1 万次免费查询。\n- 需要 APIKEY 的 Azure/Baidu 虽然初次使用麻烦，但是是官方标准 API，稳定性上超过其他。\n- 谷歌翻译直接访问需要配置 config.ini 里的 host 或者代理。\n\n## Tips\n\n### 谷歌翻译的直接访问\n\n默认使用 `translate.googleapis.com` 有时国内不一定能够直连，所以国内可以设置：\n\n```ini\n[google]\nhost = translate.google.cn\n```\n\n来修改 API 地址，或者使用：\n\n```ini\n[google]\nproxy=socks5h://localhost:1080\n```\n\n来配置代理（如果你本机有的话），这里代理使用 `socks5h://` 的开头，这是 python requests 包里面的语法格式，多了一个 `h` 意思是域名也送给代理解析，本地不解析域名。\n\n### 密钥申请\n\n- Azure：用微软账户开通 [Azure](https://portal.azure.com)，然后添加 Microsoft Translator 服务，然后得到免费 KEY，不会可以看 [教程](https://ordasoft.com/News/SEF-Translate-Documentation/how-to-get-bing-translate-api.html)。\n- 百度：到 [百度翻译开放平台](http://api.fanyi.baidu.com/api/trans/product/index)，申请开通。\n\n### 词典集成\n\n要集成 GoldenDict，先在命令行下测试 Python 可以顺利运行该脚本，然后设置你的词典：\n\n![](images/setup.png)\n\n按 F3 打开词典设置，然后点 “程序”，选择 “纯文本”，后面是名字和运行命令,假设你的 Python 安装在 C:\\python37 而脚本在 D:\\Github\\translator，那么命令为：\n\n    C:\\python37\\python d:\\Github\\translator\\translator.py --engine=azure \"%GDWORD%\"\n\n注意 `%GDWORD%` 需要用双引号引起来，这样的话词组不会出错。\n\n最后是图标路径（图标请自己下载），你想要同时展示多少个翻译引擎就参考上面，配置多少行 `--engine=` 不同的命令即可。\n\n\n## Credit\n\n逐步完善添加\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskywind3000%2Ftranslator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskywind3000%2Ftranslator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskywind3000%2Ftranslator/lists"}