如何从LanguageApp.translate返回自动检测的语言?

时间:2019-07-17 13:00:40

标签: google-apps-script google-translate google-translation-api

我想制作一个将文本翻译成英语(无论输入哪种语言)的应用程序。翻译工作已经很好,但是现在我试图检测输入的语言,而且我不知道如何从LanguageApp.translate获取检测到的语言。

我尝试使用google API,但由于它是付费的,我需要一个免费的意见,因为这是一个仅对我而言非商业用途的小项目。

var translatedText = LanguageApp.translate(sourceText, sourceLang, targetLang, {contentType: 'html'});

return ContentService.createTextOutput(translatedText).setMimeType(ContentService.MimeType.JSON);
指定了

sourceText和targetLang(目标语言)。 sourceLang是“”(空),因此Google翻译会自动检测到它。

我想将检测到的语言添加到返回的字符串中。例如,如果我输入“ bonjur”,它将返回“ hellofr”,fr代表法语。

2 个答案:

答案 0 :(得分:0)

如果您分析手动获取的翻译请求的响应,例如

var response = UrlFetchApp.fetch('https://translate.google.com/#view=home&op=translate&sl=auto&tl=en&text=pantalla');  
  Logger.log(response.getAllHeaders())

您将看到响应中不包含有关检测到的源语言的任何详细信息。 Google必须使用附加的API在服务器端进行处理。因此,很遗憾,您无法使用Apps脚本中的LanguageApp功能来检索自动检测到的语言。

作为一种解决方法,除了使用LanguageApp进行翻译外,建议您在Apps脚本中调用外部语言检测API。

答案 1 :(得分:0)

您可以使用外部api,例如detectlanguage.com。 他们的免费帐户每天提供1000个请求。

tree

现在在您的代码中使用此

// Get your APIkey at https://www.detectlanguage.com
// Replace it in 'yourApiKeyHere'
function detectLanguage(text) {
  var payload = {
    "q": text
  };

  var options = {
    "method"  : "post",
    "payload" : payload,
    "headers" : {
      "Authorization" : "Bearer " + yourApiKeyHere
    }
  };

  var url        = "https://ws.detectlanguage.com/0.2/detect";   
  var response   = UrlFetchApp.fetch(url, options);   

  Logger.log(response.getContentText());
  // response: {"data":{"detections":[{"language":"nl","isReliable":true,"confidence":11}]}}
  return JSON.parse(response.getContentText()).data.detections[0].language;
}