Paket PHP API Google Terjemahan Gratis. Menerjemahkan sepenuhnya gratis.
Instal paket ini melalui Komposer.
composer require stichoza/google-translate-php
Catatan Diperlukan PHP 8.0 atau lebih baru . Gunakan versi berikut dari paket ini untuk versi PHP yang lebih lama:
Versi paket | Versi PHP | Dokumentasi |
---|---|---|
^5.1 | PHP >= 8.0 | v5 Dokumen |
^4.1 | PHP >= 7.1 | v4 Dokumen |
^3.2 | PHP <7.1 | v3 Dokumen |
Buat objek GoogleTranslate
use Stichoza GoogleTranslate GoogleTranslate ;
$ tr = new GoogleTranslate ( ' en ' ); // Translates into English
Atau Anda dapat mengubah bahasa nanti
$ 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
Terjemahkan kalimat
echo $ tr -> translate ( ' Hello World! ' );
Selain itu, Anda juga dapat menggunakan metode chaining
echo $ tr -> setSource ( ' en ' )-> setTarget ( ' ka ' )-> translate ( ' Goodbye ' );
Atau panggil metode statis singkat trans
echo GoogleTranslate:: trans ( ' Hello again ' , ' ka ' , ' en ' );
Untuk mendeteksi bahasa secara otomatis, cukup atur bahasa sumber ke null
:
$ tr = new GoogleTranslate ( ' es ' , null ); // Or simply do not pass the second parameter
$ tr -> setSource (); // Another way
Gunakan getLastDetectedSource()
untuk mendeteksi bahasa:
$ tr = new GoogleTranslate ( ' fr ' );
$ text = $ tr -> translate ( ' Hello World! ' );
echo $ tr -> getLastDetectedSource (); // Output : en
Nilai yang dikembalikan akan menjadi null
jika bahasa tidak dapat dideteksi.
Anda bisa mendapatkan daftar semua bahasa yang didukung menggunakan metode languages
.
$ tr = new GoogleTranslate ();
$ languages = $ tr -> languages (); // Get supported languages in iso - 639 format
// Output : [ 'ab' , 'ace' , 'ach' , 'aa' , 'af' , 'sq' , 'alz' , ... ]
Secara opsional, berikan kode bahasa target untuk mengambil bahasa yang didukung dengan nama yang ditampilkan dalam bahasa tersebut.
$ 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 '
Sama seperti metode translate
/ trans
, Anda juga dapat menggunakan metode langs
statis:
GoogleTranslate:: langs ();
// Output : [ 'ab' , 'ace' , 'ach' , 'aa' , 'af' , 'sq' , 'alz' , ... ]
GoogleTranslate:: langs ( ' en ' );
// Output : [ 'en' => English' , ' es ' => ' Spanish ' , ' it' => 'Italian' , ... ]
Bahasa yang didukung juga tercantum dalam dokumen Google API.
Metode preserveParameters()
memungkinkan Anda mempertahankan parameter tertentu dalam string saat melakukan terjemahan. Hal ini sangat berguna ketika menangani file pelokalan atau mesin templating di mana placeholder tertentu perlu dikecualikan dari terjemahan.
Regex default adalah /:(w+)/
yang mencakup parameter yang dimulai dengan :
. Berguna untuk menerjemahkan file bahasa Laravel dan framework lainnya. Anda juga dapat meneruskan regex khusus Anda untuk mengubah sintaks parameter.
$ 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
Atau gunakan regex khusus:
$ text = $ tr -> preserveParameters ( ' /{{([^}]+)}}/ ' )
-> translate ( ' Page {{current}} of {{total}} ' ); // Seite { { current } } von { { total } }
Anda juga dapat menggunakan fitur yang sama dengan metode trans()
statis.
GoogleTranslate:: trans ( ' Welcome :name ' , ' fr ' , preserveParameters: true ); // Default regex
GoogleTranslate:: trans ( ' Welcome {{name}} ' , ' fr ' , preserveParameters: ' /{{([^}]+)}}/ ' ); // Custom regex
Untuk penggunaan tingkat lanjut, Anda mungkin memerlukan hasil mentah yang disediakan Google Terjemahan. Anda dapat menggunakan metode getResponse
untuk itu.
$ responseArray = $ tr -> getResponse ( ' Hello world! ' );
Anda dapat mengganti url default Google Terjemahan dengan metode setUrl
. Berguna untuk beberapa negara
$ tr -> setUrl ( ' http://translate.google.cn/translate_a/single ' );
Paket ini menggunakan Guzzle untuk permintaan HTTP. Anda dapat meneruskan serangkaian opsi konfigurasi klien guzzle sebagai parameter ketiga ke konstruktor GoogleTranslate
, atau cukup gunakan metode setOptions
.
Anda dapat mengonfigurasi proxy, agen pengguna, header default, batas waktu koneksi, dan sebagainya menggunakan opsi ini.
$ 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 ' );
Untuk informasi lebih lanjut, lihat bagian Membuat Klien di dokumen Guzzle.
Anda dapat mengganti kelas pembuat token dengan meneruskan objek generator sebagai parameter konstruktor keempat atau cukup menggunakan metode setTokenProvider
.
Generator harus mengimplementasikan StichozaGoogleTranslateTokensTokenProviderInterface
.
use Stichoza GoogleTranslate Tokens TokenProviderInterface ;
class MyTokenGenerator implements TokenProviderInterface
{
public function generateToken ( string $ source , string $ target , string $ text ): string
{
// Your code here
}
}
Dan gunakan:
$ tr -> setTokenProvider ( new MyTokenGenerator );
Google Terjemahan memiliki parameter bernama client
yang menentukan kualitas terjemahan. Pertama disetel ke webapp
tetapi kemudian Google menambahkan nilai gtx
yang menghasilkan kualitas terjemahan yang lebih baik dalam hal tata bahasa dan makna kalimat secara keseluruhan.
Anda dapat menggunakan metode ->setClient()
untuk beralih antar klien. Misalnya jika Anda ingin menggunakan algoritme terjemahan versi lama, ketik $tr->setClient('webapp')->translate('lorem ipsum...')
. Nilai defaultnya adalah gtx
.
Metode statis trans()
dan metode non-statis translate()
dan getResponse()
akan memunculkan pengecualian berikut:
ErrorException
Jika permintaan HTTP gagal karena alasan tertentu.UnexpectedValueException
Jika data yang diterima dari Google tidak dapat didekodekan. Pada v5.1.0 pengecualian konkret tersedia di namespace StichozaGoogleTranslateExceptions
:
LargeTextException
Jika teks yang diminta terlalu besar untuk diterjemahkan.RateLimitException
Jika Google memblokir Anda karena permintaan dalam jumlah berlebihan.TranslationRequestException
Jika terjadi kesalahan terkait HTTP lainnya selama penerjemahan.TranslationDecodingException
Jika respons JSON tidak dapat didekodekan.Semua pengecualian konkret kompatibel ke belakang, jadi jika Anda menggunakan versi yang lebih lama, Anda tidak perlu memperbarui kode Anda.
TranslationDecodingException
memperluas UnexpectedValueException
, sementara LargeTextException
, RateLimitException
dan TranslationRequestException
memperluas ErrorException
yang digunakan dalam versi lama ( <5.1.0
) paket ini.
Selain itu, metode translate()
dan trans()
akan mengembalikan null
jika tidak ada terjemahan yang tersedia.
503 Service Unavailable
: Jika Anda mendapatkan kesalahan ini, kemungkinan besar Google telah memblokir alamat IP eksternal Anda dan/atau mengharuskan Anda menyelesaikan CAPTCHA. Ini bukan bug dalam paket ini. Google menjadi lebih ketat, dan sepertinya mereka terus menurunkan jumlah permintaan yang diizinkan per IP dalam jangka waktu tertentu. Cobalah mengirimkan lebih sedikit permintaan agar tidak terdeteksi, atau sering-seringlah mengubah IP Anda (misalnya menggunakan proxy). Perlu diketahui bahwa sekali suatu IP dicekal, meskipun hanya bersifat sementara, pelarangan tersebut dapat berlangsung dari beberapa menit hingga lebih dari 12-24 jam, karena setiap kasusnya berbeda.429 Too Many Requests
: Kesalahan ini pada dasarnya sama seperti yang dijelaskan di atas.413 Request Entity Too Large
: Kesalahan ini berarti string masukan Anda terlalu panjang. Google hanya mengizinkan maksimal 5000 karakter untuk diterjemahkan sekaligus. Jika Anda ingin menerjemahkan teks yang lebih panjang, Anda dapat membaginya menjadi beberapa bagian yang lebih pendek, dan menerjemahkannya satu per satu.403 Forbidden
: Ini bukan masalah pada paket ini. Google Translate sendiri memiliki beberapa masalah saat menerjemahkan beberapa karakter dan entitas HTML. Lihat #119 (komentar) Paket ini dikembangkan untuk tujuan pendidikan saja. Jangan bergantung pada paket ini karena paket ini dapat rusak kapan saja karena didasarkan pada perayapan situs web Google Terjemahan. Pertimbangkan untuk membeli API Google Terjemahan Resmi untuk jenis penggunaan lainnya.
Jika paket ini membantu Anda mengurangi waktu untuk mengembangkan sesuatu, atau menyelesaikan masalah besar yang Anda hadapi, silakan beri saya secangkir kopi :)