🌐 Free Google Translate API PHP Package. Translates totally free of charge.

Overview

Google Translate PHP

Build Status Latest Stable Version Total Downloads Downloads Month Petreon donation PayPal donation

Free Google Translate API PHP Package. Translates totally free of charge.


Installation

Install this package via Composer.

composer require stichoza/google-translate-php

Note: PHP 7.1 or later is required. For older versoins, use ^3.2 version of this package (see old docs).

Basic Usage

Create GoogleTranslate object

use Stichoza\GoogleTranslate\GoogleTranslate;

$tr = new GoogleTranslate('en'); // Translates into English

Or you can change languages later

$tr = new GoogleTranslate(); // Translates to 'en' from auto-detected language by default
$tr->setSource('en'); // Translate from English
$tr->setSource(); // Detect language automatically
$tr->setTarget('ka'); // Translate to Georgian

Translate sentences

echo $tr->translate('Hello World!');

Also, you can also use method chaining

echo $tr->setSource('en')->setTarget('ka')->translate('Goodbye');

Or call a shorthand static method trans

echo GoogleTranslate::trans('Hello again', 'ka', 'en');

Advanced Usage

Language Detection

To detect language automatically, just set the source language to null:

$tr = new GoogleTranslate('es', null); // Or simply do not pass the second parameter 
$tr->setSource(); // Another way

Use getLastDetectedSource() to get detected language:

$tr = new GoogleTranslate('fr');

$text = $tr->translate('Hello World!');

echo $tr->getLastDetectedSource(); // Output: en

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.

$responseArray = $tr->getResponse('Hello world!');

Custom URL

You can override the default Google Translate url by setUrl method. Useful for some countries

$tr->setUrl('http://translate.google.cn/translate_a/single'); 

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.

$tr = new GoogleTranslate('en', 'ka', [
    'timeout' => 10,
    'proxy' => [
        'http'  => 'tcp://localhost:8125',
        'https' => 'tcp://localhost:9124'
    ],
    'headers' => [
        'User-Agent' => 'Foo/5.0 Lorem Ipsum Browser'
    ]
]);
// Set proxy to tcp://localhost:8090
$tr->setOptions(['proxy' => 'tcp://localhost:8090'])->translate('Hello');

// Set proxy to socks5://localhost:1080
$tr->setOptions(['proxy' => 'socks5://localhost:1080'])->translate('World');

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.

Generator must implement Stichoza\GoogleTranslate\Tokens\TokenProviderInterface.

use Stichoza\GoogleTranslate\Tokens\TokenProviderInterface;

class MyTokenGenerator implements TokenProviderInterface
{
    public function generateToken(string $source, string $target, string $text) : string
    {
        // Your code here
    }
}

And use:

$tr->setTokenProvider(new MyTokenGenerator);

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.

You can use ->setClient() method to switch between clients. For example if you want to use older version of translation algorithm, type $tr->setClient('webapp')->translate('lorem ipsum...'). Default value is gtx.

Errors and Exception Handling

Static method trans() and non-static translate() and getResponse() will throw following Exceptions:

  • ErrorException If the HTTP request fails for some reason.
  • UnexpectedValueException If data received from Google cannot be decoded.

In addition, translate() and trans() methods will return null if there is no translation available.

Known Limitations

  • 503 Service Unavailable response: If you are getting this error, it is most likely that Google has banned your external IP address and/or requires you to solve a CAPTCHA. This is not a bug in this package. Google has become stricter, and it seems like they keep lowering the number of allowed requests per IP per a certain amount of time. Try sending less requests to stay under the radar, or change your IP frequently (for example using proxies). Please note that once an IP is banned, even if it's only temporary, the ban can last from a few minutes to more than 12-24 hours, as each case is different.
  • 429 Too Many Requests response: This error is basically the same as explained above.
  • 413 Request Entity Too Large response: This error means that your input string is too long. Google only allows a maximum of 5000 characters to be translated at once. If you want to translate a longer text, you can split it to shorter parts, and translate them one-by-one.
  • 403 Forbidden response: This is not an issue with this package. Google Translate itself has some problems when it comes to translating some characters and HTML entities. See https://github.com/Stichoza/google-translate-php/issues/119#issuecomment-558078133

Disclaimer

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.

Donation

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 :)

You might also like...
Simple Google Tts Api Class

Simple Google Tts Api Class

It's a PHP Application to simplify working with Google Sheets SDK for php.

About GoogleSheetsPHP It's a PHP Application to simplify working with Google Sheets SDK for php. Note: i used Slim 3 to construct the application but

A versatile PHP Library for Google PageSpeed Insights

PhpInsights An easy-to-use API Wrapper for Googles PageSpeed Insights. The JSON response is mapped to objects for an headache-free usage. Installation

Google Cloud Profiler for PHP

Google Cloud Profiler for PHP Idiomatic PHP client for Google Cloud Profiler. API documentation NOTE: This repository is part of Google Cloud PHP. Any

Adds a specific header to every response to disable Google's usage of your site in it's FLoC tracking method.

Go Unfloc Yourself Description A bundle for Symfony 5 that adds a Permissions-Policy header in all the responses to prevent the use of new Google's "F

🌏 Discover Random Destinations & Cities explored by people on Google Street View.
🌏 Discover Random Destinations & Cities explored by people on Google Street View.

Random Street View on Steroids 👀 Welcome to the streetviewhub.com codebase. Here lies all the code with all the awesomeness and 🐛 s. Have some ideas

Paperwork - OpenSource note-taking & archiving alternative to Evernote, Microsoft OneNote & Google Keep
Paperwork - OpenSource note-taking & archiving alternative to Evernote, Microsoft OneNote & Google Keep

Paperwork Paperwork is an open-source, self-hosted alternative to services like Evernote®, Microsoft OneNote® or Google Keep® iframe src="https://pla

This package is a simple API laravel wrapper for Pokemontcg with a sleek Model design for API routes and authentication.

This package is a simple API laravel wrapper for Pokemontcg with a sleek Model design for API routes and authentication.

PHP package for the Limg.app website - allowing to upload images via the API of the website.
PHP package for the Limg.app website - allowing to upload images via the API of the website.

Limg PHP Client Package. Installation You can install the package via composer: composer require havenstd06/limg-php-client Usage use Havenstd06\Limg\

Comments
  • Very slow

    Very slow

    Hi, first of all, kudos to you for making such a powerful, plug and play package, it simply works! However the translation process seems really slow. Is there anything I can do about that? Perhaps using a payed service?

    opened by vjoomens 0
Releases(v5.1.0)
  • v5.1.0(Nov 29, 2022)

    As of v5.1.0 concrete exceptions are available in \Stichoza\GoogleTranslate\Exceptions namespace:

    • LargeTextException If the requested text is too large to translate.
    • RateLimitException If Google has blocked you for excessive amount requests.
    • TranslationRequestException If any other HTTP related error occurs during translation.
    • TranslationDecodingException If the response JSON cannot be decoded.

    All concrete exceptions are backwards compatible, so if you were using older versions, you won't have to update your code.

    TranslationDecodingException extends UnexpectedValueException, while LargeTextException, RateLimitException and TranslationRequestException extend ErrorException that was used in older versions (<5.1.0) of this package.

    Finally a good answer to #70

    Source code(tar.gz)
    Source code(zip)
  • v5.0.1(Nov 28, 2022)

    Updated package to require PHP 8 as PHP 7.4 reached its end of life yesterday.

    • setOptions() method accepts only arrays, parameter is not nullable anymore. Likelihood of impact in low.
    • Updated PHPUnit and GuzzleHttp dependencies.
    • All properties and parameters are typed.
    • Various bugfixes and improvements.
    Source code(tar.gz)
    Source code(zip)
  • v4.1.5(Aug 5, 2021)

    • Switched from webapp client to gtx for better quality of translation. #163, Thanks @henno
    • Added setClient() method to switch between gtx and webapp clients (Default is gtx).
    Source code(tar.gz)
    Source code(zip)
  • v4.1.4(Jan 26, 2021)

  • v4.1.2(Dec 19, 2020)

  • v4.1.0(Feb 11, 2020)

  • v3.2.15(Feb 11, 2020)

  • v4.0.0(Dec 3, 2018)

    This is a major update. Please read docs before updating from v3.2 to v4.0.

    • PHP 7.1 or later is required.
    • Renamed class from TranslateClient to simply GoogleTranslate.
    • Removed array translation which was not working (might add later).
    • Changed signatures of methods (see docs).
    • Separate static trans() and non-static translate() methods.
    • Updated dependencies.
    • Various bugfixes.
    Source code(tar.gz)
    Source code(zip)
  • v3.2.1(Oct 28, 2015)

  • v3.1.1(Jun 2, 2015)

    • Language detection is not experimental feature now.
    • getLastDetectedSource() can be called both statically and non-statically.
    • Added third parameter $options for advanced configuration of Guzzle HTTP client. (@vkollin)
    • Switched to PSR-2 coding style. (@subsan)
    Source code(tar.gz)
    Source code(zip)
  • v3.0.1(Mar 19, 2015)

  • v3.0.0(Mar 18, 2015)

  • v2.0.3(Oct 17, 2014)

  • v2.0.0(Oct 17, 2014)

  • v1.3.0(Oct 28, 2013)

Owner
Levan Velijanashvili
Developer, Speaker, Geek. Founder of @metaoutdoor, Co-founder of @uniHackio and @bina24
Levan Velijanashvili
Google-api-php-client - A PHP client library for accessing Google APIs

Google APIs Client Library for PHP Reference Docs https://googleapis.github.io/google-api-php-client/main/ License Apache 2.0 The Google API Client Li

Google APIs 8.4k Dec 30, 2022
ProcessTranslatePage – A Processwire module to translate all page fields via Fluency

ProcessTranslatePage – A Processwire module to translate all page fields via Fluency ProcessTranslatePage is an extension for the Processwire module F

Robert Weiss 5 Aug 29, 2022
PHP package to manage google-api interactions

Google-api-client PHP package to manage google-api interactions Supports: Google Drive API Google Spreadsheet API Installation composer require obrio-

OBRIO 3 Apr 28, 2022
Google PHP API Client Services

Google PHP API Client Services

Google APIs 1.1k Dec 22, 2022
Google Drive Api Wrapper by PHP

GoogleDrive Api Wrapper usage at first you need to create oauth client on google cloud platform. so go to the your google console dashboard and create

Arash Abedi 2 Mar 24, 2022
Google Translator Api Wrapper For Php Developers.

Google Translator Api Wrapper For Php Developers.

Roldex Stark 2 Oct 12, 2022
Attempting to create an intelligent mock of the Google API PHP Client for unit and functional testing

google-api-php-client-mock A small scale intelligent mock of the Google API PHP Client for unit and functional testing. Overview This is intended to m

SIL International 0 Jan 4, 2022
A Laravel package to retrieve pageviews and other data from Google Analytics

Retrieve data from Google Analytics Using this package you can easily retrieve data from Google Analytics. Here are a few examples of the provided met

Spatie 2.8k Jan 7, 2023
Google VerifiedSMS Laravel Package

Google VerifiedSMS Laravel Package This is a laravel package developed for google business communication api and verified SMS API. Before we commence

Saju G 2 Nov 22, 2021
An elegant wrapper around Google Vision API

STILL UNDER DEVELOPMENT - DO NOT USE IN PRODUCTION Requires PHP 8.0+ For feedback, please contact me. This package provides an elegant wrapper around

Ahmad Mayahi 24 Nov 20, 2022