Google переводчик - как на java составить запрос на перевод слова?

741
02 мая 2017, 05:06

Есть английское слово. Для него нужно получить перевод через Google переводчик. Например имеем слово "home" отправляем запрос - получаем "дом".

Вроде нашел примеры на Google Cloud Translation API Documentation. И для html запроса и с использованием библиотек, но ни то ни другое не работает, а понять почему не хватает знаний английского.

Помогите пожалуйста составить правильный запрос или хотя бы подскажите ключевые моменты.

Далее описание того что пробовал делать:

Вот это делал для Яндекс переводчика. Для Гугла почему то не работает, хотя структура запроса вроде такая же.

import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
public class GetTranslate {
    public static void main(String args[]) throws IOException {
        GetTranslate translate = new GetTranslate();
        String temp = translate.getHTML("home");
        System.out.println(temp);
    }
    public String getHTML(String word) {
        URL url;
        HttpURLConnection conn;
        BufferedReader rd;
        String line;
        String result = "";
        try {
            url = new URL("https://dictionary.yandex.net/api/v1/dicservice/lookup" +
                    "?key=мой_ключ" +
                    "&lang=en-ru" +
                    "&text=" + word);
            conn = (HttpURLConnection) url.openConnection();
            conn.setRequestMethod("GET");
            rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            while ((line = rd.readLine()) != null) {
                result += line;
            }
            rd.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }
}

Еще нашел вот такой шаблон в репозитории Гугла. Но у меня почему-то не хотят подключаться зависимости, ну и код соответственно не работает, возможно именно из-за этого. Импорты отмечены серым цветом.

// [START translate_quickstart]
// Imports the Google Cloud client library
import com.google.cloud.translate.Translate;
import com.google.cloud.translate.Translate.TranslateOption;
import com.google.cloud.translate.TranslateOptions;
import com.google.cloud.translate.Translation;
public class QuickstartSample {
  public static void main(String... args) throws Exception {
    // Instantiates a client
    Translate translate = TranslateOptions.getDefaultInstance().getService();
    // The text to translate
    String text = "Hello, world!";
    // Translates some text into Russian
    Translation translation =
        translate.translate(
            text,
            TranslateOption.sourceLanguage("en"),
            TranslateOption.targetLanguage("ru"));

    System.out.printf("Text: %s%n", text);
    System.out.printf("Translation: %s%n", translation.getTranslatedText());
  }
}
// [END translate_quickstart]

Программирую на java. Для работы использую Intellij IDEA (комьюнити версия).

Уточнения: При отправке такого запроса (пример из документации Гугл)

https://translation.googleapis.com/language/translate/v2?key=YOUR_API_KEY&source=en&target=de&q=Hello%20world&q=My%20name%20is%20Jeff

Возвращает ошибку 403. Если отправить его прямо из строки браузера, то даже дает подробности - истек лимит запросов. Для отправки использовал свежесозданный API-ключ.

Так же, установил Google Cloud SDK и прошел авторизацию через сервисный ключ (который скачивается при создании). Вроде написано, что при подобной авторизации использование API-ключа не обязательно. Пробовал делать запрос без ключа - результат такой же.

READ ALSO
Форма отправки сообщения gmail

Форма отправки сообщения gmail

В моём navigationDrawer есть некий список, по которому я перехожу в активитиСейчас решил сделать так, чтоб при переходе в активность, меня сразу перебрасывало...

298
Изменить sun.jnu.encoding в CentOS 7

Изменить sun.jnu.encoding в CentOS 7

Считываю файлы следующим образом:

311
Создание собственного контейнера [требует правки]

Создание собственного контейнера [требует правки]

Create a container that encapsulates an array of String, and that only adds Strings and gets Strings, so that there are no casting issues during useIf the internal array isn’t big enough for the next add, your container should automatically resize it

404