Программирование

Перевод через Google с помощью NodeJS

Я уже писал статью, о том, как переводить тексты на различные языки с помощью Google Cloud, но в тот раз речь шла о модуле на питоне. Однако однажды у меня возникла необходимость снова написать аналогичный модуль, но уже на JS.

Я решил максимально подробно описать все шаги, связанные с Google Cloud, потому что это — самая сложная часть работы, как ни странно.

Подготовка аккаунта в Google Cloud и активация всех нужных API

Этот этап одинаково актуален как для перевода текстов посредством Python, так и для перевода текстов посредством JS.

Создание нового проекта

Заходим в Google Cloud Console. Создаем новый проект (если его нет):

Включение API

Когда проект будет готов (занимает примерно 20-30 секунд), нужно включить соответствующее API в Google Cloud Service. Для этого в меню выбираем API & Services > Library:

Затем поиском или руками находим соотвествующий сервис:
Включаем API, и заодно знакомимся с расценками на это удовольствие. На момент написание статьи 1 миллион символов, отправленных на перевод, стоил 20 баксов:

После этого вас попросят привязать платежный аккаунт, который создается при регистрации (когда вы привязываете свою карту).

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

Затем вам необходимо создать Service Account — как бы подучетку, под которой ваше приложение будет юзать какие-то куски вашего Google Cloud Service от имени вашего проекта. Для этого заходим сюда:

И создаем новый аккаунт:

После этого в списке service account-ов выбираем только что созданное:

Переходим в раздел «Keys» (ключи):

И создаем новый ключ:

Скачиваем и сохраняем вам JSON, он пригодится для авторизации приложения JS.

JS

Для работы есть высокоуровневая библиотека @google-cloud/translate, установим ее:

npm install @google-cloud/translate

После этого создаем инстанс «переводчика»:

import { v2 } from "@google-cloud/translate";
const { Translate } = v2;
const translator = new Translate({ keyFilename: "../googleCredentials.json" });

Попытка перевода какого то текста (первый аргумент) на английский (второй аргумент):

const res = await translator.translate(sourceText, "en");

В ответ придет огромный объект, в котором есть исчерпывающая информация, вплоть до обнаруженного языка исходного текста. В моем случае, когда язык определяется однозначно, и нужен только один целевой язык перевода, готовый переведенный текст был здесь:

const transResult = res[1].data.translations[0].translatedText;

Замечания

  • Обязательно считайте количество отправленных знаков на перевод: ставка 20$ за миллион символов только кажется небольшой, а миллион символов только сначала кажутся огромным количеством.
  • Первые полмиллиона символов в месяц бесплатны.
  • А потом платны + 20% НДС.
  • Лично мне ошибка стоила 300 долларов за 4 минуты работы с API.
  • При создании нового аккаунта Google Cloud дается около 300 долларов на все сервисы на 90 дней. Этого должно хватить на 15,5 млн символов.
  • Ежемесячно дают скидку на 10 долларов. С учетом НДС это позволяет бесплатно переводить около 416 000 символов.
  • Google Cloud наказывает за мультиакк. Отличаем аккаунты посредством привязанных банковских карт.
  • Не теряйте драгоценные переводы, даже во время отладки — сразу сохраняйте в файл/базу.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *