يمنحك Mirza Translator القدرة على ترجمة النص ومعالجته بسهولة باستخدام Yandex.Translate API.
فلنقم بإعداد هذا بسرعة كبيرة في ثلاث خطوات فقط !
انتقل إلى مجلد تثبيت Laravel الخاص بك عبر الوحدة الطرفية/cmd وقم بتشغيل composer require yak0d3/ Mirza_Yandex_Translator
أو أضف "yak0d3/ Mirza_Yandex_Translator ": "^1.0.0"
يدويًا إلى composer.json
الخاص بك.
انشر ملف التكوين باستخدام إحدى الطرق التالية:
php artisan vendor:publish --provider="yak0d3 Mirza_Yandex_Translator TMirzaServiceProvider"
php artisan vendor:publish
واكتب الرقم الموجود خلف yak0d3 Mirza_Yandex_Translator TMirzaServiceProvider
ثم اضغط على Enter
أضف متغير البيئة إلى ملف .env
الخاص بك بالاسم YANDEX_API
وقم بتعيين قيمته على مفتاح Yandex.Translate API الخاص بك. ( على سبيل المثال YANDEX_API=MY_YANDEX_API_KEY
)
ملاحظة : يمكنك الحصول على مفتاح API المجاني الخاص بك من لوحة تحكم مطوري Yandex.Translate
يهدف دليل الاستخدام السريع فقط إلى شرح الاستخدام الأساسي لهذه الحزمة، حيث تنتقل قائمة الأساليب والمعلومات المتعلقة بها (المعلمات ونوع الإرجاع وما إلى ذلك..) إلى قسم الأساليب أو انتقل إلى أقسام التوجيهات لعرض قائمة توجيهات blade
المتاحة.
Mirza::detectLanguage('Welcome');
en
Mirza::translate('Hello','es');
"Hola"
Mirza::translateTo('Hello World!',['es', 'tr', 'fr']')
{
" originalText ": " Hello World! " ,
"originalLanguage": "en",
"text": {
"es": " Hola Mundo! " ,
"tr": " Merhaba D u00fcnya ! " ,
"fr": " Bonjour Tout Le Monde!"
}
}
ملاحظة: يمكنك فك تشفير هذه السلسلة باستخدام الدالة
json_decode
.
$textArray = ['Hello','My Dear','Friend'];
Mirza::translateArray($textArray,'fr');
[
{
" originalText ": "Hello",
"translatedText": "Bonjour"
},
{
"originalText": "My dear",
"translatedText": "Mon cher"
},
{
"originalText": "Friend",
"translatedText": " Ami"
}
]
ملاحظة: يمكنك فك تشفير هذه السلسلة باستخدام الدالة
json_decode
.
لا تزال لا تحصل عليه؟ ألق نظرة على الوثائق أدناه وسوف يختفي الارتباك!
دعونا نديرها، لن يجد الجميع هنا أنه من السهل البدء في استخدام هذه الحزمة، لذلك دعونا نحاول فهم ما يحدث معًا. سيغطي هذا القسم استخدام كل طريقة يقدمها مترجم Mirza Yandex ، وفيما يلي جدول المحتويات:
translate
translateArray
translateTo
detectLanguage
getSupportedLanguages
translateToAll
@translate
التوجيه@yandex_rights
التوجيه@languages_select
التوجيهtranslate
مثال:
$ es_translation = Mirza::translate( ' Hello World! ' , 'es); //The first param is the text, the second one is the ISO code of the language
echo $es_translation; //This will output "Hola Mundo!"
translateArray
لاحظ أن جميع سلاسل
json
تحتاج إلى فك تشفيرها باستخدام وظيفة PHPjson_decode
. نصيحة: لإرجاع مصفوفة PHP، قم بتعيين الوسيطة الثانية لـjson_decode
علىtrue
( على سبيل المثالjson_decode($jsonString, true);
).
إذا كنت تفضل التعامل معjson objects
، فاترك الوسيطة الثانية فارغة أو اضبطها علىfalse
.
Mirza::translateArray(['Hello', 'My Dear', 'Friend'],'fr');
تقوم هذه الطريقة بترجمة مصفوفة معينة من النص والتي هي في حالتنا هذه المصفوفة ['Hello', 'My Dear', 'Friend']
وترجمتها إلى لغة معينة وهي الفرنسية في مثالنا.
تقوم هذه الدالة بإرجاع سلسلة json encoded
كما يلي:
[
{
" originalText ": "Hello",
"translatedText": "Bonjour"
},
{
"originalText": "My dear",
"translatedText": "Mon cher"
},
{
"originalText": "Friend",
"translatedText": " Ami"
}
]
كما ترون، فإن json string
الناتجة بنفس ترتيب مصفوفة الإدخال، والآن يمكننا الوصول إلى كل عنصر من هذه العناصر عن طريق فك تشفير السلسلة كما يلي:
$ jsonString = Mirza:: translateArray ([ ' Hello ' , ' My Dear ' , ' Friend ' ], ' fr ' ); //The json string
$ translationsArray = json_decode ( $ jsonString , true ); //Our PHP Array
$ first_translation = $ translationsArray [ 0 ][ ' translatedText ' ];
$ second_translation = $ translationsArray [ 1 ][ ' translatedText ' ];
$ third_translation = $ translationsArray [ 2 ][ ' translatedText ' ];
سهل، أليس كذلك؟ ولكن يمكن أن يصبح الأمر أسهل إذا قمت بتعيين المعلمة $assoc على true حتى تتمكن من الوصول إلى ترجمات السلسلة الخاصة بك عن طريق أسماء الفهارس الخاصة بها (التي قمت بتعيينها يدويًا). لا أحد يرتبك هنا، إليك مثال:
$ textArray = [
' header ' => " Welcome to the Mirza Documentation Page " ,
' body ' => " The body is too long to be put in this item " ,
' footer ' => " Thank you for reading this! "
]; //Our associative text array
$ jsonString = Marzi:: translate ( $ textArray , ' es ' , true ); //Notice that i have set $assoc (third param) to `true`
$ translationsArray = json_decode ( $ jsonString , true );
//Now you can access the translations by their old index names
$ header = $ translationsArray [ ' header ' ][ ' translatedText ' ];
$ body = $ translationsArray [ ' body ' ][ ' translatedText ' ];
$ footer = $ translationsArray [ ' footer ' ][ ' translatedText ' ];
ملاحظة: إذا قمت بتعيين
$assoc
علىtrue
وقمت بتوفير مصفوفة تسلسلية، فسيتم طرح استثناء.
translateTo
: هذه الطريقة هي (ربما) النسخة العكسية من الوظيفة السابقة، فبدلاً من أخذ array
من السلاسل، تأخذ هذه الطريقة string
واحدة وتترجمها إلى مجموعة من اللغات. مثال:
$ jsonString = Mirza:: translateTo ( ' My awesome text ' , [ ' ar ' , ' tr ' , ' de ' ]);
سيُرجع المثال أعلاه json string
بالبنية التالية:
[
{
" originalText ":"My awesome text",
"originalLanguage": "en",
"text":{
" ar":" u0628 u0644 u062f u064a u0627 u0644 u0646 u0635 u0631 u0647 u064a u0628 u0629 " ,
" tr":" M u00fcthi u015f metin",
" de " :"Meine wunderbare text"
}
}
]
ربما لاحظت أن بعض الأحرف موجودة بتنسيق Unicode، فلا داعي للقلق إذا قمت
echo
لاحقًا فسيتم عرضها بشكل صحيح.
يمكننا الآن فك تشفير json string
هذه بسهولة والوصول إلى بياناتنا كما يلي:
$ translations = json_decode ( $ jsonString , true ); //Our PHP array
$ originalText = $ translations [ ' originalText ' ];
$ originalLanguage = $ translations [ ' originalLanguage ' ];
$ ar_translation = $ translations [ ' text ' ][ ' ar ' ];
$ tk_translation = $ translations [ ' text ' ][ ' tr ' ];
$ de_translation = $ translations [ ' text ' ][ ' de ' ];
detectLanguage
تحتاج أحيانًا إلى اكتشاف اللغة التي كتب بها النص، وقد تم إنشاء طريقة detectLanguage
لهذا الأمر فقط! كما هو مذكور في جدول الأساليب، تأخذ هذه الطريقة معلمة واحدة مطلوبة وأخرى اختيارية. تتيح لنا المعلمة الاختيارية ( boolean $name
) التبديل بين إرجاع رمز ISO للغة أو اسم اللغة.
مثال:
//Leave the $name param empty or set it to `false`
//To return the language ISO code
$ lang = Mirza:: detectLanguage ( ' Hello World! ' );
echo $ lang ; //Outputs "en"
//Setthe $name param to `true`
//To return the language ISO code
$ lang = Mirza:: detectLanguage ( ' Hello World! ' , true );
echo $ lang ; //Outputs "English"
getSupportedLanguages
لا تأخذ هذه الطريقة أي معلمات (يجب أن تفعل ذلك، ولكن ستتم إضافتها في إصدار لاحق) وإذا تم تنفيذها فإنها تُرجع قائمة بجميع اللغات المدعومة.
مثال:
//Save the json encoded string to the `$supportedLanguages` variable
$ supportedLanguages = Mirza:: getSupportedLanguages ();
echo $ supportedLanguages ;
/* Outputs the json string in the following format:
[
{ 'lang_code' => 'lang_name' },
{ 'lang_code' => 'lang_name' },
]
*/
لم أرغب في تضمين الناتج بأكمله لأنه طويل جدًا، ولكن إذا كنت لا تزال مهتمًا به، فأنا مستعد لذلك! هنا لقطة:
دعونا نقوم بفك تشفير json string
هذه ونلعب قليلاً!
//Decode json string and wrap it into a PHP array
$ langsArray = json_decode ( $ supportedLanguages , true );
لنفترض أن لدينا رمز لغة، لكننا لا نعرف إلى أي لغة يشير، فهذا السطر سيساعدنا كثيرًا في مثل هذه الحالة:
echo $ langsArray [ ' tr ' ]; //Outputs "Turkish"
الآن لنفترض أن لدينا اسم لغة، ولكننا لا نعرف رمز ISO، فمن السهل! يمكننا القيام بذلك باستخدام وظيفة PHP array_flip
$ flippedArray = array_flip ( $ langsArray );
/* The values are now keys! Cool right? */
$ languageCode = $ flippedArray [ ' Sinhalese ' ];
echo $ languageCode ; //Outputs "si"
translateToAll
مثال:
//Save the json string to a variable
$ myStringInAllLanguages = Mirza:: translateToAll ( ' My string ' );
echo $ myStringInAllLanguages ;
/*Outputs a similar string to the `translateTo` method but
with all supported languages*/
@translate
: يتيح لك ترجمة نص معين إلى لغة معينة أثناء التنقل
مثال:
@translate('Welcome', 'fr') <!-- Outputs "Bienvenue" -->
@yandex_rights
: إذا كنت قد قرأت متطلبات Yandex.Translate لاستخدام نتائج الترجمة، فستعلم أن هذا التوجيه سيكون مفيدًا للغاية.
يجب عليك تحديد color
باعتباره الوسيط الأول font-size
باعتباره الوسيط الثاني.
مثال:
@yandex_rights('black', '16px');
<!-- Output -->
< a href =' https://translate.yandex.com/ ' target =' _blank ' style =' font-size:16px;color:black; ' > Powered by Yandex.Translate </ a >
@languages_select
: يُنشئ HTML <select>
مع قائمة بجميع اللغات المدعومة.مثال:
@languages_select
<!-- Output -->
< select >
< option value =" lang_code " > Lang_Name </ option >
< option value =" lang_code " > Lang_Name </ option >
< option value =" lang_code " > Lang_Name </ option >
</ select >
كل شيء في Mirza من المفترض أن يكون سهلاً وقابلاً للقراءة، فقط من خلال إلقاء نظرة على الكود المصدري ستفهم ما يحدث في لمح البصر. لكن لا تقلق، لقد وفرت عليك العناء وأنشأت جدولًا يحتوي على قائمة الأساليب التي يوفرها مترجم Mirza .
طريقة | حدود | المرتجعات | رميات | وصف |
---|---|---|---|---|
يترجم | string $text string $lang اختياري: string $format [html|plain] (Default: "Plain") | خيط | الاستثناء: إذا تعذرت ترجمة النص. | يترجم $text معين إلى $lang (لغة) معينة |
ترجمة إلى | string $text array $langs | سلسلة (جسون) | الاستثناء: إذا كانت لغة واحدة أو أكثر غير مدعومة. | ترجمة $text معين إلى $langs متعددة (لغات) |
TranslateArray | array $textArray string $lang اختياري: bool $assoc (Default: false) | سلسلة (جسون) | استثناء: 1. إذا كانت اللغة الهدف غير مدعومة. 2. إذا تم تعيين $assoc على true ولم تكن المصفوفة المحددة ترابطية. | يترجم $textArray (صفيف النص) إلى $lang (لغة) معينةملاحظة: إذا تم ضبط $assoc على true ، فستحتوي سلسلة json التي تم إرجاعها على نفس أسماء الفهرس |
DetectLanguage | string $text اختياري: bool $langName | خيط | استثناء: 1. إذا لم يتم العثور على رمز اللغة. 2. إذا لم يتم العثور على اسم اللغة | يكتشف لغة $text المحدد ويعيد رمز اللغةملاحظة: إذا تم ضبط $langName على true ، فسيتم إرجاع اسم اللغة الكامل بدلاً من ذلك. |
getSupportedLanguages | لا أحد | سلسلة (جسون) | الاستثناء: في حالة حدوث خطأ غير معروف أثناء محاولة جلب قائمة الوظائف المدعومة | تقوم بإرجاع سلسلة json تحتوي على قائمة بجميع اللغات المدعومة |
ترجمة إلى الكل | string $text | سلسلة (جسون) | لا أحد | يترجم سلسلة ( $text ) إلى جميع اللغات المدعومة.ملاحظة: قد يستغرق هذا بعض الوقت ويتسبب في حدوث PHP max_execution_time TIMEOUT Exception |
yandex_rights | اختياري: string $color (Default: #fff) string $fontsize (Default: 14px) | خيط | لا أحد | تقوم بإرجاع سلسلة الارتباط "Powered By Yandex.Translate". يُطلق عليه أيضًا عبر توجيه blade @yandex_rights .ملحوظة: يرجى الرجوع إلى Yandex Translate: متطلبات استخدام نتائج الترجمة لمعرفة المزيد حول حجم الخط واللون ومتطلبات الوضع. |
languages_select | لا أحد | خيط | لا أحد | تُرجع سلسلة علامة HTML <select> مع قائمة بجميع اللغات المتاحة.يتم استدعاؤه أيضًا عبر التوجيه blade @languages_select |
التوجيه | حدود | وصف |
---|---|---|
@yandex_rights | اختياري: string $color (Default: #fff) string $fontsize (Default: 14px) | يُنشئ رابط HTML للنص "Powered By Yandex.Translate". |
@languages_select | لا أحد | يُنشئ علامة HTML <select> مع قائمة بجميع اللغات المتاحة. |
@translate | string $text string $lang | ترجمة سلسلة $text معينة إلى $lang (لغة) معينة |
تم اختبار Mirza بواسطة شخص واحد فقط (أنا بالتأكيد؟)، مما يعني أنه قد تحدث مشكلات مع الآخرين، إذا حدث خطأ ما في تثبيت Mirza أو كنت تعتقد أن هناك شيئًا ما لا يزال مفقودًا، فيرجى إبلاغي بذلك عن طريق إرسال مشكلة جديدة.