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