Как прописать многословный текст для перевода через API Яндекс.Переводчика?

72
18 февраля 2022, 17:00

Перевожу через API Яндекс.Переводчика текст так:

$api_key = "key";
$lang = "en-ru";
$text = "juice";
$result = file_get_contents("https://translate.yandex.net/api/v1.5/tr.json/translate?" . 
    "key=" . $api_key . "&" . 
    "text=" . $text . "&" . 
    "lang=" . $lang);
$result = json_decode($result, true);
$ru_test = $result['text'][0];
echo $ru_test;

Если в переменной $text у нас одно слово, то все переводит, но если 2 слова, то уже нет ($text = "apple juice"). Как правильно прописывать многострочный текст?

Выдает ошибку "Warning: file_get_contents(https://translate.yandex.net/api/v1.5/tr.json/translate?key=trnsl.1.1.20200112T161657Z.ec6b45005112fff7.a163d5db42f342b0fe053523d19ee583d858f54b&text=juice juice&lang=en-ru): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in W:\domains\lessons.loc\index.php on line 25"

Answer 1

Кодируйте параметры целиком с помощью http_build_query() либо текст с помощью urlencode()

define('API_URL', "https://translate.yandex.net/api/v1.5/tr.json/translate?");
$parms = [
     'api_key' => "key",
     'lang' => "en-ru",
     'text' => "juice",
   ];
$url = API_URL . http_build_query($params);
$result = file_get_contents($url);
if($result !== false){
    $data = json_decode($result, true);
    echo $data['text'][0];
}
READ ALSO
Скрипт для единоразового запуска в opencart

Скрипт для единоразового запуска в opencart

Как создать php-скрипт для единоразового запуска, допустим нужно сделать одну запись в базу данных, без создания модуляТакже нужно создать...

118
PHP Fatal error: Call to a member function find() on a non-object - SimpleHmlDom

PHP Fatal error: Call to a member function find() on a non-object - SimpleHmlDom

В цикле у меня перебираются страницы и загружаются

101
Как получить статус "в наличии"?

Как получить статус "в наличии"?

Собственно сабж в заголовкеВывожу товары через каталог, надо этот статус вывести

87