google translate api php
Convert text from one language to another using Google Translate API in PHP / JavaScript
In this article, I have explained how to translate text from one language to another using Google Translate API in PHP / JavaScript.
Google provides API to access their services. In order to use a Google service in your website, you need a API Key. Google API Console: https://code.google.com/apis/console
After this guide you will be able to fetch translations direct from your application from the Google Translate API. You’ll learn how to access the API, how to use it and if errors occur how to handle it.
HOW TO GET GOOGLE TRANSLATE API KEY
To use the API you need get a Google API key;
Step-1: Go to Cloud Console
Step-2: Create a Project and select it.
Step-3:
GOOGLE TRANSLATE API PHP EXAMPLE.
The Translate API offers 3 methods:
– translate, which translates the given text from one language to another,
– detect, which detects the language of the given text,
– languages, which lists the source and target languages supported by the API.
All methods will be called by getting requests. A simple way to make such a request in PHP is to use the cURL library which we will use in the following examples. The parameters passed on to each process must be encoded with URLs which can be done in PHP using the function rawurlencode(). Remember you need to transfer your API key as a key parameter in every call.
Translate and detect services are charged, but we can use the third option-languages-just to test if our application will connect to the API. To do this we will refer to the following URL:
https://www.googleapis.com/language/translate/v2/languages
The core functionality of the Google Translate API is available through its translate method. It is accessible under the following URL:
https://www.googleapis.com/language/translate/v2
The translate method has several parameters. The most important are:
– q – the input text,
– source – the source language (if it’s not specified, Google will try to identify it automatically),
– target – the target language
Использование Google Translate API с PHP
Примечание: расширенное продолжение этой темы доступно здесь
Прочитав это руководство, вы сможете получать переводы из API Google Translate прямо из своего приложения. Вы узнаете, как получить доступ к API, как его использовать и как обрабатывать ошибки в случае их возникновения.
Создание аккаунта Google API
Чтобы получить доступ к API Google Translate, вам нужно будет создать новый проект в консоли API Google, для которого требуется активная учетная запись Google. После создания нового проекта просто включите Translate API в списке всех доступных API, нажав переключатель.
ценообразование
Если вы боитесь, что за переводы, которые вы делаете, будет выставлен слишком большой счет, вы можете контролировать использование API в своем проекте, устанавливая максимальное количество символов, которое можно переводить ежедневно. Вся конфигурация доступна на консоли API Google.
Получение ключа API
Доступ к Translate API из вашего приложения
Запрос образца
Перевод и обнаружение услуг платные, но мы можем использовать третий метод — языки — просто чтобы проверить, может ли наше приложение соединиться с API. Для этого мы сделаем запрос по следующему URL: https://www.googleapis.com/language/translate/v2/languages
Весь код выглядит следующим образом:
Получение переводов
Метод перевода имеет несколько параметров. Наиболее важными являются:
— q — ввод текста,
— source — исходный язык (если он не указан, Google попытается определить его автоматически),
— target — целевой язык
Если вы хотите получить переведенный текст, вы должны изменить URL-адрес запроса из предыдущего примера. Остальная часть кода выглядит очень похоже:
Пример ответа, содержащий переведенный текст, выглядит следующим образом:
Что произойдет, если вы не установите исходный язык?
Если вы решите не включать исходный язык (параметр источника ) в запрос, могут возникнуть два сценария:
1. Google удастся определить язык самостоятельно, поэтому ответ JSON будет содержать дополнительное свойство детектированное обнаружение ресурса, содержащее код исходного языка.
2. Исходный язык не будет успешно обнаружен (например, если исходный текст был слишком коротким), и Google Translate API вернет ошибку HTTP 500. Это приводит к следующей части урока — обработка ошибок.
Обработка ошибок
API Google Translate может возвращать следующие коды ошибок:
— 400 ( неверный запрос) — в вашем запросе отсутствуют некоторые параметры или вы передали неправильные значения параметрам, присутствующим в запросе (например, неверный код языка),
— 403 (запрещено) — вы ввели неверный ключ API или превысили квоту,
— 500 (Внутренняя ошибка сервера) — Google не может определить исходный язык вашего текста или произошла другая ошибка.
Кроме того, при возникновении ошибки API Google Translate возвращает ответ JSON, содержащий описание ошибки. Например, если один из обязательных параметров отсутствует, сервер ответит следующим ответом:
Поэтому лучший способ обработки ошибок при обращении к сервису API Google Translate — это просто совмещать проверку кода ответа HTTP и анализ ответа JSON с сервера. Что важно, curl_getinfo () должен быть вызван до curl_close () :
Несколько переводов в одном запросе
Также обратите внимание, что вы не можете получить несколько переводов одного исходного текста в одном запросе. Если вы хотите перевести один текст на разные целевые языки, вы должны сделать отдельные запросы.
Вывод
Теперь вы знаете основы подключения вашего приложения к Google Translate API. Более сложные реализации API могут включать автоматическую выборку переводов, когда пользователь отправляет некоторый контент (или когда администратор сайта одобряет это), и сохранение переводов в базе данных. Мы расскажем о таких продвинутых примерах в следующей статье (часть 2 здесь ).
Если вы планируете использовать API Google Translate в своем приложении, не забудьте прочитать Условия предоставления услуг и требования к атрибуции, которые содержат несколько рекомендаций о том, как отображать переведенный контент на веб-странице.
Google translate api php
Google Translate PHP
Free Google Translate API PHP Package. Translates totally free of charge.
Install this package via Composer.
Note: PHP 7.1 or later is required. For older versoins, use ^3.2 version of this package (see old docs).
Create GoogleTranslate object
Or you can change languages later
Also, you can also use method chaining
Or call a shorthand static method trans
To detect language automatically, just set the source language to null :
Use getLastDetectedSource() to get detected language:
Return value will be null if the language couldn’t be detected.
Supported languages are listed in Google API docs.
Using Raw Response
For advanced usage, you might need the raw results that Google Translate provides. you can use getResponse method for that.
You can override the default Google Translate url by setUrl method. Useful for some countries
HTTP Client Configuration
This package uses Guzzle for HTTP requests. You can pass an array of guzzle client configuration options as a third parameter to GoogleTranslate constructor, or just use setOptions method.
You can configure proxy, user-agent, default headers, connection timeout and so on using this options.
For more information, see Creating a Client section in Guzzle docs (6.x version).
Custom Token Generator
You can override the token generator class by passing a generator object as a fourth parameter of constructor or just use setTokenProvider method.
Translation Client (Quality)
Google Translate has a parameter named client which defines quality of translation. First it was set to webapp but later google added gtx value which results in a better translation quality in terms of grammar and overall meaning of sentences.
Errors and Exception Handling
Static method trans() and non-static translate() and getResponse() will throw following Exceptions:
In addition, translate() and trans() methods will return null if there is no translation available.
This package is developed for educational purposes only. Do not depend on this package as it may break anytime as it is based on crawling the Google Translate website. Consider buying Official Google Translate API for other types of usage.
If this package helped you reduce your time to develop something, or it solved any major problems you had, feel free give me a cup of coffee 🙂
About
🌐 Free Google Translate API PHP Package. Translates totally free of charge.
Быстрый переезд с Google Translate API v1 на Bing Translate API
Итак, позавчера Корпорация Добра все-таки закрыла свой бесплатный Translate API. Автор до последнего момента надеялся, что они образумятся и не станут уподобляться остальным так поступать. Поэтому не чесался и ничего не делал. Но вот гром грянул. И в CMS одного небольшого 3-х язычного проекта отвалился переводчик. Не страшно, но неприятно — раньше админ на форме редактирования контента 1 щелчком мыши переводил все поля еще на 2 языка. Переводчик я написал по своей милости, потратил на это минут 20 и не взял за это ни копейки. Тем не менее, клиент звонит, грозится физической расправой над любимым хомячком, просит, опять угрожает. Пришлось закрывать баш и искать альтернативы.
Под катом список (4 варианта, никаких откровений / открытий) чего нашел автор, а также рецепт Javascript-перевода от Bing.
Вариант 1-й, платный
Вроде как самое простое и быстрое решение — взять Translate API v2 от той же Доброкорпорации. Но что смущает — нет простого JS примера. Опять-таки — вопрос секьюрности — мне в js нужно будет добавить API key. Т.е. любой человек, догадавшийся открыть исходный код страницы сможет найти там ключ. И переводить на своем сайте за счет моего клиента. Не слишком интересно. (Каюсь, я не разбирался, возможно там все предусмотрено. Но напомню исходный посыл — суббота вечер, разбираться лень, хочется пойти читать баш|пиво|соседку)
Вариант 2-й, криминальный геморройный
Как подсказали вот здесь, почему-то работает перевод. И даже дает ответы в JSON формате. И еще Гугл сам предлагает юзать Translate Widget, который наверняка можно препарировать и посмотреть куда он там шлет запросы и как его эмулировать.
Вот тут встают вопросы — сколько надо времени чтобы обработать эти варианты? Есть ли уверенность что завтра (через неделю) лавочку не прикроют? Удастся ли получить от них JSONP или придется в очередной раз обходить Same Origin Policy?
Не много ли вопросов?
Вариант 3-й, мифический
Вспомнил о любви одного российского поисковика копировать сервисы Корпорации Д. Пытался нагуглить «Yandex Translate API». Нашел только упоминание о существовании такого сервиса и о том, что он слабо документирован. Наверное он не задокументирован никак, поскольку в момент отключения переводчика от Д. инк. весь рунет должен был бы пестрить ссылками на этот сервис, примерами использования и выдержкой из документации. Ну вот ни в жизнь не поверю, что это я один такой не подсуетился вовремя, наверняка есть еще потерпевшие.
Это только предположение, поэтому не пинайте сильно, если обладаете информацией — добро пожаловать, в комментариях ссылки только приветсятвуются.
Вариант 4-й, предательский
В процессе поиска API от Yandex был несказанно удивлен! http://msdn.microsoft.com/en-us/library/dd877846.aspx Нам дают халявный! работающий! переводчик с поддержкой JSONP! И кто же такой щедрый? Microsoft! Забегая вперед скажу, что переводчик действительно работает. Правда уходить от Гугла к Microsoft — это как-то… Противоестественно что ли? Но тем не менее…
Ссылку на пример использования я дал. Пример, мягко говоря, громоздкий, но слегка документированный. Да, кстати, после беглого взгляда на код ясно, что потребуется какой-то API key. Но его достаточно легко получить — идем сюда, региструемся и добаляем сайт. Интерфейс слегка подглючивает, но в общем добавить сайт получилось.
Да, кстати, переводчик у меня с тем же ключем работал и на другом (локальном) домене, в отличие, например, от Доброкарт. Код быстренько переработал, с использованием jQuery он получился чуть короче и читабельнее. Если Вы не любите jQuery — то либо Вы и сами можете лучше и быстрее меня решить похожую проблему, либо Вам все равно придется его подключить чтобы эта функция заработала.
Комментарии я в код вставлять не стал, уж не обессудбте. Да и документирована функция наверняка с какими-нибудь нарушениями чего-то там. Но, на мой взгляд, что-то понять можно. И главное — it works! (Если у Вас не работает — милости просим комментировать, желательно с указанием браузера)
И под конец немного розовых соплей сожалений — похоже пора прекращать любить Google. Я так понимаю, что ребятам приходиться начинать зарабатывать деньги, поэтому оставаться добрыми и пушистыми они уже не смогут. А жаль. Это было как-то… волшебно что ли? Хочешь карту — на. Хочешь переводчик — на. Сколько я должен? — Ну что вы, спасибо что используете наш сервис. Блин, прямо сказка какая-то. Закончилась.
Все, я ушел пить пиво к соседке.
UPD: ах да, мы юзаем JSONP, т.е. отсылать будем только GET и естественно при переводе более-менее длинного текста (не разбирался, но при 520 символов кириллицы истинно) словим HTTP 414 (который в данном конкретном случае почему-то обзывают 404)
Google Translate API Tutorial for PHP / Javascript / Java
In Google Translate API Tutorial, I have explained how to convert text from one language to another using Google Translate API in PHP / JavaScript / Java.
Translate API has daily limit of 2 Million characters per day. You can increase the limit in the cloud console up to 50 Millions characters per day.They charge 20$ for 1 Million characters. Check this URL for Pricing Details.
1). How to Get Google Translate API Key.
To use the API you need get a Google API key;
a). Go to Cloud Console
b). Create a Project and select it.
c). On the left side bar, Go to “APIs & auth” Tab => APIs Tab
d). Enable “Translate API”
e). Go to “Credentials” Tab
f). Click on “CREATE NEW KEY”
g). Create “Server Key” for PHP / Java / Ruby / Python. Create “Browser Key” for JavaScript.
Check this page, how to get Google API key
2). List of Google Translate API
Google Provided REST API, so you can use them in any language.
You can pass below parameters to Translate API.
You need to send GET request in the below format.
Response from API :
You can request multiple translations in single request. You can do this by sending multiple ‘q’ parameters.
Sample GET request:
Response format:
2.2) detect – You can use this API to detect the language of given text.
Sample GET Request:
Response:
2.3). languages – This API Lists the Source and Destination languages supported by the translate method
Sample GET Request:
If there is any error in the URL request, you will get the error in the below formats.
ERROR 1: Response when the key is invalid
ERROR 2: Response when target parameter is missing.
3) Google Translate API PHP Example.
To use Google Translate API in PHP, you need to get Google API “Server Key”. All the translate API are called using GET requests. So we can use file_get_contents() or PHP CURL Library.To encode the parameter, rawurlencode() function is used. To decode JSON text as object, json_decode() function is used.
I have given two examples, you can use any of these two examples.
Using CURL library:
PHP Example Using file_get_contents()
4) Google Translate API Java Example.
To use Translate API in Java, you need to get Google API “Server Key”. GSON Library is used to parse JSON text.
You can use the below Java code to translate text.
5) Google Translate API JavaScript Example.
To use Translate API in JavaScript, you need to get Google API “Browser Key”. We can pass callback parameter in the URL Request, So callback function is invoked when the request is successful.
Sample GET Request:
Response is:
Below is the JavaScript example:
We are dynamically adding a script to head, So when the request is successful showIt() function called.
If you want to translate text with AJAX call, you can use the below example.