如何在我的Java应用程序中使用Google Translate API?

2022-09-01 06:27:18

如果我将一个字符串(英语或阿拉伯语)作为输入传递给Google翻译API,它应该将其翻译成相应的其他语言,并将翻译后的字符串交给我。

我在论坛上读到了同样的案例,但对我来说很难实现。
我需要没有任何按钮的转换器,如果我给出输入字符串,它应该自动转换值并给出输出。

你能帮忙吗?


答案 1

您可以使用具有免费翻译API谷歌脚本。您所需要的只是一个通用的Google帐户,并执行以下三个简单步骤
1)在谷歌脚本上用这样的代码创建新脚本

var mock = {
  parameter:{
    q:'hello',
    source:'en',
    target:'fr'
  }
};


function doGet(e) {
  e = e || mock;

  var sourceText = ''
  if (e.parameter.q){
    sourceText = e.parameter.q;
  }

  var sourceLang = '';
  if (e.parameter.source){
    sourceLang = e.parameter.source;
  }

  var targetLang = 'en';
  if (e.parameter.target){
    targetLang = e.parameter.target;
  }

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

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

2) 单击“发布 ->部署为 web 应用 -> 谁有权访问应用:任何人,甚至是匿名的 ->部署。然后复制您的Web应用程序URL,您将需要它来调用翻译API。
google script deploy

3) 使用此 java 代码来测试您的 API:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

public class Translator {

    public static void main(String[] args) throws IOException {
        String text = "Hello world!";
        //Translated text: Hallo Welt!
        System.out.println("Translated text: " + translate("en", "de", text));
    }

    private static String translate(String langFrom, String langTo, String text) throws IOException {
        // INSERT YOU URL HERE
        String urlStr = "https://your.google.script.url" +
                "?q=" + URLEncoder.encode(text, "UTF-8") +
                "&target=" + langTo +
                "&source=" + langFrom;
        URL url = new URL(urlStr);
        StringBuilder response = new StringBuilder();
        HttpURLConnection con = (HttpURLConnection) url.openConnection();
        con.setRequestProperty("User-Agent", "Mozilla/5.0");
        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();
        return response.toString();
    }

}

由于它是免费的,因此有QUATA限制https://docs.google.com/macros/dashboard


答案 2

使用java-google-translate-text-to-speech而不是Google Translate API v2 Java

关于java-google-translate-text-to-speech

非官方的API,具有Java中Google翻译的主要功能。

易于使用!

它还提供文本到语音转换 API。如果你想用罗马尼亚语翻译“Hello!”,只需写下:

Translator translate = Translator.getInstance();
String text = translate.translate("Hello!", Language.ENGLISH, Language.ROMANIAN);
System.out.println(text); // "Bună ziua!" 

注册完全免费!

正如@r0ast3d正确指出的那样:

重要提示:Google Translate API v2 现已作为付费服务提供。2011 年 8 月 24 日之前创建的现有 Translate API v2 项目的礼节性限制将于 2011 年 12 月 1 日降至零。此外,您的应用程序每天可以发出的请求数将受到限制。

这是正确的:只需查看官方页面

Google Translate API可作为付费服务使用。有关详细信息,请参阅定价和常见问题解答页面。

但是java-google-translate-text-to-speech是免费的!

例!

我创建了一个示例应用程序来证明这是有效的。在这里试试:https://github.com/IonicaBizau/text-to-speech


推荐