bdtrans 一个命令行下的机器翻译工具
现如今,机器翻译技术已经越来越成熟了,尽管从整体来看机器翻译的结果还不是特别如意,但是也足以应付一般的翻译需求了。近几年机器翻译平台层出不穷,国外比较出名的翻译平台有Google翻译、必应翻译等,国内比较出名的也有百度翻译、有道翻译等。
中国的百度公司在人工智能层面做的还算是蛮不错的(虽然它的搜索一直以来为人所诟病),笔者经常在Linux下做一些工作,当有翻译需求时不得不打开浏览器,进入百度翻译官网去翻译一些句子,这样显然是有些麻烦,我想如果百度翻译肯提供一个API的话就好了,这样我就能做一个在终端下调用API的小工具。
笔者尝试登录百度翻译的开发者平台,发现百度翻译果然提供了API,于是笔者便用Python脚本语言写了一个命令行下的调用百度翻译工具,将其命名为 bdtrans
虽然笔者是在Linux下写的这个工具,但是其它平台也是支持的(前提是你的计算机上安装了一个python3的解释器),它所依赖的第三方包只有setuptools与prompt_toolkit.
你可以将其当作一个pyhton包,在自己的脚本文件中导入并使用它,或者在python解释器中使用它,也可以将其完全当作一个命令行下的小工具,甚至启动交互式的翻译环境交互式翻译句子,它也支持从文件中读取翻译内容,并将翻译结果存储进文件中去,下面笔者简要介绍一下工具的使用。
安装
你可以使用Python包管理工具来安装它: pip install bdtrans
你也可以下载源码包,解压后运行安装文件: python setup.py insatll
Github开源地址:https://github.com/zsimline/bdtrans
使用方式
首先,你应该去百度翻译的官网上注册一个账户,并按照官网上的指导并申请一个百度翻译API的AppID与秘钥。
当你首次尝试导入bdtrans包,或者在命令行工具下使用它时,它将会指引你输AppID、秘钥、默认的翻译规则等信息,并在输入完成后在你的用户目录下生成一个名为.bdtrans的配置文件,之后你就可以直接使用它而无需再次输入AppID等相关信息了。
需要注意的是,百度翻译限制调用API的频率为1s/次,所以请不要在1s内调用多次API
模块函数
trans(words, source_lang=None, target_lang=None, reverse=False)
作用:翻译用户给定的句子,输出翻译结果
| 参数 | 含义 |
|---|---|
| words | 你想要翻译的句子 |
| source_lang | 源语言代码(非必须) |
| target_lang | 目标语言代码(非必须) |
| reverse | 是否反转源语言与目标语言 |
>>> import bdtrans >>> bdtrans.trans('Hello, boy!','en','zh') >>> 你好,男孩!
io_trans(input_file, output_file=None, quiet=False)
作用:从文件中读取翻译内容,如果指定了输出文件,翻译结果将被存储到输出文件中
| 参数 | 含义 |
|---|---|
| input_file | 输入的文件名 |
| output_file | 输出的文件名 |
| quiet | 是否关闭控制台输出 |
set_lang(source_lang, target_lang)
作用:设置源语言代码与目标语言代码
| 参数 | 含义 |
|---|---|
| source_lang | 源语言代码 |
| target_lang | 目标语言代码 |
save(file_name)
作用:保存翻译结果到文件中
| 参数 | 含义 |
|---|---|
| file_name | 保存的文件名 |
reverse_lang()
作用:反转源语言与目标语言
list_langs()
作用:打印目前支持的语言列表
display_rules
作用:显示当前的语言翻译规则
change_appid()
作用:按照向导改变配置文件中的AppID
change_lang()
作用:按照向导改变配置文件中的默认翻译规则
initialize_app()
作用:按照向导初始化APP
命令行工具
可以直接在命令行下使用它,最重要的是你可以使用 “bdtrans -S” 进入交互式的翻译环境。
bdtrans [选项] 待翻译文本
选项
| 选项 | 含义 |
|---|---|
| -h, –help | 显示帮助消息 |
| -v, –version | 显示程序版本 |
| -l, –list | 打印语言列表 |
| -S, –shell | 启动交互式翻译环境 |
| -s code, –source code | 指定源语言 |
| -t code, –target code | 指定目标语言 |
| -i filename, –input filename | 指定输入文件 |
| -o filename, –output filename | 指定输出文件 |
| –init | 按照向导初始化APP |
| –changeinfo | 改变配置文件中的AppID |
| –changelang | 改变配置文件中的翻译规则 |
交互环境下的选项
| 选项 | 含义 |
|---|---|
| /reve | 反转源语言与目标语言 |
| /rule | 显示当前的翻译规则 |
| /list | 打印支持的语言列表 |
| /help | 显示帮助信息 |
| /quit | 退出交互环境 |
| /save filename | 保存翻译结果 |
| /setlang source_lang target_lang | 设置源语言与目标语言 |
user@host:$ bdtrans 德玛西亚万岁 user@host:$ Long live Demasia user@host:$ bdtrans -t ara 德玛西亚万岁 user@host:$ فيفا دي مارسيا user@host:$ bdtrans -s zh 德玛西亚万岁 user@host:$ 不可以只指定源语言!
在交互环境下可以使用 =code 来临时的指定目标语言,此时源语言将自动的被指定为auto, 例如 ” =zh hello world ”
>=th 你在地球嗑瓜子 คุณใช้เมล็ดแตงโมบนโลก >=jp 我在月球吃西瓜 月でスイカを食べます
支持的语言列表
| 语言代码 | 语言 |
|---|---|
| zh | 中文 |
| en | 英语 |
| yue | 粤语 |
| wyw | 文言文 |
| jp | 日语 |
| kor | 韩语 |
| fra | 法语 |
| spa | 西班牙语 |
| th | 泰语 |
| ara | 阿拉伯语 |
| ru | 俄语 |
| pt | 葡萄牙语 |
| de | 德语 |
| it | 意大利语 |
| el | 希腊语 |
| nl | 荷兰语 |
| pl | 波兰语 |
| bul | 保加利亚语 |
| est | 爱沙尼亚语 |
| dan | 丹麦语 |
| fin | 芬兰语 |
| cs | 捷克语 |
| rom | 罗马尼亚语 |
| slo | 斯洛文尼亚语 |
| swe | 瑞典语 |
| hu | 匈牙利语 |
| cht | 繁体中文 |
| vie | 越南语 |
| auto | 自动检测 |

浙公网安备 33010602011771号