• Stars
    star
    1,791
  • Rank 25,940 (Top 0.6 %)
  • Language
    PHP
  • License
    MIT License
  • Created over 11 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

๐Ÿ”ค Free Google Translate API PHP Package. Translates totally free of charge.

Google Translate PHP

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 8.0 or later is required. Use following versions of this package for older PHP versions:

Package version PHP Version Documentation
^5.1 PHP >= 8.0 v5 Docs
^4.1 PHP >= 7.1 v4 Docs
^3.2 PHP < 7.1 v3 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.

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() methods will throw following exceptions:

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

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.

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 #119 (comment)

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 to give me a cup of coffee :)

More Repositories

1

awesome-georgia

๐Ÿ‡ฌ๐Ÿ‡ช A curated list of awesome libraries and packages specific/related to Georgia (country).
87
star
2

font-larisome

๐Ÿ’ถ Font Larisome - Iconic font for Georgian Lari (โ‚พ) inspired by Font-Awesome
SCSS
39
star
3

phemoji

๐Ÿ˜ Emojis in PHP. Write code with emojis
PHP
33
star
4

nbg-currency

๐Ÿ’ต National Bank of Georgia (NBG) currency service API wrapper in PHP
PHP
28
star
5

skype-status-php

PHP class to get Skype user's online status
PHP
19
star
6

laravel-coderunner

โ–ถ๏ธ Add Laravel support to CodeRunner (Tinker in CodeRunner)
PHP
12
star
7

project-switcher-for-wamp

Switch root www directories easily without folder renaming
Shell
7
star
8

georgian-number-to-words

Convert a number or money into a localized string (Georgian). แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒงแƒ•แƒแƒœแƒ แƒกแƒ˜แƒขแƒงแƒ•แƒ˜แƒ”แƒ แƒแƒ“, แƒฅแƒแƒ แƒ—แƒฃแƒš แƒ”แƒœแƒแƒ–แƒ”. แƒ แƒแƒ’แƒแƒ แƒช แƒ แƒ˜แƒชแƒฎแƒ•แƒ˜, แƒแƒกแƒ”แƒ•แƒ” แƒ—แƒแƒœแƒฎแƒ.
PHP
7
star
9

anti-nbavote

Google Chrome extension to hide all status updates containing #NBAVote hastag
JavaScript
6
star
10

georgian-text-generator

Generate Georgian words and sentences wisely
PHP
5
star
11

price-normalizer

Convert odd prices to real prices on shopping web sites.
CSS
5
star
12

tsu-exam-finder

๐ŸŽ“ Find exact place where you should sit on your exam.
PHP
5
star
13

nbg-currency-cli

๐Ÿ–ฅ Command-line tool for National Bank of Georgia currency service
PHP
4
star
14

AnySoftKeyboardLanguagePackGeorgian

Georgian full layout for AnySoftKeyboard Android
Java
4
star
15

linux-brightness-binary

Linux command line tool for setting display brightness on laptops
C
3
star
16

pvm

PHP Version Manager for MAMP Pro (CLI)
Shell
3
star
17

pointerhub

Just testing Node.JS and Socket.IO
JavaScript
2
star
18

FreshPHP

Fresh PHP MVC framework
PHP
2
star
19

radiotray-bookmarks

Enhanced bookmarks.xml for RadioTray
JavaScript
2
star
20

chrome-flat-css

Chrome flat window in plain CSS
CSS
1
star
21

motorhead-tegetarius

Nothing interesting, just playing with Lumen.
PHP
1
star
22

triangler

jQuery plug-in for generating minimalist triangular backgrounds using HTML5 Canvas
CoffeeScript
1
star
23

emul.ge

emul.ge main repository
HTML
1
star
24

CutieCrawler

RPG style game for Android
ActionScript
1
star
25

muzzq

Online player for listening to music with friends.
JavaScript
1
star
26

smsglobal-php-sdk

SMSGlobal.com PHP SDK for SOAP-API
PHP
1
star