Package PHP gratuit de l'API Google Translate. Traduit totalement gratuitement.
Installez ce package via Composer.
composer require stichoza/google-translate-php
Remarque PHP 8.0 ou version ultérieure est requis. Utilisez les versions suivantes de ce package pour les anciennes versions de PHP :
Version du paquet | Version PHP | Documentation |
---|---|---|
^5.1 | PHP >= 8.0 | Documents v5 |
^4.1 | PHP >= 7.1 | Documents v4 |
^3.2 | PHP < 7.1 | Documents v3 |
Créer un objet GoogleTranslate
use Stichoza GoogleTranslate GoogleTranslate ;
$ tr = new GoogleTranslate ( ' en ' ); // Translates into English
Ou vous pouvez changer de langue plus tard
$ 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
Traduire des phrases
echo $ tr -> translate ( ' Hello World! ' );
En outre, vous pouvez également utiliser le chaînage de méthodes
echo $ tr -> setSource ( ' en ' )-> setTarget ( ' ka ' )-> translate ( ' Goodbye ' );
Ou appelez une méthode statique abrégée trans
echo GoogleTranslate:: trans ( ' Hello again ' , ' ka ' , ' en ' );
Pour détecter automatiquement la langue, définissez simplement la langue source sur null
:
$ tr = new GoogleTranslate ( ' es ' , null ); // Or simply do not pass the second parameter
$ tr -> setSource (); // Another way
Utilisez getLastDetectedSource()
pour obtenir la langue détectée :
$ tr = new GoogleTranslate ( ' fr ' );
$ text = $ tr -> translate ( ' Hello World! ' );
echo $ tr -> getLastDetectedSource (); // Output : en
La valeur de retour sera null
si la langue n'a pas pu être détectée.
Vous pouvez obtenir une liste de toutes les langues prises en charge en utilisant la méthode languages
.
$ tr = new GoogleTranslate ();
$ languages = $ tr -> languages (); // Get supported languages in iso - 639 format
// Output : [ 'ab' , 'ace' , 'ach' , 'aa' , 'af' , 'sq' , 'alz' , ... ]
Vous pouvez éventuellement transmettre un code de langue cible pour récupérer les langues prises en charge dont les noms sont affichés dans cette langue.
$ tr = new GoogleTranslate ();
$ languages = $ tr -> languages ( ' en ' ); // Get supported languages , display name in english
// Output : [ 'en' => English' , ' es ' => ' Spanish ' , ' it' => 'Italian' , ... ]
echo $ languages [ ' en ' ]; // Output : ' English '
echo $ languages [ ' ka ' ]; // Output : ' Georgian '
Comme avec les méthodes translate
/ trans
, vous pouvez également utiliser une méthode langs
statiques :
GoogleTranslate:: langs ();
// Output : [ 'ab' , 'ace' , 'ach' , 'aa' , 'af' , 'sq' , 'alz' , ... ]
GoogleTranslate:: langs ( ' en ' );
// Output : [ 'en' => English' , ' es ' => ' Spanish ' , ' it' => 'Italian' , ... ]
Les langues prises en charge sont également répertoriées dans la documentation de l'API Google.
La méthode preserveParameters()
vous permet de conserver certains paramètres dans les chaînes lors de l'exécution des traductions. Ceci est particulièrement utile lorsqu'il s'agit de fichiers de localisation ou de moteurs de création de modèles où des espaces réservés spécifiques doivent être exclus de la traduction.
L'expression régulière par défaut est /:(w+)/
qui couvre les paramètres commençant par :
. Utile pour traduire les fichiers de langue de Laravel et d'autres frameworks. Vous pouvez également transmettre votre regex personnalisée pour modifier la syntaxe des paramètres.
$ tr = new GoogleTranslate ( ' de ' );
$ text = $ tr -> translate ( ' Page :current of :total ' ); // Seite : aktuell von : gesamt
$ text = $ tr -> preserveParameters ()
-> translate ( ' Page :current of :total ' ); // Seite : current von : total
Ou utilisez une expression régulière personnalisée :
$ text = $ tr -> preserveParameters ( ' /{{([^}]+)}}/ ' )
-> translate ( ' Page {{current}} of {{total}} ' ); // Seite { { current } } von { { total } }
Vous pouvez également utiliser la même fonctionnalité avec la méthode statique trans()
.
GoogleTranslate:: trans ( ' Welcome :name ' , ' fr ' , preserveParameters: true ); // Default regex
GoogleTranslate:: trans ( ' Welcome {{name}} ' , ' fr ' , preserveParameters: ' /{{([^}]+)}}/ ' ); // Custom regex
Pour une utilisation avancée, vous aurez peut-être besoin des résultats bruts fournis par Google Translate. vous pouvez utiliser la méthode getResponse
pour cela.
$ responseArray = $ tr -> getResponse ( ' Hello world! ' );
Vous pouvez remplacer l'URL par défaut de Google Translate par la méthode setUrl
. Utile pour certains pays
$ tr -> setUrl ( ' http://translate.google.cn/translate_a/single ' );
Ce package utilise Guzzle pour les requêtes HTTP. Vous pouvez transmettre un tableau d'options de configuration du client guzzle en tant que troisième paramètre au constructeur GoogleTranslate
, ou simplement utiliser la méthode setOptions
.
Vous pouvez configurer le proxy, l'agent utilisateur, les en-têtes par défaut, le délai d'expiration de la connexion, etc. à l'aide de ces 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 ' );
Pour plus d'informations, consultez la section Création d'un client dans la documentation Guzzle.
Vous pouvez remplacer la classe du générateur de jetons en passant un objet générateur comme quatrième paramètre du constructeur ou simplement utiliser la méthode setTokenProvider
.
Le générateur doit implémenter StichozaGoogleTranslateTokensTokenProviderInterface
.
use Stichoza GoogleTranslate Tokens TokenProviderInterface ;
class MyTokenGenerator implements TokenProviderInterface
{
public function generateToken ( string $ source , string $ target , string $ text ): string
{
// Your code here
}
}
Et utilisez :
$ tr -> setTokenProvider ( new MyTokenGenerator );
Google Translate possède un paramètre nommé client
qui définit la qualité de la traduction. Au début, il a été défini sur webapp
mais plus tard, Google a ajouté la valeur gtx
, ce qui se traduit par une meilleure qualité de traduction en termes de grammaire et de sens général des phrases.
Vous pouvez utiliser la méthode ->setClient()
pour basculer entre les clients. Par exemple, si vous souhaitez utiliser une ancienne version de l'algorithme de traduction, tapez $tr->setClient('webapp')->translate('lorem ipsum...')
. La valeur par défaut est gtx
.
Les méthodes statiques trans()
et non statiques translate()
et getResponse()
lèveront les exceptions suivantes :
ErrorException
Si la requête HTTP échoue pour une raison quelconque.UnexpectedValueException
Si les données reçues de Google ne peuvent pas être décodées. Depuis la version 5.1.0, des exceptions concrètes sont disponibles dans l'espace de noms StichozaGoogleTranslateExceptions
:
LargeTextException
Si le texte demandé est trop volumineux pour être traduit.RateLimitException
Si Google vous a bloqué pour des demandes de montant excessif.TranslationRequestException
Si une autre erreur liée à HTTP se produit pendant la traduction.TranslationDecodingException
Si la réponse JSON ne peut pas être décodée.Toutes les exceptions concrètes sont rétrocompatibles, donc si vous utilisiez des versions plus anciennes, vous n'aurez pas à mettre à jour votre code.
TranslationDecodingException
étend UnexpectedValueException
, tandis que LargeTextException
, RateLimitException
et TranslationRequestException
étendent ErrorException
qui était utilisée dans les anciennes versions ( <5.1.0
) de ce package.
De plus, les méthodes translate()
et trans()
renverront null
si aucune traduction n'est disponible.
503 Service Unavailable
: Si vous obtenez cette erreur, il est fort probable que Google ait interdit votre adresse IP externe et/ou vous demande de résoudre un CAPTCHA. Ce n'est pas un bug dans ce package. Google est devenu plus strict et il semble qu'il continue de réduire le nombre de requêtes autorisées par IP pendant un certain laps de temps. Essayez d'envoyer moins de requêtes pour rester sous le radar ou changez fréquemment votre adresse IP (par exemple en utilisant des proxys). Veuillez noter qu'une fois qu'une IP est bannie, même si elle n'est que temporaire, le bannissement peut durer de quelques minutes à plus de 12 à 24 heures, car chaque cas est différent.429 Too Many Requests
: Cette erreur est fondamentalement la même que celle expliquée ci-dessus.413 Request Entity Too Large
: Cette erreur signifie que votre chaîne d’entrée est trop longue. Google autorise uniquement la traduction simultanée d'un maximum de 5 000 caractères. Si vous souhaitez traduire un texte plus long, vous pouvez le diviser en parties plus courtes et les traduire une par une.403 Forbidden
: ce n'est pas un problème avec ce package. Google Translate lui-même a quelques problèmes lorsqu'il s'agit de traduire certains caractères et entités HTML. Voir #119 (commentaire) Ce package est développé à des fins éducatives uniquement. Ne comptez pas sur ce package car il peut tomber en panne à tout moment car il est basé sur l'exploration du site Web de Google Translate. Pensez à acheter l'API officielle de Google Translate pour d'autres types d'utilisation.
Si ce package vous a aidé à réduire votre temps de développement de quelque chose, ou s'il a résolu des problèmes majeurs que vous avez rencontrés, n'hésitez pas à m'offrir une tasse de café :)