Используя API переводчика написал для себя простую программу для перевода слов и фраз, и чтобы из любого места работало. Хотел использовать curl, но непонятно почему получал ошибку что такого языка нет.
Теперь вместо скучного, а иногда медленного, а иногда такого ярко-белого нового таба с лишней информацией пишу в терминале trans hello и получаю перевод на русский, а если trans привет — на английский. Разумеется можно вводить и фразы, в кавычках. Работает быстренько.
import java.io.IOException; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; public class YandexTranslate { public static void main(String[] args) throws IOException { System.out.println(translate("ru", args[0])); } private static String translate(String lang, String enteredText) throws IOException { String textEscaped = enteredText.replace(" ", "%20"); String url = "https://translate.yandex.net/api/v1.5/tr.json/translate?key=trnsl.1.1.20150402T173446Z.82a90fe78ca2aeaf.a3bd7c7a0f72b260e28f5d92e4f242cf6ba189d3&lang=" + lang + "&text=" + textEscaped; URLConnection connection = null; try { connection = new URL(url).openConnection(); } catch (ArrayIndexOutOfBoundsException e) { System.out.printf("No text for translate"); } InputStream response = connection.getInputStream(); String json = new java.util.Scanner(response).nextLine(); int start = json.indexOf("["); int end = json.indexOf("]"); String translated = json.substring(start + 2, end - 1); if (translated.equals(enteredText)) { // if return equal of entered text - we need change direction of translation return translate("en", enteredText); } else return translated; } }
Чтобы перевод работал в любой директории, нужно в /usr/bin положить .class-файл и trans.sh для его вызова:
#!/bin/bash #!/bin/bash if [ $# -eq 0 ] then echo "Enter text for translate" exit 1; fi java -classpath /usr/bin/ YandexTranslate "$1"
И сделать его исполняемым: sudo chmod +x trans.sh
Если что — опубликовано на Гитхабе.
ссылка на оригинал статьи http://habrahabr.ru/post/261259/
Добавить комментарий