Привет Хабра-скриптер.
В поисках по-настоящему удобного переводчика, решение написать свой, думаю, никого не удивит.
Для начала, определим функции, которые нам понадобятся.
1.
2.
3.
4. Параметры, передаваемые в API. Вот здесь есть где разогнаться для расширения скрипта. Меня же конкретно интересует перевод с английского на русский. Ну и еще синонимы (для общего развития):
Ссылка на весь скрипт
Еще важно задать alias для запуска скрипта в консоли (чтоб каждый раз не вводить весь путь к скрипту)
Небольшая демонстрация работы скрипта:
Конечно же, можно сделать этот скрипт еще лучше. Вот только я старался сделать его максимально простым.
В поисках по-настоящему удобного переводчика, решение написать свой, думаю, никого не удивит.
Для начала, определим функции, которые нам понадобятся.
1.
get_with_curl
— с этой все понятно: мы ей $url
, а она нам $response
от сервера:function get_with_curl($url)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIESESSION, true);
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12');
$response = curl_exec($ch);
if (curl_errno($ch)) {
return curl_error($ch);
} else {
curl_close($ch);
return $response;
}
}
2.
cleanup_response
— кто бы мог подумать, что Google будет отдавать невалидный json
. Сплошь и рядом какие-то левые запятые. Эту неприятную неожиданность приходится исправлять регулярками. Пока хватает вот таких вот:function cleanup_response($response)
{
$response = preg_replace('/,+/', ',', $response);
$response = preg_replace('/\[,/', '[', $response);
return $response;
}
3.
print_line
— вот с ней пришлось повозиться. Не знаю как в *nix, а вот чтоб сделать echo
из PHP скрипта в консоль windows, нужно гуглить и подбирать кодировки часа два. (Не забудьте установить в качестве консольного шрифта какой-нибудь TrueType, например Lucida Console):function print_line($line)
{
echo iconv("utf-8", "cp866", $line) . PHP_EOL;
}
4. Параметры, передаваемые в API. Вот здесь есть где разогнаться для расширения скрипта. Меня же конкретно интересует перевод с английского на русский. Ну и еще синонимы (для общего развития):
$params = [
"client" => "t",
"sl" => "en", // исходный язык
"tl" => "ru", // язык, на который нужно перевести
"hl" => "ru", // язык сообщений от API
"dt" => "bd", // получать синонимы
"q" => $term,
];
Ссылка на весь скрипт
Еще важно задать alias для запуска скрипта в консоли (чтоб каждый раз не вводить весь путь к скрипту)
cd ~
echo "alias pt='php /<путь к скрипту>/translate.php'" >> .bashrc
Небольшая демонстрация работы скрипта:
Конечно же, можно сделать этот скрипт еще лучше. Вот только я старался сделать его максимально простым.