diff --git a/curriculum/challenges/arabic/01-responsive-web-design/applied-visual-design/learn-how-bezier-curves-work.arabic.md b/curriculum/challenges/arabic/01-responsive-web-design/applied-visual-design/learn-how-bezier-curves-work.arabic.md
index 55b360ab1e..34f4a99695 100644
--- a/curriculum/challenges/arabic/01-responsive-web-design/applied-visual-design/learn-how-bezier-curves-work.arabic.md
+++ b/curriculum/challenges/arabic/01-responsive-web-design/applied-visual-design/learn-how-bezier-curves-work.arabic.md
@@ -7,7 +7,7 @@ localeTitle: تعلم كيف بيجر المنحنيات العمل
---
## Description
- قدم التحدي الأخير خاصية عرض animation-timing-function
وبعض الكلمات الرئيسية التي تغير سرعة الرسوم المتحركة على مدار مدتها. تقدم CSS خيارًا بخلاف الكلمات الرئيسية التي توفر تحكمًا أكثر دقة في كيفية تشغيل الرسم المتحرك ، من خلال استخدام منحنيات Bezier. في الرسوم المتحركة CSS ، يتم استخدام منحنيات Bezier مع وظيفة cubic-bezier
. شكل المنحنى يمثل كيفية تشغيل الرسوم المتحركة. يعيش المنحنى على نظام إحداثي 1 في 1. المحور السيني لنظام الإحداثيات هذا هو مدة الرسم المتحرك (فكر فيه كمقياس زمني) ، والمحور الصادي هو التغيير في الرسوم المتحركة. تتكون الدالة cubic-bezier
من أربع نقاط رئيسية على هذه الشبكة 1: 1: p0
، p1
، p2
، p3
. يتم تعيين p0
و p3
لك - وهما نقطة البداية والنهاية التي تقع دائما على التوالي في الأصل (0 ، 0) و (1 ، 1). يمكنك تعيين قيم x و y للنقطتين الأخريين ، وحيث تضعها في الشبكة تملي شكل المنحنى الذي سيتبعه الرسم المتحرك. يتم ذلك في CSS عن طريق تعريف قيمتي x و y لنقاط " p1
و p2
في النموذج: (x1, y1, x2, y2)
. سحب كل ذلك معا ، وهنا مثال لمنحنى بيزير في رمز CSS: animation-timing-function: cubic-bezier(0.25, 0.25, 0.75, 0.75);
في المثال أعلاه ، تكون قيم x و y مكافئة لكل نقطة (x1 = 0.25 = y1 و x2 = 0.75 = y2) ، والتي إذا تذكرت من فئة الهندسة ، ينتج عنها خط يمتد من الأصل إلى النقطة (1) ، 1). هذا الرسم المتحرك هو تغيير خطي لعنصر خلال طول الرسم المتحرك ، وهو مماثل لاستخدام الكلمة الرئيسية linear
. وبعبارة أخرى ، يتغير بسرعة ثابتة.
+ قدم التحدي الأخير خاصية عرض animation-timing-function
وبعض الكلمات الرئيسية التي تغير سرعة الرسوم المتحركة على مدار مدتها. تقدم CSS خيارًا بخلاف الكلمات الرئيسية التي توفر تحكمًا أكثر دقة في كيفية تشغيل الرسم المتحرك ، من خلال استخدام منحنيات Bezier. في الرسوم المتحركة CSS ، يتم استخدام منحنيات Bezier مع وظيفة cubic-bezier
. شكل المنحنى يمثل كيفية تشغيل الرسوم المتحركة. يعيش المنحنى على نظام إحداثي 1 في 1. المحور السيني لنظام الإحداثيات هذا هو مدة الرسم المتحرك (فكر فيه كمقياس زمني) ، والمحور الصادي هو التغيير في الرسوم المتحركة. تتكون الدالة cubic-bezier
من أربع نقاط رئيسية على هذه الشبكة 1: 1: p0
، p1
، p2
، p3
. يتم تعيين p0
و p3
لك - وهما نقطة البداية والنهاية التي تقع دائما على التوالي في الأصل (0 ، 0) و (1 ، 1). يمكنك تعيين قيم x و y للنقطتين الأخريين ، وحيث تضعها في الشبكة تملي شكل المنحنى الذي سيتبعه الرسم المتحرك. يتم ذلك في CSS عن طريق تعريف قيمتي x و y لنقاط p1
و p2
في النموذج: (x1, y1, x2, y2)
. سحب كل ذلك معا ، وهنا مثال لمنحنى بيزير في رمز CSS: animation-timing-function: cubic-bezier(0.25, 0.25, 0.75, 0.75);
في المثال أعلاه ، تكون قيم x و y مكافئة لكل نقطة (x1 = 0.25 = y1 و x2 = 0.75 = y2) ، والتي إذا تذكرت من فئة الهندسة ، ينتج عنها خط يمتد من الأصل إلى النقطة (1) ، 1). هذا الرسم المتحرك هو تغيير خطي لعنصر خلال طول الرسم المتحرك ، وهو مماثل لاستخدام الكلمة الرئيسية linear
. وبعبارة أخرى ، يتغير بسرعة ثابتة.
## Instructions
بالنسبة للعنصر الذي له معرف ball1
، قم بتغيير قيمة خاصية animation-timing-function
من linear
إلى قيمة الدالة المكافئة cubic-bezier
المكافئة لها. استخدم قيم النقاط الواردة في المثال أعلاه.
diff --git a/curriculum/challenges/arabic/01-responsive-web-design/basic-css/set-the-id-of-an-element.arabic.md b/curriculum/challenges/arabic/01-responsive-web-design/basic-css/set-the-id-of-an-element.arabic.md
index da3d4fbe9b..68ef71181e 100644
--- a/curriculum/challenges/arabic/01-responsive-web-design/basic-css/set-the-id-of-an-element.arabic.md
+++ b/curriculum/challenges/arabic/01-responsive-web-design/basic-css/set-the-id-of-an-element.arabic.md
@@ -10,7 +10,7 @@ localeTitle: عيّن معرف عنصر
بالإضافة إلى الفصول الدراسية ، يمكن أن يحتوي كل عنصر HTML أيضًا على سمة id
. هناك العديد من المزايا لاستخدام سمات id
: يمكنك استخدام id
لوضع نمط لعنصر واحد ، وبعد ذلك ستعرف أنه يمكنك استخدامها لتحديد عناصر محددة وتعديلها باستخدام جافا سكريبت. يجب أن تكون سمات id
فريدة. لن تقوم المتصفحات بفرض هذا ، ولكنها أفضل الممارسات المتفق عليها على نطاق واسع. لذا يرجى عدم إعطاء أكثر من عنصر واحد نفس سمة id
. في ما يلي مثال على كيفية إعطاء عنصر h2
معرف تطبيق cat-photo-app
: <h2 id="cat-photo-app">
## Instructions
- امنح form
الخاص بك form
" cat-photo-form
.
+ امنح form
الخاص بك form
cat-photo-form
.
## Tests
diff --git a/curriculum/challenges/arabic/01-responsive-web-design/basic-html-and-html5/declare-the-doctype-of-an-html-document.arabic.md b/curriculum/challenges/arabic/01-responsive-web-design/basic-html-and-html5/declare-the-doctype-of-an-html-document.arabic.md
index 5b0fe55e47..50ea07c727 100644
--- a/curriculum/challenges/arabic/01-responsive-web-design/basic-html-and-html5/declare-the-doctype-of-an-html-document.arabic.md
+++ b/curriculum/challenges/arabic/01-responsive-web-design/basic-html-and-html5/declare-the-doctype-of-an-html-document.arabic.md
@@ -7,7 +7,7 @@ localeTitle: قم بتعريف Doctype من مستند HTML
---
## Description
- تغطي التحديات حتى الآن عناصر HTML محددة واستخداماتها. ومع ذلك ، هناك بعض العناصر التي تعطي الهيكل العام لصفحتك ، ويجب تضمينها في كل مستند HTML. في الجزء العلوي من المستند ، تحتاج إلى إخبار المتصفح بإصدار HTML الذي تستخدمه صفحتك. HTML هي لغة متطورة ، ويتم تحديثها بانتظام. تدعم معظم المتصفحات الرئيسية أحدث المواصفات ، وهي HTML5. ومع ذلك ، قد تستخدم صفحات الويب القديمة الإصدارات السابقة من اللغة. أنت تخبر المتصفح بهذه المعلومات عن طريق إضافة العلامة <!DOCTYPE ...>
على السطر الأول ، حيث يكون الجزء " ...
" هو إصدار HTML. بالنسبة إلى HTML5 ، تستخدم <!DOCTYPE html>
. !
و DOCTYPE
الكبيرة مهمة ، خاصة بالنسبة للمتصفحات القديمة. ليست html
حساسة لحالة الأحرف. بعد ذلك ، يجب أن يتم لف بقية تعليمات HTML البرمجية الخاصة بك في علامات html
. ينتقل الافتتاح <html>
مباشرة أسفل السطر <!DOCTYPE html>
، ويذهب الإغلاق </html>
في نهاية الصفحة. في ما يلي مثال على بنية الصفحة: <! DOCTYPE html>
<HTML>
<! - رمز HTML الخاص بك هنا ->
</ HTML>
+ تغطي التحديات حتى الآن عناصر HTML محددة واستخداماتها. ومع ذلك ، هناك بعض العناصر التي تعطي الهيكل العام لصفحتك ، ويجب تضمينها في كل مستند HTML. في الجزء العلوي من المستند ، تحتاج إلى إخبار المتصفح بإصدار HTML الذي تستخدمه صفحتك. HTML هي لغة متطورة ، ويتم تحديثها بانتظام. تدعم معظم المتصفحات الرئيسية أحدث المواصفات ، وهي HTML5. ومع ذلك ، قد تستخدم صفحات الويب القديمة الإصدارات السابقة من اللغة. أنت تخبر المتصفح بهذه المعلومات عن طريق إضافة العلامة <!DOCTYPE ...>
على السطر الأول ، حيث يكون الجزء ...
هو إصدار HTML. بالنسبة إلى HTML5 ، تستخدم <!DOCTYPE html>
. !
و DOCTYPE
الكبيرة مهمة ، خاصة بالنسبة للمتصفحات القديمة. ليست html
حساسة لحالة الأحرف. بعد ذلك ، يجب أن يتم لف بقية تعليمات HTML البرمجية الخاصة بك في علامات html
. ينتقل الافتتاح <html>
مباشرة أسفل السطر <!DOCTYPE html>
، ويذهب الإغلاق </html>
في نهاية الصفحة. في ما يلي مثال على بنية الصفحة: <! DOCTYPE html>
<HTML>
<! - رمز HTML الخاص بك هنا ->
</ HTML>
## Instructions
أضف علامة DOCTYPE
لـ HTML5 إلى أعلى مستند HTML الفارغ في محرر الشفرة. تحته ، إضافة علامات html
فتح وإغلاق ، والتي التفاف حول عنصر h1
. يمكن أن يتضمن العنوان أي نص.
diff --git a/curriculum/challenges/arabic/01-responsive-web-design/responsive-web-design-projects/build-a-product-landing-page.arabic.md b/curriculum/challenges/arabic/01-responsive-web-design/responsive-web-design-projects/build-a-product-landing-page.arabic.md
index 4cd7ed581b..dd8f09f512 100644
--- a/curriculum/challenges/arabic/01-responsive-web-design/responsive-web-design-projects/build-a-product-landing-page.arabic.md
+++ b/curriculum/challenges/arabic/01-responsive-web-design/responsive-web-design-projects/build-a-product-landing-page.arabic.md
@@ -8,7 +8,7 @@ localeTitle: بناء صفحة هبوط منتج
---
## Description
- الهدف: إنشاء تطبيق CodePen.io تشبه وظيفيًا هذا: https://codepen.io/freeCodeCamp/full/RKRbwL . تحقق من قصص المستخدمين أدناه واجتاز جميع الاختبارات. اعطها اسلوبك الشخصي. يمكنك استخدام HTML و JavaScript و CSS لإكمال هذا المشروع. يوصى باستخدام CSS العادي لأن هذا هو ما غطته الدروس حتى الآن ، ويجب أن تحصل على بعض التمرين باستخدام CSS عادي. يمكنك استخدام Bootstrap أو SASS إذا اخترت. لا يوصى باستخدام هذا النوع من التقنيات الإضافية (على سبيل المثال jQuery أو React أو Angular أو Vue) ، ويكون استخدامها على مسؤوليتك الخاصة. سوف تعطيك مشاريع أخرى فرصة للعمل مع مكدسات التكنولوجيا المختلفة مثل React. سنقبل ونحاول إصلاح جميع تقارير المشكلات التي تستخدم مجموعة التكنولوجيا المقترحة لهذا المشروع. الترميز سعيدة! قصة المستخدم # 1: الصفحة المقصودة المنتجات بلدي يجب أن يكون header
عنصر المقابلة مع id="header"
. قصة المستخدم رقم 2: يمكنني رؤية صورة داخل عنصر header
باستخدام id="header-img"
مناظر id="header-img"
. شعار الشركة سيجعل صورة جيدة هنا. قصة المستخدم رقم 3: داخل عنصر #header
أستطيع أن أرى عنصر nav
باستخدام id="nav-bar"
. قصة المستخدم رقم 4: يمكنني مشاهدة ثلاثة عناصر قابلة للنقر على الأقل داخل عنصر nav
، كل منها يحتوي على nav-link
للفئة. قصة المستخدم رقم 5: عندما أنقر على زر .nav-link
في عنصر nav
، يتم نقلي إلى القسم المقابل من الصفحة المقصودة. قصة المستخدم رقم 6: يمكنني مشاهدة فيديو منتج مضمّن باستخدام id="video"
. قصة المستخدم رقم 7: تحتوي صفحتي المقصودة على عنصر form
له id="form"
مناظر id="form"
. قصة المستخدم رقم 8: داخل النموذج ، هناك حقل input
به id="email"
حيث يمكنني إدخال عنوان بريد إلكتروني. قصة المستخدم رقم 9: يجب أن يحتوي حقل إدخال #email
# على نص #email
للسماح للمستخدم بمعرفة ما هو الحقل. قصة المستخدم # 10: #email
حقل إدخال يستخدم التحقق من صحة HTML5 للتأكد من أن النص الذي تم إدخاله هو عنوان البريد الإلكتروني. قصة المستخدم رقم 11: في النموذج ، هناك input
إرسال مع id="submit"
المقابلة id="submit"
. قصة المستخدم رقم 12: عندما أنقر على عنصر " #submit
، يتم إرسال الرسالة الإلكترونية إلى صفحة ثابتة (استخدم هذا العنوان #submit
: https://www.freecodecamp.com/email-submit ) الذي يؤكد إدخال عنوان البريد الإلكتروني و نشرت بنجاح. قصة المستخدم رقم 13: يجب أن يكون شريط التنقل دائمًا في أعلى منفذ العرض. قصة المستخدم رقم 14: يجب أن تحتوي صفحتي المقصودة للمنتج على استعلام وسائط واحد على الأقل. قصة المستخدم رقم 15: يجب أن تستخدم الصفحة المقصودة للمنتج My CSS flexbox مرة واحدة على الأقل. يمكنك بناء مشروعك عن طريق تسجيل قلم CodePen هذا . أو يمكنك استخدام رابط CDN هذا لتشغيل الاختبارات في أي بيئة تفضلها: https://cdn.freecodecamp.org/testable-projects-fcc/v1/bundle.js
بمجرد الانتهاء ، أرسل عنوان URL إلى عملك مشروع مع كل اختباراتها تمر. تذكر استخدام طريقة Read-Search-Ask إذا واجهتك مشكلة.
+ الهدف: إنشاء تطبيق CodePen.io تشبه وظيفيًا هذا: https://codepen.io/freeCodeCamp/full/RKRbwL . تحقق من قصص المستخدمين أدناه واجتاز جميع الاختبارات. اعطها اسلوبك الشخصي. يمكنك استخدام HTML و JavaScript و CSS لإكمال هذا المشروع. يوصى باستخدام CSS العادي لأن هذا هو ما غطته الدروس حتى الآن ، ويجب أن تحصل على بعض التمرين باستخدام CSS عادي. يمكنك استخدام Bootstrap أو SASS إذا اخترت. لا يوصى باستخدام هذا النوع من التقنيات الإضافية (على سبيل المثال jQuery أو React أو Angular أو Vue) ، ويكون استخدامها على مسؤوليتك الخاصة. سوف تعطيك مشاريع أخرى فرصة للعمل مع مكدسات التكنولوجيا المختلفة مثل React. سنقبل ونحاول إصلاح جميع تقارير المشكلات التي تستخدم مجموعة التكنولوجيا المقترحة لهذا المشروع. الترميز سعيدة! قصة المستخدم # 1: الصفحة المقصودة المنتجات بلدي يجب أن يكون header
عنصر المقابلة مع id="header"
. قصة المستخدم رقم 2: يمكنني رؤية صورة داخل عنصر header
باستخدام id="header-img"
مناظر id="header-img"
. شعار الشركة سيجعل صورة جيدة هنا. قصة المستخدم رقم 3: داخل عنصر #header
أستطيع أن أرى عنصر nav
باستخدام id="nav-bar"
. قصة المستخدم رقم 4: يمكنني مشاهدة ثلاثة عناصر قابلة للنقر على الأقل داخل عنصر nav
، كل منها يحتوي على nav-link
للفئة. قصة المستخدم رقم 5: عندما أنقر على زر .nav-link
في عنصر nav
، يتم نقلي إلى القسم المقابل من الصفحة المقصودة. قصة المستخدم رقم 6: يمكنني مشاهدة فيديو منتج مضمّن باستخدام id="video"
. قصة المستخدم رقم 7: تحتوي صفحتي المقصودة على عنصر form
له id="form"
مناظر id="form"
. قصة المستخدم رقم 8: داخل النموذج ، هناك حقل input
به id="email"
حيث يمكنني إدخال عنوان بريد إلكتروني. قصة المستخدم رقم 9: يجب أن يحتوي حقل إدخال #email
# على نص #email
للسماح للمستخدم بمعرفة ما هو الحقل. قصة المستخدم # 10: #email
حقل إدخال يستخدم التحقق من صحة HTML5 للتأكد من أن النص الذي تم إدخاله هو عنوان البريد الإلكتروني. قصة المستخدم رقم 11: في النموذج ، هناك input
إرسال مع id="submit"
المقابلة id="submit"
. قصة المستخدم رقم 12: عندما أنقر على عنصر #submit
، يتم إرسال الرسالة الإلكترونية إلى صفحة ثابتة (استخدم هذا العنوان #submit
: https://www.freecodecamp.com/email-submit ) الذي يؤكد إدخال عنوان البريد الإلكتروني و نشرت بنجاح. قصة المستخدم رقم 13: يجب أن يكون شريط التنقل دائمًا في أعلى منفذ العرض. قصة المستخدم رقم 14: يجب أن تحتوي صفحتي المقصودة للمنتج على استعلام وسائط واحد على الأقل. قصة المستخدم رقم 15: يجب أن تستخدم الصفحة المقصودة للمنتج My CSS flexbox مرة واحدة على الأقل. يمكنك بناء مشروعك عن طريق تسجيل قلم CodePen هذا . أو يمكنك استخدام رابط CDN هذا لتشغيل الاختبارات في أي بيئة تفضلها: https://cdn.freecodecamp.org/testable-projects-fcc/v1/bundle.js
بمجرد الانتهاء ، أرسل عنوان URL إلى عملك مشروع مع كل اختباراتها تمر. تذكر استخدام طريقة Read-Search-Ask إذا واجهتك مشكلة.
## Instructions
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/object-oriented-programming/understand-the-prototype-chain.arabic.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/object-oriented-programming/understand-the-prototype-chain.arabic.md
index f4346a734f..6a8051684a 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/object-oriented-programming/understand-the-prototype-chain.arabic.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/object-oriented-programming/understand-the-prototype-chain.arabic.md
@@ -17,7 +17,7 @@ localeTitle: فهم سلسلة النموذج
```yml
tests:
- - text: يجب أن تُظهر الكود الخاص بك أن Object.prototype
هو النموذج الأولي لـ Dog.prototype
")
+ - text: يجب أن تُظهر الكود الخاص بك أن Object.prototype
هو النموذج الأولي لـ Dog.prototype
)
testString: 'assert(/Object\.prototype\.isPrototypeOf/.test(code), "Your code should show that Object.prototype
is the prototype of Dog.prototype
");'
```
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/object-oriented-programming/use-inheritance-so-you-dont-repeat-yourself.arabic.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/object-oriented-programming/use-inheritance-so-you-dont-repeat-yourself.arabic.md
index 441b29988c..1e0caa573a 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/object-oriented-programming/use-inheritance-so-you-dont-repeat-yourself.arabic.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/object-oriented-programming/use-inheritance-so-you-dont-repeat-yourself.arabic.md
@@ -7,7 +7,7 @@ localeTitle: استخدام الوراثة حتى لا تكرر نفسك
---
## Description
- هناك مبدأ في البرمجة يسمى " Don't Repeat Yourself (DRY)
. السبب في تكرار التعليمات البرمجية هو مشكلة لأن أي تغيير يتطلب إصلاح الكود في أماكن متعددة. هذا عادة ما يعني المزيد من العمل للمبرمجين ومجالاً أكبر للأخطاء. لاحظ في المثال أدناه أن طريقة describe
تتم مشاركتها بواسطة Bird
and Dog
: Bird.prototype = {
منشئ: الطيور ،
وصف: الوظيفة () {
console.log ("اسمي هو" + this.name)؛
}
}؛
Dog.prototype = {
منشئ: كلب ،
وصف: الوظيفة () {
console.log ("اسمي هو" + this.name)؛
}
}؛
تكرر طريقة describe
في مكانين. يمكن تحرير الرمز ليتبع مبدأ DRY
عن طريق إنشاء نوع supertype
(أو الأصل) يسمى Animal
: وظيفة الحيوان () {}؛
Animal.prototype = {
منشئ: الحيوان ،
وصف: الوظيفة () {
console.log ("اسمي هو" + this.name)؛
}
}؛
بما أن Animal
يشتمل على طريقة describe
، فيمكنك إزالتها من Bird
and Dog
: Bird.prototype = {
منشئ: الطيور
}؛
Dog.prototype = {
منشئ: كلب
}؛
+ هناك مبدأ في البرمجة يسمى Don't Repeat Yourself (DRY)
. السبب في تكرار التعليمات البرمجية هو مشكلة لأن أي تغيير يتطلب إصلاح الكود في أماكن متعددة. هذا عادة ما يعني المزيد من العمل للمبرمجين ومجالاً أكبر للأخطاء. لاحظ في المثال أدناه أن طريقة describe
تتم مشاركتها بواسطة Bird
and Dog
: Bird.prototype = {
منشئ: الطيور ،
وصف: الوظيفة () {
console.log ("اسمي هو" + this.name)؛
}
}؛
Dog.prototype = {
منشئ: كلب ،
وصف: الوظيفة () {
console.log ("اسمي هو" + this.name)؛
}
}؛
تكرر طريقة describe
في مكانين. يمكن تحرير الرمز ليتبع مبدأ DRY
عن طريق إنشاء نوع supertype
(أو الأصل) يسمى Animal
: وظيفة الحيوان () {}؛
Animal.prototype = {
منشئ: الحيوان ،
وصف: الوظيفة () {
console.log ("اسمي هو" + this.name)؛
}
}؛
بما أن Animal
يشتمل على طريقة describe
، فيمكنك إزالتها من Bird
and Dog
: Bird.prototype = {
منشئ: الطيور
}؛
Dog.prototype = {
منشئ: كلب
}؛
## Instructions
تتكرر طريقة eat
في كل من Cat
and Bear
. قم بتحرير الكود بروح DRY
بتحريك طريقة eat
إلى نوع supertype
Animal
.
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/regular-expressions/find-one-or-more-criminals-in-a-hunt.arabic.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/regular-expressions/find-one-or-more-criminals-in-a-hunt.arabic.md
index cc3f12b497..c734a2b430 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/regular-expressions/find-one-or-more-criminals-in-a-hunt.arabic.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/regular-expressions/find-one-or-more-criminals-in-a-hunt.arabic.md
@@ -17,20 +17,20 @@ localeTitle: العثور على واحد أو أكثر من المجرمين ف
```yml
tests:
- - text: يجب أن يتطابق تعبيرك العادي مع one
المجرمين (" C
") في "C"
- testString: 'assert("C".match(reCriminals) && "C".match(reCriminals)[0] == "C", "Your regex should match one
criminal ("C
") in "C"
");'
- - text: يجب أن يتطابق تعبيرك العادي مع two
المجرمين (" CC
") في "CC"
- testString: 'assert("CC".match(reCriminals) && "CC".match(reCriminals)[0] == "CC", "Your regex should match two
criminals ("CC
") in "CC"
");'
- - text: يجب أن يتطابق "P1P5P4CCCP2P6P3"
العادي مع three
مجرمين (" CCC
") في "P1P5P4CCCP2P6P3"
- testString: 'assert("P1P5P4CCCP2P6P3".match(reCriminals) && "P1P5P4CCCP2P6P3".match(reCriminals)[0] == "CCC", "Your regex should match three
criminals ("CCC
") in "P1P5P4CCCP2P6P3"
");'
- - text: يجب أن يتطابق "P6P2P7P4P5CCCCCP3P1"
العادي مع five
مجرمين (" CCCCC
") في "P6P2P7P4P5CCCCCP3P1"
- testString: 'assert("P6P2P7P4P5CCCCCP3P1".match(reCriminals) && "P6P2P7P4P5CCCCCP3P1".match(reCriminals)[0] == "CCCCC", "Your regex should match five
criminals ("CCCCC
") in "P6P2P7P4P5CCCCCP3P1"
");'
+ - text: يجب أن يتطابق تعبيرك العادي مع one
المجرمين ( C
) في "C"
+ testString: 'assert("C".match(reCriminals) && "C".match(reCriminals)[0] == "C", "Your regex should match one
criminal (C
) in "C"
");'
+ - text: يجب أن يتطابق تعبيرك العادي مع two
المجرمين ( CC
) في "CC"
+ testString: 'assert("CC".match(reCriminals) && "CC".match(reCriminals)[0] == "CC", "Your regex should match two
criminals (CC
) in "CC"
");'
+ - text: يجب أن يتطابق "P1P5P4CCCP2P6P3"
العادي مع three
مجرمين (CCC
) في "P1P5P4CCCP2P6P3"
+ testString: 'assert("P1P5P4CCCP2P6P3".match(reCriminals) && "P1P5P4CCCP2P6P3".match(reCriminals)[0] == "CCC", "Your regex should match three
criminals (CCC
) in "P1P5P4CCCP2P6P3"
");'
+ - text: يجب أن يتطابق "P6P2P7P4P5CCCCCP3P1"
العادي مع five
مجرمين ( CCCCC
) في "P6P2P7P4P5CCCCCP3P1"
+ testString: 'assert("P6P2P7P4P5CCCCCP3P1".match(reCriminals) && "P6P2P7P4P5CCCCCP3P1".match(reCriminals)[0] == "CCCCC", "Your regex should match five
criminals (CCCCC
) in "P6P2P7P4P5CCCCCP3P1"
");'
- text: يجب ألا يتطابق تعبيرك العادي مع أي مجرمين في ""
testString: 'assert(!reCriminals.test(""), "Your regex should not match any criminals in ""
");'
- text: يجب ألا يتطابق "P1P2P3"
العادي مع أي مجرمين في "P1P2P3"
testString: 'assert(!reCriminals.test("P1P2P3"), "Your regex should not match any criminals in "P1P2P3"
");'
- - text: يجب أن يتطابق CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
العادي مع fifty
المجرمين (" CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
") في "P2P1P5P4CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCP3"
.
- testString: 'assert("P2P1P5P4CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCP3".match(reCriminals) && "P2P1P5P4CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCP3".match(reCriminals)[0] == "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", "Your regex should match fifty
criminals ("CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
") in "P2P1P5P4CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCP3"
.");'
+ - text: يجب أن يتطابق CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
العادي مع fifty
المجرمين ( CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
) في "P2P1P5P4CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCP3"
.
+ testString: 'assert("P2P1P5P4CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCP3".match(reCriminals) && "P2P1P5P4CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCP3".match(reCriminals)[0] == "CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC", "Your regex should match fifty
criminals (CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
) in "P2P1P5P4CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCP3"
.");'
```
diff --git a/curriculum/challenges/arabic/03-front-end-libraries/bootstrap/use-responsive-design-with-bootstrap-fluid-containers.arabic.md b/curriculum/challenges/arabic/03-front-end-libraries/bootstrap/use-responsive-design-with-bootstrap-fluid-containers.arabic.md
index e6f4d302e5..5c067f09a4 100644
--- a/curriculum/challenges/arabic/03-front-end-libraries/bootstrap/use-responsive-design-with-bootstrap-fluid-containers.arabic.md
+++ b/curriculum/challenges/arabic/03-front-end-libraries/bootstrap/use-responsive-design-with-bootstrap-fluid-containers.arabic.md
@@ -7,7 +7,7 @@ localeTitle: استخدام تصميم متجاوب مع حاويات السوا
---
## Description
- في قسم HTML5 و CSS من برنامج FreeCodeCamp ، أنشأنا تطبيق صور Cat. الآن دعونا نعود إليها. في هذه المرة ، سنقوم بإعداده باستخدام إطار عمل Bootstrap المتجاوب لـ CSS. سيحدد Bootstrap مدى اتساع الشاشة ويستجيب عن طريق تغيير حجم عناصر HTML - ومن هنا يكون اسم " Responsive Design
. مع تصميم متجاوب ، ليست هناك حاجة لتصميم نسخة محمولة من موقع الويب الخاص بك. سوف تبدو جيدة على الأجهزة ذات الشاشات من أي عرض. يمكنك إضافة Bootstrap إلى أي تطبيق بإضافة التعليمة البرمجية التالية إلى أعلى HTML: <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"/>
في هذه الحالة ، قمنا بالفعل بإضافته لك إلى هذه الصفحة من وراء الكواليس. لاحظ أن استخدام >
أو />
لإغلاق علامة link
أمر مقبول. للبدء ، يجب علينا تضمين جميع HTML (باستثناء علامة link
وعنصر style
) في عنصر div
باستخدام container-fluid
للفئة.
+ في قسم HTML5 و CSS من برنامج FreeCodeCamp ، أنشأنا تطبيق صور Cat. الآن دعونا نعود إليها. في هذه المرة ، سنقوم بإعداده باستخدام إطار عمل Bootstrap المتجاوب لـ CSS. سيحدد Bootstrap مدى اتساع الشاشة ويستجيب عن طريق تغيير حجم عناصر HTML - ومن هنا يكون اسم Responsive Design
. مع تصميم متجاوب ، ليست هناك حاجة لتصميم نسخة محمولة من موقع الويب الخاص بك. سوف تبدو جيدة على الأجهزة ذات الشاشات من أي عرض. يمكنك إضافة Bootstrap إلى أي تطبيق بإضافة التعليمة البرمجية التالية إلى أعلى HTML: <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"/>
في هذه الحالة ، قمنا بالفعل بإضافته لك إلى هذه الصفحة من وراء الكواليس. لاحظ أن استخدام >
أو />
لإغلاق علامة link
أمر مقبول. للبدء ، يجب علينا تضمين جميع HTML (باستثناء علامة link
وعنصر style
) في عنصر div
باستخدام container-fluid
للفئة.
## Instructions
diff --git a/curriculum/challenges/arabic/03-front-end-libraries/bootstrap/use-the-bootstrap-grid-to-put-elements-side-by-side.arabic.md b/curriculum/challenges/arabic/03-front-end-libraries/bootstrap/use-the-bootstrap-grid-to-put-elements-side-by-side.arabic.md
index 721037ba4a..e883bcc639 100644
--- a/curriculum/challenges/arabic/03-front-end-libraries/bootstrap/use-the-bootstrap-grid-to-put-elements-side-by-side.arabic.md
+++ b/curriculum/challenges/arabic/03-front-end-libraries/bootstrap/use-the-bootstrap-grid-to-put-elements-side-by-side.arabic.md
@@ -7,7 +7,7 @@ localeTitle: استخدم شبكة Bootstrap لوضع عناصر جنبًا إل
---
## Description
- يستخدم Bootstrap نظام شبكة متجاوزة من 12 عمودًا ، مما يجعل من السهل وضع العناصر في صفوف وتحديد العرض النسبي لكل عنصر. يمكن تطبيق معظم طبقات Bootstrap على عنصر div
. يحتوي Bootstrap على خصائص عرض العمود المختلفة التي يستخدمها بناءً على مدى اتساع شاشة المستخدم. على سبيل المثال ، تشتمل الهواتف على شاشات ضيقة ، كما تحتوي أجهزة الكمبيوتر المحمولة على شاشات أوسع. خذ على سبيل المثال الطبقة col-md-*
في Bootstrap. هنا ، md
تعني medium ، و *
هو رقم يحدد عدد الأعمدة التي يجب أن يكون العنصر فيها. في هذه الحالة ، يتم تحديد عرض العمود لعنصر على شاشة متوسطة الحجم ، مثل الكمبيوتر المحمول. في تطبيق Cat Photo الذي نقوم ببنائه ، سنستخدم col-xs-*
، حيث xs
تعني مساحة صغيرة جدًا (مثل شاشة الهاتف المحمول الصغيرة جدًا) ، و *
هو عدد الأعمدة التي تحدد عدد الأعمدة على نطاق واسع يجب أن يكون العنصر. ضع زري " Like
و " Info
و " Delete
جنبًا إلى جنب من خلال تضمين كل ثلاثة منهم في عنصر واحد <div class="row">
، ثم كل واحد منهم داخل عنصر <div class="col-xs-4">
. يتم تطبيق فئة row
على div
، ويمكن أن تتداخل الأزرار نفسها داخلها.
+ يستخدم Bootstrap نظام شبكة متجاوزة من 12 عمودًا ، مما يجعل من السهل وضع العناصر في صفوف وتحديد العرض النسبي لكل عنصر. يمكن تطبيق معظم طبقات Bootstrap على عنصر div
. يحتوي Bootstrap على خصائص عرض العمود المختلفة التي يستخدمها بناءً على مدى اتساع شاشة المستخدم. على سبيل المثال ، تشتمل الهواتف على شاشات ضيقة ، كما تحتوي أجهزة الكمبيوتر المحمولة على شاشات أوسع. خذ على سبيل المثال الطبقة col-md-*
في Bootstrap. هنا ، md
تعني medium ، و *
هو رقم يحدد عدد الأعمدة التي يجب أن يكون العنصر فيها. في هذه الحالة ، يتم تحديد عرض العمود لعنصر على شاشة متوسطة الحجم ، مثل الكمبيوتر المحمول. في تطبيق Cat Photo الذي نقوم ببنائه ، سنستخدم col-xs-*
، حيث xs
تعني مساحة صغيرة جدًا (مثل شاشة الهاتف المحمول الصغيرة جدًا) ، و *
هو عدد الأعمدة التي تحدد عدد الأعمدة على نطاق واسع يجب أن يكون العنصر. ضع زري Like
و Info
و Delete
جنبًا إلى جنب من خلال تضمين كل ثلاثة منهم في عنصر واحد <div class="row">
، ثم كل واحد منهم داخل عنصر <div class="col-xs-4">
. يتم تطبيق فئة row
على div
، ويمكن أن تتداخل الأزرار نفسها داخلها.
## Instructions
undefined
diff --git a/curriculum/challenges/arabic/03-front-end-libraries/react-and-redux/manage-state-locally-first.arabic.md b/curriculum/challenges/arabic/03-front-end-libraries/react-and-redux/manage-state-locally-first.arabic.md
index 16cd7ec5c9..d1a29ca344 100644
--- a/curriculum/challenges/arabic/03-front-end-libraries/react-and-redux/manage-state-locally-first.arabic.md
+++ b/curriculum/challenges/arabic/03-front-end-libraries/react-and-redux/manage-state-locally-first.arabic.md
@@ -26,7 +26,7 @@ tests:
testString: 'async () => { const mockedComponent = Enzyme.mount(React.createElement(DisplayMessages)); const waitForIt = (fn) => new Promise((resolve, reject) => setTimeout(() => resolve(fn()), 100)); const causeChange = (c, v) => c.find("input").simulate("change", { target: { value: v }}); const testValue = "__TEST__EVENT__INPUT"; const changed = () => { causeChange(mockedComponent, testValue); return waitForIt(() => mockedComponent )}; const updated = await changed(); assert(updated.find("input").props().value === testValue, "The input
element should render the value of input
in local state."); }; '
- text: يجب استدعاء الأسلوب handleChange
تحديث قيمة input
في الحالة إلى الإدخال الحالي.
testString: 'async () => { const mockedComponent = Enzyme.mount(React.createElement(DisplayMessages)); const waitForIt = (fn) => new Promise((resolve, reject) => setTimeout(() => resolve(fn()), 100)); const causeChange = (c, v) => c.find("input").simulate("change", { target: { value: v }}); const initialState = mockedComponent.state(); const testMessage = "__TEST__EVENT__MESSAGE__"; const changed = () => { causeChange(mockedComponent, testMessage); return waitForIt(() => mockedComponent )}; const afterInput = await changed(); assert(initialState.input === "" && afterInput.state().input === "__TEST__EVENT__MESSAGE__", "Calling the method handleChange
should update the input
value in state to the current input."); }; '
- - text: يجب النقر فوق الزر " Add message
استدعاء الأسلوب submitMessage
الذي يجب إضافة input
الحالي إلى صفيف messages
في الحالة.
+ - text: يجب النقر فوق الزر Add message
استدعاء الأسلوب submitMessage
الذي يجب إضافة input
الحالي إلى صفيف messages
في الحالة.
testString: 'async () => { const mockedComponent = Enzyme.mount(React.createElement(DisplayMessages)); const waitForIt = (fn) => new Promise((resolve, reject) => setTimeout(() => resolve(fn()), 100)); const causeChange = (c, v) => c.find("input").simulate("change", { target: { value: v }}); const initialState = mockedComponent.state(); const testMessage_1 = "__FIRST__MESSAGE__"; const firstChange = () => { causeChange(mockedComponent, testMessage_1); return waitForIt(() => mockedComponent )}; const firstResult = await firstChange(); const firstSubmit = () => { mockedComponent.find("button").simulate("click"); return waitForIt(() => mockedComponent )}; const afterSubmit_1 = await firstSubmit(); const submitState_1 = afterSubmit_1.state(); const testMessage_2 = "__SECOND__MESSAGE__"; const secondChange = () => { causeChange(mockedComponent, testMessage_2); return waitForIt(() => mockedComponent )}; const secondResult = await secondChange(); const secondSubmit = () => { mockedComponent.find("button").simulate("click"); return waitForIt(() => mockedComponent )}; const afterSubmit_2 = await secondSubmit(); const submitState_2 = afterSubmit_2.state(); assert(initialState.messages.length === 0 && submitState_1.messages.length === 1 && submitState_2.messages.length === 2 && submitState_2.messages[1] === testMessage_2, "Clicking the Add message
button should call the method submitMessage
which should add the current input
to the messages
array in state."); }; '
- text: يجب أن تقوم طريقة submitMessage
بمسح الإدخال الحالي.
testString: 'async () => { const mockedComponent = Enzyme.mount(React.createElement(DisplayMessages)); const waitForIt = (fn) => new Promise((resolve, reject) => setTimeout(() => resolve(fn()), 100)); const causeChange = (c, v) => c.find("input").simulate("change", { target: { value: v }}); const initialState = mockedComponent.state(); const testMessage = "__FIRST__MESSAGE__"; const firstChange = () => { causeChange(mockedComponent, testMessage); return waitForIt(() => mockedComponent )}; const firstResult = await firstChange(); const firstState = firstResult.state(); const firstSubmit = () => { mockedComponent.find("button").simulate("click"); return waitForIt(() => mockedComponent )}; const afterSubmit = await firstSubmit(); const submitState = afterSubmit.state(); assert(firstState.input === testMessage && submitState.input === "", "The submitMessage
method should clear the current input."); }; '
diff --git a/curriculum/challenges/arabic/03-front-end-libraries/react/manage-updates-with-lifecycle-methods.arabic.md b/curriculum/challenges/arabic/03-front-end-libraries/react/manage-updates-with-lifecycle-methods.arabic.md
index 48fbe1e0a4..e780a7ba4e 100644
--- a/curriculum/challenges/arabic/03-front-end-libraries/react/manage-updates-with-lifecycle-methods.arabic.md
+++ b/curriculum/challenges/arabic/03-front-end-libraries/react/manage-updates-with-lifecycle-methods.arabic.md
@@ -18,7 +18,7 @@ localeTitle: إدارة التحديثات باستخدام أساليب دور
```yml
tests:
- - text: يجب أن يقوم مكون " Controller
بعرض مكون " Dialog
" كطفل.
+ - text: يجب أن يقوم مكون Controller
بعرض مكون Dialog
كطفل.
testString: 'assert((function() { const mockedComponent = Enzyme.mount(React.createElement(Controller)); return mockedComponent.find("Controller").length === 1 && mockedComponent.find("Dialog").length === 1; })(), "The Controller
component should render the Dialog
component as a child.");'
- text: يجب أن يتم تسجيل أسلوب componentWillReceiveProps
في مكون Dialog
this.props
إلى وحدة التحكم.
testString: 'assert((function() { const lifecycleChild = React.createElement(Dialog).type.prototype.componentWillReceiveProps.toString().replace(/ /g,""); return lifecycleChild.includes("console.log") && lifecycleChild.includes("this.props") })(), "The componentWillReceiveProps
method in the Dialog
component should log this.props
to the console.");'
diff --git a/curriculum/challenges/arabic/03-front-end-libraries/react/optimize-re-renders-with-shouldcomponentupdate.arabic.md b/curriculum/challenges/arabic/03-front-end-libraries/react/optimize-re-renders-with-shouldcomponentupdate.arabic.md
index 838b5b16f5..8d2daebb2c 100644
--- a/curriculum/challenges/arabic/03-front-end-libraries/react/optimize-re-renders-with-shouldcomponentupdate.arabic.md
+++ b/curriculum/challenges/arabic/03-front-end-libraries/react/optimize-re-renders-with-shouldcomponentupdate.arabic.md
@@ -11,7 +11,7 @@ localeTitle: تحسين Re-Renders مع shouldComponentUpdate
حتى الآن ، إذا تلقى أي مكون state
جديدة أو props
جديدة ، فإنه يعيد نفسه وجميع أبنائه. هذا عادة ما يرام. لكن React يوفر طريقة دورة حياة يمكنك الاتصال بها عندما تتلقى مكونات state
الطفل أو props
الجديدة ، وتعلن تحديدًا إذا كان يجب تحديث المكونات أم لا. هذه الطريقة هي shouldComponentUpdate()
، وتستغرق nextProps
و nextState
كمعلمات. هذه الطريقة هي طريقة مفيدة لتحسين الأداء. على سبيل المثال ، السلوك الافتراضي هو أن المكون الخاص بك re-renders عندما يتلقى props
الجديدة ، حتى إذا لم يتم تغيير props
. يمكنك استخدام shouldComponentUpdate()
لمنع هذا عن طريق مقارنة props
. يجب أن تقوم الطريقة بإرجاع قيمة boolean
تخبر رد ما إذا كان سيتم تحديث المكون أم لا. يمكنك مقارنة الدعائم الحالية ( this.props
) this.props
التالية ( nextProps
) لتحديد ما إذا كنت بحاجة إلى التحديث أم لا ، وإرجاع true
أو false
وفقًا لذلك.
## Instructions
- يتم إضافة أسلوب shouldComponentUpdate()
في مكون يسمى OnlyEvens
. حاليًا ، يعود هذا الأسلوب إلى true
لذا تعيد OnlyEvens
الظهور في كل مرة تتلقى فيها props
الجديدة. قم بتعديل الطريقة بحيث لا يتم تحديث OnlyEvens
إلا إذا كانت value
الدعائم الجديدة حتى. انقر فوق الزر " Add
وشاهد ترتيب الأحداث في وحدة تحكم المستعرض الخاص بك أثناء تشغيل hooks دورة الحياة الأخرى.
+ يتم إضافة أسلوب shouldComponentUpdate()
في مكون يسمى OnlyEvens
. حاليًا ، يعود هذا الأسلوب إلى true
لذا تعيد OnlyEvens
الظهور في كل مرة تتلقى فيها props
الجديدة. قم بتعديل الطريقة بحيث لا يتم تحديث OnlyEvens
إلا إذا كانت value
الدعائم الجديدة حتى. انقر فوق الزر Add
وشاهد ترتيب الأحداث في وحدة تحكم المستعرض الخاص بك أثناء تشغيل hooks دورة الحياة الأخرى.
## Tests
diff --git a/curriculum/challenges/arabic/03-front-end-libraries/react/render-with-an-if-else-condition.arabic.md b/curriculum/challenges/arabic/03-front-end-libraries/react/render-with-an-if-else-condition.arabic.md
index 52b35e0e16..7693fc9f13 100644
--- a/curriculum/challenges/arabic/03-front-end-libraries/react/render-with-an-if-else-condition.arabic.md
+++ b/curriculum/challenges/arabic/03-front-end-libraries/react/render-with-an-if-else-condition.arabic.md
@@ -22,7 +22,7 @@ tests:
testString: 'assert((function() { const mockedComponent = Enzyme.mount(React.createElement(MyComponent)); return mockedComponent.find("MyComponent").length === 1; })(), "MyComponent
should exist and render.");'
- text: ''
testString: 'async () => { const waitForIt = (fn) => new Promise((resolve, reject) => setTimeout(() => resolve(fn()), 250)); const mockedComponent = Enzyme.mount(React.createElement(MyComponent)); const state_1 = () => { mockedComponent.setState({display: true}); return waitForIt(() => mockedComponent )}; const updated = await state_1(); assert(mockedComponent.find("div").length === 1 && mockedComponent.find("div").children().length === 2 && mockedComponent.find("button").length === 1 && mockedComponent.find("h1").length === 1, "When display
is set to true
, a div
, button
, and h1
should render."); }; '
- - text: عند تعيين display
على " false
، يجب أن يتم display
فقط button
div
button
.
+ - text: عند تعيين display
على false
، يجب أن يتم display
فقط button
div
button
.
testString: 'async () => { const waitForIt = (fn) => new Promise((resolve, reject) => setTimeout(() => resolve(fn()), 250)); const mockedComponent = Enzyme.mount(React.createElement(MyComponent)); const state_1 = () => { mockedComponent.setState({display: false}); return waitForIt(() => mockedComponent )}; const updated = await state_1(); assert(mockedComponent.find("div").length === 1 && mockedComponent.find("div").children().length === 1 && mockedComponent.find("button").length === 1 && mockedComponent.find("h1").length === 0, "When display
is set to false
, only a div
and button
should render."); }; '
- text: يجب أن تستخدم طريقة التجسيد عبارة if/else
للتحقق من حالة this.state.display
.
testString: 'getUserInput => assert(getUserInput("index").includes("if") && getUserInput("index").includes("else"), "The render method should use an if/else
statement to check the condition of this.state.display
.");'
diff --git a/curriculum/challenges/arabic/08-coding-interview-prep/rosetta-code/execute-brain.arabic.md b/curriculum/challenges/arabic/08-coding-interview-prep/rosetta-code/execute-brain.arabic.md
index 2a3038be3a..718839c631 100644
--- a/curriculum/challenges/arabic/08-coding-interview-prep/rosetta-code/execute-brain.arabic.md
+++ b/curriculum/challenges/arabic/08-coding-interview-prep/rosetta-code/execute-brain.arabic.md
@@ -20,7 +20,7 @@ tests:
- text: ''
testString: 'assert(typeof brain(bye) === "string", "brain(bye)
should return a string");'
- text: ''
- testString: 'assert.equal(brain("++++++[>++++++++++<-]>+++++."),"A", "brain("++++++[>++++++++++<-]>+++++.")
++++++++++<-]>+++++."),"A", "brain("++++++[>++++++++++<-]>+++++.")
should return "A"");'
- text: ''
testString: 'assert.equal(brain(bye), "Goodbye, World!\r\n", "brain(bye)
should return Goodbye, World!\\r\\n
");'
- text: ''