web-dev-qa-db-ja.com

JavaアプリケーションでGoogle Translate APIを使用するには?

Google Translate API への入力として文字列(英語またはアラビア語)を渡すと、それを翻訳する必要があります対応する他の言語に翻訳された文字列を私に与えてください。

フォーラムで同じケースを読みましたが、実装するのが非常に困難でした。
ボタンのないトランスレーターが必要です。入力文字列を指定すると、値が自動的に変換されて出力が行われます。

手伝ってもらえますか?

24
user1048999

Google Translate API v2 Java の代わりに Java-google-translate-text-to-speech を使用します。

Java-google-translate-text-to-speechについて

JavaのGoogle翻訳の主な機能を備えた非公式API。

使いやすい!

また、音声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日にゼロになります。また、アプリケーションが1日に行うことができるリクエストの数は制限されます。

これは正しいです: 公式ページ を参照してください:

Google Translate APIは有料サービスとして利用できます。詳細については、価格とFAQページをご覧ください。

[〜#〜] but [〜#〜]Java-google-translate-text-to-speech は無料です!

例!

これが機能することを示すサンプルアプリケーションを作成しました。ここで試してください: https://github.com/IonicaBizau/text-to-speech

23
Ionică Bizău

google script を使用できます。これには、[〜#〜] free [〜#〜]translate API 。必要なのは一般的なGoogleアカウントだけで、これらを実行します3つの簡単な手順
1)googleスクリプト でそのようなコードを使用して新しいスクリプトを作成します。

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)[公開]-> [webappとしてデプロイ]->アプリにアクセスできるユーザー:誰でも匿名->デプロイ。そして、WebアプリのURLをコピーすると、translate 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 LIMITShttps://docs.google.com/macros/dashboard

14

独自のAPIキーを生成します here 。ドキュメントをご覧ください here

アカウントでGoogle Cloud Translation APIを有効にしようとすると、請求先アカウントの設定が必要になる場合があります。

以下は、2つの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>
7
Lakshman Kambam

Google Translate API v2 Java を使用できます。これには、Javaコードから呼び出すことができるコアモジュールと、コマンドラインインターフェイスモジュールがあります。

3
MosheElisha

私は無料の翻訳者を探すのにうんざりしていて、私にとって最良の選択肢はSelenium(より正確にはセレニドと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();
        }
    }
}
0
LuckyMiv