حزمة PHP API للترجمة من Google مجانًا. يترجم مجانا تماما.
قم بتثبيت هذه الحزمة عبر Composer.
composer require stichoza/google-translate-php
ملاحظة مطلوب PHP 8.0 أو الأحدث . استخدم الإصدارات التالية من هذه الحزمة لإصدارات PHP الأقدم:
نسخة الحزمة | نسخة PHP | التوثيق |
---|---|---|
^5.1 | بي إتش بي >= 8.0 | مستندات الإصدار الخامس |
^4.1 | بي إتش بي >= 7.1 | مستندات v4 |
^3.2 | PHP <7.1 | مستندات v3 |
قم بإنشاء كائن GoogleTranslate
use Stichoza GoogleTranslate GoogleTranslate ;
$ tr = new GoogleTranslate ( ' en ' ); // Translates into English
أو يمكنك تغيير اللغات لاحقًا
$ 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
ترجمة الجمل
echo $ tr -> translate ( ' Hello World! ' );
يمكنك أيضًا استخدام طريقة التسلسل
echo $ tr -> setSource ( ' en ' )-> setTarget ( ' ka ' )-> translate ( ' Goodbye ' );
أو اتصل بالطريقة الثابتة trans
echo GoogleTranslate:: trans ( ' Hello again ' , ' ka ' , ' en ' );
لاكتشاف اللغة تلقائيًا، ما عليك سوى ضبط اللغة المصدر على null
:
$ tr = new GoogleTranslate ( ' es ' , null ); // Or simply do not pass the second parameter
$ tr -> setSource (); // Another way
استخدم getLastDetectedSource()
للحصول على اللغة المكتشفة:
$ tr = new GoogleTranslate ( ' fr ' );
$ text = $ tr -> translate ( ' Hello World! ' );
echo $ tr -> getLastDetectedSource (); // Output : en
ستكون قيمة الإرجاع null
إذا تعذر اكتشاف اللغة.
يمكنك الحصول على قائمة بجميع اللغات المدعومة باستخدام طريقة languages
.
$ tr = new GoogleTranslate ();
$ languages = $ tr -> languages (); // Get supported languages in iso - 639 format
// Output : [ 'ab' , 'ace' , 'ach' , 'aa' , 'af' , 'sq' , 'alz' , ... ]
اختياريًا، قم بتمرير رمز اللغة المستهدفة لاسترداد اللغات المدعومة مع عرض الأسماء بتلك اللغة.
$ 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 '
كما هو الحال مع طرق translate
/ trans
، يمكنك أيضًا استخدام طريقة langs
الثابتة:
GoogleTranslate:: langs ();
// Output : [ 'ab' , 'ace' , 'ach' , 'aa' , 'af' , 'sq' , 'alz' , ... ]
GoogleTranslate:: langs ( ' en ' );
// Output : [ 'en' => English' , ' es ' => ' Spanish ' , ' it' => 'Italian' , ... ]
يتم أيضًا إدراج اللغات المدعومة في مستندات Google API.
يتيح لك الأسلوب preserveParameters()
الاحتفاظ بمعلمات معينة في السلاسل النصية أثناء إجراء الترجمات. يعد هذا مفيدًا بشكل خاص عند التعامل مع ملفات الترجمة أو محركات النماذج حيث يلزم استبعاد عناصر نائبة معينة من الترجمة.
التعبير العادي الافتراضي هو /:(w+)/
والذي يغطي المعلمات التي تبدأ بـ :
. مفيد لترجمة ملفات لغة Laravel وأطر العمل الأخرى. يمكنك أيضًا تمرير التعبير العادي الخاص بك لتعديل بناء جملة المعلمة.
$ 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
أو استخدم التعبير العادي المخصص:
$ text = $ tr -> preserveParameters ( ' /{{([^}]+)}}/ ' )
-> translate ( ' Page {{current}} of {{total}} ' ); // Seite { { current } } von { { total } }
يمكنك استخدام نفس الميزة مع طريقة trans()
الثابتة أيضًا.
GoogleTranslate:: trans ( ' Welcome :name ' , ' fr ' , preserveParameters: true ); // Default regex
GoogleTranslate:: trans ( ' Welcome {{name}} ' , ' fr ' , preserveParameters: ' /{{([^}]+)}}/ ' ); // Custom regex
للاستخدام المتقدم، قد تحتاج إلى النتائج الأولية التي توفرها خدمة الترجمة من Google. يمكنك استخدام طريقة getResponse
لذلك.
$ responseArray = $ tr -> getResponse ( ' Hello world! ' );
يمكنك تجاوز عنوان URL الافتراضي لترجمة Google باستخدام طريقة setUrl
. مفيدة لبعض البلدان
$ tr -> setUrl ( ' http://translate.google.cn/translate_a/single ' );
تستخدم هذه الحزمة Guzzle لطلبات HTTP. يمكنك تمرير مجموعة من خيارات تكوين عميل guzzle كمعلمة ثالثة لمنشئ GoogleTranslate
، أو استخدم طريقة setOptions
فقط.
يمكنك تكوين الوكيل ووكيل المستخدم والرؤوس الافتراضية ومهلة الاتصال وما إلى ذلك باستخدام هذه الخيارات.
$ 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 ' );
لمزيد من المعلومات، راجع قسم إنشاء عميل في مستندات Guzzle.
يمكنك تجاوز فئة منشئ الرمز المميز عن طريق تمرير كائن المولد كمعلمة رابعة للمنشئ أو مجرد استخدام طريقة setTokenProvider
.
يجب على المولد تنفيذ StichozaGoogleTranslateTokensTokenProviderInterface
.
use Stichoza GoogleTranslate Tokens TokenProviderInterface ;
class MyTokenGenerator implements TokenProviderInterface
{
public function generateToken ( string $ source , string $ target , string $ text ): string
{
// Your code here
}
}
واستخدام:
$ tr -> setTokenProvider ( new MyTokenGenerator );
تحتوي خدمة ترجمة Google على معلمة تسمى client
والتي تحدد جودة الترجمة. تم ضبطه أولاً على webapp
ولكن لاحقًا أضافت Google قيمة gtx
مما أدى إلى جودة ترجمة أفضل من حيث القواعد والمعنى العام للجمل.
يمكنك استخدام طريقة ->setClient()
للتبديل بين العملاء. على سبيل المثال، إذا كنت تريد استخدام إصدار أقدم من خوارزمية الترجمة، فاكتب $tr->setClient('webapp')->translate('lorem ipsum...')
. القيمة الافتراضية هي gtx
.
الطريقة الثابتة trans()
translate()
و getResponse()
ستطرح الاستثناءات التالية:
ErrorException
إذا فشل طلب HTTP لسبب ما.UnexpectedValueException
إذا تعذر فك تشفير البيانات الواردة من Google. اعتبارًا من الإصدار 5.1.0، تتوفر استثناءات ملموسة في مساحة الاسم StichozaGoogleTranslateExceptions
:
LargeTextException
إذا كان النص المطلوب كبيرًا جدًا بحيث لا يمكن ترجمته.RateLimitException
إذا حظرتك Google بسبب طلبات المبالغ الزائدة.TranslationRequestException
في حالة حدوث أي خطأ آخر متعلق بـ HTTP أثناء الترجمة.TranslationDecodingException
إذا كان لا يمكن فك تشفير الاستجابة JSON.جميع الاستثناءات الملموسة متوافقة مع الإصدارات السابقة، لذلك إذا كنت تستخدم إصدارات أقدم، فلن تضطر إلى تحديث التعليمات البرمجية الخاصة بك.
يقوم TranslationDecodingException
بتوسيع UnexpectedValueException
، بينما يقوم LargeTextException
و RateLimitException
و TranslationRequestException
بتوسيع ErrorException
الذي تم استخدامه في الإصدارات الأقدم ( <5.1.0
) من هذه الحزمة.
بالإضافة إلى ذلك، فإن طريقتي translate()
و trans()
ستعيدان null
إذا لم تكن هناك ترجمة متاحة.
503 Service Unavailable
: إذا كنت تتلقى هذا الخطأ، فمن المرجح أن Google قد حظرت عنوان IP الخارجي الخاص بك و/أو تطلب منك حل اختبار CAPTCHA. هذا ليس خطأ في هذه الحزمة. أصبحت Google أكثر صرامة، ويبدو أنها تواصل خفض عدد الطلبات المسموح بها لكل عنوان IP خلال فترة زمنية معينة. حاول إرسال طلبات أقل للبقاء تحت الرادار، أو قم بتغيير عنوان IP الخاص بك بشكل متكرر (على سبيل المثال باستخدام الوكلاء). يرجى ملاحظة أنه بمجرد حظر عنوان IP، حتى لو كان مؤقتًا، يمكن أن يستمر الحظر من بضع دقائق إلى أكثر من 12-24 ساعة، حيث تختلف كل حالة عن الأخرى.429 Too Many Requests
: هذا الخطأ هو في الأساس نفس ما هو موضح أعلاه.413 Request Entity Too Large
: يعني هذا الخطأ أن سلسلة الإدخال الخاصة بك طويلة جدًا. تسمح Google بترجمة 5000 حرف كحد أقصى في المرة الواحدة. إذا كنت تريد ترجمة نص أطول، فيمكنك تقسيمه إلى أجزاء أقصر وترجمتها واحدة تلو الأخرى.403 Forbidden
: هذه ليست مشكلة في هذه الحزمة. تواجه خدمة ترجمة Google نفسها بعض المشكلات عندما يتعلق الأمر بترجمة بعض الأحرف وكيانات HTML. انظر رقم 119 (تعليق) تم تطوير هذه الحزمة للأغراض التعليمية فقط. لا تعتمد على هذه الحزمة لأنها قد تنقطع في أي وقت لأنها تعتمد على الزحف إلى موقع الترجمة من Google. فكر في شراء واجهة برمجة تطبيقات Google Translate الرسمية لأنواع أخرى من الاستخدام.
إذا كانت هذه الحزمة قد ساعدتك على تقليل وقتك لتطوير شيء ما، أو حلت أي مشاكل كبيرة تواجهك، فلا تتردد في إعطائي فنجانًا من القهوة :)