js Google 翻译 Api

js 前端 Google 翻译 Api

引入文件

// src/libs/google-translate/index.js

var querystring = require("querystring");

var axios = require("axios");

var languages = require("./languages");

function translate(text, opts) {
  opts = opts || {};

  var e;
  [opts.from, opts.to].forEach(function (lang) {
    if (lang && !languages.isSupported(lang)) {
      e = new Error();
      e.code = 400;
      e.message = "The language '" + lang + "' is not supported";
    }
  });
  if (e) {
    return new Promise(function (resolve, reject) {
      reject(e);
    });
  }

  opts.from = opts.from || "auto";
  opts.to = opts.to || "en";

  opts.from = languages.getCode(opts.from);
  opts.to = languages.getCode(opts.to);

  // 完整的地址是 http://translate.google.com/translate_a/single
  // 如果是浏览器端发出的请求可以让后端配置代理
  let url = "/translate_a/single";
  const data = {
    client: "gtx",
    dt: "t",
    dj: 1,
    ie: "UTF-8",
    sl: opts.from,
    tl: opts.to,
    q: text,
  };
  url = `${url}?${querystring.stringify(data)}`;
  return axios
    .get(url)
    .then(function (res) {
      const { sentences } = res.data;
      let result = {};
      if (sentences && sentences[0]) {
        const { trans, orig } = sentences[0];
        result = { trans, orig };
      }
      return result;
    })
    .catch(function (err) {
      console.log("err", err);
      var e = new Error();
      if (err.statusCode !== undefined && err.statusCode !== 200) {
        e.code = "BAD_REQUEST";
      } else {
        e.code = "BAD_NETWORK";
      }
      throw e;
    });
}

module.exports = translate;
module.exports.languages = languages;

// src/libs/google-translate/languages.js

/**
 *
 * Generated from https://translate.google.com
 *
 * The languages that Google Translate supports (as of 5/15/16) alongside with their ISO 639-1 codes
 * See https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
 */

var langs = {
  auto: "Automatic",
  af: "Afrikaans",
  sq: "Albanian",
  am: "Amharic",
  ar: "Arabic",
  hy: "Armenian",
  az: "Azerbaijani",
  eu: "Basque",
  be: "Belarusian",
  bn: "Bengali",
  bs: "Bosnian",
  bg: "Bulgarian",
  ca: "Catalan",
  ceb: "Cebuano",
  ny: "Chichewa",
  "zh-cn": "Chinese Simplified",
  "zh-tw": "Chinese Traditional",
  co: "Corsican",
  hr: "Croatian",
  cs: "Czech",
  da: "Danish",
  nl: "Dutch",
  en: "English",
  eo: "Esperanto",
  et: "Estonian",
  tl: "Filipino",
  fi: "Finnish",
  fr: "French",
  fy: "Frisian",
  gl: "Galician",
  ka: "Georgian",
  de: "German",
  el: "Greek",
  gu: "Gujarati",
  ht: "Haitian Creole",
  ha: "Hausa",
  haw: "Hawaiian",
  iw: "Hebrew",
  hi: "Hindi",
  hmn: "Hmong",
  hu: "Hungarian",
  is: "Icelandic",
  ig: "Igbo",
  id: "Indonesian",
  ga: "Irish",
  it: "Italian",
  ja: "Japanese",
  jw: "Javanese",
  kn: "Kannada",
  kk: "Kazakh",
  km: "Khmer",
  ko: "Korean",
  ku: "Kurdish (Kurmanji)",
  ky: "Kyrgyz",
  lo: "Lao",
  la: "Latin",
  lv: "Latvian",
  lt: "Lithuanian",
  lb: "Luxembourgish",
  mk: "Macedonian",
  mg: "Malagasy",
  ms: "Malay",
  ml: "Malayalam",
  mt: "Maltese",
  mi: "Maori",
  mr: "Marathi",
  mn: "Mongolian",
  my: "Myanmar (Burmese)",
  ne: "Nepali",
  no: "Norwegian",
  ps: "Pashto",
  fa: "Persian",
  pl: "Polish",
  pt: "Portuguese",
  ma: "Punjabi",
  ro: "Romanian",
  ru: "Russian",
  sm: "Samoan",
  gd: "Scots Gaelic",
  sr: "Serbian",
  st: "Sesotho",
  sn: "Shona",
  sd: "Sindhi",
  si: "Sinhala",
  sk: "Slovak",
  sl: "Slovenian",
  so: "Somali",
  es: "Spanish",
  su: "Sundanese",
  sw: "Swahili",
  sv: "Swedish",
  tg: "Tajik",
  ta: "Tamil",
  te: "Telugu",
  th: "Thai",
  tr: "Turkish",
  uk: "Ukrainian",
  ur: "Urdu",
  uz: "Uzbek",
  vi: "Vietnamese",
  cy: "Welsh",
  xh: "Xhosa",
  yi: "Yiddish",
  yo: "Yoruba",
  zu: "Zulu",
};

/**
 * Returns the ISO 639-1 code of the desiredLang – if it is supported by Google Translate
 * @param {string} desiredLang – the name or the code of the desired language
 * @returns {string|boolean} The ISO 639-1 code of the language or false if the language is not supported
 */
function getCode(desiredLang) {
  if (!desiredLang) {
    return false;
  }
  desiredLang = desiredLang.toLowerCase();

  if (langs[desiredLang]) {
    return desiredLang;
  }

  var keys = Object.keys(langs).filter(function (key) {
    if (typeof langs[key] !== "string") {
      return false;
    }

    return langs[key].toLowerCase() === desiredLang;
  });

  return keys[0] || false;
}

/**
 * Returns true if the desiredLang is supported by Google Translate and false otherwise
 * @param desiredLang – the ISO 639-1 code or the name of the desired language
 * @returns {boolean}
 */
function isSupported(desiredLang) {
  return Boolean(getCode(desiredLang));
}

module.exports = langs;
module.exports.isSupported = isSupported;
module.exports.getCode = getCode;

使用

  • 浏览器端发出的请求可以让后端配置代理
const translate = require("@/libs/google-translate");

translate(this.original, { from: "en", to: this.targetLang })
  .then((res) => {})
  .catch((err) => {})
  .finally(() => {});
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
uniapp是一款基于Vue.js开发的跨平台应用框架,可以用于开发同时运行在多个平台(如iOS、Android、H5等)的应用程序。uniapp提供了一系列的API供开发者使用,其中也包括了翻译API。 uniapp并没有内置翻译API,但你可以通过调用第三方的翻译API来实现翻译功能。常用的翻译API有百度翻译API、谷歌翻译API等。你可以根据自己的需求选择合适的翻译API,并在uniapp中进行调用。 以下是一个使用百度翻译API进行翻译的示例代码: ```vue <template> <view> <input v-model="text" placeholder="请输入要翻译的文本" /> <button @click="translate">翻译</button> <view>{{ result }}</view> </view> </template> <script> export default { data() { return { text: '', result: '' } }, methods: { translate() { // 调用百度翻译API进行翻译 uni.request({ url: 'https://fanyi-api.baidu.com/api/trans/vip/translate', method: 'GET', data: { q: this.text, from: 'auto', to: 'zh', appid: 'your_appid', salt: 'your_salt', sign: 'your_sign' }, success: (res) => { if (res.data && res.data.trans_result) { this.result = res.data.trans_result[0].dst } }, fail: (err) => { console.error(err) } }) } } } </script> ``` 上述代码中,我们通过调用百度翻译API实现了将输入的文本进行翻译,并将翻译结果显示在页面上。 需要注意的是,使用翻译API需要先申请相应的API密钥,并按照API文档进行配置。具体的API调用方式和参数设置可以参考对应翻译API的官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值