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

use*_*999 25 java api google-api google-translate

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

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

你能救吗?

Ion*_*zău 23

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

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

Api非官方的,具有Google Translate in Java的主要功能.

使用方便!

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

Translator translate = Translator.getInstance();
String text = translate.translate("Hello!", Language.ENGLISH, Language.ROMANIAN);
System.out.println(text); // "Bun? ziua!" 
Run Code Online (Sandbox Code Playgroud)

免费!

正如@ 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

  • 我得到java.io.IOException:服务器从一段时间后返回HTTP响应代码:403.你有什么解决方案吗? (3认同)

Mak*_*iuk 15

您可以使用具有免费翻译API的谷歌脚本.您所需要的只是一个常见的谷歌帐户,并做这三个简单的步骤.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);
}
Run Code Online (Sandbox Code Playgroud)

2)单击发布 - >部署为webapp - >谁有权访问该应用程序:任何人甚至匿名 - >部署.然后复制您的网络应用程序网址,您将需要它来调用翻译API.
谷歌脚本部署

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();
    }

}
Run Code Online (Sandbox Code Playgroud)

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

  • 惊人的。我发现的唯一非官方但有效的方法。:) (2认同)
  • 嗨,这是一个了不起的解决方案。我还需要它来检测输入语言。有什么办法可以做到吗?“自动”不起作用 (2认同)
  • 有固定的脚本。将 sourceLang = 'auto' 替换为 sourceLang = ''。现在您可以使用这样的代码进行翻译:translate("", "de", text)。并且在重新部署您的 google 脚本后不要忘记更改“项目版本”,因为如果您不这样做,它确实会应用您的更改。 (2认同)
  • @MaksymPecheniuk 我用过这个,效果很好。但我一天内调用此次数超过 50k 次,因此它会给出错误“一天内请求太多”。这里的请求数量有限制吗? (2认同)
  • 效果非常好!谢谢你!如果有人需要 SpringBoot 版本,这里是请求对象... ` String url = "https://script.google.com/macros/s/AKf****xhI/exec?q=" + URLEncoder.encode(text , "UTF-8") + "&target=" + this.to + "&source=" + this.from; String TranslatedText = RestTemplate.getForObject(url, String.class);` (2认同)

Lak*_*bam 7

在此处生成您自己的API密钥.在这里查看文档.

当您尝试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());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

代码段所需的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>
Run Code Online (Sandbox Code Playgroud)


Mos*_*sha 3

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