Использование Google Translate API из PHP

Если ваш сайт обслуживает пользователей из различных стран, то у вас уже может быть переведенный на все нужные языки статический контент. Но что делать, например, с пользовательскими комментариями, мнениями и оценками, оставленными в течение дня? Так как этот пользовательский контент может стать полезной частью вашего сайта (как статический контент), то вам необходимо задуматься о способах перевода его на другие языки. Один из сервисов, которые могут помочь в этом деле, конечно, является Google Translate (https://developers.google.com/translate/).

После прочтения этого небольшого поста вы сможете получать переводы с Google Translate API непосредственно из вашего приложения.

Создание акаунта Google API

Чтобы получить доступ к Google Translate API, вам нужно создать новый проект в Google APIs Console (http://code.google.com/apis/console), который требует активного акаунта Google. После создания нового проекта, требуется включить Translate API в списке доступных API (это делается нажатием на соответствующий переключатель).

Цена вопроса

Так как Google Translate API - платный сервис (https://developers.google.com/translate/v2/pricing), то вам необходимо включить биллинг в настройках вашего проекта. Чтобы сделать это, нажмите кнопку биллинга в меню Google APIs Console и затем включите биллинг. Вас могут попросить ввести платежную информацию, такую как ваш адрес и номер кредитной карты. В различных странах доступны различные опции платежей, но кредитная карта должна быть во всех странах.

На время написания этой статьи, вознаграждение за использование сервиса составляет 20 долларов на 1000 000 символов перевода или определения языка. Это значит, что перевод пользовательского комментария 300-400 знаков будет стоить вам 0.006 - 0.008 доллара. Естественно, если вам требуется перевод текста на несколько языков, то для каждого языка плата будет взиматься отдельно.

Если вы боитесь получить слишком большой счет за переводы, которые делаете, то в настройках API в вашем проекте можно установить максимальный предел символов переводимых в день. Полная конфигурация доступна в Google APIs Console.

Получение API ключа

Чтобы получить доступ к API перевода, требуется ключ API связанный с проектом, который был создан Вами в Google APIs Console. Чтобы получить API ключ, требуется только кликнуть на пункт API Access (доступ к API) в меню на странице Google API Console. Требуемый ключ буден на открывшейся странице.

Доступ к API перевода из вашего приложения

API перевода от Google предоставляет три метода:

  • translate, который переводит текст с одного языка на другой;
  • detect, который определяет язык, на котором написан текст.
  • languages, который предоставляет список языков, с которых и на которые поддерживается перевод через API.

Все методы вызываются через GET запросы. Общий путь для выполнения таких запросов в PHP заключается в использовании библиотеки cURL. Именно эта библиотека будет использоваться в примерах ниже. Параметры, передаваемые в каждый метод должны быть URL-кодированы. Кодирование можно выполнить с использованием функции rawurlencode(). Следует помнить, что в каждом запросе к API Вам необходимо передавать API key, как параметр key.

Результаты выполнения каждого метода API перевода Google возвращаются в качестве JSON объекта. Для его разбора можно использовать функцию json_decode(), которая доступна в PHP начиная с версии 5.2 (если ваш PHP имеет более раннюю версию, то в Интернете можно найти реализацию этой функции на PHP).

Простой запрос

Методы translate и detect являются платными, но можно использовать третий метод - languages - только, чтобы проверить может ли ваше приложение соединяться с API. Чтобы выполнить этот метод, следует сделать запрос по следующему URL адресу: https://www.googleapis.com/language/translate/v2/languages.

Полный код пример приведен ниже:

После выполнения кода, приведенного выше, вы должны увидеть массив, всех языков, которые могут обрабатываться через Google Translate API. Подобная таблица доступна в документации (https://developers.google.com/translate/v2/using_rest#target). Важно просмотреть список в этой таблице, так как в этой таблице определены коды языков, которые необходимо будет указывать при выполнении запросов на перевод текстов.

Получение переводов

Доступ к ядру функционала Google Translate API можно получить, используя метод translate. Данный метод доступен по следующему адресу https://www.googleapis.com/language/translate/v2.

Метод translate имеет несколько параметров. Вот наиболее важные:

  • q - текст, который мы собираемся перевести;
  • source - язык, на котором написан текст ( если этот параметр не указан, то Google попробует определить язык автоматически);
  • target - язык на который, требуется перевести текст.

Если вам требуется получить перевод текста, то следует изменить URL запроса в предыдущем примере. Остальная часть кода выглядит очень похоже:

Пример ответа, содержащего переведенный текст выглядит так:

 

Что случиться, если язык оригинала не будет указан?

Если вы решите не включать язык оригинального текста (параметр source) в запрос, то события могут развиваться по двум сценариям:

  1. Google самостоятельно определит язык исходного текста, и JSON ответ, как следствие, будет содержать дополнительное свойство detectedSourceLanguage, содержащее код распознанного языка;
  2. Google не сможет определить язык оригинала (т.е. когда исходный текст был слишком коротким) и Google Translate API вернет HTTP ошибку 500. В этом случае отправляемся к следующей части нашего руководства - обработка ошибок.

Обработка ошибок

Когда ваш запрос не может быть выполнен, Google Translate API возвращает HTTP ответ с кодом, представляющим тип ошибки. После выполнения запроса с использованием cURL, вы можете получить код ответа сервера, используя функцию curl_getinfo(). Если код ответа отличается от 200, то что-то пошло не так, как вы ожидали.

Google Translate API могут вернуть следующие коды ошибок:

  • 400 (Bad request) – в вашем запросе отсутствуют некоторые параметры, или вы передали неверные значения параметров в запросе (например, неверный код языка)
  • 403 (Forbidden) – данный код означает, что вами передан неверный API ключ, или вы превысили свои квоты;
  • 500 (Internal Server Error) – данный код возвращается, если Google не смог определить код языка, или если встретилась какая-либо другая ошибка.
  • Дополнительно, когда появляются ошибки, Google Translate API возвращает JSON ответ, содержащий описание ошибки. Например, когда один отсутствует один из требуемых параметров, сервер вернет следующий ответ:

    Таким образом, лучшим способом обработки ошибок при выполнении запросов к Google Translate API состоит в совместной проверке HTTP кода ответа и разбора JSON ответа сервера. Важно, что curl_getinfo() необходимо вызывать до curl_close():

    Множественные переводы в одном запросе

    Существует возможность переводить несколько текстов в одном запросе, что будет, несомненно, эффективнее выполнения отдельных запросов на каждый текст. Для этого нужно передать несколько параметров q, чтобы каждый из них содержал один текст для перевода.

    Однако, есть несколько маленьких хитростей:

    • Если все ваши тексты написаны на одном языке, вы можете передать параметр source, содержащий код языка для всех текстов;
    • Но если вы хотите перевести группу текстов на различных языках, то передавать параметр source вы не можете. В этом случае следует пропустить параметр source и позволить Google самостоятельно определить язык каждого текста.

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

    Заключение

    В этой статье мы получили базовые знания о взаимодействии вашего приложения с Google Translate API. Более сложная реализация API может включать автоматическое выполнение переводов при добавлении некоторого контента (или когда администратор сайта одобрит это) и сохранение переводов в базе данных. Такие продвинутые примеры мы охватим, в будущих статьях.

    Если вы планируете использовать Google Translate API в своем приложении, пожалуйста, не забывайте читать правила и требования использования сервиса (https://developers.google.com/translate/v2/terms, https://developers.google.com/translate/v2/attribution), которые содержат некоторые рекомендации того, как показывать переведенный контент на сайте.

Комментарии (1)
  • Guseyn Четверг 19 Январь 2017
    Где можно узнать сколько символов было потрачено, в google console данные пустые?
Добавить комментарий
Вам необходимо включить показ изображений в браузере для того чтобы увидеть код

Дайте нам знать, что вы - живой человек. Для нас это важно!
Кликните, если плохо видно

Прежде чем высказать свое мнение, прочитайте пожалуйста: правила

Рейтинг@Mail.ru