先说一个血淋淋的结果,这个小功能其实在github已经有大佬帮我们封装好了,我也是自己刚倒腾好之后才发现的,所以如果只是需要这个功能的朋友可以直接移步这个项目:https://github.com/kenshinji/yddict,自己电脑安装一个NodeJS就可以
。安装指令:npm install yddict -g
目的:在window电脑不用安装任何变成语言的运行环境就能实现在cmd命令行通过自定义命令键入
yd 翻译文本
能够得到翻译的信息(我这里使用的是有道翻译API,其他API也大体一致,只是几个参数可能需要改个名字)
1. 前往有道官网先开通个人翻译的API
官网地址:https://ai.youdao.com/console/#/
因为我们是CMD控制台,文字翻译居多,所以我们选择文本翻译即可
如果是第一次创建还需要填写个人身份证的相关信息,填写完很快就能审核通过
2. 书写PowerShell脚本
新建一个powershell脚本,命名为 yd.ps1
,这个文件可以完全不用修改,直接拷过去就好了
using namespace System.Security.Cryptography
using namespace System.Textparam( [string]$appKey,[string]$appSecret,[string]$fromLang,[string]$toLang,[string]$query,[string]$signType
)# 加密盐值使用uuid
$salt = [System.Guid]::NewGuid().ToString() # 获取当前系统时间戳(秒)
$utcNow = (Get-Date).ToUniversalTime()
$curtime = ([DateTimeOffset]::new($utcNow).ToUnixTimeSeconds())# 加密签名:sha256(应用ID+input+salt+curtime+应用密钥)
$signBefore = $appKey + $query + $salt + $curtime + $appSecret
$byteArray = [Text.Encoding]::UTF8.GetBytes($signBefore)
$sha256 = [System.Security.Cryptography.SHA256]::Create()
$hashBytes = $sha256.ComputeHash($byteArray)
$sign = [BitConverter]::ToString($hashBytes).Replace("-", "").ToLowerInvariant() # 有道翻译API的URL(这只是一个示例,请替换为实际的URL)
$url = "https://openapi.youdao.com/api?appKey=$appKey&q=$query&from=$fromLang&to=$toLang&salt=$salt&sign=$sign&signType=$signType&curtime=$curtime"# 发送HTTP GET请求
$response = Invoke-WebRequest -Uri ($url)# 解析JSON响应并获取翻译结果(这取决于有道翻译API的实际响应结构)
$json = $response.Content | ConvertFrom-Json
$translation = $json.translation[0]# 输出翻译结果
Write-Output " ========================================"
Write-Output " "
Write-Output " $translation"
Write-Output " "
Write-Output " ========================================"
3. 书写一个bat批处理文件来调用powershell脚本
再新建一个文件,命名为 yd.bat
,文件内容的 APP_KEY、APP_SECRET需要修改成步骤1中自己申请的翻译API信息。
@echo off
@setlocal:: 有道翻译的应用ID【改成自己的】
@set APP_KEY=自己的应用ID
:: 有道翻译的应用密钥【改成自己的】
@set APP_SECRET=自己的应用密钥
@set FROM_LANG=auto
@set TO_LANG=auto
@set QUERY=%1
@set SIGNTYPE=v3:: 调用PowerShell脚本进行翻译(这里需要全路径,因为windows文件夹有权限控制,需要通过全路径才能访问到,如果windows文件夹路径和我的不一致,这里需要修改)
@powershell -ExecutionPolicy Bypass -File "C:\Windows\System32\yd.ps1" -appKey %APP_KEY% -fromLang %FROM_LANG% -toLang %TO_LANG% -query "%QUERY%" -signType "%SIGNTYPE%" -appSecret "%APP_SECRET%"@endlocal
4. 文件位置
将步骤2和步骤3的两个文件拷贝到window系统路径:C:\Windows\System32
下,在这个路径下的批处理文件可以在cmd里直接输入文件名运行。
这样我们就可以通过 yd命令快速的翻译文本啦