Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
1) Ведь в таком маленьком коде проще слиять строки, разве нет? Каковы ваши аргументы против слияния?
trans "R&D"2) Разбирать json руками — опять же — зачем усложнять?
3) Рекурсия не бесконечна, вызов самого себя происходит только если вернулось то же что ввел пользователь. Можно было конечно сразу определять язык, но это было бы чуть больше кода и все-равно два запроса к серверу.
trans "123"4) Какие еще нужны аргументы командной строки?
Joiner.on(" ").join(args)5) Почему выложил на Хабр — сам искал такое решение, в том числе и на Хабре.
2) Я не буду в консоли вводить что-то со слешем для перевода — не хочу превращать .class-файл в .jar-файл используя например gson для парсинга.
3) Теперь вызов метода самого себя происходит лишь единожды.
private static int i = 0;
/* ... */
i++;
if (translated.equals(input) && i < 2) {
// if return equal of entered text - we need change direction of translation
return translate("en", input);
} else return translated;
4) Joiner.on(" ").join(args) не понимаю, что это?
trans many words without escaping.#!/bin/bash
#
# simple console util for translation text to any language using Yandex Translate API
# use: Translate.sh ru 'call me, baby'
# will return translation of a phrase to ru language
# more example at http://api.yandex.ru/translate/
#
to=$1
text=$2
link='https://translate.yandex.net/api/v1.5/tr.json/translate?key='
key='-- key from http://api.yandex.ru/key/keyslist.xml --'
curl -s "$link$key&lang=$to&text=$text" | awk -F'"' {' print $10 '}
String json = new java.util.Scanner(response).nextLine(); int start = json.indexOf("["); int end = json.indexOf("]"); String translated = json.substring(start + 2, end - 1); i++; if (translated.equals(input) && i < 2) { // if return equal of entered text - we need change direction of translation return translate("en", input); } else return translated;
yandex-translate hello | say # It's talking!
можно без ковычек писать сразу несколько слов. Так и не смог добиться перевода нескольких слов с амперсантом, но и халера с ним.Кроме переводчика стоит добавить в арсенал aspell/hunspell. Можно:
System.currentTimeMillis()/1000 с этой константой и падать, если она оказалась меньше (чтоб периодически перекомпилировать эту обёртку.
Яндекс-Перевод в терминале через Java