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

时间:2011-11-16 05:48:47

标签: java api google-api google-translate

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

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

你能帮忙吗?

5 个答案:

答案 0 :(得分:23)

使用java-google-translate-text-to-speech代替Google Translate API v2 Java

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

Api非正式的,具有Google翻译的主要功能。

易于使用!

它还为语音api提供文本。如果你想翻译文本"你好!"在罗马尼亚语中写道:

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日减少到零。此外,您的应用程序每天可以提出的请求数量将受到限制。

这是正确的:只需看the official page

  

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

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

实施例<!/ H3>

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

答案 1 :(得分:12)

您可以使用免费 google scripttranslate API。您只需要一个普通的谷歌帐户,并执行这些三个简单的步骤 1)google script上使用此类代码创建新脚本:

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)点击发布 - &gt;部署为webapp - &gt;谁有权访问该应用:任何人甚至匿名 - &gt;部署。然后复制您的网络应用程序网址,您将需要它来调用翻译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 LIMITS https://docs.google.com/macros/dashboard

答案 2 :(得分:7)

生成您自己的API密钥here。查看文档here

当您尝试在帐户中启用Google Cloud Translation API时,可能需要设置结算帐户。

以下是一个快速入门示例,它将两个English字符串翻译为Spanish

import java.io.IOException;
import java.security.GeneralSecurityException;
import java.util.Arrays;

import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.services.translate.Translate;
import com.google.api.services.translate.model.TranslationsListResponse;
import com.google.api.services.translate.model.TranslationsResource;

public class QuickstartSample
{
    public static void main(String[] arguments) throws IOException, GeneralSecurityException
    {
        Translate t = new Translate.Builder(
                GoogleNetHttpTransport.newTrustedTransport()
                , GsonFactory.getDefaultInstance(), null)
                // Set your application name
                .setApplicationName("Stackoverflow-Example")
                .build();
        Translate.Translations.List list = t.new Translations().list(
                Arrays.asList(
                        // Pass in list of strings to be translated
                        "Hello World",
                        "How to use Google Translate from Java"),
                // Target language
                "ES");

        // TODO: Set your API-Key from https://console.developers.google.com/
        list.setKey("your-api-key");
        TranslationsListResponse response = list.execute();
        for (TranslationsResource translationsResource : response.getTranslations())
        {
            System.out.println(translationsResource.getTranslatedText());
        }
    }
}

代码段所需的maven依赖项:

<dependency>
    <groupId>com.google.cloud</groupId>
    <artifactId>google-cloud-translate</artifactId>
    <version>LATEST</version>
</dependency>

<dependency>
    <groupId>com.google.http-client</groupId>
    <artifactId>google-http-client-gson</artifactId>
    <version>LATEST</version>
</dependency>

答案 3 :(得分:3)

您可以使用Google Translate API v2 Java。它有一个核心模块,您可以从Java代码和命令行界面模块调用它。

答案 4 :(得分:0)

我已经厌倦了寻找免费翻译的工作,而对我来说最好的选择是(更确切地说是selenide和webdrivermanager)和https://translate.google.com

import io.github.bonigarcia.wdm.ChromeDriverManager;
import com.codeborne.selenide.Configuration;
import io.github.bonigarcia.wdm.DriverManagerType;
import static com.codeborne.selenide.Selenide.*;

public class Main {

    public static void main(String[] args) throws IOException, ParseException {

        ChromeDriverManager.getInstance(DriverManagerType.CHROME).version("76.0.3809.126").setup();
        Configuration.startMaximized = true;
        open("https://translate.google.com/?hl=ru#view=home&op=translate&sl=en&tl=ru");
        String[] strings = /some strings to translate
        for (String data: strings) {
            $x("//textarea[@id='source']").clear();
            $x("//textarea[@id='source']").sendKeys(data);
            String translation = $x("//span[@class='tlid-translation translation']").getText();
        }
    }
}