diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-pop.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-pop.md index f895d656150..e5d61789f04 100644 --- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-pop.md +++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-pop.md @@ -1,6 +1,6 @@ --- id: 56bbb991ad1ed5201cd392cc -title: Manipulate Arrays With pop Method +title: تغيير القوائم (Arrays) باستخدام طريقة pop challengeType: 1 videoUrl: 'https://scrimba.com/c/cRbVZAB' forumTopicId: 18236 diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-push.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-push.md index c8c49495770..18c57ab5cdf 100644 --- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-push.md +++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-push.md @@ -1,6 +1,6 @@ --- id: 56bbb991ad1ed5201cd392cb -title: Manipulate Arrays With push Method +title: تغيير القوائم باستخدام طريقة push challengeType: 1 videoUrl: 'https://scrimba.com/c/cnqmVtJ' forumTopicId: 18237 diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-shift.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-shift.md index b756c7cf374..2236255dae5 100644 --- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-shift.md +++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-shift.md @@ -1,6 +1,6 @@ --- id: 56bbb991ad1ed5201cd392cd -title: Manipulate Arrays With shift Method +title: تغيير القوائم باستخدام طريقة shift challengeType: 1 videoUrl: 'https://scrimba.com/c/cRbVETW' forumTopicId: 18238 diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-unshift.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-unshift.md index 76ca29a6a3a..b366d8051fa 100644 --- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-unshift.md +++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/basic-javascript/manipulate-arrays-with-unshift.md @@ -1,6 +1,6 @@ --- id: 56bbb991ad1ed5201cd392ce -title: Manipulate Arrays With unshift Method +title: تغيير القوائم باستخدام طريقة unshift challengeType: 1 videoUrl: 'https://scrimba.com/c/ckNDESv' forumTopicId: 18239 diff --git a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/use-class-syntax-to-define-a-constructor-function.md b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/use-class-syntax-to-define-a-constructor-function.md index de14855dbce..9dba2c45ed4 100644 --- a/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/use-class-syntax-to-define-a-constructor-function.md +++ b/curriculum/challenges/arabic/02-javascript-algorithms-and-data-structures/es6/use-class-syntax-to-define-a-constructor-function.md @@ -10,9 +10,9 @@ dashedName: use-class-syntax-to-define-a-constructor-function يوفر ES6 طريقة syntax جديدة لإنشاء objects، باستخدام كلمة class. -In ES5, an object can be created by defining a `constructor` function and using the `new` keyword to instantiate the object. +في ES5، ينشئ كائن (object) عند تحدد وظيفة (function) يسمى `constructor` واستخدام مصطلح `new` لتمثيل كائن. -In ES6, a `class` declaration has a `constructor` method that is invoked with the `new` keyword. If the `constructor` method is not explicitly defined, then it is implicitly defined with no arguments. +في ES6، يحتوي إعلان `class` على طريقة `constructor` التي تنفذ مع مصطلح `new` جديدة. إذا لم يتم تعريف طريقة `constructor` بوضوح، فعندها تعرّف ضمنيا دون أي معطيات (arguments). ```js // Explicit constructor @@ -41,21 +41,21 @@ const atlas = new Rocket(); atlas.launch(); ``` -It should be noted that the `class` keyword declares a new function, to which a constructor is added. This constructor is invoked when `new` is called to create a new object. +وتجدر الإشارة إلى أن كلمة `class` تعرف وظيفة جديد، تضاف المنشئ إليها. يستدعى هذا المنشئ عندما تنفيذ `new` لإنشاء كائن جديد. -**Note:** UpperCamelCase should be used by convention for ES6 class names, as in `SpaceShuttle` used above. +**ملاحظة:** يجب أن تستخدم UpperCamelCase لاسماء الفئات في ES6، كما في `SpaceShuttle` المستخدمة أعلاه. -The `constructor` method is a special method for creating and initializing an object created with a class. You will learn more about it in the Object Oriented Programming section of the JavaScript Algorithms And Data Structures Certification. +إن طريقة `constructor` خاصة لإنشاء وتهيئة كائن منشئ بواسطة فئة. سوف تتعلم المزيد عنها في قسم البرمجة الكائنية في شهادة خوارزميات JavaScript وهياكل البيانات. # --instructions-- -Use the `class` keyword and write a `constructor` to create the `Vegetable` class. +استخدم مصطلح `class` واكتب `constructor` لإنشاء فئة `Vegetable`. -The `Vegetable` class allows you to create a vegetable object with a property `name` that gets passed to the `constructor`. +تتيح فئة `Vegetable` لك إنشاء كائن vegetable مع خاصية `name` التي تمرر إلى الـ `constructor`. # --hints-- -`Vegetable` should be a `class` with a defined `constructor` method. +يجب أن تكون`Vegetable` بنوع `class` مع وظيفة `constructor` محددة. ```js assert( @@ -63,13 +63,13 @@ assert( ); ``` -The `class` keyword should be used. +يجب استخدام مصطلح `class`. ```js assert(code.match(/class/g)); ``` -`Vegetable` should be able to be instantiated. +يجب أن يمثل `Vegetable`. ```js assert(() => { @@ -78,7 +78,7 @@ assert(() => { }); ``` -`carrot.name` should return `carrot`. +يجب أن ينتج `carrot.name` قيمة `carrot`. ```js assert(carrot.name == 'carrot'); diff --git a/curriculum/challenges/arabic/05-back-end-development-and-apis/basic-node-and-express/start-a-working-express-server.md b/curriculum/challenges/arabic/05-back-end-development-and-apis/basic-node-and-express/start-a-working-express-server.md index e8e3e82fc5a..edb616eceda 100644 --- a/curriculum/challenges/arabic/05-back-end-development-and-apis/basic-node-and-express/start-a-working-express-server.md +++ b/curriculum/challenges/arabic/05-back-end-development-and-apis/basic-node-and-express/start-a-working-express-server.md @@ -1,6 +1,6 @@ --- id: 587d7fb0367417b2b2512bee -title: Start a Working Express Server +title: بدء سيرفر Express مُفعل challengeType: 2 forumTopicId: 301519 dashedName: start-a-working-express-server @@ -8,9 +8,9 @@ dashedName: start-a-working-express-server # --description-- -In the first two lines of the file `myApp.js`, you can see how easy it is to create an Express app object. This object has several methods, and you will learn many of them in these challenges. One fundamental method is `app.listen(port)`. It tells your server to listen on a given port, putting it in running state. For testing reasons, we need the app to be running in the background so we added this method in the `server.js` file for you. +في السطر الأول من الملف `myApp.js`، يمكنك أن ترى مدى سهولة إنشاء كائن تطبيق Express. هذا الكائن لديه العديد من الطرق، وسوف تتعلم الكثير منها في هذه التحديات. إحدى الطرق الأساسية هي `app.listen(port)`. إنه يخبر سيرفرك أن يستمع إلى منفذ (port) معين، وأن يضعه في حالة تشغيل. لأسباب الاختبار، نحن بحاجة إلى أن يكون التطبيق قيد التشغيل في الخلفية لذلك أضفنا لك هذه الطريقة في ملف `server.js`. -Let’s serve our first string! In Express, routes takes the following structure: `app.METHOD(PATH, HANDLER)`. METHOD is an http method in lowercase. PATH is a relative path on the server (it can be a string, or even a regular expression). HANDLER is a function that Express calls when the route is matched. Handlers take the form `function(req, res) {...}`, where req is the request object, and res is the response object. For example, the handler +هيا نمدد المقطع النصي الأول! في Express، تأخذ المسارات البنية التالية: `app.METHOD(PATH, HANDLER)`. إن METHOD طريقة http مكتوبة بحروف صغيرة. إن PATH المنفذ نسبي في السيرفر (يمكن أن يكون مقطع نصي أو حتى عبارة (expression) عادية). إن HANDLER وظيفة معالجة ينفذها Express عند مطابقة ال route. تكتب تلك الوظائف المعالجة مثل `function(req, res) {...}`، حيث req هو كائن الطلب، و res هو كائن الاستجابة. على سبيل المثال المعالج ```js function(req, res) { @@ -18,17 +18,17 @@ function(req, res) { } ``` -will serve the string 'Response String'. +سوف يمدد المقطع النصي 'Response String'. # --instructions-- -Use the `app.get()` method to serve the string "Hello Express" to GET requests matching the `/` (root) path. Be sure that your code works by looking at the logs, then see the results in the preview if you are using Replit. +استخدم طريقة `app.get()` لتمديد المقطع "Hello Express" إلى طلبات GET المطابقة للمسار `/` (منفذ المصدر). أنظر إلى السجلات لتتأكد من أن الكود يعمل، ثم شاهد النتائج في علامة تبويب preview إذا كنت تستخدم Replit. -**Note:** All the code for these lessons should be added in between the few lines of code we have started you off with. +**ملاحظة:** يجب إضافة كل الكود لهذه الدروس بين سطور الكود التي بدأنا بها. # --hints-- -Your app should serve the string 'Hello Express' +يجب أن يخدم تطبيقك المقطع النصي 'Hello Express' ```js (getUserInput) => diff --git a/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/add-a-description-to-your-package.json.md b/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/add-a-description-to-your-package.json.md index b9cf761fd99..ba0971f3947 100644 --- a/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/add-a-description-to-your-package.json.md +++ b/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/add-a-description-to-your-package.json.md @@ -1,6 +1,6 @@ --- id: 587d7fb3367417b2b2512bfc -title: Add a Description to Your package.json +title: إضافة وصف (Description) إلى package.json challengeType: 2 forumTopicId: 301522 dashedName: add-a-description-to-your-package-json @@ -8,11 +8,11 @@ dashedName: add-a-description-to-your-package-json # --description-- -The next part of a good package.json file is the `description` field; where a short, but informative description about your project belongs. +إن الجزء التالي من ملف package.json الجيد يكون خانة `description`؛ حيث يوجد وصف قصير ولكن زاخر بالمعلومات حول مشروعك. -If some day you plan to publish a package to npm, this is the string that should sell your idea to the user when they decide whether to install your package or not. However, that’s not the only use case for the description, it’s a great way to summarize what a project does. It’s just as important in any Node.js project to help other developers, future maintainers or even your future self understand the project quickly. +إذا خطط في يوم ما أن تنشر حزمة إلى npm، فهذا هو المقطع النصي الذي يشرح فكرتك للمستخدمون عندما يقررون تثبيت حزمتك أو لا. بالإضافة هذا ليس الاستخدام الوحيد لذلك الوصف. إنه طريقة رائعة لتلخيص وظيفة المشروع. وأيضا في أي مشروع Node.js فهو مهما بنفس القدر لمساعدة المطورين الآخرين، أو المشرفين في المستقبل، أو حتى لفهمك الخاص للمشروع بسرعة. -Regardless of what you plan for your project, a description is definitely recommended. Here's an example: +بغض النظر عن ما تخطط لمشروعك، فإن الوصف موصى به بكل تأكيد. إليك مثال: ```json "description": "A project that does something awesome", @@ -20,13 +20,13 @@ Regardless of what you plan for your project, a description is definitely recomm # --instructions-- -Add a `description` to the package.json file of your project. +أضف خانة الوصف `description` إلى ملف package.json لمشروعك. -**Note:** Remember to use double-quotes for field-names (") and commas (,) to separate fields. +**ملاحظة:** تذكر أن تستخدم علامات الاقتباس المزدوجة لأسماء الخانات، (") والفواصل (,) للفصل ما بينهم. # --hints-- -package.json should have a valid "description" key +يجب أن يحتوي package.json على هوية "description" صحيحة ```js (getUserInput) => diff --git a/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/add-a-license-to-your-package.json.md b/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/add-a-license-to-your-package.json.md index d97b0134019..59eba529efd 100644 --- a/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/add-a-license-to-your-package.json.md +++ b/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/add-a-license-to-your-package.json.md @@ -1,6 +1,6 @@ --- id: 587d7fb4367417b2b2512bfe -title: Add a License to Your package.json +title: إضافة ترخيص (License) إلى package.json challengeType: 2 forumTopicId: 301523 dashedName: add-a-license-to-your-package-json @@ -8,9 +8,9 @@ dashedName: add-a-license-to-your-package-json # --description-- -The `license` field is where you inform users of what they are allowed to do with your project. +إن خانة `license` المكان الذي تقوم فيه بإبلاغ المستخدمين بما يسمح لهم بفعله بمشروعك. -Some common licenses for open source projects include MIT and BSD. License information is not required, and copyright laws in most countries will give you ownership of what you create by default. However, it’s always a good practice to explicitly state what users can and can’t do. Here's an example of the license field: +وتشمل بعض التراخيص الشائعة للمشاريع المفتوحة المصدر (open source) ترخيص معهد ماساتشوستس للتكنولوجيا (MIT) وبرنامج بي اس دي (BSD). معلومات الترخيص غير مطلوبة، وقوانين حقوق التأليف والنشر (copyright laws) في معظم البلدان ستعطيك ملكية لما تنشئه بشكل افتراضي. ولكن يستحسن دائما أن نذكر صراحة ما يمكن للمستخدمين القيام به وما لا يمكنهم القيام به. إليك مثال لخانة الترخيص: ```json "license": "MIT", @@ -18,11 +18,11 @@ Some common licenses for open source projects include MIT and BSD. License infor # --instructions-- -Fill the `license` field in the package.json file of your project as you find suitable. +املأ خانة `license` في ملف package.json لمشروعك بما تجده مناسبا. # --hints-- -package.json should have a valid "license" key +يجب أن يحتوي package.json على هوية "license" صحيحة ```js (getUserInput) => diff --git a/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/add-a-version-to-your-package.json.md b/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/add-a-version-to-your-package.json.md index a5b3b8b2453..32242fc63aa 100644 --- a/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/add-a-version-to-your-package.json.md +++ b/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/add-a-version-to-your-package.json.md @@ -1,6 +1,6 @@ --- id: 587d7fb4367417b2b2512bff -title: Add a Version to Your package.json +title: إضافة رقم الإصدار (Version) إلى package.json challengeType: 2 forumTopicId: 301525 dashedName: add-a-version-to-your-package-json @@ -8,7 +8,7 @@ dashedName: add-a-version-to-your-package-json # --description-- -A `version` is one of the required fields of your package.json file. This field describes the current version of your project. Here's an example: +إن `version` أحد الخانات المطلوبة في ملفك package.json. هذه الخانة تصف الإصدار الحالي من مشروعك. إليك مثال: ```json "version": "1.2.0", @@ -16,11 +16,11 @@ A `version` is one of the required fields of your package.json file. This field # --instructions-- -Add a `version` to the package.json file of your project. +أضف `version` إلى ملف package.json لمشروعك. # --hints-- -package.json should have a valid "version" key +يجب أن يحتوي package.json على هوية "version" صحيحة ```js (getUserInput) => diff --git a/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/add-keywords-to-your-package.json.md b/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/add-keywords-to-your-package.json.md index 33c9742e8bc..4d61cbc45cd 100644 --- a/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/add-keywords-to-your-package.json.md +++ b/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/add-keywords-to-your-package.json.md @@ -1,6 +1,6 @@ --- id: 587d7fb4367417b2b2512bfd -title: Add Keywords to Your package.json +title: إضافة المصطلحات (keywords) إلى package.json challengeType: 2 forumTopicId: 301526 dashedName: add-keywords-to-your-package-json @@ -8,23 +8,23 @@ dashedName: add-keywords-to-your-package-json # --description-- -The `keywords` field is where you can describe your project using related keywords. Here's an example: +يمكنك الإضافة في خانة `keywords` وصف لمشروعك باستخدام مصطلحات مرتبطة. إليك مثال: ```json "keywords": [ "descriptive", "related", "words" ], ``` -As you can see, this field is structured as an array of double-quoted strings. +كما ترون، هذه الخانة منظمة مثل قائمة من النصوص المزدوجة الاقتباس. # --instructions-- -Add an array of suitable strings to the `keywords` field in the package.json file of your project. +أضف قائمة من النصوص المقطعية المناسبة إلى خانة `keywords` في ملف package.json الخاص بمشروعك. -One of the keywords should be "freecodecamp". +وينبغي أن تكون إحدى المصطلحات "freecodecamp". # --hints-- -package.json should have a valid "keywords" key +يجب أن يحتوي package.json على هوية "keywords" صحيحة ```js (getUserInput) => @@ -39,7 +39,7 @@ package.json should have a valid "keywords" key ); ``` -"keywords" field should be an Array +يجب أن تكون خانة "keywords" قائمة ```js (getUserInput) => @@ -54,7 +54,7 @@ package.json should have a valid "keywords" key ); ``` -"keywords" should include "freecodecamp" +يجب أن تحتوي "keywords" على "freecodecamp" ```js (getUserInput) => diff --git a/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/expand-your-project-with-external-packages-from-npm.md b/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/expand-your-project-with-external-packages-from-npm.md index fa9056e0992..55d6e6e4003 100644 --- a/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/expand-your-project-with-external-packages-from-npm.md +++ b/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/expand-your-project-with-external-packages-from-npm.md @@ -1,6 +1,6 @@ --- id: 587d7fb4367417b2b2512c00 -title: Expand Your Project with External Packages from npm +title: توسيع مشروعك مع الحزم الخارجية من npm challengeType: 2 forumTopicId: 301527 dashedName: expand-your-project-with-external-packages-from-npm @@ -8,9 +8,9 @@ dashedName: expand-your-project-with-external-packages-from-npm # --description-- -One of the biggest reasons to use a package manager, is their powerful dependency management. Instead of manually having to make sure that you get all dependencies whenever you set up a project on a new computer, npm automatically installs everything for you. But how can npm know exactly what your project needs? Meet the `dependencies` section of your package.json file. +إحدى الأسباب الأكبر لاستخدام مدير الحزم هي إدارة تبعياتك القوية. بدلاً من أن تتأكد يدوياً أنك حصلت على جميع التبعيات كلما أعددت مشروع على جهاز كمبيوتر جديد، npm يقوم بتثبيت كل شيء لك تلقائياً. ولكن كيف يعرف npm احتياجات مشروعك بالضبط؟ تعرَّف إلى قسم التبعيات `dependencies` من ملف package.json الخاص بك. -In this section, packages your project requires are stored using the following format: +في هذا القسم، يخزن اسم الحزم الذي يتطلبها مشروعك باستخدام التنسيق التالي: ```json "dependencies": { @@ -22,13 +22,13 @@ In this section, packages your project requires are stored using the following f # --instructions-- -Add version "1.1.0" of the `@freecodecamp/example` package to the `dependencies` field of your `package.json` file. +ضف الإصدار "1.1.0" من حزمة `@freecodecamp/example` إلى خانة `dependencies` من ملف `package.json`. -**Note:** `@freecodecamp/example` is a faux package used as a learning tool. +**ملاحظة:** إن `@freecodecamp/example` حزمة زائفة تستخدم كأداة للتعلم. # --hints-- -`"dependencies"` should include `"@freecodecamp/example"`. +`"dependencies"` يجب أن تتضمن `"@freecodecamp/example"`. ```js (getUserInput) => @@ -47,7 +47,7 @@ Add version "1.1.0" of the `@freecodecamp/example` package to the `dependencies` ); ``` -`"@freecodecamp/example"` version should be `"1.1.0"`. +يجب أن يكون إصدار `"@freecodecamp/example"` بقيمة `"1.1.0"`. ```js (getUserInput) => diff --git a/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/how-to-use-package.json-the-core-of-any-node.js-project-or-npm-package.md b/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/how-to-use-package.json-the-core-of-any-node.js-project-or-npm-package.md index 252f7b168fe..6d3a3fe4194 100644 --- a/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/how-to-use-package.json-the-core-of-any-node.js-project-or-npm-package.md +++ b/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/how-to-use-package.json-the-core-of-any-node.js-project-or-npm-package.md @@ -1,6 +1,6 @@ --- id: 587d7fb3367417b2b2512bfb -title: 'How to Use package.json, the Core of Any Node.js Project or npm Package' +title: 'استخدام package.json، مركز أي مشروع Node.js أو حزمة npm' challengeType: 2 forumTopicId: 301528 dashedName: how-to-use-package-json-the-core-of-any-node-js-project-or-npm-package @@ -8,25 +8,25 @@ dashedName: how-to-use-package-json-the-core-of-any-node-js-project-or-npm-packa # --description-- -Working on these challenges will involve you writing your code using one of the following methods: +العمل على هذه التحديات سوف ينطوي على كتابة كودك باستخدام إحدى الطرق التالية: -- Clone this GitHub repo and complete these challenges locally. -- Use our Replit starter project to complete these challenges. -- Use a site builder of your choice to complete the project. Be sure to incorporate all the files from our GitHub repo. +- انسخ هذا المستودع من GitHub واكمل مشروعك محلياً. +- استخدم مشروعنا المبدئي على Replit لإكمال هذه التحديات. +- استخدم أي منشئ موقع لإكمال المشروع. تحقق انك أضفت جميع الملفات من مستودعنا في GitHub في مشروعك. -If you use Replit, follow these steps to set up the project: +إذا استخدمت Replit، اتبع هذه الخطوات لإعداد المشروع: -- Start by importing the project on Replit. -- Next, you will see a `.replit` window. -- Select `Use run command` and click the `Done` button. +- ابدأ باستيراد (import) المشروع إلى Replit. +- بعد ذلك، سترى نافذة `.replit`. +- اختار `Use run command` وانقر على زر `Done`. -When you are done, make sure a working demo of your project is hosted somewhere public. Then submit the URL to it in the Solution Link field. +عند الانتهاء، تأكد من استضافة ديمو لمشروعك في مكان عام. ثم أرسل عنوانه (URL) في خانة "رابط الحل". -The `package.json` file is the center of any Node.js project or npm package. It stores information about your project, similar to how the <head> section of an HTML document describes the content of a webpage. It consists of a single JSON object where information is stored in key-value pairs. There are only two required fields; "name" and "version", but it’s good practice to provide additional information about your project that could be useful to future users or maintainers. +إن ملف `package.json` مركز أي مشروع Node.js أو حزمة npm. وإنه يخزن معلومات حول مشروعك، مثلما يخزن قسم <head> من مستند HTML محتوى صفحة ويب. ويتكون من كائن JSON واحد حيث يتم تخزين المعلومات في أزواج key-value. وهناك مجالان مطلوبان فقط؛ "name" و "version"، ولكن الممارسة الجيدة هي أن تقدِّم معلومات إضافية عن مشروعك، التي يمكن أن تكون مفيدة للمستخدمين أو المشرفين في المستقبل. -If you look at the file tree of your project, you will find the package.json file on the top level of the tree. This is the file that you will be improving in the next couple of challenges. +إذا نظرت إلى شجرة ملف مشروعك، سوف تجد ملف package.json في أعلى مستوى من الشجرة. هذا هو الملف الذي سوف تحسنه في التحديات القادمة. -One of the most common pieces of information in this file is the `author` field. It specifies who created the project, and can consist of a string or an object with contact or other details. An object is recommended for bigger projects, but a simple string like the following example will do for this project. +واحدة من أكثر المعلومات شيوعا في هذا الملف هي خانة `author`. تحدد اسم منشئ المشروع، وممكن أن يتكون من مقطع نصي أو كائن مع جهة اتصال أو تفاصيل أخرى. يوصى باستخدام كائن لمشاريع أكبر، ولكن مقطع نصي بسيط مثل المثال التالي ينفع لهذا المشروع. ```json "author": "Jane Doe", @@ -34,13 +34,13 @@ One of the most common pieces of information in this file is the `author` field. # --instructions-- -Add your name as the `author` of the project in the package.json file. +أضف اسمك كمؤلف للمشروع بداخل `author` في ملف المشروع package.json. -**Note:** Remember that you’re writing JSON, so all field names must use double-quotes (") and be separated with a comma (,). +**ملاحظة:** تذكر أنك تكتب JSON، لذلك يجب أن تستخدم جميع أسماء الخانات علامات اقتباس مزدوجة (") وأن تكون مفصولة بفاصلة (,). # --hints-- -package.json should have a valid "author" key +يجب أن يحتوي package.json على هوية "author" صحيحة ```js (getUserInput) => diff --git a/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/manage-npm-dependencies-by-understanding-semantic-versioning.md b/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/manage-npm-dependencies-by-understanding-semantic-versioning.md index fa43e78268a..232a102f930 100644 --- a/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/manage-npm-dependencies-by-understanding-semantic-versioning.md +++ b/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/manage-npm-dependencies-by-understanding-semantic-versioning.md @@ -1,6 +1,6 @@ --- id: 587d7fb5367417b2b2512c01 -title: Manage npm Dependencies By Understanding Semantic Versioning +title: إدارة اعتمادات npm بفهم بالإصدار الدلالي لنُسخ البرمجيات (Semantic Versioning) challengeType: 2 forumTopicId: 301529 dashedName: manage-npm-dependencies-by-understanding-semantic-versioning @@ -8,23 +8,23 @@ dashedName: manage-npm-dependencies-by-understanding-semantic-versioning # --description-- -`Versions` of the npm packages in the dependencies section of your package.json file follow what’s called Semantic Versioning (SemVer), an industry standard for software versioning aiming to make it easier to manage dependencies. Libraries, frameworks or other tools published on npm should use SemVer in order to clearly communicate what kind of changes projects can expect if they update. +تتبع القيم في `Versions` من حزم npm في قسم التبعيات من الحُزْمَة الخاصة بك. النظام الذي يسمى بالإصدار الدلالي لنُسخ البرمجيات Semantic Versioning (SemVer)، وهو نمط صناعي لإصدار البرامج يهدف إلى تيسير إدارة الاعتمادات. كل من المكتبات، أو الأطر أو الأدوات الأخرى المنشورة على npm ينبغي أن تستخدم SemVer من أجل الإبلاغ بوضوح عن نوع التغييرات التي يمكن أن تتوقعها المشروعات إذا تم تحديثها. -Knowing SemVer can be useful when you develop software that uses external dependencies (which you almost always do). One day, your understanding of these numbers will save you from accidentally introducing breaking changes to your project without understanding why things that worked yesterday suddenly don’t work today. This is how Semantic Versioning works according to the official website: +معرفة SemVer مفيدة عند تطوير البرامج التي تستخدم التبعية الخارجية (التي تكاد تقوم بها دائما). يوما ما، فهمك لهذه الأرقام سوف يحفظك من إدخال تغييرات على مشروعك عن طريق الخطأ دون تفهم لماذا لا تعمل فجأة اليوم الأشياء التي عملت بالأمس. هذه هي الطريقة التي تعمل بها Semantic Versioning وفقا للموقع الرسمي على الإنترنت: ```json "package": "MAJOR.MINOR.PATCH" ``` -The MAJOR version should increment when you make incompatible API changes. The MINOR version should increment when you add functionality in a backwards-compatible manner. The PATCH version should increment when you make backwards-compatible bug fixes. This means that PATCHes are bug fixes and MINORs add new features but neither of them break what worked before. Finally, MAJORs add changes that won’t work with earlier versions. +يجب أن يزداد رَقَم الإصدار MAJOR عند إجراء تغييرات API غير متوافقة. يجب أن يزداد رَقَم إصدار MINOR عند إضافة وظيفة بطريقة متوافقة رجعياً. يجب أن يزداد رَقَم الإصدار PATCH عند إجراء تصليحات للأخطاء متوافقة رجعيا. وهذا يعني أن PATCHES هي إصلاحات للأخطاء و MINORs تضيف ميزات جديدة ولكن كلا منهما لا يكسر ما كان يعمل من قبل. وأخيراً، يضيف MAJORs تغييرات لن تعمل مع الإصدارات السابقة. # --instructions-- -In the dependencies section of your `package.json` file, change the version of `@freecodecamp/example` to match MAJOR version 1, MINOR version 2 and PATCH version 13 +في قسم التبعيات من ملف الحزمة `package.json`، غيّر إصدار `@freecodecamp/example` لمطابقة قيمة إصدار 1 بنوع MAJOR وإصدار 2 بنوع MINOR وإصدار 13 بنوع PATCH # --hints-- -`"dependencies"` should include `"@freecodecamp/example"`. +يجب أن تتضمن `"dependencies"` مقطع `"@freecodecamp/example"`. ```js (getUserInput) => @@ -43,7 +43,7 @@ In the dependencies section of your `package.json` file, change the version of ` ); ``` -`"@freecodecamp/example"` version should be `"1.2.13"`. +يجب أن يكون إصدار `"@freecodecamp/example"` بقيمة `"1.2.13"`. ```js (getUserInput) => diff --git a/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/remove-a-package-from-your-dependencies.md b/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/remove-a-package-from-your-dependencies.md index 2d05d271d17..f4b2265e7e4 100644 --- a/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/remove-a-package-from-your-dependencies.md +++ b/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/remove-a-package-from-your-dependencies.md @@ -1,6 +1,6 @@ --- id: 587d7fb5367417b2b2512c04 -title: Remove a Package from Your Dependencies +title: إزالة حزمة (Package) من تبعياتك (Dependency) challengeType: 2 forumTopicId: 301530 dashedName: remove-a-package-from-your-dependencies @@ -8,21 +8,21 @@ dashedName: remove-a-package-from-your-dependencies # --description-- -You have now tested a few ways you can manage dependencies of your project by using the package.json's dependencies section. You have also included external packages by adding them to the file and even told npm what types of versions you want, by using special characters such as the tilde or the caret. +لقد اختبرت الآن بعض الطرق الذي يمكنك بها إدارة التبعيات لمشروعك باستخدام قسم التبعيات في package.json. لقد قمت أيضا بإدراج حزم خارجية عن طريق إضافتها إلى الملف وأخبرت npm ما هي أنواع الإصدارات التي تريدها، باستخدام أحرف خاصة مثل tilde (~) أو caret (^). -But what if you want to remove an external package that you no longer need? You might already have guessed it, just remove the corresponding key-value pair for that package from your dependencies. +ولكن ماذا لو أردت إزالة حزمة خارجية لم تعد بحاجة إليها؟ ربما قد خمنتها فعلًا، عليك فقط أن تزيل زوج key-value المقابل لتلك الحزمة من تبعياتك (dependencies). -This same method applies to removing other fields in your package.json as well. +تنطبق نفس الطريقة على إزالة الخانات الأخرى في package.json أيضا. # --instructions-- -Remove the `@freecodecamp/example` package from your dependencies. +أزل حزمة `@freecodecamp/example` من تبعياتك. -**Note:** Make sure you have the right amount of commas after removing it. +**ملاحظة:** تأكد من أن لديك العدد الصحيح من الفواصل بعد إزالتها. # --hints-- -`"dependencies"` should not include `"@freecodecamp/example"`. +يجب ألا تتضمن `"dependencies"` مقطع `"@freecodecamp/example"`. ```js (getUserInput) => diff --git a/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/use-the-caret-character-to-use-the-latest-minor-version-of-a-dependency.md b/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/use-the-caret-character-to-use-the-latest-minor-version-of-a-dependency.md index 84b47b8d7b7..63bc3ed93d9 100644 --- a/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/use-the-caret-character-to-use-the-latest-minor-version-of-a-dependency.md +++ b/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/use-the-caret-character-to-use-the-latest-minor-version-of-a-dependency.md @@ -1,6 +1,6 @@ --- id: 587d7fb5367417b2b2512c03 -title: Use the Caret-Character to Use the Latest Minor Version of a Dependency +title: استخدم رمز Caret لاستخدام أحدث نسخة ثانوي من التبعية challengeType: 2 forumTopicId: 301531 dashedName: use-the-caret-character-to-use-the-latest-minor-version-of-a-dependency @@ -8,25 +8,25 @@ dashedName: use-the-caret-character-to-use-the-latest-minor-version-of-a-depende # --description-- -Similar to how the tilde we learned about in the last challenge allows npm to install the latest PATCH for a dependency, the caret (`^`) allows npm to install future updates as well. The difference is that the caret will allow both MINOR updates and PATCHes. +شبيهة بالطريقة التي تعلمنا بها عن tilde في التحدي الأخير وكيف يسمح لـ npm بتثبيت أحدث PATCH للاعتماد، يسمح رمز caret (`^`) إلى npm تثبيت التحديثات المستقبلية أيضًا. إن الفرق سيسمح رمز caret لكل من التحديثات من MINOR و PATCH. -Your current version of `@freecodecamp/example` should be "~1.2.13" which allows npm to install to the latest 1.2.x version. If you were to use the caret (^) as a version prefix instead, npm would be allowed to update to any 1.x.x version. +يجب أن يكون إصدار `@freecodecamp/example` الخاص بك الحالي من "~1.2.13" الذي يسمح npm بتثبيت أحدث إصدار 1.2.x. إذا كنت ستستخدم caret (^) كبادئة إصدار بدلاً من ذلك، سيسمح لـ npm بالتحديث إلى أي إصدار x.x.1. ```json "package": "^1.3.8" ``` -This would allow updates to any 1.x.x version of the package. +وهذا سيسمح بالتحديث إلى إي نسخة 1.x.x من الحزمة. # --instructions-- -Use the caret (`^`) to prefix the version of `@freecodecamp/example` in your dependencies and allow npm to update it to any new MINOR release. +استخدم رمز (`^`) لبادئة رَقَم إصدار `@freecodecamp/example` في تبعياتك (dependencies). ذلك يسمح ل npm بتحديثها إلى أي إصدار جديد نوع MINOR. -**Note:** The version numbers themselves should not be changed. +**ملاحظة:** لا تغيير أرقام الإصدار نفسها. # --hints-- -`"dependencies"` should include `"@freecodecamp/example"`. +يجب أن تتضمن `"dependencies"` مقطع `"@freecodecamp/example"`. ```js (getUserInput) => @@ -45,7 +45,7 @@ Use the caret (`^`) to prefix the version of `@freecodecamp/example` in your dep ); ``` -`"@freecodecamp/example"` version should match `"^1.x.x"`. +يجب أن تطابق `"@freecodecamp/example"` إصدارها `"^1.x.x"`. ```js (getUserInput) => diff --git a/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/use-the-tilde-character-to-always-use-the-latest-patch-version-of-a-dependency.md b/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/use-the-tilde-character-to-always-use-the-latest-patch-version-of-a-dependency.md index 0ef31ff5846..68f9c9af972 100644 --- a/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/use-the-tilde-character-to-always-use-the-latest-patch-version-of-a-dependency.md +++ b/curriculum/challenges/arabic/05-back-end-development-and-apis/managing-packages-with-npm/use-the-tilde-character-to-always-use-the-latest-patch-version-of-a-dependency.md @@ -1,6 +1,6 @@ --- id: 587d7fb5367417b2b2512c02 -title: Use the Tilde-Character to Always Use the Latest Patch Version of a Dependency +title: استخدم رمز Tilde لاستخدام أحدث نسخة patch من التبعية دائما challengeType: 2 forumTopicId: 301532 dashedName: use-the-tilde-character-to-always-use-the-latest-patch-version-of-a-dependency @@ -8,9 +8,9 @@ dashedName: use-the-tilde-character-to-always-use-the-latest-patch-version-of-a- # --description-- -In the last challenge, you told npm to only include a specific version of a package. That’s a useful way to freeze your dependencies if you need to make sure that different parts of your project stay compatible with each other. But in most use cases, you don’t want to miss bug fixes since they often include important security patches and (hopefully) don’t break things in doing so. +في التحدي الأخير، أخبرت npm أن يتضمن نسخة محددة فقط من الحزمة. هذه طريقة مفيدة لتجميد التبعية إذا كنت بحاجة إلى التأكد من أن أجزاء مختلفة من مشروعك تبقى متوافقة مع بعضها البعض. ولكن في معظم حالات الاستخدام، لا ترد أن تفوتك إصلاحات الأخطاء لأنها غالباً ما تتضمن التصحيحات الأمنية الهامة ومن الآمل أنها لا تتسبب لتخريب تطبيقك بذلك. -To allow an npm dependency to update to the latest PATCH version, you can prefix the dependency’s version with the tilde (`~`) character. Here's an example of how to allow updates to any 1.3.x version. +للسماح للتبعية npm للتحديث إلى أحدث إصدار PATCH، يمكنك أن تضيف رمز (`~`) في بداية الإصدار للتبعية. إليك مثال على كيفية السماح بالتحديثات لأي إصدار 1.3.x. ```json "package": "~1.3.8" @@ -18,15 +18,15 @@ To allow an npm dependency to update to the latest PATCH version, you can prefix # --instructions-- -In the package.json file, your current rule for how npm may upgrade `@freecodecamp/example` is to use a specific version (1.2.13). But now, you want to allow the latest 1.2.x version. +في ملف package.json، القاعدة الحالية لكيفية لترقية `@freecodecamp/example` بواسطة npm هي استخدام إصدار محدد (1.2.13). لكن الآن، تريد أن تسمح بأحدث إصدار 1.2.x. -Use the tilde (`~`) character to prefix the version of `@freecodecamp/example` in your dependencies, and allow npm to update it to any new _patch_ release. +استخدم رمز (`~`) لبادئة رقم إصدار `@freecodecamp/example` في تبعياتك (dependencies). ذلك يسمح ل npm بتحديثها إلى أي إصدار _patch_ جديد. -**Note:** The version numbers themselves should not be changed. +**ملاحظة:** لا تغيير أرقام الإصدار نفسها. # --hints-- -`"dependencies"` should include `"@freecodecamp/example"`. +يجب أن تتضمن `"dependencies"` مقطع `"@freecodecamp/example"`. ```js (getUserInput) => @@ -45,7 +45,7 @@ Use the tilde (`~`) character to prefix the version of `@freecodecamp/example` i ); ``` -`"@freecodecamp/example"` version should match `"~1.2.13"`. +يجب أن تطابق `"@freecodecamp/example"` إصدارها `"~1.2.13"`. ```js (getUserInput) => diff --git a/curriculum/challenges/arabic/07-scientific-computing-with-python/scientific-computing-with-python-projects/budget-app.md b/curriculum/challenges/arabic/07-scientific-computing-with-python/scientific-computing-with-python-projects/budget-app.md index e93d9128f27..85a86b395a9 100644 --- a/curriculum/challenges/arabic/07-scientific-computing-with-python/scientific-computing-with-python-projects/budget-app.md +++ b/curriculum/challenges/arabic/07-scientific-computing-with-python/scientific-computing-with-python-projects/budget-app.md @@ -19,7 +19,7 @@ You will be = i; j--) { + if (i === 1 || j % i > 0) { + sequence.push({ string: `${i}/${j}`, float: i / j }); + } } - farSeq.sort(function(a,b){ - return a.val-b.val; - }); - farSeq=farSeq.map(function(a){ - return a.str; - }); - return farSeq; + } + return sequence + .sort((a, b) => a.float - b.float) + .map(e => e.string) } ``` diff --git a/curriculum/challenges/arabic/10-coding-interview-prep/the-odin-project-projects/project-create-a-recipe-page.md b/curriculum/challenges/arabic/10-coding-interview-prep/the-odin-project-projects/project-create-a-recipe-page.md new file mode 100644 index 00000000000..657a3f6e32d --- /dev/null +++ b/curriculum/challenges/arabic/10-coding-interview-prep/the-odin-project-projects/project-create-a-recipe-page.md @@ -0,0 +1,204 @@ +--- +id: 6391d1a4f7ac71efd0621380 +title: Build a Recipe Page Project +challengeType: 14 +dashedName: project-create-a-recipe-page +--- + +# --description-- + +The website will consist of a main index page which will have links to a few recipes. The website won’t look very pretty by the time you’ve finished. + +**User Stories:** + +1. Your recipe page should contain a `DOCTYPE` tag. +1. Your recipe page should include an `html` element with a `head` and `body` element as children. +1. You should have a `title` element within the `head` element with the text `The Odin Recipes`. +1. You should see an `h1` element that has the text `Creamy Chocolate Fudge`. +1. You should see an image with the url `*placeholder-fcc-cdn*` with a fitting `alt` text. +1. There should be an `h2` element with the text `Description` under the image. +1. You should see a couple of paragraphs under `Description` that describe the recipe. +1. There should be an `h2` element with the text `Ingredients` +1. Under the `Ingredients` heading there should be an unordered list with the ingredients needed for the recipe. +1. Under the list of ingredients add another heading called `Steps`. +1. You should see an ordered list with a couple of steps needed to complete the recipe. +1. Under the steps there should be an `h2` element with the text `More Recipes` +1. You should see a couple of links to other recipes inside an unordered list which has a couple of list items with anchor elements within. +1. These anchor elements should have `href` attribute with the value set to `#` + +# --hints-- + +You should have a `DOCTYPE` tag. + +```js +assert(code.match(//gi)); +``` + +You should have a `html` element with `head` and `body` element. + +```js +const html = document.querySelectorAll('html')[0]; +const head = document.querySelectorAll('html > head')[0]; +const body = document.querySelectorAll('html > body')[0]; + +assert(html && head && body); +``` + +You should have a `title` element within the `head` element that contains the text `The Odin Recipes`. + +```js +assert(document.querySelectorAll('HEAD > TITLE')[0].innerText == 'The Odin Recipes'); +``` + +You should have a `h1` element within your `body` element that contains the text `Creamy Chocolate Fudge`. + +```js +assert(document.querySelectorAll('BODY > H1')[0].innerText == 'Creamy Chocolate Fudge'); +``` + +You should have an image with the url `*placeholder-fcc-cdn*` with an `alt` attribute that has a fitting text. + +```js +const img = document.querySelectorAll('IMG')[0]; + +assert(img && img.alt !='' && img.src === 'https://i.imgur.com/p0J5baJ.jpg') +``` + +You should have an `h2` element with the text `Description`. + +```js +const h2 = document.querySelectorAll('H2')[0]; + +assert(h2.innerText == 'Description'); +``` + +You should have at least two `p` elements describing the recipe. + +```js +const paragraphs = document.querySelectorAll('P'); + +assert(paragraphs.length > 1); +``` + +You should have an `h2` element with the text `Ingredients`. + +```js +const h2 = document.querySelectorAll('H2')[1]; + +assert(h2.innerText == 'Ingredients'); +``` + +You should have an unordered list `