[教程] 搜狗翻译 API 如何进行多行翻译

用 \n + encodeURIComponent 就行

[教程] 搜狗翻译 API 如何进行多行翻译

搜狗翻译 API 指的是"搜狗深智引擎"

这篇文章讲什么

如何使用搜狗翻译 API 进行多行翻译

为什么写这篇文章?

难道官方文档没说吗?
是,还真没说。
官方文档只写了:

在同一页面内搜"换行","多行",或者在谷歌上进行搜索。都找不到。
搜狗官方文档截止至2019年12月27号,只字未提怎么多行翻译。

废话不多直接说结论和代码,无聊的过程放到最后

结论

使用 \n 即可,证明:

代码

以下是我能用的完整代码, sogou.js


var md5 = require('md5');
const axios = require('axios');

function api(query, source_langauge, target_language) {
  var url = "http://fanyi.sogou.com:80/reventondc/api/sogouTranslate"

  let pid = '自己填'
  let key = '自己填'

  var salt = Math.floor(Date.now() / 1000);
  var q = query
  var sign = md5(pid + q + salt + key)
  var from = source_langauge
  var to = target_language
  var payload = "from=" + from + "&to=" + to + "&pid=" + pid + "&q=" + encodeURIComponent(q) + "&sign=" + sign + "&salt=" + salt

  return axios({
    method: 'post',
    url,
    timeout: 5000,
    headers: {
      'Accept': 'application/json',
      'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
      "Cache-Control": "no-cache", // 避免 Chrome 把请求 Stalled 20 秒
    },
    data: payload
  }).then(response => {
    return response.data
  })
}

exports.api = api

注意,一定要用 encodeURIComponent,不能用 encodeURI
因为像是 & 这样的符号,encodeURI 不会编码,而 encodeURIComponent 会编码

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/encodeURI

如果用 encodeURI 会在个别情况下出现问题:

上面这样 & 的符号会造成签名错误问题

全文完

感谢阅读