Перевод текста с помощью Translate
Чтобы перевести текст, используйте метод translate.
Перед началом работы
Для работы с API Translate необходимо отправлять данные для аутентификации в каждом запросе. Способ аутентификации зависит от типа аккаунта, от имени которого вы будете отправлять запросы:
-
Получите IAM-токен для аккаунта на Яндексе или федеративного аккаунта, необходимый для аутентификации. Передавайте полученный токен в заголовке
Authorization
каждого запроса в формате:Authorization: Bearer <IAM-токен>
-
Получите идентификатор любого каталога, на который у вашего аккаунта есть роль
ai.translate.user
или выше. Идентификатор каталога должен передаваться в теле каждого запроса в полеfolderId
.
-
Выберите один из способов аутентификации:
-
Получите IAM-токен. Передавайте IAM-токен в заголовке
Authorization
в формате:Authorization: Bearer <IAM-токен>
-
Создайте API-ключ. Передайте API-ключ в заголовке
Authorization
в следующем формате:Authorization: Api-Key <API-ключ>
-
-
Назначьте сервисному аккаунту роль
ai.translate.user
или выше на каталог, в котором он был создан.Не указывайте в запросах идентификатор каталога — сервис использует каталог, в котором был создан сервисный аккаунт.
Перевести текст с любого языка
Чтобы перевести текст с любого поддерживаемого языка, передайте его с помощью метода translate:
Чтобы воспользоваться примерами, установите cURL
Пример ниже разработан для выполнения в операционных системах MacOS и Linux. Чтобы выполнить его в системе Windows, ознакомьтесь с особенностями работы с Bash в Microsoft Windows.
В этом примере показано, как выполнить перевод на русский язык двух строк с текстом: «Hello» и «World». Язык исходного текста будет определен автоматически.
-
Создайте файл с телом запроса (например,
body.json
):{ "folderId": "<идентификатор_каталога>", "texts": ["Hello", "World"], "targetLanguageCode": "ru" }
Где:
folderId
— идентификатор каталога, полученный перед началом работы.texts
— текст для перевода в виде списка из строк.targetLanguageCode
— язык, на который переводится текст. Вы можете узнать код языка вместе со списком поддерживаемых языков.
-
Передайте файл на перевод, выполнив команду:
export IAM_TOKEN=<IAM-токен> curl --request POST \ --header "Content-Type: application/json" \ --header "Authorization: Bearer ${IAM_TOKEN}" \ --data '@<путь_до_файла_json>' \ "https://translate.api.cloud.yandex.net/translate/v2/translate"
Где
IAM_TOKEN
— IAM-токен, полученный перед началом работы.В ответе сервис вернет переведенные строки текста:
{ "translations": [ { "text": "Привет", "detectedLanguageCode": "en" }, { "text": "Мир", "detectedLanguageCode": "en" } ] }
В этом примере показано, как перевести на русский язык две строки с текстом: Hello
и World
. Язык исходного текста будет определен автоматически.
Создайте файл с телом запроса (например, body.py
):
import requests
IAM_TOKEN = '<IAM-токен>'
folder_id = '<идентификатор_каталога>'
target_language = 'ru'
texts = ["Hello", "World"]
body = {
"targetLanguageCode": target_language,
"texts": texts,
"folderId": folder_id,
}
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer {0}".format(IAM_TOKEN)
}
response = requests.post('https://translate.api.cloud.yandex.net/translate/v2/translate',
json = body,
headers = headers
)
print(response.text)
Где:
IAM_TOKEN
— IAM-токен, полученный перед началом работы.folder_id
— идентификатор каталога, полученный перед началом работы.target_language
— язык, на который переводится текст. Вы можете узнать код языка вместе со списком поддерживаемых языков.texts
— текст для перевода в виде списка из строк.
IAM-токен можно сохранить в файл. В таком случае укажите путь к этому файлу в переменной token_path
:
import os
import requests
token_path = '<путь_к_файлу_с_IAM-токеном>'
folder_id = '<идентификатор_каталога>'
target_language = 'ru'
texts = ["Hello", "World"]
IAM_TOKEN = os.path.join(os.getcwd(), token_path)
with open(IAM_TOKEN) as f:
IAM_TOKEN = f.read().strip()
body = {
"targetLanguageCode": target_language,
"texts": texts,
"folderId": folder_id,
}
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer {0}".format(IAM_TOKEN)
}
response = requests.post('https://translate.api.cloud.yandex.net/translate/v2/translate',
json = body,
headers = headers
)
print(response.text)
В этом примере показано, как перевести на русский язык две строки с текстом: Hello
и World
. Язык исходного текста будет определен автоматически.
Создайте файл с телом запроса (например, body.php
):
<?php
$IAM_TOKEN = '<IAM-токен>';
$folder_id = '<идентификатор_каталога>';
$target_language = 'ru';
$texts = ["Hello", "World"];
$url = 'https://translate.api.cloud.yandex.net/translate/v2/translate';
$headers = [
'Content-Type: application/json',
"Authorization: Bearer $IAM_TOKEN"
];
$post_data = [
"targetLanguageCode" => $target_language,
"texts" => $texts,
"folderId" => $folder_id,
];
$data_json = json_encode($post_data);
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_json);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
$result = curl_exec($curl);
curl_close($curl);
var_dump($result);
?>
Где:
IAM_TOKEN
— IAM-токен, полученный перед началом работы.folder_id
— идентификатор каталога, полученный перед началом работы.target_language
— язык, на который переводится текст. Вы можете узнать код языка вместе со списком поддерживаемых языков.texts
— текст для перевода в виде массива строк.
IAM-токен можно сохранить в файл. В таком случае укажите путь к этому файлу в переменной token_path
:
<?php
$token_path = '<путь_к_файлу_с_IAM-токеном>';
$folder_id = '<идентификатор_каталога>';
$target_language = 'ru';
$texts = ["Hello", "World"];
$IAM_TOKEN = trim(file_get_contents(realpath($token_path)));
$url = 'https://translate.api.cloud.yandex.net/translate/v2/translate';
$headers = [
'Content-Type: application/json',
"Authorization: Bearer $IAM_TOKEN"
];
$post_data = [
"targetLanguageCode" => $target_language,
"texts" => $texts,
"folderId" => $folder_id,
];
$data_json = json_encode($post_data);
$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
// curl_setopt($curl, CURLOPT_VERBOSE, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_json);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
$result = curl_exec($curl);
curl_close($curl);
var_dump($result);
?>