Kostenloses Google Translate API PHP-Paket. Übersetzt völlig kostenlos.
Installieren Sie dieses Paket über Composer.
composer require stichoza/google-translate-php
Hinweis: PHP 8.0 oder höher ist erforderlich. Verwenden Sie folgende Versionen dieses Pakets für ältere PHP-Versionen:
Paketversion | PHP-Version | Dokumentation |
---|---|---|
^5.1 | PHP >= 8.0 | v5-Dokumente |
^4.1 | PHP >= 7.1 | v4-Dokumente |
^3.2 | PHP < 7.1 | v3-Dokumente |
Erstellen Sie ein GoogleTranslate-Objekt
use Stichoza GoogleTranslate GoogleTranslate ;
$ tr = new GoogleTranslate ( ' en ' ); // Translates into English
Oder Sie können die Sprache später ändern
$ 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
Sätze übersetzen
echo $ tr -> translate ( ' Hello World! ' );
Sie können auch Methodenverkettung verwenden
echo $ tr -> setSource ( ' en ' )-> setTarget ( ' ka ' )-> translate ( ' Goodbye ' );
Oder rufen Sie eine statische Methode trans
auf
echo GoogleTranslate:: trans ( ' Hello again ' , ' ka ' , ' en ' );
Um die Sprache automatisch zu erkennen, setzen Sie einfach die Quellsprache auf null
:
$ tr = new GoogleTranslate ( ' es ' , null ); // Or simply do not pass the second parameter
$ tr -> setSource (); // Another way
Verwenden Sie getLastDetectedSource()
um die erkannte Sprache abzurufen:
$ tr = new GoogleTranslate ( ' fr ' );
$ text = $ tr -> translate ( ' Hello World! ' );
echo $ tr -> getLastDetectedSource (); // Output : en
Der Rückgabewert ist null
, wenn die Sprache nicht erkannt werden konnte.
Mit der Methode languages
“ können Sie eine Liste aller unterstützten Sprachen abrufen.
$ tr = new GoogleTranslate ();
$ languages = $ tr -> languages (); // Get supported languages in iso - 639 format
// Output : [ 'ab' , 'ace' , 'ach' , 'aa' , 'af' , 'sq' , 'alz' , ... ]
Übergeben Sie optional einen Zielsprachencode, um unterstützte Sprachen abzurufen, deren Namen in dieser Sprache angezeigt werden.
$ 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 '
Wie bei den translate
/ trans
-Methoden können Sie auch eine statische langs
-Methode verwenden:
GoogleTranslate:: langs ();
// Output : [ 'ab' , 'ace' , 'ach' , 'aa' , 'af' , 'sq' , 'alz' , ... ]
GoogleTranslate:: langs ( ' en ' );
// Output : [ 'en' => English' , ' es ' => ' Spanish ' , ' it' => 'Italian' , ... ]
Unterstützte Sprachen sind auch in den Google API-Dokumenten aufgeführt.
Mit der Methode preserveParameters()
können Sie bestimmte Parameter in Zeichenfolgen beibehalten, während Sie Übersetzungen durchführen. Dies ist besonders nützlich, wenn es um Lokalisierungsdateien oder Template-Engines geht, bei denen bestimmte Platzhalter von der Übersetzung ausgeschlossen werden müssen.
Der Standard-Regex ist /:(w+)/
der Parameter abdeckt, die mit :
beginnen. Nützlich zum Übersetzen von Sprachdateien von Laravel und anderen Frameworks. Sie können auch Ihren benutzerdefinierten regulären Ausdruck übergeben, um die Parametersyntax zu ändern.
$ 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
Oder verwenden Sie einen benutzerdefinierten regulären Ausdruck:
$ text = $ tr -> preserveParameters ( ' /{{([^}]+)}}/ ' )
-> translate ( ' Page {{current}} of {{total}} ' ); // Seite { { current } } von { { total } }
Sie können dieselbe Funktion auch mit der statischen trans()
Methode verwenden.
GoogleTranslate:: trans ( ' Welcome :name ' , ' fr ' , preserveParameters: true ); // Default regex
GoogleTranslate:: trans ( ' Welcome {{name}} ' , ' fr ' , preserveParameters: ' /{{([^}]+)}}/ ' ); // Custom regex
Für die erweiterte Nutzung benötigen Sie möglicherweise die Rohergebnisse, die Google Translate bereitstellt. Sie können dafür getResponse
-Methode verwenden.
$ responseArray = $ tr -> getResponse ( ' Hello world! ' );
Sie können die standardmäßige Google Translate-URL mit der setUrl
-Methode überschreiben. Nützlich für einige Länder
$ tr -> setUrl ( ' http://translate.google.cn/translate_a/single ' );
Dieses Paket verwendet Guzzle für HTTP-Anfragen. Sie können ein Array von Guzzle-Client-Konfigurationsoptionen als dritten Parameter an den GoogleTranslate
Konstruktor übergeben oder einfach setOptions
-Methode verwenden.
Mit diesen Optionen können Sie Proxy, Benutzeragent, Standardheader, Verbindungszeitlimit usw. konfigurieren.
$ 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 ' );
Weitere Informationen finden Sie im Abschnitt „Erstellen eines Clients“ in der Guzzle-Dokumentation.
Sie können die Token-Generatorklasse überschreiben, indem Sie ein Generatorobjekt als vierten Parameter des Konstruktors übergeben oder einfach die Methode setTokenProvider
verwenden.
Der Generator muss StichozaGoogleTranslateTokensTokenProviderInterface
implementieren.
use Stichoza GoogleTranslate Tokens TokenProviderInterface ;
class MyTokenGenerator implements TokenProviderInterface
{
public function generateToken ( string $ source , string $ target , string $ text ): string
{
// Your code here
}
}
Und verwenden Sie:
$ tr -> setTokenProvider ( new MyTokenGenerator );
Google Translate verfügt über einen Parameter namens client
, der die Qualität der Übersetzung definiert. Zuerst wurde es auf webapp
eingestellt, aber später fügte Google gtx
-Wert hinzu, was zu einer besseren Übersetzungsqualität in Bezug auf Grammatik und Gesamtbedeutung der Sätze führte.
Sie können die Methode ->setClient()
verwenden, um zwischen Clients zu wechseln. Wenn Sie beispielsweise eine ältere Version des Übersetzungsalgorithmus verwenden möchten, geben Sie $tr->setClient('webapp')->translate('lorem ipsum...')
ein. Der Standardwert ist gtx
.
Die statische Methode trans()
und die nicht-statischen Methoden translate()
und getResponse()
lösen die folgenden Ausnahmen aus:
ErrorException
Wenn die HTTP-Anfrage aus irgendeinem Grund fehlschlägt.UnexpectedValueException
Wenn von Google empfangene Daten nicht dekodiert werden können. Ab Version 5.1.0 sind konkrete Ausnahmen im Namensraum StichozaGoogleTranslateExceptions
verfügbar:
LargeTextException
Wenn der angeforderte Text zu groß zum Übersetzen ist.RateLimitException
Wenn Google Sie wegen übermäßiger Mengenanfragen blockiert hat.TranslationRequestException
Wenn während der Übersetzung ein anderer HTTP-bezogener Fehler auftritt.TranslationDecodingException
Wenn der Antwort-JSON nicht dekodiert werden kann.Alle konkreten Ausnahmen sind abwärtskompatibel. Wenn Sie also ältere Versionen verwenden, müssen Sie Ihren Code nicht aktualisieren.
TranslationDecodingException
erweitert UnexpectedValueException
, während LargeTextException
, RateLimitException
und TranslationRequestException
ErrorException
erweitern, die in älteren Versionen ( <5.1.0
) dieses Pakets verwendet wurde.
Darüber hinaus geben die Methoden translate()
und trans()
null
zurück, wenn keine Übersetzung verfügbar ist.
503 Service Unavailable
: Wenn Sie diese Fehlermeldung erhalten, hat Google höchstwahrscheinlich Ihre externe IP-Adresse gesperrt und/oder Sie müssen ein CAPTCHA lösen. Dies ist kein Fehler in diesem Paket. Google ist strenger geworden und scheint die Anzahl der zulässigen Anfragen pro IP für einen bestimmten Zeitraum immer weiter zu senken. Versuchen Sie, weniger Anfragen zu senden, um unter dem Radar zu bleiben, oder ändern Sie Ihre IP häufig (z. B. mithilfe von Proxys). Bitte beachten Sie, dass die Sperrung einer IP, auch wenn sie nur vorübergehend ist, zwischen einigen Minuten und mehr als 12–24 Stunden dauern kann, da jeder Fall anders ist.429 Too Many Requests
: Dieser Fehler ist im Grunde derselbe wie oben erläutert.413 Request Entity Too Large
: Dieser Fehler bedeutet, dass Ihre Eingabezeichenfolge zu lang ist. Google erlaubt nur die gleichzeitige Übersetzung von maximal 5000 Zeichen. Wenn Sie einen längeren Text übersetzen möchten, können Sie ihn in kürzere Teile aufteilen und diese einzeln übersetzen.403 Forbidden
Antwort: Dies ist bei diesem Paket kein Problem. Google Translate selbst hat einige Probleme, wenn es um die Übersetzung einiger Zeichen und HTML-Entitäten geht. Siehe #119 (Kommentar) Dieses Paket wurde nur für Bildungszwecke entwickelt. Verlassen Sie sich nicht auf dieses Paket, da es jederzeit kaputt gehen kann, da es auf dem Crawlen der Google Translate-Website basiert. Erwägen Sie den Kauf der offiziellen Google Translate API für andere Nutzungsarten.
Wenn Ihnen dieses Paket dabei geholfen hat, die Entwicklungszeit zu verkürzen, oder größere Probleme, die Sie hatten, gelöst hat, können Sie mir gerne eine Tasse Kaffee anbieten :)