diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-data-structures/check-for-the-presence-of-an-element-with-indexof.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-data-structures/check-for-the-presence-of-an-element-with-indexof.md
index 3a029cc5f4a..f13243529db 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-data-structures/check-for-the-presence-of-an-element-with-indexof.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-data-structures/check-for-the-presence-of-an-element-with-indexof.md
@@ -28,7 +28,7 @@ fruits.indexOf('pears');
# --hints--
-يجب أن تقوم الوظيفة `quickCheck` بإرجاع منطقي (boolean) (`true` أو `false`)، ليس سلسلة (string) نصية (`"true"` أو `"false"`)
+يجب أن تقوم الوظيفة `quickCheck` بإرجاع منطق (boolean) (`true` أو `false`)، ليس مقطع نصي (string) (`"true"` أو `"false"`)
```js
assert.isBoolean(quickCheck(['squash', 'onions', 'shallots'], 'mushrooms'));
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-data-structures/check-if-an-object-has-a-property.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-data-structures/check-if-an-object-has-a-property.md
index ea89a8e8d67..c7ffea4bf9d 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-data-structures/check-if-an-object-has-a-property.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-data-structures/check-if-an-object-has-a-property.md
@@ -19,7 +19,7 @@ users.hasOwnProperty('Alan');
# --instructions--
-أنهي كتابة الوظيفة بحيث ترجع `true` إذا كان object الذي مرر إليه يحتوي على جميع الأسماء الأربعة، `Alan`, و `Jeff`, و `Sarah`, و `Ryan`, وإنتاج `false` خلاف ذلك.
+أنهي كتابة الوظيفة بحيث ترجع `true` إذا كان الكائن (object) الذي مرر إليها يحتوي على جميع الأسماء الأربعة، `Alan`, و `Jeff`, و `Sarah`, و `Ryan`, وترجع `false` خلاف ذلك.
# --hints--
@@ -43,13 +43,13 @@ assert(
);
```
-الوظيفة `isEveryoneHere` يجب أن تنتج `true` إذا `Alan`، و`Jeff`، و`Sarah`، و `Ryan` هي خصائص في object الذي تم تمريرها إلى الوظيفة.
+يجب أن يرجع الوظيفة `isEveryoneHere` حالة `true` إذا `Alan`، و`Jeff`، و`Sarah`، و `Ryan` هي خصائص في الكائن (object) الذي تم تمريره إلى الوظيفة.
```js
assert(isEveryoneHere(users) === true);
```
-الوظيفة `isEveryoneHere` يجب أن تنتج `false` إذا `Alan` ليست خاصية في object الذي تم تمريره.
+يجب أن يرجع الوظيفة `isEveryoneHere` حالة `false` إذا `Alan` ليست خاصية في كائن (object) الذي تم تمريره.
```js
assert(
@@ -60,7 +60,7 @@ assert(
);
```
-الوظيفة `isEveryoneHere` يجب أن ترجع `false` إذا `Jeff` ليست خاصية في object الذي تم تمريره.
+يجب أن يرجع الوظيفة `isEveryoneHere` حالة `false` إذا `Jeff` ليست خاصية في كائن (object) الذي تم تمريره.
```js
assert(
@@ -71,7 +71,7 @@ assert(
);
```
-الوظيفة `isEveryoneHere` يجب أن ترجع `false` إذا `Sarah` ليست خاصية في object الذي تم تمريره.
+يجب أن يرجع الوظيفة `isEveryoneHere` حالة `false` إذا `Sarah` ليست خاصية في كائن (object) الذي تم تمريره.
```js
assert(
@@ -82,7 +82,7 @@ assert(
);
```
-الوظيفة `isEveryoneHere` يجب أن ترجع `false` إذا `Ryan` ليست خاصية في object الذي تم تمريره.
+يجب أن يرجع الوظيفة `isEveryoneHere` حالة `false` إذا `Ryan` ليست خاصية في كائن (object) الذي تم تمريره.
```js
assert(
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-data-structures/modify-an-array-stored-in-an-object.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-data-structures/modify-an-array-stored-in-an-object.md
index 9822d9b83ce..96ff4763bef 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-data-structures/modify-an-array-stored-in-an-object.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-data-structures/modify-an-array-stored-in-an-object.md
@@ -22,7 +22,7 @@ dashedName: modify-an-array-stored-in-an-object
assert('name' in user && 'age' in user && 'data' in user);
```
-يجب أن تقبل وظيفة `addFriend` كائن `user` مقطع نصي `friend` كوسيطات و أضف friend إلى قائمة `friends` في كائن `user`.
+يجب أن تقبل وظيفة (function) مسمى `addFriend` كائن `user` ومقطع نصي `friend` كوسائط و أضف friend إلى قائمة `friends` في كائن `user`.
```js
assert(
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/golf-code.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/golf-code.md
index 649e46e30aa..53255c07972 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/golf-code.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/golf-code.md
@@ -11,7 +11,7 @@ dashedName: golf-code
في لُعْبَة الجولف، كل ثقب لديه `par`، التي تصف متوسط عدد الضربات `strokes` المتوقعة من اللاعب من أجل أدخال الكرة في الثَّقب لإكمال اللعب. اعتمادًا على مدى بعد `strokes` من `par` سواء البعد كان فوق أو تحت، يوجد اسم مستعار مختلف لكل منهم.
-سيتم تمرير `par` و `strokes` كحجة الوظائف الخاص بك. أرجع المقطع الصحيح وفقًا لهذا الجدول الذي يسرد strokes حسب الأولوية؛ من الأعلى إلى الأسفل:
+سيتم تمرير `par` و `strokes` كوسائط (arguments) لوظائفك (function). أرجع المقطع الصحيح وفقًا لهذا الجدول الذي يسرد strokes حسب الأولوية؛ من الأعلى إلى الأسفل:
| Strokes | Return |
|---|
| 1 | "Hole-in-one!" |
| <= par - 2 | "Eagle" |
| par - 1 | "Birdie" |
| par | "Par" |
| par + 1 | "Bogey" |
| par + 2 | "Double Bogey" |
| >= par + 3 | "Go Home!" |
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/logical-order-in-if-else-statements.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/logical-order-in-if-else-statements.md
index 060fbe9594b..e95e04569e7 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/logical-order-in-if-else-statements.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/logical-order-in-if-else-statements.md
@@ -11,9 +11,9 @@ dashedName: logical-order-in-if-else-statements
الترتيب مهم في عبارات `if` و `else if`.
-يتم تنفيذ الوظيفة من الأعلى إلى الأسفل، لذا سترغب في توخي الحذر بشأن العبارة التي تأتي أولاً.
+يتم تنفيذ الوظيفة (function) من الأعلى إلى الأسفل، لذا سترغب في توخي الحذر بشأن العبارة التي تأتي أولاً.
-ولنأخذ هاتين الوظيفتين كمثال.
+ولنأخذ هاتين الوظيفتين (functions) كمثال.
إليك الأول:
@@ -43,7 +43,7 @@ function bar(x) {
}
```
-بينما تبدو هاتان الوظيفتان متطابقتان تقريباً، إذا مررنا رَقْم إلى كليهما نحصل على نواتج مختلفة.
+بينما تبدو هاتان الوظيفتان (functions) متطابقتان تقريباً، إذا مررنا رَقْم إلى كليهما نحصل على نواتج مختلفة.
```js
foo(0)
@@ -54,7 +54,7 @@ bar(0)
# --instructions--
-غيّر ترتيب المنطق في الوظيفة بحيث تنتج العبارات الصحيحة في جميع الحالات.
+غيّر ترتيب المنطق في الوظيفة (function) بحيث تنتج العبارات الصحيحة في جميع الحالات.
# --hints--
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/replace-loops-using-recursion.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/replace-loops-using-recursion.md
index 4fe860ce2ad..46f21360043 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/replace-loops-using-recursion.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/replace-loops-using-recursion.md
@@ -10,7 +10,7 @@ dashedName: replace-loops-using-recursion
# --description--
-التكرار معناه أنه يمكن استخدام الوظيفة بداخل نفسه. للمساعدة في فهم هذا، ابدأ بالتفكير في المهمة التالية: أضرب أول عناصر `n` من قائمة ليصبح لديك ناتج ضرب هذه العناصر. باستخدام حلقة `for`، يمكنك القيام بما يلي:
+يكون معنى التكرار (Recursion) أنه يمكن أن تستخدم الوظيفة نفسها. للمساعدة في فهم هذا، ابدأ بالتفكير في المهمة التالية: أضرب أول عناصر `n` من قائمة ليصبح لديك ناتج ضرب هذه العناصر. باستخدام حلقة `for`، يمكنك القيام بما يلي:
```js
function multiply(arr, n) {
@@ -34,13 +34,13 @@ dashedName: replace-loops-using-recursion
}
```
-النسخة المتكررة (recursive) من `multiply` توضح تفاصيل ذلك. في حالة أصلية، حيث `n <= 0`، فإنه ينتج 1. بالنسبة للقيم الذين أكبر من `n`، فإنه يستدعي نفسه، ولكن مع `n - 1`. يتم تقييم هذا الاستدعاء بنفس الطريقة، فيقوم باستدعاء `multiply` مرة أخرى حتى `n <= 0`. في هذه المرحلة، جميع الـ functions يمكن إرجاعها (can return) و `multiply` الأصلية ترجع (returns) الإجابة.
+النسخة المتكررة (recursive) من `multiply` توضح تفاصيل ذلك. في حالة أصلية، حيث `n <= 0`، فإنه ينتج 1. بالنسبة للقيم الذين أكبر من `n`، فإنه يستدعي نفسه، ولكن مع `n - 1`. يتم تفعيل الوظيفة (function) بنفس الطريقة، فعيل `multiply` مرة أخرى حتى `n <= 0`. في هذه المرحلة، يمكن ينتجوا جميع الوظائف (functions) و الوظيفة `multiply` الأصلية الإجابة.
-**ملاحظة:** الـ Recursive functions يجب أن يكون لها base case عندما يتم ارجاعها دون استدعاء الـ function مره أخرى (في هذا المثال ، عندما يكون `n <= 0`) ، وإلا فلن يتمكنوا أبدا من إنهاء التنفيذ.
+**ملاحظة:** يجب أن يكون الوظائف المتكررة (Recursive functions) لها حالة مبدئيا (base case) تنتج دون تفعيل الـوظيفة (function) مره أخرى (في هذا المثال، عندما يكون `n <= 0`)، وإلا فلن يتمكنوا أبدا من التوقف عن التفعيل.
# --instructions--
-اكتب الـ recursive function الآتية `sum(arr, n)`، والتي سترجع مجموع العناصر الأولى `n` من الـ array الآتية `arr`.
+اكتب وظيفة متكررة (recursive function) الآتية `sum(arr, n)`، التي ستنتج مجموع العناصر الأولى `n` من القائمة (array) الآتية `arr`.
# --hints--
@@ -62,7 +62,7 @@ assert.equal(sum([2, 3, 4], 1), 2);
assert.equal(sum([2, 3, 4, 5], 3), 9);
```
-لا ينبغي أن يعتمد الكود الخاص بك على أي نوع من الـ loops سواء (`for` أو `while` أو functions مثل `forEach` او `map` او `filter` أو `reduce`).
+لا ينبغي أن يعتمد كودك على أي نوع من الحلقات (loops) سواء (`for`, أو `while`, أو وظائف (functions) مثل `forEach`, أو `map`, أو `filter`, أو `reduce`).
```js
assert(
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/debugging/catch-arguments-passed-in-the-wrong-order-when-calling-a-function.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/debugging/catch-arguments-passed-in-the-wrong-order-when-calling-a-function.md
index fb40b0f7931..f20e1d24e3d 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/debugging/catch-arguments-passed-in-the-wrong-order-when-calling-a-function.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/debugging/catch-arguments-passed-in-the-wrong-order-when-calling-a-function.md
@@ -1,6 +1,6 @@
---
id: 587d7b85367417b2b2512b3a
-title: Catch Arguments Passed in the Wrong Order When Calling a Function
+title: إدراك الوسائط (Arguments) المارة بترتيب خاطئ عند تفعيل وظيفة
challengeType: 1
forumTopicId: 301184
dashedName: catch-arguments-passed-in-the-wrong-order-when-calling-a-function
@@ -8,11 +8,11 @@ dashedName: catch-arguments-passed-in-the-wrong-order-when-calling-a-function
# --description--
-متابعة للمناقشة حول استدعاد الـ functions، الخطأ التالي الذي يجب مراقبته هو عندما يتم تقديم الـ function's arguments بالترتيب غير الصحيح. إذا كانت الـ arguments مختلفة الأنواع، مثل الـ function التي تتوقع array وعدد صحيح، فمن المرجح أن يؤدي ذلك إلى خطأ في وقت التشغيل. إذا كانت الـ arguments هي من نفس النوع (كلها أعداد، على سبيل المثال)، فلن يكون لمنطق الكود أي معنى. تأكد من تقديم جميع الـ arguments المطلوبة، بالترتيب الصحيح لتجنب هذه المشاكل.
+متابعة للمناقشة حول تفعيل الوظائف (functions)، الخطأ التالي الذي يجب مراقبته هو عندما يتم تقديم الوسائط الوظيفة (function's arguments) بالترتيب غير الصحيح. إذا كانت الوسائط (arguments) مختلفة الأنواع، مثل الوظيفة (function) التي تتوقع قائمة (array) وعدد صحيح، فمن المرجح أن يؤدي ذلك إلى خطأ في وقت التشغيل. إذا كانت الـ arguments هي من نفس النوع (كلها أعداد، على سبيل المثال)، فلن يكون لمنطق الكود أي معنى. تأكد من تقديم جميع الـ arguments المطلوبة، بالترتيب الصحيح لتجنب هذه المشاكل.
# --instructions--
-ترفع الدالة `raiseToPower` الأساس (base) إلى الأس (exponent). لسوء الحظ، لم يتم استدعائها بشكل صحيح - أصلح الكود حتي تكون قيمة `power` هي 8 المتوقعة.
+ترفع الوظيفة (function) مسمى `raiseToPower` الأساس (base) إلى الأس (exponent). لسوء الحظ، لم يتم استدعائها بشكل صحيح - أصلح الكود حتي تكون قيمة `power` هي 8 المتوقعة.
# --hints--
@@ -22,7 +22,7 @@ dashedName: catch-arguments-passed-in-the-wrong-order-when-calling-a-function
assert(power == 8);
```
-يجب أن يستخدم الكود الخاص بك الترتيب الصحيح للـ arguments لاستدعاء الدالة `raiseToPower`.
+يجب أن يستخدم كودك الترتيب الصحيح لوسائط (arguments) لتفعيل الوظيفة (funciton) مسمى `raiseToPower`.
```js
assert(code.match(/raiseToPower\(\s*?base\s*?,\s*?exp\s*?\);/g));
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/debugging/catch-missing-open-and-closing-parenthesis-after-a-function-call.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/debugging/catch-missing-open-and-closing-parenthesis-after-a-function-call.md
index f2d3ea8dff5..949c1485a9d 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/debugging/catch-missing-open-and-closing-parenthesis-after-a-function-call.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/debugging/catch-missing-open-and-closing-parenthesis-after-a-function-call.md
@@ -1,6 +1,6 @@
---
id: 587d7b85367417b2b2512b39
-title: إدراك أقواس الفتح والإغلاق المفقودة بعد استدعاء دالة (Catch Missing Open and Closing Parenthesis After a Function Call)
+title: إدراك أقواس (Parenthesis) الفتح والإغلاق المفقودة بعد تفعيل وظيفة (Function)
challengeType: 1
forumTopicId: 301185
dashedName: catch-missing-open-and-closing-parenthesis-after-a-function-call
@@ -8,7 +8,7 @@ dashedName: catch-missing-open-and-closing-parenthesis-after-a-function-call
# --description--
-عندما لا تأخذ الfunction أو الmethod أي arguments، قد تنسى إدراج أقواس الفتح والإغلاق (فارغة) عند استدعائها. غالباً ما يتم حفظ نتيجة استدعاء function في variable لاستخدام آخر في الكود الخاص بك. يمكن اكتشاف هذا الخطأ عن طريق تسجيل قيم الvariables (أو أنواعها) إلى الconsole وملاحظة أن القيمة المعينة للvariable هي function reference (مرجع دالة)، بدلاً من القيمة المتوقعة وهي ناتج تنفيذ ال الfunction.
+عندما لا تأخذ الوظيفة (function) أو الطريقة (method) أي وسائط (arguments)، قد تنسى إدراج أقواس الفتح والإغلاق (فارغة) عند تفعيلها. غالباً ما يتم حفظ نتيجة تفعيل وظيفة (function) في متغير (variable) لاستخدام آخر في كودك. يمكن اكتشاف هذا الخطأ عن طريق تسجيل قيم المتغيرات (variables) (أو أنواعها) إلى الوحدة (console) وملاحظة أن القيمة المعينة للمتغير (variable) هي مرجع وظيفة (function reference)، بدلاً من القيمة المتوقعة وهي ناتج تنفيذ الوظيفة (function).
فتختلف المتغيرات الواردة في المثال التالي:
@@ -20,21 +20,21 @@ let varOne = myFunction;
let varTwo = myFunction();
```
-هنا `varOne` هو الـ function المسماه `myFunction`، و `varTwo` هو الـ string المكون من `You rock!`.
+تكون `varOne` الوظيفة (function) هنا مسمى `myFunction`، ويكون `varTwo` المقطع نصي (string) من `You rock!`.
# --instructions--
-أصلح الـ code بحيث يتم تعيين الـ variable المسمى `result` القيمة العائدة من استعداء الـ function المسماه `getNine`.
+أصلح الكود بحيث يتم تعيين المتغير (variable) المسمى `result` بقيمة الناتحة من تفعيل الوظيفة (function) مسمى `getNine`.
# --hints--
-يجب أن يصلح الـ code الـ variable المسمى `result` حيث يتم تعيينه الرقم الذي يعيده الـ function المسمى `getNine`.
+يجب أن يصلح الوظيفة المتغير (variable) مسمى `result` حيث يتم تعيينه الرَّقْم الذي ينتج الوظيفة (function) مسمى `getNine`.
```js
assert(result == 9);
```
-يجب أن يستدعي الكود الخاص بك دالة `getNine`.
+يجب أن يفعيل كودك وظيفة `getNine`.
```js
assert(code.match(/getNine\(\)/g).length == 2);
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/debugging/prevent-infinite-loops-with-a-valid-terminal-condition.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/debugging/prevent-infinite-loops-with-a-valid-terminal-condition.md
index 030951c4415..153f9c94a4a 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/debugging/prevent-infinite-loops-with-a-valid-terminal-condition.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/debugging/prevent-infinite-loops-with-a-valid-terminal-condition.md
@@ -10,7 +10,7 @@ dashedName: prevent-infinite-loops-with-a-valid-terminal-condition
الموضوع الأخير هو الحلقة اللانهائية المخيفة (dreaded infinite loop). الحلقات التكرارية (loops) هي أدوات رائعة عندما يحتاج برنامجك لتشغيل كتلة الكود عدد معين من المرات أو حتى يتم الوفاء بشرط ما، ولكنها تحتاج إلى حالة نهائية تنهي التكرار. الحلقات اللانهائية (Infinite loops) من المحتمل أن تجمد أو تعطل المتصفح، وقد تسبب في فشل تنفيذ البرامج، وهو ما لا يريده أحد.
-كان هناك مثال لحلقة لانهائية في مقدمة هذا القسم - لم يكن لديها أي شرط نهائي للخروج من حلقة `while` داخل `loopy()`. لا تستدعي هذه الدالة!
+كان هناك مثال لحلقة لانهائية في مقدمة هذا القسم - لم يكن لديها أي شرط نهائي للخروج من حلقة `while` داخل `loopy()`. لا تستدعي هذه الوظيفة!
```js
function loopy() {
@@ -24,7 +24,7 @@ function loopy() {
# --instructions--
-تحتوي دالة `myFunc()` على حلقة لانهائية لأن حالة الشرط الانتهائي `i != 4` لن تقيّم أبدا الي `false` (وتخرج من التكرار) - `i` سوف يزداد بمقدار 2 في كل تكرار، ويقفز مباشرة فوق 4 حيث ان `i` عدد فردي من البداية. أصلح مشغل المقارنة (comparison operator) في حالة الشرط الانتهائي بحيث تعمل الحلقة فقط ل `i` بقيمة أقل من أو يساوي 4.
+تحتوي وظيفة `myFunc()` على حلقة لانهائية لأن حالة الشرط الانتهائي `i != 4` لن تقيّم أبدا إلى `false` (وتخرج من التكرار) - `i` سوف يزداد بمقدار 2 في كل تكرار، ويقفز فوق 4 حيث إن `i` عدد فردي من البداية. أصلح مشغل المقارنة (comparison operator) في حالة الشرط الانتهائي بحيث تعمل الحلقة فقط ل `i` بقيمة أقل من أو يساوي 4.
# --hints--
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/complete-a-promise-with-resolve-and-reject.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/complete-a-promise-with-resolve-and-reject.md
index 53e0be3a158..24b7297917b 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/complete-a-promise-with-resolve-and-reject.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/complete-a-promise-with-resolve-and-reject.md
@@ -20,7 +20,7 @@ const myPromise = new Promise((resolve, reject) => {
});
```
-المثال الوارد أعلاه يستخدم strings نصية كوسيطة لهذه الحَجَّة (argument)، ولكن يمكن أن يكون أي شيء حقا. في كثير من الأحيان، قد يكون كائناً، يمكنك استخدام البيانات منه، لوضع البيانات على موقعك أو في أي مكان آخر.
+المثال الوارد أعلاه يستخدم مقاطع (strings) نصية كحَجَّة (argument) لهذه الوظائف (functions)، ولكن يمكن أن تكون أي شيء حقا. في كثير من الأحيان، قد يكون كائناً، يمكنك استخدام البيانات منه، لوضع البيانات على موقعك أو في أي مكان آخر.
# --instructions--
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/prevent-object-mutation.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/prevent-object-mutation.md
index cb506a046a2..098e5c5a3c3 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/prevent-object-mutation.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/prevent-object-mutation.md
@@ -8,7 +8,7 @@ dashedName: prevent-object-mutation
# --description--
-كما رأينا في التحدي السابق، استخدام `const` وحده لا يحمي بياناتك من امكانية تغييرها. لضمان عدم تغيير بياناتك، توفر جافا سكريبت دالة `Object.freeze` لمنع تغيير البيانات.
+كما رأينا في التحدي السابق، استخدام `const` وحده لا يحمي بياناتك من امكانية تغييرها. لضمان عدم تغيير بياناتك، توفر JavaScript وظيفة `Object.freeze` لمنع تغيير البيانات.
سيتم رفض أي محاولة لتغيير الـ object، مع اظهار خطأ إذا كان السكريبت يعمل في strict mode.
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/set-default-parameters-for-your-functions.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/set-default-parameters-for-your-functions.md
index 4bf466bf1f6..910ecfb02ef 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/set-default-parameters-for-your-functions.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/set-default-parameters-for-your-functions.md
@@ -1,6 +1,6 @@
---
id: 587d7b88367417b2b2512b46
-title: تعيين المعلمات الافتراضية للدوال (Set Default Parameters for Your Functions)
+title: تعيين الوسائط (Parameters) الافتراضية للوظيفتك (Functions)
challengeType: 1
forumTopicId: 301209
dashedName: set-default-parameters-for-your-functions
@@ -8,7 +8,7 @@ dashedName: set-default-parameters-for-your-functions
# --description--
-من أجل مساعدتنا في إنشاء functions أكثر مرونة، يوفر ES6 الـ default parameters للـ functions.
+من أجل مساعدتنا في إنشاء وظائف (functions) أكثر مرونة، يوفر ES6 أمكانية وضع وسائط أفتراضية (default parameters) إلى الوظائف (functions).
تحقق من هذا الكود:
@@ -25,7 +25,7 @@ console.log(greeting());
# --instructions--
-قم بتعديل الدالة `increment` بإضافة الـ default parameters بحيث تضيف 1 إلى `number` إذا لم يتم تحديد `value`.
+عدّل الوظيفة `increment` بإضافة الوسائط الافتراضية (default parameters) بحيث تضيف 1 إلى `number` إذا لم يتم تحديد `value`.
# --hints--
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/use-export-to-share-a-code-block.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/use-export-to-share-a-code-block.md
index fadc144a1bd..57b763166ed 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/use-export-to-share-a-code-block.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/use-export-to-share-a-code-block.md
@@ -8,7 +8,7 @@ dashedName: use-export-to-share-a-code-block
# --description--
-تخيل ملف يسمى `math_functions.js` يحتوي على عدة functions ذات صلة بالعمليات الرياضية. واحد منها مخزن في متغير، `add`، والذي يأخذ رقمين ويعيد مجموعهم. تريد استخدام هذه الدالة في عدة ملفات جافا سكريبت مختلفة. من أجل مشاركتها مع هذه الملفات الأخرى، تحتاج أولاً الي ان تصدرها باستخدام `export`.
+تخيل مِلَفّ يسمى `math_functions.js` يحتوي على عدة وظائف (functions) ذات صلة بالعمليات الرياضية. واحد منها مخزن في متغير، `add`، والذي يأخذ رقمين ويعيد مجموعهم. تريد استخدام هذه الوظيفة في عدة ملفات من JavaScript المختلفة. من أجل مشاركتها مع هذه الملفات الأخرى، تحتاج أولاً الي ان تصدرها باستخدام `export`.
```js
export const add = (x, y) => {
@@ -16,7 +16,7 @@ export const add = (x, y) => {
}
```
-بالاعلى طريقة شائعة لتصدير دالة واحدة (export single function)، ولكن يمكنك تحقيق نفس الشيء هكذا:
+بالأعلى طريقة شائعة لتصدير وظيفة واحدة (export single function)، ولكن يمكنك تحقيق الشيء نفسه هكذا:
```js
const add = (x, y) => {
@@ -26,7 +26,7 @@ const add = (x, y) => {
export { add };
```
-عند تصدير (export) متغير أو دالة، يمكنك استيراده (import) في ملف آخر واستخدامه دون الحاجة إلى إعادة كتابة الكود. يمكنك تصدير (export) أشياء متعددة بتكرار المثال الأول لكل شيء تريد تصديره، أو بوضعها كلها في export statement من المثال الثاني، مثل هذا:
+عند تصدير (export) متغير أو وظيفة، يمكنك استيراده (import) في مِلَفّ آخر واستخدامه دون الحاجة إلى إعادة كتابة الكود. يمكنك تصدير (export) أشياء متعددة بتكرار المثال الأول لكل شيء تريد تصديره، أو بوضعها كلها في export statement من المثال الثاني، مثل هذا:
```js
export { add, subtract };
@@ -34,7 +34,7 @@ export { add, subtract };
# --instructions--
-هناك دالتين متعلقتين بالـ strings في المحرر. قم بعمل export لكليهما باستخدام الطريقة التي تختارها.
+هناك وظيفتان متعلقتين بالمقاطع النصية (strings) في المحرر. قم بعمل export لكليهما باستخدام الطريقة التي تختارها.
# --hints--
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/use-getters-and-setters-to-control-access-to-an-object.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/use-getters-and-setters-to-control-access-to-an-object.md
index 1018ec1e630..aecb02a34bd 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/use-getters-and-setters-to-control-access-to-an-object.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/use-getters-and-setters-to-control-access-to-an-object.md
@@ -12,9 +12,9 @@ dashedName: use-getters-and-setters-to-control-access-to-an-object
هذه تسمى تقليديا بـ getters و setters.
-الغرض من دوال Getter هو ببساطة إرجاع قيمة المتغير الخاص (private) لكائن ما إلى المستخدم دون الوصول قاصدًا إلى المتغير الخاص.
+الغرض من وظائف جالب (Getter) هو ببساطة أنتاج قيمة المتغير الخاص (private) لكائن ما إلى المستخدم دون الوصول قاصدًا إلى المتغير الخاص.
-الغرض من وظائف Setter هو ببساطة تعيين قيمة المتغير الخاص لكائن ما استناداً إلى القيمة التي تمرر إلى وظيفة الـ setter. قد يتضمن هذا التغيير عمليات حسابية، أو حتى الكتابة فوق القيمة السابقة بالكامل.
+الغرض من وظائف محدد (Setter) هو ببساطة تعيين قيمة المتغير الخاص لكائن ما استناداً إلى القيمة التي تمرر إلى وظيفة محدد (setter). قد يتضمن هذا التغيير عمليات حسابية، أو حتى الكتابة فوق القيمة السابقة بالكامل.
```js
class Book {
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/avoid-mutations-and-side-effects-using-functional-programming.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/avoid-mutations-and-side-effects-using-functional-programming.md
index 1ef26464b18..fd23d3ecfdb 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/avoid-mutations-and-side-effects-using-functional-programming.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/avoid-mutations-and-side-effects-using-functional-programming.md
@@ -12,11 +12,11 @@ dashedName: avoid-mutations-and-side-effects-using-functional-programming
هذا مثال صغير لنمط أكبر بكثير- يمكنك استدعاء وظيفة (function) على متغير (variable)، قائمة (array)، أو كائن(object)، والوظيفة تغير المتغير أو شيء ما في الكائن.
-وأحد المبادئ الأساسية للبرمجة الوظيفية هو عدم تغيير الأشياء. التغييرات تؤدي إلى أعطال. من الأسهل منع الأعطال علما بأن الوظائف الخاصة بك لا تغير أي شيء، بما في ذلك وسيطات الوظيفة أو أي متغير عام.
+وأحد المبادئ الأساسية للبرمجة الوظيفية هو عدم تغيير الأشياء. التغييرات تؤدي إلى أعطال. من الأسهل منع الأعطال علما بأن وظائفك (functions) لا تغير أي شيء، بما في ذلك حجج (arguments) الوظيفة أو أي متغير (variable) عام.
المثال السابق لم يكن به أي عمليات معقدة ولكن دالة `splice` غيرت القائمة الأصلية، وأسفرت عن حدوث خطأ.
-تذكر أنه في البرمجة الوظيفية، تغيير الأشياء يسمى طفرة mutation، وتسمى النتيجة تأثير جانبي side effect. من الناحية المثالية، يجب أن تكون الوظيفة pure function، مما يعني أنها لا تسبب أي تأثيرات جانبية.
+تذكر أنه في البرمجة الوظيفية، تغيير الأشياء يسمى طفرة mutation، وتسمى النتيجة تأثير جانبي side effect. من الناحية المثالية، يجب أن تكون الوظيفة خالصة (pure function)، مما يعني أنها لا تسبب أي تأثيرات جانبية.
حاول أن تتقن هذا النظام وألا تغير أي متغير أو كائن في التعليمات البرمجية.
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/implement-map-on-a-prototype.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/implement-map-on-a-prototype.md
index d43f99a977a..dbedb68997a 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/implement-map-on-a-prototype.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/implement-map-on-a-prototype.md
@@ -8,9 +8,9 @@ dashedName: implement-map-on-a-prototype
# --description--
-كما رأيتم من تطبيق `Array.prototype.map()`، أو `map()` من قبل، فدالة `map` ترجع array من نفس طول الـ array التي استُدعت الدالة عليها. كما أنها لا تغير الـ array الأصلية، طالما أن دالة الـ callback الخاصة بها لا تفعل ذلك.
+كما رأيتم من تطبيق `Array.prototype.map()`، أو `map()` من قبل، فدالة `map` ترجع array من نفس طول الـ array التي استُدعت الدالة عليها. وهي إلى ذلك لا تغير القائمة (array) الأصلية، مادام أن وظيفتها لإعادة التفعيل (callback function) لا تفعل ذلك.
-بمعنى آخر، `map` هي دالة خالصة (pure function)، ومخرجها يعتمد فقط على مدخلاتها. وعلاوة على ذلك، فإنها تأخذ دالة أخرى كوسيطه (argument) لها.
+بمعنى آخر، `map` هي وظيفة خالصة (pure function)، ومخرجها يعتمد فقط على مدخلاتها. إضافةً إلى ذلك، فإنها تأخذ وظيفة أخرى كحجة (argument) لها.
قد تتعلم الكثير عن دالة `map` إذا قمت بتنفيذ الإصدار الخاص بك منها. من المستحسن أن تستخدم حلقات `for` التكرارية أو `Array.prototype.forEach()`.
@@ -20,10 +20,12 @@ dashedName: implement-map-on-a-prototype
# --hints--
-`new_s` يجب أن يساوي `[46, 130, 196, 10]`.
+يجب أن يساوي `[23, 65, 98, 5, 13].myMap(item => item * 2)` قيمة `[46, 130, 196, 10, 26]`.
```js
-assert(JSON.stringify(new_s) === JSON.stringify([46, 130, 196, 10]));
+const _test_s = [46, 130, 196, 10, 13];
+const _callback = item => item * 2;
+assert(JSON.stringify(_test_s.map(_callback)) === JSON.stringify(_test_s.myMap(_callback)));
```
يجب ألا يستخدم الكود الخاص بك دالة `map`.
@@ -37,9 +39,6 @@ assert(!code.match(/\.?[\s\S]*?map/g));
## --seed-contents--
```js
-// The global variable
-const s = [23, 65, 98, 5];
-
Array.prototype.myMap = function(callback) {
const newArray = [];
// Only change code below this line
@@ -47,17 +46,11 @@ Array.prototype.myMap = function(callback) {
// Only change code above this line
return newArray;
};
-
-const new_s = s.myMap(function(item) {
- return item * 2;
-});
```
# --solutions--
```js
-const s = [23, 65, 98, 5];
-
Array.prototype.myMap = function(callback) {
const newArray = [];
for (const elem of this) {
@@ -66,7 +59,7 @@ Array.prototype.myMap = function(callback) {
return newArray;
};
-const new_s = s.myMap(function(item) {
- return item * 2;
-});
+// Test case
+const s = [23, 65, 98, 5];
+const doubled_s = s.myMap(item => item * 2);
```
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/implement-the-filter-method-on-a-prototype.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/implement-the-filter-method-on-a-prototype.md
index 7ecc1798e0a..8cbdb33d732 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/implement-the-filter-method-on-a-prototype.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/implement-the-filter-method-on-a-prototype.md
@@ -16,10 +16,12 @@ dashedName: implement-the-filter-method-on-a-prototype
# --hints--
-`new_s` يجب أن يساوي `[23, 65, 5]`.
+يجب أن يساوي `[23, 65, 98, 5, 13].myFilter(item => item % 2)` قيمة `[23, 65, 5, 13]`.
```js
-assert(JSON.stringify(new_s) === JSON.stringify([23, 65, 5]));
+const _test_s = [23, 65, 98, 5, 13];
+const _callback = item => item % 2;
+assert(JSON.stringify(_test_s.filter(_callback)) === JSON.stringify(_test_s.myFilter(_callback)));
```
يجب ألا يستخدم الكود الخاص بك دالة `filter`.
@@ -33,26 +35,18 @@ assert(!code.match(/\.?[\s\S]*?filter/g));
## --seed-contents--
```js
-// The global variable
-const s = [23, 65, 98, 5];
-
Array.prototype.myFilter = function(callback) {
- // Only change code below this line
const newArray = [];
+ // Only change code below this line
+
// Only change code above this line
return newArray;
};
-
-const new_s = s.myFilter(function(item) {
- return item % 2 === 1;
-});
```
# --solutions--
```js
-const s = [23, 65, 98, 5];
-
Array.prototype.myFilter = function(callback) {
const newArray = [];
for (let i = 0; i < this.length; i++) {
@@ -61,7 +55,7 @@ Array.prototype.myFilter = function(callback) {
return newArray;
};
-const new_s = s.myFilter(function(item) {
- return item % 2 === 1;
-});
+// Test case
+const s = [23, 65, 98, 5];
+const odd_s = s.myFilter(item => item % 2 === 1);
```
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/learn-about-functional-programming.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/learn-about-functional-programming.md
index 0bdc441e18c..67c15cc6680 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/learn-about-functional-programming.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/learn-about-functional-programming.md
@@ -1,6 +1,6 @@
---
id: 587d7b8d367417b2b2512b5b
-title: Learn About Functional Programming
+title: تعلم عن البرمجة الوظيفية (Functional)
challengeType: 1
forumTopicId: 301233
dashedName: learn-about-functional-programming
@@ -8,21 +8,21 @@ dashedName: learn-about-functional-programming
# --description--
-الـ Functional programming هي أسلوب للبرمجة تكون فيه الحلول عبارة عن functions بسيطة ومنعزلة، بدون أي تأثيرات جانبية خارج نطاق الدالة: `INPUT -> PROCESS -> OUTPUT`
+يكون البرمجة الوظيفية (Functional) أسلوب للبرمجة فيه الحلول من الوظائف (functions) بسيطة ومنعزلة، دون أي تأثيرات جانبية خارج نطاق الوظيفة: `INPUT -> PROCESS -> OUTPUT`
-Functional programming تتعلق بما يلي:
+تتعلق البرمجة الوظيفية (Functional) بما يلي:
-1) Isolated functions - لا يوجد اعتماد على حالة البرنامج، الذي يشمل المتغيرات الـ global القابلة للتغيير
+1) وظائف منعزلة (Isolated functions) - لا تعتمد على حالة البرنامَج، الذي يشمل المتغيرات العامة (global) القابلة للتغيير
-2) Pure functions - نفس الإدخال يعطي دائمًا نفس الإخراج
+2) الوظائف الخالصة (Pure functions) - نفس الإدخال يعطي دائمًا نفس الإخراج
-(3) الـ functions ذات التأثيرات الجانبية المحدودة - أي تغييرات أو تحولات في حالة البرنامج خارج الـ function تخضع للتحكم الدقيق
+(3) الوظائف (functions) ذات التأثيرات الجانبية المحدودة - أي تغييرات أو تحولات في حالة البرنامَج خارج الوظيفة (function) تخضع للتحكم الدقيق
# --instructions--
يصادف أن أعضاء freeCodeCamp يحبون الشاي.
-في محرر الكود، تم بالفعل تعريف الدوال `prepareTea` و `getTea` من أجلك. قم باستدعاء دالة `getTea` للحصول على 40 كوب من الشاي للفريق، وتخزينها في متغير `tea4TeamFCC`.
+في محرر الكود، تم تعريف وظيفتان (functions) تسمى `prepareTea` و `getTea` من أجلك فعلًا. أستدعي وظيفة `getTea` للحصول على 40 كوب من الشاي للفريق، وتخزينها في متغير `tea4TeamFCC`.
# --hints--
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/refactor-global-variables-out-of-functions.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/refactor-global-variables-out-of-functions.md
index bf621c24905..0a4d977b7cd 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/refactor-global-variables-out-of-functions.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/refactor-global-variables-out-of-functions.md
@@ -1,6 +1,6 @@
---
id: 587d7b8f367417b2b2512b60
-title: Refactor Global Variables Out of Functions
+title: تعديل المتغيرات العالمية (Global Variables) لأخراجهم من الوظائف (Functions)
challengeType: 1
forumTopicId: 301235
dashedName: refactor-global-variables-out-of-functions
@@ -8,19 +8,19 @@ dashedName: refactor-global-variables-out-of-functions
# --description--
-وقد شهدنا حتى الآن مبدأين متميزين للـ functional programming:
+وقد شهدنا حتى الآن مبدأين متميزين للبرمجة الوظيفية (functional programming):
-1) لا تغير متغير (variable) أو object - قم بإنشاء متغيرات و objects جديدة و قم بإرجاعها إذا لزم الأمر من function. تلميح: باستخدام شيء مثل `const newArr = arrVar`، حيث `arrVar` هو array، سوف يقوم ببساطة بإنشاء مرجع إلى المتغير الحالي وليس نسخة. لذا فإن تغيير قيمة في `newArr` سيغير القيمة في `arrVar`.
+1) لا تغير متغير (variable) أو كائن (object) - أنشئ متغيرات و كائنات (objects) جديدة و منشئا من الوظيفة (function) إذا لزم الأمر. تلميح: باستخدام شيء مثل `const newArr = arrVar`، حيث `arrVar` هو array، سوف يقوم ببساطة بإنشاء مرجع إلى المتغير الحالي وليس نسخة. لذا فإن تغيير قيمة في `newArr` سيغير القيمة في `arrVar`.
-2) تعريف معلمات الدالة - أي حساب داخل الـ function يعتمد فقط على الـ arguments التي تحال إلى الـ function، وليس على أي global object أو متغير.
+2) تعريف وسائط الوظيفة (function parameters) - يعتمد حسابات داخل الوظيفة (function) فقط على الوسائط (arguments) التي تمر إلى الوظيفة (function)، ولاا تعتمد على أي كائن (object) أو متغير (variable) عام (global).
إن إضافة واحد إلى رقما ليس مثيراً جداً، ولكن يمكننا تطبيق هذه المبادئ عند العمل مع arrays أو objects أكثر تعقيداً.
# --instructions--
-أعد كتابة الكود حتى لا يتم تغيير الـ array العامة `bookList` داخل أي من الـ functions. يجب أن تضيف دالة `add` الـ `bookName` إلى نهاية الـ array الذي تم تمريره إليه وإعادة array جديدة (قائمة). يجب أن تقوم دالة `remove` بإزالة `bookName` من الـ array الذي تم تمريره إليه.
+أعد كتابة الكود حتى لا يتم تغيير القائمة (array) العامة `bookList` داخل أي من الوظائف (functions). يجب أن تضيف وظيفة `add` قيمة الوسيط `bookName` المعطى إلى نهاية القائمة (array) الذي تم تمريره إليه وإعادة قائمة (array) جديدة. يجب أن تزيل وظيفة `remove` قيمة الوسيط `bookName` من القائمة (array) الذي تم تمريره إليها.
-**ملاحظة:** يجب أن تعيد كلتا الدالتين، array، وينبغي إضافة أي معلمات جديدة قبل معلمة `bookName`.
+**ملاحظة:** يجب أن تنتج كلتا الوظيفتين (functions) قائمة (array)، وينبغي إضافة أي وسائط (parameters) جديدة قبل وسيط `bookName`.
# --hints--
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/remove-elements-from-an-array-using-slice-instead-of-splice.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/remove-elements-from-an-array-using-slice-instead-of-splice.md
index 50b435c671f..ba53bbddab3 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/remove-elements-from-an-array-using-slice-instead-of-splice.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/remove-elements-from-an-array-using-slice-instead-of-splice.md
@@ -21,9 +21,9 @@ cities.splice(3, 1);
# --instructions--
-قم بإعادة كتابة الدالة `nonMutatingSplice` باستخدام `slice` بدلاً من `splice`. يجب أن يقصر طول مصفوفة `cities` المقدمة على 3، ويعيد array جديدة تحتوي على العناصر الثلاثة الأولى فقط.
+أعّد كتابة الوظيفة `nonMutatingSplice` باستخدام `slice` بدلاً من `splice`. يجب أن يقصر طول مصفوفة `cities` المقدمة على 3، ويعيد array جديدة تحتوي على العناصر الثلاثة الأولى فقط.
-لا تقم بتغيير ال array الأصلية المقدمة للـ function.
+لا تغيّر القائمة (array) الأصلية المقدمة للوظيفة (function).
# --hints--
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/use-higher-order-functions-map-filter-or-reduce-to-solve-a-complex-problem.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/use-higher-order-functions-map-filter-or-reduce-to-solve-a-complex-problem.md
index 809234df9cd..ffe3a3b75f2 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/use-higher-order-functions-map-filter-or-reduce-to-solve-a-complex-problem.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/use-higher-order-functions-map-filter-or-reduce-to-solve-a-complex-problem.md
@@ -1,6 +1,6 @@
---
id: 587d7b88367417b2b2512b45
-title: 'استخدام Higher-Order Functions map او filter او reduce لحل مشكلة معقدة (Use Higher-Order Functions map, filter, or reduce to Solve a Complex Problem)'
+title: 'استخدام وظائف (Functions) عالية التجريد (Higher-Order) مثل map, أو filter, أو reduce لحل مشكلة معقدة'
challengeType: 1
forumTopicId: 301311
dashedName: use-higher-order-functions-map-filter-or-reduce-to-solve-a-complex-problem
@@ -8,13 +8,13 @@ dashedName: use-higher-order-functions-map-filter-or-reduce-to-solve-a-complex-p
# --description--
-الآن بعد أن تدربت على بعض التحديات باستخدام higher-order functions مثل `map()` و `filter()` و `reduce()`، يمكنك الآن تطبيقها لحل تحدي أكثر تعقيدا.
+الآن بعد أن تدربت على بعض التحديات باستخدام وظائف (functions) عالية التجريد (higher-order) مثل `map()`, و `filter()`, و `reduce()`، يمكنك الآن تطبيقها لحل تحدي أكثر تعقيدا.
# --instructions--
-أكمل الكود لدالة `squareList` باستخدام أي مزيج من `map()` و `filter()` و `reduce()`. يجب أن تعيد الدالة array جديدة تحتوي على تربيع *فقط* الأعداد الصحيحة الموجبة (الأرقام العشرية ليست عدد صحيح) عندما تمرر إليها array من الأرقام الحقيقية. مثال لـ array من الأعداد الحقيقية (real numbers) هو `[-3, 4.8, 5, 3, -3.2]`.
+أكمل الكود لوظيفة `squareList` باستخدام أي مزيج من `map()`, و `filter()`, و `reduce()`. يجب أن تنتج الوظيفة (function) قائمة (array) جديدة تحتوي على تربيع *فقط* الأعداد الصحيحة الموجبة (الأرقام العشرية ليست عدد صحيح) عندما تمرر إليها قائمة (array) من الأرقام الحقيقية. مثال لـ array من الأعداد الحقيقية (real numbers) هو `[-3, 4.8, 5, 3, -3.2]`.
-**ملاحظة:** يجب ألا تستخدم دالتك أي نوع من حلقات `for` أو `while` أو `forEach()`.
+**ملاحظة:** يجب ألا تستخدم وظيفتك أي نوع من حلَقات (loops) مثل `for`, أو `while`, أو `forEach()`.
# --hints--
@@ -41,7 +41,7 @@ assert(
);
```
-يجب أن تعيد الدالة `array`.
+يجب أن تعيد وظيفتك `array`.
```js
assert(Array.isArray(squareList([4, 5.6, -9.8, 3.14, 42, 6, 8.34, -2])));
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/use-the-some-method-to-check-that-any-elements-in-an-array-meet-a-criteria.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/use-the-some-method-to-check-that-any-elements-in-an-array-meet-a-criteria.md
index 3d680d0dc0c..82479d6f995 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/use-the-some-method-to-check-that-any-elements-in-an-array-meet-a-criteria.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/functional-programming/use-the-some-method-to-check-that-any-elements-in-an-array-meet-a-criteria.md
@@ -24,7 +24,7 @@ numbers.some(function(currentValue) {
# --instructions--
-استخدم دالة `some` داخل دالة `checkPositive` للتحقق مما إذا كان اي عنصر في `arr` موجبا. يجب أن يعيد الـ function قيمة Boolean.
+استخدم طريقة (method) مسمى `some` داخل وظيفة (fucntion) مسمى `checkPositive` للتحقق مما إذا كان أي عنصر في `arr` موجبا. يجب أن يرجع الوظيفة (function) قيمة منطقية (Boolean).
# --hints--
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/javascript-algorithms-and-data-structures-projects/caesars-cipher.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/javascript-algorithms-and-data-structures-projects/caesars-cipher.md
index d1cc9e41f3f..16df5dfdf00 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/javascript-algorithms-and-data-structures-projects/caesars-cipher.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/javascript-algorithms-and-data-structures-projects/caesars-cipher.md
@@ -12,7 +12,7 @@ dashedName: caesars-cipher
من الاستخدامات الحديثة الشائعة تشفير ROT13 ، حيث يتم تبديل قيم الحروف بمقدار 13 مكانًا. وهكذا `A ↔ N`، `B ↔ O` وما إلى ذلك.
-اكتب دالة تأخذ سلسلة نصية مشفرة من نوع ROT13 كمدخل وترجع سلسلة نصية مشفرة.
+اكتب وظيفة تأخذ مقطع نصي مشفر من نوع ROT13 كمدخل وتنتج مقطع نصي غير مشفر.
جميع الحروف ستكون كبيرة (uppercase). لا تغير أي حرف غير أبجدي (مثل المسافات وعلامات الترقيم)، ولكن مررها.
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/object-oriented-programming/define-a-constructor-function.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/object-oriented-programming/define-a-constructor-function.md
index 0195f9492bc..9d72853d536 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/object-oriented-programming/define-a-constructor-function.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/object-oriented-programming/define-a-constructor-function.md
@@ -1,6 +1,6 @@
---
id: 587d7dad367417b2b2512b77
-title: تعريف دالة البناء (Define a Constructor Function)
+title: تعريف وظيفة المنشئة (Constructor Function)
challengeType: 1
forumTopicId: 16804
dashedName: define-a-constructor-function
@@ -8,7 +8,7 @@ dashedName: define-a-constructor-function
# --description--
-الـ Constructors هي functions تقوم بأنشاء objects جديدة. وهي تحدد الخصائص والسلوكيات التي ستنتمي إلى الـ object الجديد. فكر فيها كمخطط لإنشاء objects جديدة.
+يكون منشئون (Constructors) وظائف (functions) تقوم بأنشاء كائنات (objects) جديدة. وهي تحدد الخصائص والسلوكيات التي ستنتمي إلى الـ object الجديد. فكر فيها كمخطط لإنشاء objects جديدة.
وفيما يلي مثال على constructor:
@@ -22,7 +22,7 @@ function Bird() {
هذا الـ constructor يعرف object الـ `Bird` ذو خصائص `name`, `color` و `numLegs` تم تعيينهم إلى Albert و blue و 2 على التوالي. ويتبع الـ Constructors بعض الاتفاقيات:
-- يتم تعريف الـ Constructors مع اسم capitalized لتمييزهم عن الـ functions الأخرى التي ليست
constructors. - يستخدم الـ Constructors كلمة
this لتعيين خصائص الـ object الذي سينشئونه. داخل الـ constructor الكلمة this تشير إلى الـ object الجديد الذي ستقوم بإنشائه. - يقوم الـ Constructors بتحديد الخصائص والسلوكيات بدلاً من إرجاع قيمة مثل ما قد يفعل الـ functions الأخرى.
+- يتم تعريف المنشئون (Constructors) مع اسم بأحرف كبيرة (capitalized) لتمييزهم عن الوظائف (functions) الأخرى التي ليست
constructors. - يستخدم الـ Constructors كلمة
this لتعيين خصائص الـ object الذي سينشئونه. داخل الـ constructor الكلمة this تشير إلى الـ object الجديد الذي ستقوم بإنشائه. - يقوم المنشئون (Constructors) بتحديد الخصائص والسلوكيات بدلاً من بإنشاء قيمة مثلما قد يفعل الوظائف (functions) الأخرى.
# --instructions--
diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/object-oriented-programming/remember-to-set-the-constructor-property-when-changing-the-prototype.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/object-oriented-programming/remember-to-set-the-constructor-property-when-changing-the-prototype.md
index 1547af05ec1..4b39fb9b64d 100644
--- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/object-oriented-programming/remember-to-set-the-constructor-property-when-changing-the-prototype.md
+++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/object-oriented-programming/remember-to-set-the-constructor-property-when-changing-the-prototype.md
@@ -8,7 +8,7 @@ dashedName: remember-to-set-the-constructor-property-when-changing-the-prototype
# --description--
-هناك تأثير جانبي مهم لضبط prototype يدويًا إلى كائن (object) جديد. إنه يمحو خاصية `constructor`! يمكن استخدام هذه الخاصية لمعرفة إي وظيفة constructor هي التي أنشأت instance، ولكن بما انه تم التعديل علي الخاصية، فإنها تعطي الآن نتائج خاطئة:
+هناك تأثير جانبي مهم لضبط prototype يدويًا إلى كائن (object) جديد. إنه يمحو خاصية `constructor`! يمكن استخدام هذه الخاصية لمعرفة إي وظيفة منشئ (constructor) هي التي أنشأت نموذج (instance)، ولكن بما انه تم التعديل علي الخاصية (property)، فإنها تعطي الآن نتائج خاطئة:
```js
duck.constructor === Bird;
diff --git a/curriculum/challenges/arabic/04-data-visualization/data-visualization-with-d3/create-a-linear-scale-with-d3.md b/curriculum/challenges/arabic/04-data-visualization/data-visualization-with-d3/create-a-linear-scale-with-d3.md
index fced4a73360..e8366d4523b 100644
--- a/curriculum/challenges/arabic/04-data-visualization/data-visualization-with-d3/create-a-linear-scale-with-d3.md
+++ b/curriculum/challenges/arabic/04-data-visualization/data-visualization-with-d3/create-a-linear-scale-with-d3.md
@@ -12,17 +12,17 @@ dashedName: create-a-linear-scale-with-d3
في D3، هناك مقاييس للمساعدة في ملأ البيانات. تكون `scales` وظائف (functions) تخبر البرنامَج كيفية ملأ مجموعة من نِقَاط البيانات الخام على البكسلات (px) في لوحة SVG.
-على سبيل المثال، قل أن لديك لوحة SVG بحجم 100x500، وأنت تريد ملأ الناتج إجمال المحلي (Gross Domestic Product) لعدد من الدول. The set of numbers would be in the billion or trillion-dollar range. You provide D3 a type of scale to tell it how to place the large GDP values into that 100x500-sized area.
+على سبيل المثال، قل أن لديك لوحة SVG بحجم 100x500، وأنت تريد ملأ الناتج إجمال المحلي (Gross Domestic Product) لعدد من الدول. ومجموعة الأعداد ستكون في حدود المليار أو تريليون دولار. يمكنك توفير D3 من المقياس لمعرفة كيفية وضع قيم الناتج المحلي الإجمالي الكبيرة في تلك المساحة 100x500.
-It's unlikely you would plot raw data as-is. Before plotting it, you set the scale for your entire data set, so that the `x` and `y` values fit your canvas width and height.
+من غير المحتمل أن تملأ البيانات الخام كما هي. قبل الملأ، عيّن المقياس لكامل مجموعتك للبيانات. بحيث أن قيم `x` و `y` تتناسب مع عرض وطول اللوحة.
-D3 has several scale types. For a linear scale (usually used with quantitative data), there is the D3 method `scaleLinear()`:
+ولدى D3 عدة أنواع من المقاييس. للحصول على مقياس خطي (linear scale) (يستخدم عادة مع البيانات الكمية (quantitative data))، هناك طريقة في D3 تسمى `scaleLinear()`:
```js
const scale = d3.scaleLinear()
```
-By default, a scale uses the identity relationship. The value of the input is the same as the value of the output. A separate challenge covers how to change this.
+بشكل افتراضي، يستخدم المقياس عَلاقة الهُوِيَّة (identity relationship). The value of the input is the same as the value of the output. A separate challenge covers how to change this.
# --instructions--
diff --git a/curriculum/challenges/arabic/06-quality-assurance/quality-assurance-projects/personal-library.md b/curriculum/challenges/arabic/06-quality-assurance/quality-assurance-projects/personal-library.md
index 353b79ed387..9df4211203e 100644
--- a/curriculum/challenges/arabic/06-quality-assurance/quality-assurance-projects/personal-library.md
+++ b/curriculum/challenges/arabic/06-quality-assurance/quality-assurance-projects/personal-library.md
@@ -170,7 +170,7 @@ async (getUserInput) => {
};
```
-You can send a DELETE request to `/api/books` to delete all books in the database. The returned response will be the string `'complete delete successful` if successful.
+You can send a DELETE request to `/api/books` to delete all books in the database. The returned response will be the string `complete delete successful` if successful.
```js
async (getUserInput) => {
diff --git a/curriculum/challenges/arabic/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/619d30350883802921bfcccc.md b/curriculum/challenges/arabic/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/619d30350883802921bfcccc.md
index 21ee988f894..c1248c01dcc 100644
--- a/curriculum/challenges/arabic/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/619d30350883802921bfcccc.md
+++ b/curriculum/challenges/arabic/14-responsive-web-design-22/learn-css-transforms-by-building-a-penguin/619d30350883802921bfcccc.md
@@ -19,7 +19,7 @@ dashedName: step-95
assert.notEmpty(new __helpers.CSSHelp(document).getCSSRules('keyframes'));
```
-بداخل قاعدة `@keyframes` يجب أن تكون خاصية `name` بقيمة `--fcc-expected--`, ولكن وجدت بقيمة `--fcc-actual--`.
+بداخل قاعدة `@keyframes` يجب أن تسمى القاعدة باسم `--fcc-expected--`, ولكن وجدت اسم `--fcc-actual--`.
```js
assert.equal(new __helpers.CSSHelp(document).getCSSRules('keyframes')?.[0]?.name, 'wave');
diff --git a/curriculum/challenges/arabic/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5dc1798ff86c76b9248c6eb3.md b/curriculum/challenges/arabic/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5dc1798ff86c76b9248c6eb3.md
index 68cb949ae4a..a90913a3f3a 100644
--- a/curriculum/challenges/arabic/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5dc1798ff86c76b9248c6eb3.md
+++ b/curriculum/challenges/arabic/14-responsive-web-design-22/learn-html-by-building-a-cat-photo-app/5dc1798ff86c76b9248c6eb3.md
@@ -77,6 +77,7 @@ assert(collection.indexOf('H1') < collection.indexOf('H2'));
--fcc-editable-region--
CatPhotoApp
+
--fcc-editable-region--