【问题标题】:How to return the auto detected language from LanguageApp.translate?如何从 LanguageApp.translate 返回自动检测到的语言?
【发布时间】:2019-11-26 07:46:50
【问题描述】:

我想做一个将文本翻译成英文的应用程序(无论输入哪种语言)。翻译已经运行良好,但现在我正在尝试检测输入的语言,但我不知道如何从 LanguageApp.translate 获取检测到的语言。

我尝试使用 google API,但由于它是付费的,我需要一个免费的意见,因为它是一个只适合我的小项目,非商业性的。

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

return ContentService.createTextOutput(translatedText).setMimeType(ContentService.MimeType.JSON);

sourceText 和 targetLang(目标语言)被指定。 sourceLang 是“”(空),所以谷歌翻译会自动检测到它。

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

【问题讨论】:

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


    【解决方案1】:

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

    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 Script 中调用外部语言检测 API。

    【讨论】:

    • 你知道任何免费的 API 或 Apps 脚本可以做到这一点吗?
    • 如果你google“免费语言检测api”,你会得到多个结果
    【解决方案2】:

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

    // 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;
    }
    

    现在在你的代码中使用它

    // contentType is optional
    function translateTo(word, targetLanguage, contentType) {
      return contentType ?
        LanguageApp.translate(word, detectLanguage(word), targetLanguage, {contentType: contentType})
        : LanguageApp.translate(word, detectLanguage(word), targetLanguage);
    }
    

    【讨论】:

      猜你喜欢
      • 2020-07-25
      • 1970-01-01
      • 1970-01-01
      • 2012-08-27
      • 1970-01-01
      • 1970-01-01
      • 2017-01-06
      • 2018-07-13
      • 2022-07-07
      相关资源
      最近更新 更多