写一个bash脚本调用百度翻译API进行中文到英文的翻译,首先需要进行相关的申请。看百度给出的文档链接: 百度翻译API文档
需要先注册一个百度账号,然后申请APPID。脚本中会用到appid和key这两个值。按照文档给出的提示可以获得。如下是脚本:
#! /bin/bash
function printRedMessage {
if [ $# -eq 0 ]; then
return
fi
echo -e "\e[31m$1\e[0m"
}
function printGreenMessage {
if [ $# -eq 0 ]; then
return
fi
echo -e "\e[32m$1\e[0m"
}
if [ $# -eq 0 ]; then
printRedMessage "请输入需要翻译的中文内容."
exit 1
elif [ $# -gt 1 ]; then
printRedMessage "参数太多, 只支持一个参数."
exit 2
fi
str="$1"
rand_val=$RANDOM
app_id="XXXXXXXXXX"
key="XXXXXXXXXXXX"
fanyi_url="https://fanyi-api.baidu.com/api/trans/vip/translate"
sign=$(echo -ne "$app_id$str$rand_val$key" | md5sum | grep -oP "^\w+")
result=$(curl --silent --insecure --request POST "$fanyi_url" \
--form "q=$str" \
--form "from=auto" \
--form "to=en" \
--form "appid=$app_id" \
--form "salt=$rand_val" \
--form "sign=$sign")
# 格式化输出结果
echo "$result" | jq
需要把脚本中对应的appid和key这两个变量替换成自己申请的appid和key值。
以本人的ubuntu环境为例,因为脚本中使用了curl和jq这两个命令,系统中可能没有安装,
使用 sudo apt install curl jq 安装一下,下面是测试脚本的运行效果:
输出结果是一个json字符串,其中的"dst"字段就是百度翻译给出的结果。
下面是返回的json:
{
"from": "zh",
"to": "en",
"trans_result": [
{
"src": "脚本调用百度翻译API,测试翻译效果如何",
"dst": "Script calls Baidu Translate API to test the translation effect"
}
]
}
再测试一个翻译:
下面是返回的json:
{
"from": "zh",
"to": "en",
"trans_result": [
{
"src": "是骡子是马拉出来遛遛, 看看百度翻译API的能力到底如何",
"dst": "Is it a mule or a horse pulled out for a walk? Let's see how good Baidu Translate API is"
}
]
}