diff --git a/po/ar.po b/po/ar.po index dba6a1450242..e2a492b7c61e 100644 --- a/po/ar.po +++ b/po/ar.po @@ -473,11 +473,11 @@ msgstr "`Box`" #: src/SUMMARY.md src/smart-pointers/rc.md msgid "`Rc`" -msgstr "" +msgstr "`Rc`" #: src/SUMMARY.md src/smart-pointers/trait-objects.md msgid "Owned Trait Objects" -msgstr "" +msgstr "`(Owned Trait Objects)` كائنات السمات المملوكة" #: src/SUMMARY.md src/smart-pointers/exercise.md #, fuzzy @@ -491,47 +491,47 @@ msgstr "اليوم الأول: صباحا" #: src/SUMMARY.md src/borrowing.md msgid "Borrowing" -msgstr "" +msgstr "الاستعارة (Borrowing)" #: src/SUMMARY.md src/borrowing/shared.md msgid "Borrowing a Value" -msgstr "" +msgstr "استعارة قيمة" #: src/SUMMARY.md src/borrowing/borrowck.md msgid "Borrow Checking" -msgstr "" +msgstr "فحص الاستعارة (Borrow Checking)" #: src/SUMMARY.md src/borrowing/examples.md msgid "Borrow Errors" -msgstr "" +msgstr "أخطاء الاستعارة (Borrow Errors)" #: src/SUMMARY.md src/borrowing/interior-mutability.md msgid "Interior Mutability" -msgstr "" +msgstr "القابلية للتغيير الداخلي (Interior Mutability)" #: src/SUMMARY.md src/borrowing/exercise.md msgid "Exercise: Health Statistics" -msgstr "" +msgstr "(Health Statistics) تمرين: إحصاءات الصحة" #: src/SUMMARY.md src/lifetimes.md msgid "Lifetimes" -msgstr "" +msgstr "فترات الحياة (Lifetimes)" #: src/SUMMARY.md src/lifetimes/lifetime-annotations.md msgid "Lifetime Annotations" -msgstr "" +msgstr "تعليقات فترة الحياة (Lifetime Annotations)" #: src/SUMMARY.md msgid "Lifetime Elision" -msgstr "" +msgstr "حذف فترة الحياة (Lifetime Elision)" #: src/SUMMARY.md msgid "Struct Lifetimes" -msgstr "" +msgstr "فترات حياة الهيكل (Struct Lifetimes)" #: src/SUMMARY.md src/lifetimes/exercise.md msgid "Exercise: Protobuf Parsing" -msgstr "" +msgstr "تمرين: تحليل Protobuf (Protobuf Parsing)" #: src/SUMMARY.md #, fuzzy @@ -540,63 +540,64 @@ msgstr "اليوم الأول: صباحا" #: src/SUMMARY.md src/iterators.md msgid "Iterators" -msgstr "" +msgstr "المكررات (Iterators)" #: src/SUMMARY.md src/iterators/iterator.md src/bare-metal/no_std.md msgid "`Iterator`" -msgstr "" +msgstr "`Iterator` (المكرر)" #: src/SUMMARY.md src/iterators/intoiterator.md msgid "`IntoIterator`" -msgstr "" +msgstr "`IntoIterator` (إلى مكرر)" #: src/SUMMARY.md msgid "`FromIterator`" -msgstr "" +msgstr "`FromIterator` (من مكرر)" #: src/SUMMARY.md src/iterators/exercise.md msgid "Exercise: Iterator Method Chaining" -msgstr "" +msgstr "تمرين: تسلسل طرق المكرر (Iterator Method Chaining)" #: src/SUMMARY.md src/modules.md src/modules/modules.md msgid "Modules" -msgstr "" +msgstr "الوحدات (Modules)" #: src/SUMMARY.md src/modules/filesystem.md msgid "Filesystem Hierarchy" -msgstr "" +msgstr "التسلسل الهرمي لنظام الملفات (Filesystem Hierarchy)" #: src/SUMMARY.md src/modules/visibility.md msgid "Visibility" -msgstr "" +msgstr "الرؤية (Visibility)" #: src/SUMMARY.md msgid "`use`, `super`, `self`" -msgstr "" +msgstr "`use`, `super`, `self`" #: src/SUMMARY.md src/modules/exercise.md msgid "Exercise: Modules for a GUI Library" msgstr "" +"تمرين: الوحدات لمكتبة واجهة المستخدم الرسومية (Modules for a GUI Library)" #: src/SUMMARY.md src/testing.md src/chromium/testing.md msgid "Testing" -msgstr "" +msgstr "الاختبار (Testing)" #: src/SUMMARY.md msgid "Test Modules" -msgstr "" +msgstr "وحدات الاختبار (Test Modules)" #: src/SUMMARY.md src/testing/other.md msgid "Other Types of Tests" -msgstr "" +msgstr "أنواع أخرى من الاختبارات (Other Types of Tests)" #: src/SUMMARY.md src/testing/lints.md msgid "Compiler Lints and Clippy" -msgstr "" +msgstr "التحذيرات البرمجية (Compiler Lints) و Clippy" #: src/SUMMARY.md src/testing/exercise.md msgid "Exercise: Luhn Algorithm" -msgstr "" +msgstr "تمرين: خوارزمية لون (Luhn Algorithm)" #: src/SUMMARY.md #, fuzzy @@ -605,59 +606,59 @@ msgstr "اليوم الأول: صباحا" #: src/SUMMARY.md src/error-handling.md msgid "Error Handling" -msgstr "" +msgstr "معالجة الأخطاء (Error Handling)" #: src/SUMMARY.md src/error-handling/panics.md msgid "Panics" -msgstr "" +msgstr "Panics" #: src/SUMMARY.md src/error-handling/try.md msgid "Try Operator" -msgstr "" +msgstr "مشغل المحاولة (Try Operator)" #: src/SUMMARY.md src/error-handling/try-conversions.md msgid "Try Conversions" -msgstr "" +msgstr "محاولات التحويل (Try Conversions)" #: src/SUMMARY.md msgid "`Error` Trait" -msgstr "" +msgstr "سمة `Error` (Error Trait)" #: src/SUMMARY.md src/error-handling/thiserror-and-anyhow.md msgid "`thiserror` and `anyhow`" -msgstr "" +msgstr "`thiserror` و `anyhow`" #: src/SUMMARY.md msgid "Exercise: Rewriting with `Result`" -msgstr "" +msgstr "تمرين: إعادة الكتابة باستخدام `Result`" #: src/SUMMARY.md src/unsafe-rust.md src/unsafe-rust/unsafe.md msgid "Unsafe Rust" -msgstr "" +msgstr "Rust غير الآمنة (Unsafe Rust)" #: src/SUMMARY.md msgid "Unsafe" -msgstr "" +msgstr "غير آمن (Unsafe)" #: src/SUMMARY.md src/unsafe-rust/dereferencing.md msgid "Dereferencing Raw Pointers" -msgstr "" +msgstr "إلغاء مرجعية المؤشرات الخام (Dereferencing Raw Pointers)" #: src/SUMMARY.md src/unsafe-rust/mutable-static.md msgid "Mutable Static Variables" -msgstr "" +msgstr "المتغيرات الثابتة القابلة للتغيير (Mutable Static Variables)" #: src/SUMMARY.md src/unsafe-rust/unions.md msgid "Unions" -msgstr "" +msgstr "الاتحادات (Unions)" #: src/SUMMARY.md src/unsafe-rust/unsafe-functions.md msgid "Unsafe Functions" -msgstr "" +msgstr "الدوال غير الآمنة (Unsafe Functions)" #: src/SUMMARY.md msgid "Unsafe Traits" -msgstr "" +msgstr "السمات غير الآمنة (Unsafe Traits)" #: src/SUMMARY.md #, fuzzy @@ -666,79 +667,79 @@ msgstr "تمرين: فيبوناتشي" #: src/SUMMARY.md src/bare-metal/android.md msgid "Android" -msgstr "" +msgstr "أندرويد (Android)" #: src/SUMMARY.md src/android/setup.md src/chromium/setup.md msgid "Setup" -msgstr "" +msgstr "الإعداد (Setup)" #: src/SUMMARY.md src/android/build-rules.md msgid "Build Rules" -msgstr "" +msgstr "قواعد البناء (Build Rules)" #: src/SUMMARY.md msgid "Binary" -msgstr "" +msgstr "ثنائي (Binary)" #: src/SUMMARY.md msgid "Library" -msgstr "" +msgstr "مكتبة (Library)" #: src/SUMMARY.md src/android/aidl.md msgid "AIDL" -msgstr "" +msgstr "AIDL" #: src/SUMMARY.md src/android/aidl/birthday-service.md msgid "Birthday Service Tutorial" -msgstr "" +msgstr "دليل خدمة عيد الميلاد (Birthday Service Tutorial)" #: src/SUMMARY.md msgid "Interface" -msgstr "" +msgstr "الواجهة (Interface)" #: src/SUMMARY.md msgid "Service API" -msgstr "" +msgstr "واجهة برمجة التطبيقات للخدمة (Service API)" #: src/SUMMARY.md msgid "Service" -msgstr "" +msgstr "الخدمة (Service)" #: src/SUMMARY.md msgid "Server" -msgstr "" +msgstr "الخادم (Server)" #: src/SUMMARY.md src/android/aidl/example-service/deploy.md msgid "Deploy" -msgstr "" +msgstr "النشر (Deploy)" #: src/SUMMARY.md msgid "Client" -msgstr "" +msgstr "العميل (Client)" #: src/SUMMARY.md src/android/aidl/example-service/changing-definition.md msgid "Changing API" -msgstr "" +msgstr "تغيير واجهة برمجة التطبيقات (Changing API)" #: src/SUMMARY.md msgid "Updating Implementations" -msgstr "" +msgstr "تحديث التنفيذات (Updating Implementations)" #: src/SUMMARY.md msgid "AIDL Types" -msgstr "" +msgstr "أنواع AIDL (AIDL Types)" #: src/SUMMARY.md src/android/aidl/types/primitives.md msgid "Primitive Types" -msgstr "" +msgstr "الأنواع الأولية (Primitive Types)" #: src/SUMMARY.md src/android/aidl/types/arrays.md msgid "Array Types" -msgstr "" +msgstr "أنواع المصفوفات (Array Types)" #: src/SUMMARY.md src/android/aidl/types/objects.md msgid "Sending Objects" -msgstr "" +msgstr "إرسال الكائنات (Sending Objects)" #: src/SUMMARY.md src/android/aidl/types/parcelables.md #, fuzzy @@ -747,222 +748,227 @@ msgstr "المتغيرات" #: src/SUMMARY.md src/android/aidl/types/file-descriptor.md msgid "Sending Files" -msgstr "" +msgstr "إرسال الملفات (Sending Files)" #: src/SUMMARY.md src/android/testing/googletest.md msgid "GoogleTest" -msgstr "" +msgstr "GoogleTest" #: src/SUMMARY.md src/android/testing/mocking.md msgid "Mocking" -msgstr "" +msgstr "المحاكاة (Mocking)" #: src/SUMMARY.md src/android/logging.md src/bare-metal/aps/logging.md msgid "Logging" -msgstr "" +msgstr "التسجيل (Logging)" #: src/SUMMARY.md src/android/interoperability.md msgid "Interoperability" -msgstr "" +msgstr "قابلية التشغيل البيني (Interoperability)" #: src/SUMMARY.md msgid "With C" -msgstr "" +msgstr "مع C (With C)" #: src/SUMMARY.md msgid "Calling C with Bindgen" -msgstr "" +msgstr "استدعاء C باستخدام Bindgen (Calling C with Bindgen)" #: src/SUMMARY.md msgid "Calling Rust from C" -msgstr "" +msgstr "استدعاء Rust من C (Calling Rust from C)" #: src/SUMMARY.md src/android/interoperability/cpp.md msgid "With C++" -msgstr "" +msgstr "مع C++ (With C++)" #: src/SUMMARY.md src/android/interoperability/cpp/bridge.md msgid "The Bridge Module" -msgstr "" +msgstr "وحدة الجسر (The Bridge Module)" #: src/SUMMARY.md msgid "Rust Bridge" -msgstr "" +msgstr "جسر Rust (Rust Bridge)" #: src/SUMMARY.md src/android/interoperability/cpp/generated-cpp.md msgid "Generated C++" -msgstr "" +msgstr "C++ المُولَّد (Generated C++)" #: src/SUMMARY.md msgid "C++ Bridge" -msgstr "" +msgstr "جسر C++ (C++ Bridge)" #: src/SUMMARY.md src/android/interoperability/cpp/shared-types.md msgid "Shared Types" -msgstr "" +msgstr "الأنواع المشتركة (Shared Types)" #: src/SUMMARY.md src/android/interoperability/cpp/shared-enums.md msgid "Shared Enums" -msgstr "" +msgstr "التعدادات المشتركة (Shared Enums)" #: src/SUMMARY.md src/android/interoperability/cpp/rust-result.md msgid "Rust Error Handling" -msgstr "" +msgstr "معالجة الأخطاء في Rust (Rust Error Handling)" #: src/SUMMARY.md src/android/interoperability/cpp/cpp-exception.md msgid "C++ Error Handling" -msgstr "" +msgstr "معالجة الأخطاء في C++ (C++ Error Handling)" #: src/SUMMARY.md src/android/interoperability/cpp/type-mapping.md msgid "Additional Types" -msgstr "" +msgstr "الأنواع الإضافية (Additional Types)" #: src/SUMMARY.md msgid "Building for Android: C++" -msgstr "" +msgstr "البناء لأندرويد: C++ (Building for Android: C++)" #: src/SUMMARY.md msgid "Building for Android: Genrules" -msgstr "" +msgstr "البناء لأندرويد: قواعد التوليد (Building for Android: Genrules)" #: src/SUMMARY.md msgid "Building for Android: Rust" -msgstr "" +msgstr "البناء لأندرويد: Rust (Building for Android: Rust)" #: src/SUMMARY.md msgid "With Java" -msgstr "" +msgstr "مع Java (With Java)" #: src/SUMMARY.md src/exercises/android/morning.md #: src/exercises/bare-metal/morning.md src/exercises/bare-metal/afternoon.md #: src/concurrency/sync-exercises.md src/concurrency/async-exercises.md msgid "Exercises" -msgstr "" +msgstr "التمارين" #: src/SUMMARY.md msgid "Chromium" -msgstr "" +msgstr "كروميوم (Chromium)" #: src/SUMMARY.md src/chromium/cargo.md msgid "Comparing Chromium and Cargo Ecosystems" msgstr "" +"مقارنة بين بيئات Chromium و Cargo (Comparing Chromium and Cargo Ecosystems)" #: src/SUMMARY.md msgid "Policy" -msgstr "" +msgstr "سياسة الاستخدام (Policy)" #: src/SUMMARY.md msgid "Unsafe Code" -msgstr "" +msgstr "الكود غير الآمن (Unsafe Code)" #: src/SUMMARY.md src/chromium/build-rules/depending.md msgid "Depending on Rust Code from Chromium C++" msgstr "" +"الاعتماد على كود Rust من Chromium C++ (Depending on Rust Code from Chromium " +"C++)" #: src/SUMMARY.md src/chromium/build-rules/vscode.md msgid "Visual Studio Code" -msgstr "" +msgstr "فيجوال ستوديو كود (Visual Studio Code)" #: src/SUMMARY.md src/exercises/chromium/third-party.md msgid "Exercise" -msgstr "" +msgstr "تمرين (Exercise)" #: src/SUMMARY.md src/chromium/testing/rust-gtest-interop.md msgid "`rust_gtest_interop` Library" -msgstr "" +msgstr "مكتبة `rust_gtest_interop`" #: src/SUMMARY.md src/chromium/testing/build-gn.md msgid "GN Rules for Rust Tests" -msgstr "" +msgstr "قواعد GN لاختبارات Rust (GN Rules for Rust Tests)" #: src/SUMMARY.md src/chromium/testing/chromium-import-macro.md msgid "`chromium::import!` Macro" -msgstr "" +msgstr "ماكرو Macro `chromium::import!`" #: src/SUMMARY.md src/chromium/interoperability-with-cpp.md msgid "Interoperability with C++" -msgstr "" +msgstr "التشغيل البيني مع C++ (Interoperability with C++)" #: src/SUMMARY.md src/chromium/interoperability-with-cpp/example-bindings.md msgid "Example Bindings" -msgstr "" +msgstr "أمثلة على الربط (Example Bindings)" #: src/SUMMARY.md src/chromium/interoperability-with-cpp/limitations-of-cxx.md msgid "Limitations of CXX" -msgstr "" +msgstr "قيود CXX" #: src/SUMMARY.md src/chromium/interoperability-with-cpp/error-handling.md msgid "CXX Error Handling" -msgstr "" +msgstr "معالجة الأخطاء في CXX (CXX Error Handling)" #: src/SUMMARY.md msgid "Error Handling: QR Example" -msgstr "" +msgstr "معالجة الأخطاء (Error Handling): مثال QR" #: src/SUMMARY.md msgid "Error Handling: PNG Example" -msgstr "" +msgstr "معالجة الأخطاء: مثال PNG" #: src/SUMMARY.md msgid "Using CXX in Chromium" -msgstr "" +msgstr "استخدام CXX في Chromium" #: src/SUMMARY.md src/chromium/adding-third-party-crates.md msgid "Adding Third Party Crates" -msgstr "" +msgstr "إضافة كريت الطرف الثالث (third party Crates)" #: src/SUMMARY.md msgid "Configuring Cargo.toml" -msgstr "" +msgstr "تهيئة Cargo.toml" #: src/SUMMARY.md #: src/chromium/adding-third-party-crates/configuring-gnrt-config-toml.md msgid "Configuring `gnrt_config.toml`" -msgstr "" +msgstr "تهيئة `gnrt_config.toml`" #: src/SUMMARY.md src/chromium/adding-third-party-crates/downloading-crates.md msgid "Downloading Crates" -msgstr "" +msgstr "تنزيل الحزم (Crates)" #: src/SUMMARY.md #: src/chromium/adding-third-party-crates/generating-gn-build-rules.md msgid "Generating `gn` Build Rules" -msgstr "" +msgstr "توليد قواعد البناء Generating `gn` Build Rules" #: src/SUMMARY.md src/chromium/adding-third-party-crates/resolving-problems.md msgid "Resolving Problems" -msgstr "" +msgstr "حل المشاكل" #: src/SUMMARY.md #: src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-generate-code.md msgid "Build Scripts Which Generate Code" -msgstr "" +msgstr "برامج البناء التي تولد الكود (Build Scripts Which Generate Code)" #: src/SUMMARY.md #: src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-take-arbitrary-actions.md msgid "Build Scripts Which Build C++ or Take Arbitrary Actions" msgstr "" +"برامج البناء التي تبني C++ أو تتخذ إجراءات عشوائية (Build Scripts Which " +"Build C++ or Take Arbitrary Actions)" #: src/SUMMARY.md #: src/chromium/adding-third-party-crates/depending-on-a-crate.md msgid "Depending on a Crate" -msgstr "" +msgstr "الاعتماد على كريت (Depending on a Crate)" #: src/SUMMARY.md msgid "Reviews and Audits" -msgstr "" +msgstr "المراجعات والتدقيقات (Reviews and Audits)" #: src/SUMMARY.md msgid "Checking into Chromium Source Code" -msgstr "" +msgstr "التحقق من مصدر الكود Chromium (Checking into Chromium Source Code)" #: src/SUMMARY.md src/chromium/adding-third-party-crates/keeping-up-to-date.md msgid "Keeping Crates Up to Date" -msgstr "" +msgstr "الحفاظ على الكريتات محدثة (Keeping Crates Up to Date)" #: src/SUMMARY.md msgid "Bringing It Together - Exercise" -msgstr "" +msgstr "جمعها معًا - تمرين (Bringing It Together - Exercise)" #: src/SUMMARY.md src/exercises/chromium/solutions.md #, fuzzy @@ -976,109 +982,109 @@ msgstr "اليوم الأول: صباحا" #: src/SUMMARY.md src/bare-metal/no_std.md msgid "`no_std`" -msgstr "" +msgstr "`no_std`" #: src/SUMMARY.md msgid "A Minimal Example" -msgstr "" +msgstr "مثال بسيط" #: src/SUMMARY.md src/bare-metal/no_std.md src/bare-metal/alloc.md msgid "`alloc`" -msgstr "" +msgstr "`alloc`" #: src/SUMMARY.md src/bare-metal/microcontrollers.md msgid "Microcontrollers" -msgstr "" +msgstr "المتحكمات الدقيقة (Microcontrollers)" #: src/SUMMARY.md src/bare-metal/microcontrollers/mmio.md msgid "Raw MMIO" -msgstr "" +msgstr "MMIO الخام (Raw MMIO)" #: src/SUMMARY.md msgid "PACs" -msgstr "" +msgstr "حزم الوصول المحيطي (PACs)" #: src/SUMMARY.md msgid "HAL Crates" -msgstr "" +msgstr "حزم طبقة تجريد الأجهزة (HAL Crates)" #: src/SUMMARY.md msgid "Board Support Crates" -msgstr "" +msgstr "حزم دعم اللوحة (Board Support Crates)" #: src/SUMMARY.md msgid "The Type State Pattern" -msgstr "" +msgstr "نمط حالة النوع (The Type State Pattern)" #: src/SUMMARY.md src/bare-metal/microcontrollers/embedded-hal.md msgid "`embedded-hal`" -msgstr "" +msgstr "`embedded-hal`" #: src/SUMMARY.md src/bare-metal/microcontrollers/probe-rs.md msgid "`probe-rs` and `cargo-embed`" -msgstr "" +msgstr "`probe-rs` و `cargo-embed`" #: src/SUMMARY.md src/bare-metal/microcontrollers/debugging.md msgid "Debugging" -msgstr "" +msgstr "تتبع الأخطاء (Debugging)" #: src/SUMMARY.md msgid "Other Projects" -msgstr "" +msgstr "مشاريع أخرى" #: src/SUMMARY.md src/exercises/bare-metal/compass.md #: src/exercises/bare-metal/solutions-morning.md msgid "Compass" -msgstr "" +msgstr "بوصلة (Compass)" #: src/SUMMARY.md src/concurrency/sync-exercises/solutions.md #: src/concurrency/async-exercises/solutions.md msgid "Solutions" -msgstr "" +msgstr "حلول (Solutions)" #: src/SUMMARY.md msgid "Bare Metal: Afternoon" -msgstr "" +msgstr "Bare Metal: بعد الظهر" #: src/SUMMARY.md msgid "Application Processors" -msgstr "" +msgstr "معالجات التطبيقات" #: src/SUMMARY.md src/bare-metal/aps/entry-point.md msgid "Getting Ready to Rust" -msgstr "" +msgstr "الاستعداد للبرمجة بلغة Rust" #: src/SUMMARY.md msgid "Inline Assembly" -msgstr "" +msgstr "التجميع المضمن (Inline Assembly)" #: src/SUMMARY.md msgid "MMIO" -msgstr "" +msgstr "MMIO (إدخال/إخراج الذاكرة المعين)" #: src/SUMMARY.md msgid "Let's Write a UART Driver" -msgstr "" +msgstr "لنكتب برنامج تشغيل UART" #: src/SUMMARY.md msgid "More Traits" -msgstr "" +msgstr "المزيد من السمات (Traits)" #: src/SUMMARY.md msgid "A Better UART Driver" -msgstr "" +msgstr "برنامج تشغيل UART أفضل" #: src/SUMMARY.md src/bare-metal/aps/better-uart/bitflags.md msgid "Bitflags" -msgstr "" +msgstr "أعلام البت (Bitflags)" #: src/SUMMARY.md msgid "Multiple Registers" -msgstr "" +msgstr "سجلات متعددة (Multiple Registers)" #: src/SUMMARY.md src/bare-metal/aps/better-uart/driver.md msgid "Driver" -msgstr "" +msgstr "برنامج تشغيل (Driver)" #: src/SUMMARY.md #, fuzzy @@ -1087,210 +1093,210 @@ msgstr "استخدام Cargo" #: src/SUMMARY.md src/error-handling/result.md src/bare-metal/aps/exceptions.md msgid "Exceptions" -msgstr "" +msgstr "استثناءات (Exceptions)" #: src/SUMMARY.md msgid "Useful Crates" -msgstr "" +msgstr "كريتات مفيدة ( Useful Crates)" #: src/SUMMARY.md src/bare-metal/useful-crates/zerocopy.md msgid "`zerocopy`" -msgstr "" +msgstr "`zerocopy`" #: src/SUMMARY.md src/bare-metal/useful-crates/aarch64-paging.md msgid "`aarch64-paging`" -msgstr "" +msgstr "`aarch64-paging`" #: src/SUMMARY.md src/bare-metal/useful-crates/buddy_system_allocator.md msgid "`buddy_system_allocator`" -msgstr "" +msgstr "`buddy_system_allocator`" #: src/SUMMARY.md src/bare-metal/useful-crates/tinyvec.md msgid "`tinyvec`" -msgstr "" +msgstr "`tinyvec`" #: src/SUMMARY.md src/bare-metal/useful-crates/spin.md msgid "`spin`" -msgstr "" +msgstr "`spin`" #: src/SUMMARY.md msgid "`vmbase`" -msgstr "" +msgstr "`vmbase`" #: src/SUMMARY.md msgid "RTC Driver" -msgstr "" +msgstr "برنامج تشغيل RTC (RTC Driver)" #: src/SUMMARY.md msgid "Concurrency: Morning" -msgstr "" +msgstr "التزامن: الصباح (Concurrency)" #: src/SUMMARY.md src/concurrency/threads.md msgid "Threads" -msgstr "" +msgstr "الخيوط البرمجية (Threads)" #: src/SUMMARY.md src/concurrency/threads/plain.md msgid "Plain Threads" -msgstr "" +msgstr "Plain Threads" #: src/SUMMARY.md src/concurrency/threads/scoped.md msgid "Scoped Threads" -msgstr "" +msgstr "الخيوط البرمجية المحددة النطاق (Scoped Threads)" #: src/SUMMARY.md src/concurrency/channels.md msgid "Channels" -msgstr "" +msgstr "القنوات (Channels)" #: src/SUMMARY.md src/concurrency/channels/senders-receivers.md msgid "Senders and Receivers" -msgstr "" +msgstr "المرسلون والمستقبلون (Senders and Receivers)" #: src/SUMMARY.md src/concurrency/channels/unbounded.md msgid "Unbounded Channels" -msgstr "" +msgstr "القنوات غير المحدودة (Unbounded Channels)" #: src/SUMMARY.md src/concurrency/channels/bounded.md msgid "Bounded Channels" -msgstr "" +msgstr "القنوات المحدودة (Bounded Channels)" #: src/SUMMARY.md src/concurrency/send-sync.md msgid "`Send` and `Sync`" -msgstr "" +msgstr "`Send` و `Sync`" #: src/SUMMARY.md src/concurrency/send-sync/marker-traits.md msgid "Marker Traits" -msgstr "" +msgstr "سمات العلامات (Marker Traits)" #: src/SUMMARY.md src/concurrency/send-sync/send.md msgid "`Send`" -msgstr "" +msgstr "`Send`" #: src/SUMMARY.md src/concurrency/send-sync/sync.md msgid "`Sync`" -msgstr "" +msgstr "`Sync`" #: src/SUMMARY.md src/concurrency/send-sync/examples.md #, fuzzy msgid "Examples" -msgstr "(Code Samples) عينات الكود" +msgstr "أمثلة (Examples)" #: src/SUMMARY.md src/concurrency/shared-state.md msgid "Shared State" -msgstr "" +msgstr "الحالة المشتركة (Shared State)" #: src/SUMMARY.md src/concurrency/shared-state/arc.md msgid "`Arc`" -msgstr "" +msgstr "`Arc`" #: src/SUMMARY.md src/concurrency/shared-state/mutex.md msgid "`Mutex`" -msgstr "" +msgstr "`Mutex`" #: src/SUMMARY.md src/memory-management/review.md #: src/error-handling/try-conversions.md #: src/concurrency/shared-state/example.md msgid "Example" -msgstr "" +msgstr "مثال (Example)" #: src/SUMMARY.md src/concurrency/sync-exercises/dining-philosophers.md #: src/concurrency/sync-exercises/solutions.md msgid "Dining Philosophers" -msgstr "" +msgstr "عشاء الفلاسفة (Dining Philosophers)" #: src/SUMMARY.md src/concurrency/sync-exercises/link-checker.md msgid "Multi-threaded Link Checker" -msgstr "" +msgstr "مدقق الروابط متعدد الخيوط (Multi-threaded Link Checker)" #: src/SUMMARY.md msgid "Concurrency: Afternoon" -msgstr "" +msgstr "التزامن: بعد الظهر (Concurrency)" #: src/SUMMARY.md src/concurrency/async.md msgid "Async Basics" -msgstr "" +msgstr "أساسيات البرمجة غير المتزامنة (Async Basics)" #: src/SUMMARY.md src/concurrency/async/async-await.md msgid "`async`/`await`" -msgstr "" +msgstr "`async`/`await`" #: src/SUMMARY.md src/concurrency/async/futures.md msgid "Futures" -msgstr "" +msgstr "المستقبلات (Futures)" #: src/SUMMARY.md src/concurrency/async/runtimes.md msgid "Runtimes" -msgstr "" +msgstr "وقت التشغيل (Runtimes)" #: src/SUMMARY.md src/concurrency/async/runtimes/tokio.md msgid "Tokio" -msgstr "" +msgstr "طوكيو (Tokio)" #: src/SUMMARY.md src/concurrency/sync-exercises/link-checker.md #: src/concurrency/async/tasks.md src/concurrency/async-exercises/chat-app.md msgid "Tasks" -msgstr "" +msgstr "المهام (Tasks)" #: src/SUMMARY.md src/concurrency/async-control-flow.md msgid "Channels and Control Flow" -msgstr "" +msgstr "القنوات وتدفق التحكم (Channels and Control Flow)" #: src/SUMMARY.md src/concurrency/async-control-flow/channels.md msgid "Async Channels" -msgstr "" +msgstr "القنوات غير المتزامنة (Async Channels)" #: src/SUMMARY.md src/concurrency/async-control-flow/join.md msgid "Join" -msgstr "" +msgstr "الانضمام (Join)" #: src/SUMMARY.md src/concurrency/async-control-flow/select.md msgid "Select" -msgstr "" +msgstr "اختيار (Select)" #: src/SUMMARY.md src/concurrency/async-pitfalls.md msgid "Pitfalls" -msgstr "" +msgstr "المزالق (Pitfalls)" #: src/SUMMARY.md msgid "Blocking the Executor" -msgstr "" +msgstr "حجب المنفذ (Blocking the Executor)" #: src/SUMMARY.md src/concurrency/async-pitfalls/pin.md msgid "`Pin`" -msgstr "" +msgstr "`Pin`" #: src/SUMMARY.md src/concurrency/async-pitfalls/async-traits.md msgid "Async Traits" -msgstr "" +msgstr "السمات غير المتزامنة (Async Traits)" #: src/SUMMARY.md src/concurrency/async-pitfalls/cancellation.md #, fuzzy msgid "Cancellation" -msgstr "الترجمات" +msgstr "الإلغاء (Cancellation)" #: src/SUMMARY.md src/concurrency/async-exercises/chat-app.md #: src/concurrency/async-exercises/solutions.md msgid "Broadcast Chat Application" -msgstr "" +msgstr "تطبيق الدردشة الجماعية (Broadcast Chat Application)" #: src/SUMMARY.md msgid "Final Words" -msgstr "" +msgstr "كلمات أخيرة (Final Words)" #: src/SUMMARY.md src/thanks.md msgid "Thanks!" -msgstr "" +msgstr "شكرًا! (Thanks!)" #: src/SUMMARY.md src/glossary.md msgid "Glossary" -msgstr "" +msgstr "مسرد المصطلحات (Glossary)" #: src/SUMMARY.md msgid "Other Resources" -msgstr "" +msgstr "موارد أخرى (Other Resources)" #: src/SUMMARY.md src/credits.md msgid "Credits" -msgstr "" +msgstr "الشكر والتقدير (Credits)" #: src/index.md msgid "" @@ -1303,6 +1309,14 @@ msgid "" "io/github/stars/google/comprehensive-rust?style=flat-square)](https://github." "com/google/comprehensive-rust/stargazers)" msgstr "" +"[![سير العمل للبناء](https://img.shields.io/github/actions/workflow/status/" +"google/comprehensive-rust/build.yml?style=flat-square)](https://github.com/" +"google/comprehensive-rust/actions/workflows/build.yml?query=branch%3Amain) [!" +"[مساهمون GitHub](https://img.shields.io/github/contributors/google/" +"comprehensive-rust?style=flat-square)](https://github.com/google/" +"comprehensive-rust/graphs/contributors) [![نجوم GitHub](https://img.shields." +"io/github/stars/google/comprehensive-rust?style=flat-square)](https://github." +"com/google/comprehensive-rust/stargazers)" #: src/index.md msgid "" @@ -1310,6 +1324,9 @@ msgid "" "course covers the full spectrum of Rust, from basic syntax to advanced " "topics like generics and error handling." msgstr "" +"هذه دورة مجانية عن Rust تم تطويرها بواسطة فريق Android في Google. تغطي " +"الدورة النطاق الكامل لـ Rust، من بناء الجملة الأساسي إلى المواضيع المتقدمة " +"مثل generics ومعالجة الأخطاء." #: src/index.md msgid "" @@ -1317,6 +1334,9 @@ msgid "" "comprehensive-rust/>. If you are reading somewhere else, please check there " "for updates." msgstr "" +"يمكن العثور على أحدث إصدار من الدورة على . إذا كنت تقرأ في مكان آخر، يرجى التحقق هناك للحصول على " +"التحديثات." #: src/index.md msgid "" @@ -1324,43 +1344,49 @@ msgid "" "in the top right corner of the page or check the [Translations](running-the-" "course/translations.md) page for a list of all available translations." msgstr "" +"الدورة متاحة بلغات أخرى. اختر لغتك المفضلة في الزاوية العلوية اليمنى من " +"الصفحة أو تحقق من صفحة [Translations](running-the-course/translations.md) " +"للحصول على قائمة بجميع الترجمات المتاحة." #: src/index.md msgid "The course is also available [as a PDF](comprehensive-rust.pdf)." -msgstr "" +msgstr "الدورة متاحة أيضًا [كملف PDF](comprehensive-rust.pdf)." #: src/index.md msgid "" "The goal of the course is to teach you Rust. We assume you don't know " "anything about Rust and hope to:" msgstr "" +"هدف الدورة هو تعليمك Rust. نفترض أنك لا تعرف أي شيء عن Rust ونأمل أن تتعلمها:" #: src/index.md msgid "Give you a comprehensive understanding of the Rust syntax and language." -msgstr "" +msgstr "نقدم لك فهماً شاملاً لبناء (syntax) جملة Rust و لغة البرمجة." #: src/index.md msgid "Enable you to modify existing programs and write new programs in Rust." -msgstr "" +msgstr "تمكينك من تعديل البرامج الحالية وكتابة برامج جديدة بلغة Rust." #: src/index.md msgid "Show you common Rust idioms." -msgstr "" +msgstr "نوضح لك التعابير الشائعة في Rust." #: src/index.md msgid "We call the first four course days Rust Fundamentals." -msgstr "" +msgstr "نسمي الأيام الأربعة الأولى من الدورة أساسيات Rust." #: src/index.md msgid "" "Building on this, you're invited to dive into one or more specialized topics:" -msgstr "" +msgstr "بناءً على ذلك، أنت مدعو للتعمق في موضوع أو أكثر من المواضيع المتخصصة:" #: src/index.md msgid "" "[Android](android.md): a half-day course on using Rust for Android platform " "development (AOSP). This includes interoperability with C, C++, and Java." msgstr "" +"[Android](android.md): دورة نصف يومية حول استخدام Rust لتطوير منصة Android " +"(AOSP). يتضمن ذلك التوافق مع C و C++ و Java." #: src/index.md msgid "" @@ -1368,6 +1394,9 @@ msgid "" "based browsers. This includes interoperability with C++ and how to include " "third-party crates in Chromium." msgstr "" +"[Chromium](chromium.md): دورة نصف يومية حول استخدام Rust داخل المتصفحات " +"المبنية على Chromium. يتضمن ذلك التوافق مع C++ وكيفية تضمين الحزم الخارجية " +"(crates) في Chromium." #: src/index.md msgid "" @@ -1375,6 +1404,8 @@ msgid "" "(embedded) development. Both microcontrollers and application processors are " "covered." msgstr "" +"[Bare-metal](bare-metal.md): دورة ليوم كامل حول استخدام Rust لتطوير الأنظمة " +"المضمنة (bare-metal). يتم تغطية كل من المتحكمات الدقيقة ومعالجات التطبيقات." #: src/index.md msgid "" @@ -1383,16 +1414,22 @@ msgid "" "mutexes) and async/await concurrency (cooperative multitasking using " "futures)." msgstr "" +"[Concurrency](concurrency.md): دورة ليوم كامل حول البرمجة المتزامنة في Rust. " +"نغطي كل من البرمجة المتزامنة التقليدية (الجدولة الاستباقية باستخدام الخيوط " +"(threads) والأقفال (mutexes)) والبرمجة المتزامنة باستخدام async/await (تعدد " +"المهام التعاوني باستخدام futures)." #: src/index.md msgid "Non-Goals" -msgstr "" +msgstr "الأهداف غير المقصودة (Non-Goals)" #: src/index.md msgid "" "Rust is a large language and we won't be able to cover all of it in a few " "days. Some non-goals of this course are:" msgstr "" +"Rust هي لغة كبيرة ولن نتمكن من تغطية كل شيء في بضعة أيام. بعض الأهداف غير " +"المقصودة لهذه الدورة هي:" #: src/index.md msgid "" @@ -1400,10 +1437,13 @@ msgid "" "(https://doc.rust-lang.org/book/ch19-06-macros.html) and [Rust by Example]" "(https://doc.rust-lang.org/rust-by-example/macros.html) instead." msgstr "" +"تعلم كيفية تطوير الماكروز (macros): يرجى الاطلاع على [الفصل 19.5 في كتاب " +"Rust](https://doc.rust-lang.org/book/ch19-06-macros.html) و [Rust by Example]" +"(https://doc.rust-lang.org/rust-by-example/macros.html) بدلاً من ذلك." #: src/index.md msgid "Assumptions" -msgstr "" +msgstr "افتراضات" #: src/index.md msgid "" @@ -1411,12 +1451,17 @@ msgid "" "statically-typed language and we will sometimes make comparisons with C and " "C++ to better explain or contrast the Rust approach." msgstr "" +"تفترض الدورة أنك تعرف بالفعل كيفية البرمجة. Rust هي لغة ذات نوع ثابت " +"(statically-typed) وسنقوم أحيانًا بإجراء مقارنات مع C و C++ لشرح أو مقارنة " +"منهج Rust بشكل أفضل." #: src/index.md msgid "" "If you know how to program in a dynamically-typed language such as Python or " "JavaScript, then you will be able to follow along just fine too." msgstr "" +"إذا كنت تعرف كيفية البرمجة بلغة ذات نوع ديناميكي مثل Python أو JavaScript، " +"فستتمكن من المتابعة بشكل جيد أيضًا." #: src/index.md msgid "" @@ -1424,16 +1469,19 @@ msgid "" "information to the slides. This could be key points which the instructor " "should cover as well as answers to typical questions which come up in class." msgstr "" +"هذا مثال على _ملاحظة المتحدث_. سنستخدم هذه لإضافة معلومات إضافية إلى " +"الشرائح. يمكن أن تكون هذه النقاط الرئيسية التي يجب على المدرب تغطيتها " +"بالإضافة إلى الاجابة على الأسئلة النموذجية التي تطرح في الفصل." #: src/running-the-course.md src/running-the-course/course-structure.md msgid "This page is for the course instructor." -msgstr "" +msgstr "هذه الصفحة مخصصة لمدرب الدورة." #: src/running-the-course.md msgid "" "Here is a bit of background information about how we've been running the " "course internally at Google." -msgstr "" +msgstr "إليك بعض المعلومات الأساسية حول كيفية تشغيلنا للدورة داخليًا في Google." #: src/running-the-course.md msgid "" @@ -1442,10 +1490,14 @@ msgid "" "afternoon class. Both sessions contain multiple breaks and time for students " "to work on exercises." msgstr "" +"عادةً ما نجري الفصول الدراسية من الساعة 9:00 صباحًا حتى 4:00 مساءً، مع استراحة " +"غداء لمدة ساعة في المنتصف. يترك هذا 3 ساعات للفصل الصباحي و 3 ساعات للفصل " +"المسائي. تحتوي كلتا الجلستين على فترات راحة متعددة ووقت للطلاب للعمل على " +"التمارين." #: src/running-the-course.md msgid "Before you run the course, you will want to:" -msgstr "" +msgstr "قبل أن تدير الدورة، ستحتاج إلى:" #: src/running-the-course.md msgid "" @@ -1455,6 +1507,11 @@ msgid "" "notes in a popup (click the link with a little arrow next to \"Speaker " "Notes\"). This way you have a clean screen to present to the class." msgstr "" +"تعرف على مواد الدورة. لقد قمنا بتضمين ملاحظات المتحدث للمساعدة في تسليط " +"الضوء على النقاط الرئيسية (يرجى مساعدتنا من خلال المساهمة بمزيد من ملاحظات " +"المتحدث!). عند العرض، يجب عليك التأكد من فتح ملاحظات المتحدث في نافذة منبثقة " +"(انقر على الرابط مع السهم الصغير بجانب \"ملاحظات المتحدث\"). بهذه الطريقة، " +"سيكون لديك شاشة نظيفة لتقديمها إلى الفصل." #: src/running-the-course.md msgid "" @@ -1463,6 +1520,9 @@ msgid "" "find it helpful to have a gap in the course since it helps them process all " "the information we give them." msgstr "" +"حدد التواريخ. نظرًا لأن الدورة تستغرق أربعة أيام، نوصي بجدولة الأيام على مدى " +"أسبوعين. قال المشاركون في الدورة إنهم يجدون أنه من المفيد أن يكون هناك فجوة " +"زمنيةفي الدورة لأنها تساعدهم على معالجة جميع المعلومات التي نقدمها لهم." #: src/running-the-course.md msgid "" @@ -1474,6 +1534,12 @@ msgid "" "laptops. In particular, you will be doing a lot of live-coding as an " "instructor, so a lectern won't be very helpful for you." msgstr "" +"ابحث عن غرفة كبيرة بما يكفي للمشاركين. نوصي بحجم فصل من 15-25 شخصًا. هذا " +"الحجم صغير بما يكفي ليشعر الناس بالراحة عند طرح الأسئلة --- كما أنه صغير بما " +"يكفي ليتمكن مدرب واحد من الإجابة على الأسئلة. تأكد من أن الغرفة تحتوي على " +"_مكاتب_ لك وللطلاب: ستحتاجون جميعًا إلى الجلوس والعمل باستخدام أجهزة " +"الكمبيوتر المحمولة الخاصة بكم. على وجه الخصوص، ستقوم بالكثير من البرمجة " +"الحية كمدرب، لذا فإن المنصة لن تكون مفيدة جدًا لك." #: src/running-the-course.md msgid "" @@ -1484,6 +1550,12 @@ msgid "" "as you change pages. Using your laptop will also allow you to fix typos as " "you or the course participants spot them." msgstr "" +"في يوم الدورة، احضر إلى الغرفة مبكرًا قليلاً لإعداد الأشياء. نوصي بالعرض " +"مباشرة باستخدام `mdbook serve` الذي يعمل على جهاز الكمبيوتر المحمول الخاص بك " +"(راجع [تعليمات التثبيت](https://github.com/google/comprehensive-" +"rust#building)). يضمن هذا الأداء الأمثل عدم التأخير عند تغيير الصفحات. " +"استخدام جهاز الكمبيوتر المحمول الخاص بك سيسمح لك أيضًا بإصلاح الأخطاء " +"المطبعية عند اكتشافها من قبلك أو من قبل المشاركين في الدورة." #: src/running-the-course.md msgid "" @@ -1495,12 +1567,19 @@ msgid "" "offer a solution, e.g., by showing people where to find the relevant " "information in the standard library." msgstr "" +"دع المشاركون يحلون التمارين بأنفسهم أو في مجموعات صغيرة. نحن عادة نقضي 30-45 " +"دقيقة على التمارين في الصباح وبعد الظهر (بما في ذلك الوقت لمراجعة الحلول). " +"تأكد من سؤال الناس إذا كانوا عالقين أو إذا كان هناك أي شيء يمكنك المساعدة " +"به. عندما ترى أن عدة أشخاص لديهم نفس المشكلة، إشرح المشكلة والحل للجميع، على " +"سبيل المثال، من خلال إظهار الناس أين يجدون المعلومات ذات الصلة في مكتبة " +"standard library." #: src/running-the-course.md msgid "" "That is all, good luck running the course! We hope it will be as much fun " "for you as it has been for us!" msgstr "" +"هذا كل شيء، حظاً سعيداً في إدارة الدورة! نأمل أن تكون ممتعة لك كما كانت لنا!" #: src/running-the-course.md msgid "" @@ -1510,16 +1589,22 @@ msgid "" "Your students are also very welcome to [send us feedback](https://github.com/" "google/comprehensive-rust/discussions/100)!" msgstr "" +"يرجى [تقديم ملاحظات](https://github.com/google/comprehensive-rust/" +"discussions/86) بعد ذلك حتى نتمكن من تحسين الدورة باستمرار. نود أن نسمع ما " +"الذي نجح معك وما الذي يمكن تحسينه. طلابك مرحب بهم أيضاً [لإرسال ملاحظاتهم]" +"(https://github.com/google/comprehensive-rust/discussions/100)!" #: src/running-the-course/course-structure.md msgid "Rust Fundamentals" -msgstr "" +msgstr "أساسيات Rust" #: src/running-the-course/course-structure.md msgid "" "The first four days make up [Rust Fundamentals](../welcome-day-1.md). The " "days are fast paced and we cover a lot of ground!" msgstr "" +"الأيام الأربعة الأولى تشكل [أساسيات Rust](../welcome-day-1.md). الأيام سريعة " +"الوتيرة ونغطي الكثير من المواضيع!" #: src/running-the-course/course-structure.md #, fuzzy @@ -1528,145 +1613,147 @@ msgstr "هيكل الدورة" #: src/running-the-course/course-structure.md msgid "Day 1 Morning (2 hours and 5 minutes, including breaks)" -msgstr "" +msgstr "اليوم الأول صباحاً (ساعتان و5 دقائق، بما في ذلك فترات الاستراحة)" #: src/running-the-course/course-structure.md msgid "[Welcome](../welcome-day-1.md) (5 minutes)" -msgstr "" +msgstr "[ترحيب](../welcome-day-1.md) (5 دقائق)" #: src/running-the-course/course-structure.md msgid "[Hello, World](../hello-world.md) (15 minutes)" -msgstr "" +msgstr "[Hello, World](../hello-world.md) (15 دقيقة)" #: src/running-the-course/course-structure.md msgid "[Types and Values](../types-and-values.md) (40 minutes)" -msgstr "" +msgstr "[Types and Values](../types-and-values.md) (40 دقيقة)" #: src/running-the-course/course-structure.md msgid "[Control Flow Basics](../control-flow-basics.md) (40 minutes)" -msgstr "" +msgstr "[Control Flow Basics](../control-flow-basics.md) (40 دقيقة)" #: src/running-the-course/course-structure.md msgid "Day 1 Afternoon (2 hours and 35 minutes, including breaks)" -msgstr "" +msgstr "اليوم الأول بعد الظهر (ساعتان و35 دقيقة، بما في ذلك فترات الاستراحة)" #: src/running-the-course/course-structure.md msgid "[Tuples and Arrays](../tuples-and-arrays.md) (35 minutes)" -msgstr "" +msgstr "[Tuples و Arrays](../tuples-and-arrays.md) (35 دقيقة)" #: src/running-the-course/course-structure.md msgid "[References](../references.md) (55 minutes)" -msgstr "" +msgstr "[References](../references.md) (55 دقيقة)" #: src/running-the-course/course-structure.md msgid "[User-Defined Types](../user-defined-types.md) (50 minutes)" -msgstr "" +msgstr "[User-Defined Types](../user-defined-types.md) (50 دقيقة)" #: src/running-the-course/course-structure.md msgid "Day 2 Morning (2 hours and 10 minutes, including breaks)" -msgstr "" +msgstr "اليوم الثاني صباحاً (ساعتان و10 دقائق، بما في ذلك فترات الاستراحة)" #: src/running-the-course/course-structure.md msgid "[Welcome](../welcome-day-2.md) (3 minutes)" -msgstr "" +msgstr "[ترحيب](../welcome-day-2.md) (3 دقائق)" #: src/running-the-course/course-structure.md msgid "[Pattern Matching](../pattern-matching.md) (1 hour)" -msgstr "" +msgstr "[Pattern Matching](../pattern-matching.md) (ساعة واحدة)" #: src/running-the-course/course-structure.md msgid "[Methods and Traits](../methods-and-traits.md) (50 minutes)" -msgstr "" +msgstr "[Methods و Traits](../methods-and-traits.md) (50 دقيقة)" #: src/running-the-course/course-structure.md msgid "Day 2 Afternoon (3 hours and 15 minutes, including breaks)" -msgstr "" +msgstr "اليوم الثاني بعد الظهر (3 ساعات و15 دقيقة، بما في ذلك فترات الاستراحة)" #: src/running-the-course/course-structure.md msgid "[Generics](../generics.md) (45 minutes)" -msgstr "" +msgstr "[Generics](../generics.md) (45 دقيقة)" #: src/running-the-course/course-structure.md msgid "[Standard Library Types](../std-types.md) (1 hour)" -msgstr "" +msgstr "[Standard Library Types](../std-types.md) (ساعة واحدة)" #: src/running-the-course/course-structure.md msgid "[Standard Library Traits](../std-traits.md) (1 hour and 10 minutes)" -msgstr "" +msgstr "[Standard Library Traits](../std-traits.md) (ساعة و10 دقائق)" #: src/running-the-course/course-structure.md msgid "Day 3 Morning (2 hours and 20 minutes, including breaks)" -msgstr "" +msgstr "اليوم الثالث صباحاً (ساعتان و20 دقيقة، بما في ذلك فترات الاستراحة)" #: src/running-the-course/course-structure.md msgid "[Welcome](../welcome-day-3.md) (3 minutes)" -msgstr "" +msgstr "[ترحيب](../welcome-day-3.md) (3 دقائق)" #: src/running-the-course/course-structure.md msgid "[Memory Management](../memory-management.md) (1 hour)" -msgstr "" +msgstr "[Memory Management](../memory-management.md) (ساعة واحدة)" #: src/running-the-course/course-structure.md msgid "[Smart Pointers](../smart-pointers.md) (55 minutes)" -msgstr "" +msgstr "[Smart Pointers](../smart-pointers.md) (55 دقيقة)" #: src/running-the-course/course-structure.md msgid "Day 3 Afternoon (1 hour and 55 minutes, including breaks)" -msgstr "" +msgstr "اليوم الثالث بعد الظهر (ساعة و55 دقيقة، بما في ذلك فترات الاستراحة)" #: src/running-the-course/course-structure.md msgid "[Borrowing](../borrowing.md) (55 minutes)" -msgstr "" +msgstr "[Borrowing](../borrowing.md) (55 دقيقة)" #: src/running-the-course/course-structure.md msgid "[Lifetimes](../lifetimes.md) (50 minutes)" -msgstr "" +msgstr "[Lifetimes](../lifetimes.md) (50 دقيقة)" #: src/running-the-course/course-structure.md msgid "Day 4 Morning (2 hours and 40 minutes, including breaks)" -msgstr "" +msgstr "اليوم الرابع صباحاً (ساعتان و40 دقيقة، بما في ذلك فترات الاستراحة)" #: src/running-the-course/course-structure.md msgid "[Welcome](../welcome-day-4.md) (3 minutes)" -msgstr "" +msgstr "[ترحيب](../welcome-day-4.md) (3 دقائق)" #: src/running-the-course/course-structure.md msgid "[Iterators](../iterators.md) (45 minutes)" -msgstr "" +msgstr "[Iterators](../iterators.md) (45 دقيقة)" #: src/running-the-course/course-structure.md msgid "[Modules](../modules.md) (40 minutes)" -msgstr "" +msgstr "[Modules](../modules.md) (40 دقيقة)" #: src/running-the-course/course-structure.md msgid "[Testing](../testing.md) (45 minutes)" -msgstr "" +msgstr "[Testing](../testing.md) (45 دقيقة)" #: src/running-the-course/course-structure.md msgid "Day 4 Afternoon (2 hours and 15 minutes, including breaks)" -msgstr "" +msgstr "اليوم الرابع بعد الظهر (ساعتان و15 دقيقة، بما في ذلك فترات الاستراحة)" #: src/running-the-course/course-structure.md msgid "[Error Handling](../error-handling.md) (1 hour)" -msgstr "" +msgstr "[Error Handling](../error-handling.md) (ساعة واحدة)" #: src/running-the-course/course-structure.md msgid "[Unsafe Rust](../unsafe-rust.md) (1 hour and 5 minutes)" -msgstr "" +msgstr "[Unsafe Rust](../unsafe-rust.md) (ساعة و5 دقائق)" #: src/running-the-course/course-structure.md msgid "Deep Dives" -msgstr "" +msgstr "التعمق في المواضيع" #: src/running-the-course/course-structure.md msgid "" "In addition to the 4-day class on Rust Fundamentals, we cover some more " "specialized topics:" msgstr "" +"بالإضافة إلى الدورة التي تستمر 4 أيام حول أساسيات Rust، نغطي بعض المواضيع " +"المتخصصة الأخرى:" #: src/running-the-course/course-structure.md msgid "Rust in Android" -msgstr "" +msgstr "Rust في Android" #: src/running-the-course/course-structure.md msgid "" @@ -1674,6 +1761,8 @@ msgid "" "Rust for Android platform development. This includes interoperability with " "C, C++, and Java." msgstr "" +"التعمق في [Rust في Android](../android.md) هو دورة نصف يوم حول استخدام Rust " +"لتطوير منصة Android. يتضمن ذلك التوافق مع C، C++، و Java." #: src/running-the-course/course-structure.md msgid "" @@ -1683,6 +1772,11 @@ msgid "" "android/` directory into the root of your AOSP checkout. This will ensure " "that the Android build system sees the `Android.bp` files in `src/android/`." msgstr "" +"ستحتاج إلى [AOSP checkout](https://source.android.com/docs/setup/download/" +"downloading). قم بعمل checkout لمستودع [الدورة](https://github.com/google/" +"comprehensive-rust) على نفس الجهاز وانقل دليل `src/android/` إلى جذر AOSP " +"checkout الخاص بك. سيضمن ذلك أن نظام بناء Android يرى ملفات `Android.bp` في " +"`src/android/`." #: src/running-the-course/course-structure.md msgid "" @@ -1690,10 +1784,13 @@ msgid "" "all Android examples using `src/android/build_all.sh`. Read the script to " "see the commands it runs and make sure they work when you run them by hand." msgstr "" +"تأكد من أن `adb sync` يعمل مع المحاكي أو الجهاز الحقيقي وقم ببناء جميع أمثلة " +"Android مسبقًا باستخدام `src/android/build_all.sh`. اقرأ السكربت لترى الأوامر " +"التي يقوم بتشغيلها وتأكد من أنها تعمل عند تشغيلها يدويًا." #: src/running-the-course/course-structure.md msgid "Rust in Chromium" -msgstr "" +msgstr "Rust في Chromium" #: src/running-the-course/course-structure.md msgid "" @@ -1702,6 +1799,9 @@ msgid "" "Chromium's `gn` build system, bringing in third-party libraries (\"crates\") " "and C++ interoperability." msgstr "" +"التعمق في [Rust في Chromium](../chromium.md) هو دورة نصف يوم حول استخدام " +"Rust كجزء من متصفح Chromium. يتضمن استخدام Rust في نظام بناء Chromium `gn`، " +"وجلب مكتبات الطرف الثالث (\"crates\") والتوافق مع C++." #: src/running-the-course/course-structure.md msgid "" @@ -1709,10 +1809,13 @@ msgid "" "[recommended](../chromium/setup.md) for speed but any build will work. " "Ensure that you can run the Chromium browser that you've built." msgstr "" +"ستحتاج إلى أن تكون قادرًا على بناء Chromium --- يوصى ببناء مكون Debug " +"[recommended](../chromium/setup.md) للسرعة ولكن أي بناء سيعمل. تأكد من أنك " +"تستطيع تشغيل متصفح Chromium الذي قمت ببنائه." #: src/running-the-course/course-structure.md msgid "Bare-Metal Rust" -msgstr "" +msgstr "Rust على الأنظمة المدمجة (Bare-Metal)" #: src/running-the-course/course-structure.md msgid "" @@ -1720,6 +1823,9 @@ msgid "" "using Rust for bare-metal (embedded) development. Both microcontrollers and " "application processors are covered." msgstr "" +"التعمق في [Bare-Metal Rust](../bare-metal.md) هو دورة كاملة لمدة يوم حول " +"استخدام Rust لتطوير الأنظمة المدمجة (bare-metal). يتم تغطية كل من المتحكمات " +"الدقيقة (microcontrollers) ومعالجات التطبيقات (application processors)." #: src/running-the-course/course-structure.md msgid "" @@ -1728,16 +1834,21 @@ msgid "" "need to install a number of packages as described on the [welcome page](../" "bare-metal.md)." msgstr "" +"بالنسبة لجزء المتحكم الدقيق، ستحتاج إلى شراء لوحة التطوير [BBC micro:bit]" +"(https://microbit.org/) v2 مسبقًا. سيحتاج الجميع إلى تثبيت عدد من الـ " +"packages كما هو موضح في [صفحة الترحيب](../bare-metal.md)." #: src/running-the-course/course-structure.md msgid "Concurrency in Rust" -msgstr "" +msgstr "التزامن (Concurrency) في Rust" #: src/running-the-course/course-structure.md msgid "" "The [Concurrency in Rust](../concurrency.md) deep dive is a full day class " "on classical as well as `async`/`await` concurrency." msgstr "" +"التعمق في [Concurrency في Rust](../concurrency.md) هو دورة كاملة لمدة يوم " +"حول التزامن الكلاسيكي وكذلك `async`/`await`." #: src/running-the-course/course-structure.md msgid "" @@ -1745,62 +1856,65 @@ msgid "" "to go. You can then copy/paste the examples into `src/main.rs` to experiment " "with them:" msgstr "" +"ستحتاج إلى إعداد حزمة جديدة (crate) وتنزيل التبعيات (dependencies) وجعلها " +"جاهزة. يمكنك بعد ذلك نسخ/لصق الأمثلة في `src/main.rs` لتجربتها:" #: src/running-the-course/course-structure.md msgid "{{%course outline Concurrency}}" -msgstr "" +msgstr "{{%course outline Concurrency}}" #: src/running-the-course/course-structure.md msgid "Format" -msgstr "" +msgstr "التنسيق (Format)" #: src/running-the-course/course-structure.md msgid "" "The course is meant to be very interactive and we recommend letting the " "questions drive the exploration of Rust!" msgstr "" +"تم تصميم الدورة لتكون تفاعلية للغاية ونوصي بترك الأسئلة توجه لاستكشاف Rust!" #: src/running-the-course/keyboard-shortcuts.md msgid "There are several useful keyboard shortcuts in mdBook:" -msgstr "" +msgstr "هناك العديد من اختصارات لوحة المفاتيح المفيدة في mdBook:" #: src/running-the-course/keyboard-shortcuts.md msgid "Arrow-Left" -msgstr "" +msgstr "السهم-الأيسر (Arrow-Left)" #: src/running-the-course/keyboard-shortcuts.md msgid ": Navigate to the previous page." -msgstr "" +msgstr ": الانتقال إلى الصفحة السابقة." #: src/running-the-course/keyboard-shortcuts.md msgid "Arrow-Right" -msgstr "" +msgstr "السهم-الأيمن (Arrow-Right)" #: src/running-the-course/keyboard-shortcuts.md msgid ": Navigate to the next page." -msgstr "" +msgstr ": الانتقال إلى الصفحة التالية." #: src/running-the-course/keyboard-shortcuts.md src/cargo/code-samples.md msgid "Ctrl + Enter" -msgstr "" +msgstr "Ctrl + Enter" #: src/running-the-course/keyboard-shortcuts.md msgid ": Execute the code sample that has focus." -msgstr "" +msgstr ": تنفيذ عينة الكود التي تركز عليها." #: src/running-the-course/keyboard-shortcuts.md msgid "s" -msgstr "" +msgstr "s" #: src/running-the-course/keyboard-shortcuts.md msgid ": Activate the search bar." -msgstr "" +msgstr ": تفعيل شريط البحث." #: src/running-the-course/translations.md msgid "" "The course has been translated into other languages by a set of wonderful " "volunteers:" -msgstr "" +msgstr "تمت ترجمة الدورة إلى لغات أخرى من قبل مجموعة رائعة من المتطوعين:" #: src/running-the-course/translations.md msgid "" @@ -1809,6 +1923,10 @@ msgid "" "com/hugojacob), [@joaovicmendes](https://github.com/joaovicmendes), and " "[@henrif75](https://github.com/henrif75)." msgstr "" +"[البرتغالية البرازيلية](https://google.github.io/comprehensive-rust/pt-BR/) " +"بواسطة [@rastringer](https://github.com/rastringer), [@hugojacob](https://" +"github.com/hugojacob), [@joaovicmendes](https://github.com/joaovicmendes), و " +"[@henrif75](https://github.com/henrif75)." #: src/running-the-course/translations.md msgid "" @@ -1819,6 +1937,12 @@ msgid "" "github.com/superwhd), [@SketchK](https://github.com/SketchK), and [@nodmp]" "(https://github.com/nodmp)." msgstr "" +"[الصينية (المبسطة)](https://google.github.io/comprehensive-rust/zh-CN/) " +"بواسطة [@suetfei](https://github.com/suetfei), [@wnghl](https://github.com/" +"wnghl), [@anlunx](https://github.com/anlunx), [@kongy](https://github.com/" +"kongy), [@noahdragon](https://github.com/noahdragon), [@superwhd](https://" +"github.com/superwhd), [@SketchK](https://github.com/SketchK), و [@nodmp]" +"(https://github.com/nodmp)." #: src/running-the-course/translations.md msgid "" @@ -1828,6 +1952,11 @@ msgid "" "github.com/kuanhungchen), and [@johnathan79717](https://github.com/" "johnathan79717)." msgstr "" +"[الصينية (التقليدية)](https://google.github.io/comprehensive-rust/zh-TW/) " +"بواسطة [@hueich](https://github.com/hueich), [@victorhsieh](https://github." +"com/victorhsieh), [@mingyc](https://github.com/mingyc), [@kuanhungchen]" +"(https://github.com/kuanhungchen), و [@johnathan79717](https://github.com/" +"johnathan79717)." #: src/running-the-course/translations.md msgid "" @@ -1836,6 +1965,10 @@ msgid "" "momotaro1105), [@HidenoriKobayashi](https://github.com/HidenoriKobayashi) " "and [@kantasv](https://github.com/kantasv)." msgstr "" +"[اليابانية](https://google.github.io/comprehensive-rust/ja/) بواسطة [@CoinEZ-" +"JPN](https://github.com/CoinEZ), [@momotaro1105](https://github.com/" +"momotaro1105), [@HidenoriKobayashi](https://github.com/HidenoriKobayashi) و " +"[@kantasv](https://github.com/kantasv)." #: src/running-the-course/translations.md msgid "" @@ -1844,12 +1977,18 @@ msgid "" "[@jooyunghan](https://github.com/jooyunghan), and [@namhyung](https://github." "com/namhyung)." msgstr "" +"[الكورية](https://google.github.io/comprehensive-rust/ko/) بواسطة [@keispace]" +"(https://github.com/keispace), [@jiyongp](https://github.com/jiyongp), " +"[@jooyunghan](https://github.com/jooyunghan), و [@namhyung](https://github." +"com/namhyung)." #: src/running-the-course/translations.md msgid "" "[Spanish](https://google.github.io/comprehensive-rust/es/) by [@deavid]" "(https://github.com/deavid)." msgstr "" +"[الإسبانية](https://google.github.io/comprehensive-rust/es/) بواسطة [@deavid]" +"(https://github.com/deavid)." #: src/running-the-course/translations.md msgid "" @@ -1857,34 +1996,41 @@ msgid "" "cpp](https://github.com/git-user-cpp), [@yaremam](https://github.com/" "yaremam) and [@reta](https://github.com/reta)." msgstr "" +"[الأوكرانية](https://google.github.io/comprehensive-rust/uk/) بواسطة [@git-" +"user-cpp](https://github.com/git-user-cpp), [@yaremam](https://github.com/" +"yaremam) و [@reta](https://github.com/reta)." #: src/running-the-course/translations.md msgid "" "Use the language picker in the top-right corner to switch between languages." -msgstr "" +msgstr "استخدم منتقي اللغة في الزاوية العلوية اليمنى للتبديل بين اللغات." #: src/running-the-course/translations.md #, fuzzy msgid "Incomplete Translations" -msgstr "الترجمات" +msgstr "الترجمات غير المكتملة" #: src/running-the-course/translations.md msgid "" "There is a large number of in-progress translations. We link to the most " "recently updated translations:" -msgstr "" +msgstr "هناك عدد كبير من الترجمات قيد التقدم. نحن نربط بأحدث الترجمات المحدثة:" #: src/running-the-course/translations.md msgid "" "[Arabic](https://google.github.io/comprehensive-rust/ar/) by [@younies]" "(https://github.com/younies)" msgstr "" +"[العربية](https://google.github.io/comprehensive-rust/ar/) بواسطة [@younies]" +"(https://github.com/younies)" #: src/running-the-course/translations.md msgid "" "[Bengali](https://google.github.io/comprehensive-rust/bn/) by [@raselmandol]" "(https://github.com/raselmandol)." msgstr "" +"[البنغالية](https://google.github.io/comprehensive-rust/bn/) بواسطة " +"[@raselmandol](https://github.com/raselmandol)." #: src/running-the-course/translations.md msgid "" @@ -1892,12 +2038,17 @@ msgid "" "(https://github.com/KookaS), [@vcaen](https://github.com/vcaen) and " "[@AdrienBaudemont](https://github.com/AdrienBaudemont)." msgstr "" +"[الفرنسية](https://google.github.io/comprehensive-rust/fr/) بواسطة [@KookaS]" +"(https://github.com/KookaS), [@vcaen](https://github.com/vcaen) و " +"[@AdrienBaudemont](https://github.com/AdrienBaudemont)." #: src/running-the-course/translations.md msgid "" "[German](https://google.github.io/comprehensive-rust/de/) by [@Throvn]" "(https://github.com/Throvn) and [@ronaldfw](https://github.com/ronaldfw)." msgstr "" +"[الألمانية](https://google.github.io/comprehensive-rust/de/) بواسطة [@Throvn]" +"(https://github.com/Throvn) و [@ronaldfw](https://github.com/ronaldfw)." #: src/running-the-course/translations.md msgid "" @@ -1905,6 +2056,9 @@ msgid "" "[@henrythebuilder](https://github.com/henrythebuilder) and [@detro](https://" "github.com/detro)." msgstr "" +"[الإيطالية](https://google.github.io/comprehensive-rust/it/) بواسطة " +"[@henrythebuilder](https://github.com/henrythebuilder) و [@detro](https://" +"github.com/detro)." #: src/running-the-course/translations.md msgid "" @@ -1913,6 +2067,10 @@ msgid "" "get going. Translations are coordinated on the [issue tracker](https://" "github.com/google/comprehensive-rust/issues/282)." msgstr "" +"إذا كنت ترغب في المساعدة في هذا الجهد، يرجى الاطلاع على [تعليماتنا](https://" +"github.com/google/comprehensive-rust/blob/main/TRANSLATIONS.md) لمعرفة كيفية " +"البدء. يتم تنسيق الترجمات على [issue tracker](https://github.com/google/" +"comprehensive-rust/issues/282)." #: src/cargo.md msgid "" @@ -1922,15 +2080,19 @@ msgid "" "Cargo is and how it fits into the wider ecosystem and how it fits into this " "training." msgstr "" +"عندما تبدأ في قراءة Rust، ستتعرف قريبًا على [Cargo](https://doc.rust-lang.org/" +"cargo/)، الأداة القياسية المستخدمة في نظام Rust لبناء وتشغيل تطبيقات Rust. " +"هنا نريد أن نقدم نظرة عامة موجزة عن ماهية Cargo وكيف يتناسب مع النظام البيئي " +"الأوسع وكيف يتناسب مع هذا التدريب." #: src/cargo.md #, fuzzy msgid "Installation" -msgstr "الترجمات" +msgstr "التثبيت" #: src/cargo.md msgid "**Please follow the instructions on .**" -msgstr "" +msgstr "**يرجى اتباع التعليمات على .**" #: src/cargo.md msgid "" @@ -1938,6 +2100,9 @@ msgid "" "(`rustc`). You will also get `rustup`, a command line utility that you can " "use to install to different compiler versions." msgstr "" +"سيمنحك هذا أداة بناء Cargo (`cargo`) ومترجم Rust (`rustc`). ستحصل أيضًا على " +"`rustup`، وهي أداة سطر الأوامر التي يمكنك استخدامها لتثبيت إصدارات مختلفة من " +"المترجم." #: src/cargo.md msgid "" @@ -1949,6 +2114,14 @@ msgid "" "analyzer.github.io/manual.html#vimneovim), and many others. There is also a " "different IDE available called [RustRover](https://www.jetbrains.com/rust/)." msgstr "" +"بعد تثبيت Rust، يجب عليك تكوين محرر النصوص أو بيئة التطوير المتكاملة (IDE) " +"للعمل مع Rust. تقوم معظم المحررات بذلك عن طريق التحدث إلى [rust-analyzer]" +"(https://rust-analyzer.github.io/)، الذي يوفر وظيفة الإكمال التلقائي " +"والانتقال إلى التعريف لـ [VS Code](https://code.visualstudio.com/)، [Emacs]" +"(https://rust-analyzer.github.io/manual.html#emacs)، [Vim/Neovim](https://" +"rust-analyzer.github.io/manual.html#vimneovim)، والعديد من المحررات الأخرى. " +"هناك أيضًا بيئة تطوير متكاملة مختلفة متاحة تسمى [RustRover](https://www." +"jetbrains.com/rust/)." #: src/cargo.md msgid "" @@ -1957,6 +2130,9 @@ msgid "" "gets you an outdated rust version and may lead to unexpected behavior. The " "command would be:" msgstr "" +"على Debian/Ubuntu، يمكنك أيضًا تثبيت Cargo، مصدر Rust و [Rust formatter]" +"(https://github.com/rust-lang/rustfmt) عبر `apt`. ومع ذلك، ستحصل على إصدار " +"قديم من Rust وقد يؤدي ذلك إلى سلوك غير متوقع. سيكون الأمر:" #: src/cargo.md msgid "" @@ -1964,6 +2140,8 @@ msgid "" "may provide an outdated version. Therefore, it is recommended to install " "Rust from the official site." msgstr "" +"على macOS، يمكنك استخدام [Homebrew](https://brew.sh/) لتثبيت Rust، ولكن قد " +"يوفر هذا إصدارًا قديمًا. لذلك، يُوصى بتثبيت Rust من الموقع الرسمي." #: src/cargo/rust-ecosystem.md #, fuzzy @@ -1973,13 +2151,14 @@ msgstr "النظام البيئي ل Rust" #: src/cargo/rust-ecosystem.md msgid "" "The Rust ecosystem consists of a number of tools, of which the main ones are:" -msgstr "" +msgstr "يتكون النظام البيئي ل Rust من عدد من الأدوات، من أهمها:" #: src/cargo/rust-ecosystem.md msgid "" "`rustc`: the Rust compiler which turns `.rs` files into binaries and other " "intermediate formats." msgstr "" +"`rustc`: مترجم Rust الذي يحول ملفات `.rs` إلى ملفات تنفيذية وصيغ وسيطة أخرى." #: src/cargo/rust-ecosystem.md msgid "" @@ -1988,6 +2167,10 @@ msgid "" "pass them to `rustc` when building your project. Cargo also comes with a " "built-in test runner which is used to execute unit tests." msgstr "" +"`cargo`: مدير التبعية وأداة البناء لـ Rust. يعرف Cargo كيفية تنزيل التبعيات، " +"عادةً ما تكون مستضافة على ، وسوف يمررها إلى `rustc` عند " +"بناء مشروعك. يأتي Cargo أيضًا مع مشغل اختبارات مدمج يستخدم لتنفيذ الإختبارات " +"الوحدة." #: src/cargo/rust-ecosystem.md msgid "" @@ -1997,13 +2180,17 @@ msgid "" "standard library. You can have multiple versions of Rust installed at once " "and `rustup` will let you switch between them as needed." msgstr "" +"`rustup`: مثبت ومحدث أدوات Rust. تُستخدم هذه الأداة لتثبيت وتحديث `rustc` و " +"`cargo` عند إصدار نسخ جديدة من Rust. بالإضافة إلى ذلك، يمكن لـ `rustup` أيضًا " +"تنزيل التوثيق للمكتبة القياسية(standard library). يمكنك تثبيت عدة إصدارات من Rust في وقت واحد " +"و `rustup` سيسمح لك بالتبديل بينها حسب الحاجة." #: src/cargo/rust-ecosystem.md src/types-and-values/hello-world.md #: src/references/exclusive.md src/memory-management/move.md #: src/error-handling/try.md src/android/setup.md #: src/concurrency/async/async-await.md msgid "Key points:" -msgstr "" +msgstr "نقاط رئيسية:" #: src/cargo/rust-ecosystem.md msgid "" @@ -2011,53 +2198,72 @@ msgid "" "weeks. New releases maintain backwards compatibility with old releases --- " "plus they enable new functionality." msgstr "" +"لدى Rust جدول إصدارات سريع مع إصدار جديد كل ستة أسابيع. تحافظ الإصدارات " +"الجديدة على التوافق العكسي مع الإصدارات القديمة --- بالإضافة إلى إِتاحة " +"وظائف جديدة." #: src/cargo/rust-ecosystem.md msgid "" "There are three release channels: \"stable\", \"beta\", and \"nightly\"." msgstr "" +"هناك·ثلاث·قنوات·إصدار:·\"stable\"·(مستقر)،·\"beta\"·(بيتا)،" +"·و\"nightly\"·(ليلي)." #: src/cargo/rust-ecosystem.md msgid "" "New features are being tested on \"nightly\", \"beta\" is what becomes " "\"stable\" every six weeks." msgstr "" +"يتم اختبار الميزات الجديدة على \"nightly\" (ليلي)، و\"beta\" (بيتا) هو ما " +"يصبح \"stable\" (مستقر) كل ستة أسابيع." #: src/cargo/rust-ecosystem.md msgid "" "Dependencies can also be resolved from alternative [registries](https://doc." "rust-lang.org/cargo/reference/registries.html), git, folders, and more." msgstr "" +"يمكن أيضًا حل التبعيات من [سجلات](https://doc.rust-lang.org/cargo/reference/" +"registries.html) بديلة، git، المجلدات، والمزيد." #: src/cargo/rust-ecosystem.md msgid "" "Rust also has [editions](https://doc.rust-lang.org/edition-guide/): the " "current edition is Rust 2021. Previous editions were Rust 2015 and Rust 2018." msgstr "" +"لدى Rust أيضًا [إصدارات](https://doc.rust-lang.org/edition-guide/): الإصدار " +"الحالي هو Rust 2021. الإصدارات السابقة كانت Rust 2015 و Rust 2018." #: src/cargo/rust-ecosystem.md msgid "" "The editions are allowed to make backwards incompatible changes to the " "language." msgstr "" +"تُسمح الإصدارات بإجراء تغييرات غير متوافقة (backwards incompatible) مع " +"الإصدارات السابقة على اللغة." #: src/cargo/rust-ecosystem.md msgid "" "To prevent breaking code, editions are opt-in: you select the edition for " "your crate via the `Cargo.toml` file." msgstr "" +"لتجنب إفساد الكود (breaking code)، تكون الإصدارات اختيارية (opt-in): يمكنك " +"اختيار الإصدار لمكتبتك عبر ملف `Cargo.toml`." #: src/cargo/rust-ecosystem.md msgid "" "To avoid splitting the ecosystem, Rust compilers can mix code written for " "different editions." msgstr "" +"لتجنب تقسيم النظام البيئي، يمكن لمترجمات Rust مزج الكود المكتوب لإصدارات " +"مختلفة." #: src/cargo/rust-ecosystem.md msgid "" "Mention that it is quite rare to ever use the compiler directly not through " "`cargo` (most users never do)." msgstr "" +"اذكر أنه من النادر جدًا استخدام المترجم مباشرةً دون استخدام `cargo` (معظم " +"المستخدمين لا يفعلون ذلك)." #: src/cargo/rust-ecosystem.md msgid "" @@ -2065,45 +2271,56 @@ msgid "" "comprehensive tool. It is capable of many advanced features including but " "not limited to:" msgstr "" +"قد يكون من المفيد الإشارة إلى أن Cargo نفسه هو أداة قوية وشاملة للغاية. إنه " +"قادر على العديد من الميزات المتقدمة بما في ذلك على سبيل المثال لا الحصر:" #: src/cargo/rust-ecosystem.md msgid "Project/package structure" -msgstr "" +msgstr "هيكل المشروع/الحزمة (Project/package structure)" #: src/cargo/rust-ecosystem.md msgid "[workspaces](https://doc.rust-lang.org/cargo/reference/workspaces.html)" msgstr "" +"[مساحات العمل](https://doc.rust-lang.org/cargo/reference/workspaces.html)" #: src/cargo/rust-ecosystem.md msgid "Dev Dependencies and Runtime Dependency management/caching" msgstr "" +"تبعيات التطوير (Dev Depenedency) و إدارة/تخزين مُؤَقَّتٌ للتبعيات وقت التشغيل" +"التشغيل (Runtime Dependency management/caching)" #: src/cargo/rust-ecosystem.md msgid "" "[build scripting](https://doc.rust-lang.org/cargo/reference/build-scripts." "html)" msgstr "" +"[برمجة البناء (build scripting)](https://doc.rust-lang.org/cargo/reference/" +"build-scripts.html)" #: src/cargo/rust-ecosystem.md msgid "" "[global installation](https://doc.rust-lang.org/cargo/commands/cargo-install." "html)" msgstr "" +"[التثبيت الشامل](https://doc.rust-lang.org/cargo/commands/cargo-install.html)" #: src/cargo/rust-ecosystem.md msgid "" "It is also extensible with sub command plugins as well (such as [cargo " "clippy](https://github.com/rust-lang/rust-clippy))." msgstr "" +"كما أنه قابل للتوسعة باستخدام ملحقات الأوامر الفرعية (sub command plugins) " +"أيضًا (مثل [cargo clippy](https://github.com/rust-lang/rust-clippy))." #: src/cargo/rust-ecosystem.md msgid "" "Read more from the [official Cargo Book](https://doc.rust-lang.org/cargo/)" msgstr "" +"اقرأ المزيد من [الكتاب الرسمي لـ Cargo](https://doc.rust-lang.org/cargo/)" #: src/cargo/code-samples.md msgid "Code Samples in This Training" -msgstr "" +msgstr "عينات الكود (Code Samples) في هذا التدريب" #: src/cargo/code-samples.md msgid "" @@ -2111,6 +2328,8 @@ msgid "" "which can be executed through your browser. This makes the setup much easier " "and ensures a consistent experience for everyone." msgstr "" +"في هذا التدريب، سنستكشف لغة Rust بشكل أساسي من خلال أمثلة يمكن تنفيذها عبر " +"المتصفح. هذا يجعل الإعداد أسهل بكثير ويضمن تجربة متسقة للجميع." #: src/cargo/code-samples.md msgid "" @@ -2118,34 +2337,41 @@ msgid "" "the exercises. On the last day, we will do a larger exercise which shows you " "how to work with dependencies and for that you need Cargo." msgstr "" +"لا يزال يُنصح بتثبيت Cargo: سيسهل عليك القيام بالتمارين. في اليوم الأخير، " +"سنقوم بتمرين أكبر يوضح لك كيفية العمل مع الاعتماديات (dependencies) ولهذا " +"تحتاج إلى Cargo." #: src/cargo/code-samples.md msgid "The code blocks in this course are fully interactive:" -msgstr "" +msgstr "كتل الأكواد (code blocks) في هذه الدورة تفاعلية بالكامل:" #: src/cargo/code-samples.md src/cargo/running-locally.md msgid "\"Edit me!\"" -msgstr "" +msgstr "\"حررني (Edit me)!\"" #: src/cargo/code-samples.md msgid "You can use " -msgstr "" +msgstr "يمكنك استخدام " #: src/cargo/code-samples.md msgid " to execute the code when focus is in the text box." -msgstr "" +msgstr "لتنفيذ الكود (code) عندما يكون التركيز في مربع النص." #: src/cargo/code-samples.md msgid "" "Most code samples are editable like shown above. A few code samples are not " "editable for various reasons:" msgstr "" +"معظم عينات الكود (code samples) قابلة للتحرير كما هو موضح أعلاه. بعض عينات " +"الكود غير قابلة للتحرير لأسباب مختلفة:" #: src/cargo/code-samples.md msgid "" "The embedded playgrounds cannot execute unit tests. Copy-paste the code and " "open it in the real Playground to demonstrate unit tests." msgstr "" +"لا يمكن للـ playgrounds المدمجة تنفيذ اختبارات الوحدة (unit tests). قم بنسخ " +"ولصق الكود (code) وافتحه في الـ Playground الحقيقي لعرض اختبارات الوحدة." #: src/cargo/code-samples.md msgid "" @@ -2153,11 +2379,14 @@ msgid "" "the page! This is the reason that the students should solve the exercises " "using a local Rust installation or via the Playground." msgstr "" +"تفقد الـ playgrounds المدمجة حالتها بمجرد التنقل بعيدًا عن الصفحة! هذا هو " +"السبب في أن الطلاب يجب أن يحلوا التمارين باستخدام تثبيت محلي لـ Rust أو عبر " +"الـ Playground." #: src/cargo/running-locally.md #, fuzzy msgid "Running Code Locally with Cargo" -msgstr "تشغيل Cargo محليًا" +msgstr "تشغيل الكود محليًا باستخدام Cargo" #: src/cargo/running-locally.md msgid "" @@ -2167,42 +2396,56 @@ msgid "" "should give you a working `rustc` and `cargo`. At the time of writing, the " "latest stable Rust release has these version numbers:" msgstr "" +"إذا كنت تريد تجربة الكود على نظامك الخاص، فستحتاج أولاً إلى تثبيت Rust. قم " +"بذلك باتباع [التعليمات في كتاب Rust](https://doc.rust-lang.org/book/ch01-01-" +"installation.html). يجب أن يمنحك هذا `rustc` و `cargo` يعملان. في وقت كتابة " +"هذا، تحتوي أحدث إصدارات Rust المستقرة على هذه الأرقام:" #: src/cargo/running-locally.md msgid "" "You can use any later version too since Rust maintains backwards " "compatibility." msgstr "" +"يمكنك استخدام أي إصدار لاحق أيضًا لأن Rust يحافظ على التوافق العكسي " +"(backwards compatibility)." #: src/cargo/running-locally.md msgid "" "With this in place, follow these steps to build a Rust binary from one of " "the examples in this training:" msgstr "" +"مع وجود هذا، اتبع هذه الخطوات لبناء ملف ثنائي (binary) لـ Rust من أحد " +"الأمثلة في هذا التدريب:" #: src/cargo/running-locally.md msgid "Click the \"Copy to clipboard\" button on the example you want to copy." msgstr "" +"انقر على زر \"نسخ إلى الحافظة (Copy to clipboard)\" على المثال الذي تريد " +"نسخه." #: src/cargo/running-locally.md msgid "" "Use `cargo new exercise` to create a new `exercise/` directory for your code:" -msgstr "" +msgstr "استخدم `cargo new exercise` لإنشاء دليل جديد `exercise/` لكودك:" #: src/cargo/running-locally.md msgid "" "Navigate into `exercise/` and use `cargo run` to build and run your binary:" msgstr "" +"انتقل إلى `exercise/` واستخدم `cargo run` لبناء وتشغيل الملف الثنائي الخاص " +"بك:" #: src/cargo/running-locally.md msgid "" "Replace the boiler-plate code in `src/main.rs` with your own code. For " "example, using the example on the previous page, make `src/main.rs` look like" msgstr "" +"استبدل الكود النموذجي في `src/main.rs` بكودك الخاص. على سبيل المثال، " +"باستخدام المثال في الصفحة السابقة، اجعل `src/main.rs` يبدو كالتالي:" #: src/cargo/running-locally.md msgid "Use `cargo run` to build and run your updated binary:" -msgstr "" +msgstr "استخدم `cargo run` لبناء وتشغيل الملف الثنائي المحدث الخاص بك:" #: src/cargo/running-locally.md msgid "" @@ -2211,6 +2454,10 @@ msgid "" "debug/` for a normal debug build. Use `cargo build --release` to produce an " "optimized release build in `target/release/`." msgstr "" +"استخدم `cargo check` للتحقق بسرعة من مشروعك بحثًا عن الأخطاء، واستخدم `cargo " +"build` لترجمته دون تشغيله. ستجد المخرجات في `target/debug/` لبناء تصحيح " +"عادي. استخدم `cargo build --release` لإنتاج بناء إصدار محسن في `target/" +"release/`." #: src/cargo/running-locally.md msgid "" @@ -2218,6 +2465,9 @@ msgid "" "run `cargo` commands, it will automatically download and compile missing " "dependencies for you." msgstr "" +"يمكنك إضافة التبعيات (dependencies) لمشروعك عن طريق تحرير `Cargo.toml`. عند " +"تشغيل أوامر `cargo`، سيقوم تلقائيًا بتنزيل وتجميع التبعيات (dependencies) " +"المفقودة لك." #: src/cargo/running-locally.md msgid "" @@ -2225,46 +2475,56 @@ msgid "" "editor. It will make their life easier since they will have a normal " "development environment." msgstr "" +"حاول تشجيع المشاركين في الفصل على تثبيت Cargo واستخدام محرر محلي (local " +"editor). سيسهل ذلك حياتهم لأنهم سيكون لديهم بيئة تطوير عادية (normal " +"development environment)." #: src/welcome-day-1.md #, fuzzy msgid "Welcome to Day 1" -msgstr "مرحبًا" +msgstr "مرحبًا بكم في اليوم الأول" #: src/welcome-day-1.md msgid "" "This is the first day of Rust Fundamentals. We will cover a lot of ground " "today:" -msgstr "" +msgstr "هذا هو اليوم الأول من أساسيات Rust. سنغطي الكثير من المواضيع اليوم:" #: src/welcome-day-1.md msgid "" "Basic Rust syntax: variables, scalar and compound types, enums, structs, " "references, functions, and methods." msgstr "" +"بنية Rust الأساسية: المتغيرات، الأنواع العددية والمركبة، التعدادات (enums)، " +"الهياكل (structs)، المراجع (references)، الدوال (functions)، والطرق " +"(methods)." #: src/welcome-day-1.md #, fuzzy msgid "Types and type inference." -msgstr "استنباط النوع " +msgstr "الأنواع (Types) واستنباط النوع (type inference)" #: src/welcome-day-1.md msgid "Control flow constructs: loops, conditionals, and so on." msgstr "" +"بنيات التحكم في التدفق (Control flow constructs): الحلقات (loops)، العبارات " +"الشرطية (conditionals)، وهكذا." #: src/welcome-day-1.md msgid "User-defined types: structs and enums." -msgstr "" +msgstr "الأنواع المعرفة من قبل المستخدم: الهياكل (structs) والتعدادات (enums)." #: src/welcome-day-1.md msgid "Pattern matching: destructuring enums, structs, and arrays." msgstr "" +"مطابقة الأنماط: تفكيك التعدادات (destructuring enums)، الهياكل (structs)، " +"والمصفوفات (arrays)." #: src/welcome-day-1.md src/welcome-day-2.md src/welcome-day-3.md #: src/welcome-day-4.md src/concurrency/welcome.md #: src/concurrency/welcome-async.md msgid "Schedule" -msgstr "" +msgstr "الجدول الزمني" #: src/welcome-day-1.md src/welcome-day-1-afternoon.md src/welcome-day-2.md #: src/welcome-day-2-afternoon.md src/welcome-day-3.md @@ -2272,44 +2532,48 @@ msgstr "" #: src/welcome-day-4-afternoon.md src/concurrency/welcome.md #: src/concurrency/welcome-async.md msgid "In this session:" -msgstr "" +msgstr "في هذه الجلسة:" #: src/welcome-day-1.md msgid "[Welcome](./welcome-day-1.md) (5 minutes)" -msgstr "" +msgstr "[مرحبًا](./welcome-day-1.md) (5 دقائق)" #: src/welcome-day-1.md msgid "[Hello, World](./hello-world.md) (15 minutes)" -msgstr "" +msgstr "[Hello, World](./hello-world.md) (15 دقيقة)" #: src/welcome-day-1.md msgid "[Types and Values](./types-and-values.md) (40 minutes)" -msgstr "" +msgstr "[الأنواع والقيم (Types and Values)](./types-and-values.md) (40 دقيقة)" #: src/welcome-day-1.md msgid "[Control Flow Basics](./control-flow-basics.md) (40 minutes)" msgstr "" +"[أساسيات التحكم في التدفق (Control Flow Basics)](./control-flow-basics.md) " +"(40 دقيقة)" #: src/welcome-day-1.md msgid "" "Including 10 minute breaks, this session should take about 2 hours and 5 " "minutes" msgstr "" +"بما في ذلك فترات استراحة لمدة 10 دقائق، يجب أن تستغرق هذه الجلسة حوالي " +"ساعتين و5 دقائق" #: src/welcome-day-1.md msgid "Please remind the students that:" -msgstr "" +msgstr "يرجى تذكير الطلاب بأن:" #: src/welcome-day-1.md msgid "" "They should ask questions when they get them, don't save them to the end." -msgstr "" +msgstr "يجب عليهم طرح الأسئلة عندما يحصلون عليها، لا يحتفظون بها حتى النهاية." #: src/welcome-day-1.md msgid "" "The class is meant to be interactive and discussions are very much " "encouraged!" -msgstr "" +msgstr "الفصل الدراسي مصمم ليكون تفاعليًا ويتم تشجيع النقاشات بشكل كبير!" #: src/welcome-day-1.md msgid "" @@ -2318,11 +2582,15 @@ msgid "" "It can be hard to find the right balance, but err on the side of allowing " "discussions since they engage people much more than one-way communication." msgstr "" +"بصفتك مدربًا، يجب أن تحاول إبقاء النقاشات ذات صلة، أي إبقاء النقاشات متعلقة " +"بكيفية قيام Rust بالأشياء مقابل بعض اللغات الأخرى. قد يكون من الصعب العثور " +"على التوازن الصحيح، ولكن من الأفضل السماح بالنقاشات لأنها تشرك الناس أكثر " +"بكثير من التواصل في اتجاه واحد (one-way communication)." #: src/welcome-day-1.md msgid "" "The questions will likely mean that we talk about things ahead of the slides." -msgstr "" +msgstr "من المحتمل أن تعني الأسئلة أننا سنتحدث عن الأشياء قبل الشرائح." #: src/welcome-day-1.md msgid "" @@ -2330,6 +2598,8 @@ msgid "" "Remember that the slides are just a support and you are free to skip them as " "you like." msgstr "" +"هذا مقبول تمامًا! التكرار جزء مهم من التعلم. تذكر أن الشرائح هي مجرد دعم وأنت " +"حر في تخطيها كما تشاء." #: src/welcome-day-1.md msgid "" @@ -2337,6 +2607,9 @@ msgid "" "should have immediate parallels in other languages. The more advanced parts " "of Rust come on the subsequent days." msgstr "" +"الفكرة في اليوم الأول هي عرض الأشياء \"الأساسية\" في Rust التي يجب أن يكون " +"لها نظائر فورية في لغات البرمجة الأخرى. تأتي الأجزاء الأكثر تقدمًا من Rust في " +"الأيام التالية." #: src/welcome-day-1.md msgid "" @@ -2346,6 +2619,10 @@ msgid "" "The times listed here are a suggestion in order to keep the course on " "schedule. Feel free to be flexible and adjust as necessary!" msgstr "" +"إذا كنت تدرس هذا في الفصل الدراسي، فهذا مكان جيد لمراجعة الجدول الزمني. لاحظ " +"أن هناك تمرينًا في نهاية كل جزء، يليه استراحة. خطط لتغطية حل التمرين بعد " +"الاستراحة. الأوقات المدرجة هنا هي اقتراح للحفاظ على سير الدورة وفقًا للجدول " +"الزمني. لا تتردد في أن تكون مرنًا وتعدل حسب الضرورة!" #: src/hello-world.md src/types-and-values.md src/control-flow-basics.md #: src/tuples-and-arrays.md src/references.md src/user-defined-types.md @@ -2359,202 +2636,220 @@ msgstr "" #: src/concurrency/async-control-flow.md src/concurrency/async-pitfalls.md #: src/concurrency/async-exercises.md msgid "In this segment:" -msgstr "" +msgstr "في هذا الجزء:" #: src/hello-world.md msgid "[What is Rust?](./hello-world/what-is-rust.md) (10 minutes)" -msgstr "" +msgstr "[ما هو Rust؟](./hello-world/what-is-rust.md) (10 دقائق)" #: src/hello-world.md msgid "[Benefits of Rust](./hello-world/benefits.md) (3 minutes)" -msgstr "" +msgstr "[فوائد Rust](./hello-world/benefits.md) (3 دقائق)" #: src/hello-world.md msgid "[Playground](./hello-world/playground.md) (2 minutes)" -msgstr "" +msgstr "[Playground](./hello-world/playground.md) (2 دقائق)" #: src/hello-world.md src/concurrency/send-sync.md msgid "This segment should take about 15 minutes" -msgstr "" +msgstr "يجب أن يستغرق هذا الجزء حوالي 15 دقيقة" #: src/hello-world/what-is-rust.md msgid "" "Rust is a new programming language which had its [1.0 release in 2015]" "(https://blog.rust-lang.org/2015/05/15/Rust-1.0.html):" msgstr "" +"Rust هي لغة برمجة جديدة تم إصدار نسختها [1.0 في عام 2015](https://blog.rust-" +"lang.org/2015/05/15/Rust-1.0.html):" #: src/hello-world/what-is-rust.md msgid "Rust is a statically compiled language in a similar role as C++" msgstr "" +"Rust هي لغة مترجمة بشكل ثابت (statically compiled) وتؤدي دورًا مشابهًا لـ C++" #: src/hello-world/what-is-rust.md msgid "`rustc` uses LLVM as its backend." -msgstr "" +msgstr "`rustc` يستخدم LLVM كخلفية له." #: src/hello-world/what-is-rust.md msgid "" "Rust supports many [platforms and architectures](https://doc.rust-lang.org/" "nightly/rustc/platform-support.html):" msgstr "" +"Rust يدعم العديد من [المنصات والهياكل](https://doc.rust-lang.org/nightly/" +"rustc/platform-support.html):" #: src/hello-world/what-is-rust.md msgid "x86, ARM, WebAssembly, ..." -msgstr "" +msgstr "x86، ARM، WebAssembly، ..." #: src/hello-world/what-is-rust.md msgid "Linux, Mac, Windows, ..." -msgstr "" +msgstr "Linux، Mac، Windows، ..." #: src/hello-world/what-is-rust.md msgid "Rust is used for a wide range of devices:" -msgstr "" +msgstr "يُستخدم Rust لمجموعة واسعة من الأجهزة:" #: src/hello-world/what-is-rust.md msgid "firmware and boot loaders," -msgstr "" +msgstr "البرامج الثابتة (firmware) ومحملات الإقلاع (boot loaders)," #: src/hello-world/what-is-rust.md msgid "smart displays," -msgstr "" +msgstr "الشاشات الذكية," #: src/hello-world/what-is-rust.md msgid "mobile phones," -msgstr "" +msgstr "الهواتف المحمولة," #: src/hello-world/what-is-rust.md msgid "desktops," -msgstr "" +msgstr "أجهزة الكمبيوتر المكتبية," #: src/hello-world/what-is-rust.md msgid "servers." -msgstr "" +msgstr "الخوادم." #: src/hello-world/what-is-rust.md msgid "Rust fits in the same area as C++:" -msgstr "" +msgstr "Rust يناسب نفس مجال C++:" #: src/hello-world/what-is-rust.md msgid "High flexibility." -msgstr "" +msgstr "مرونة عالية." #: src/hello-world/what-is-rust.md msgid "High level of control." -msgstr "" +msgstr "مستوى عالٍ من التحكم." #: src/hello-world/what-is-rust.md msgid "" "Can be scaled down to very constrained devices such as microcontrollers." msgstr "" +"يمكن تقليصه ليعمل على الأجهزة ذات الموارد المحدودة مثل المتحكمات الدقيقة " +"(microcontrollers)." #: src/hello-world/what-is-rust.md msgid "Has no runtime or garbage collection." -msgstr "" +msgstr "لا يحتوي على وقت تشغيل (runtime) أو جمع القمامة (garbage collection)." #: src/hello-world/what-is-rust.md msgid "Focuses on reliability and safety without sacrificing performance." -msgstr "" +msgstr "يركز على الموثوقية والأمان دون التضحية بالأداء." #: src/hello-world/benefits.md msgid "Some unique selling points of Rust:" -msgstr "" +msgstr "بعض نقاط البيع الفريدة لـ Rust:" #: src/hello-world/benefits.md msgid "" "_Compile time memory safety_ - whole classes of memory bugs are prevented at " "compile time" msgstr "" +"أمان الذاكرة وقت الترجمة (Compile time memory safety) - يتم منع فئات كاملة " +"من أخطاء الذاكرة أثناء وقت الترجمة" #: src/hello-world/benefits.md msgid "No uninitialized variables." -msgstr "" +msgstr "لا توجد متغيرات غير مهيأة (uninitialized variables)." #: src/hello-world/benefits.md msgid "No double-frees." -msgstr "" +msgstr "لا يوجد تحرير مزدوج للذاكرة (double-frees)." #: src/hello-world/benefits.md msgid "No use-after-free." -msgstr "" +msgstr "لا يوجد استخدام بعد التحرير (use-after-free)." #: src/hello-world/benefits.md msgid "No `NULL` pointers." -msgstr "" +msgstr "لا توجد مؤشرات `NULL`." #: src/hello-world/benefits.md msgid "No forgotten locked mutexes." -msgstr "" +msgstr "لا توجد أقفال متروكة (forgotten locked mutexes)." #: src/hello-world/benefits.md msgid "No data races between threads." -msgstr "" +msgstr "لا توجد سباقات بيانات بين الخيوط (data races between threads)." #: src/hello-world/benefits.md msgid "No iterator invalidation." -msgstr "" +msgstr "لا يوجد إبطال للمكررات (iterator invalidation)." #: src/hello-world/benefits.md msgid "" "_No undefined runtime behavior_ - what a Rust statement does is never left " "unspecified" msgstr "" +"لا يوجد سلوك غير محدد وقت التشغيل (undefined runtime behavior) - ما يفعله " +"تصريح Rust لا يُترك غير محدد." #: src/hello-world/benefits.md msgid "Array access is bounds checked." msgstr "" +"يتم التحقق من حدود الوصول إلى المصفوفة (Array access is bounds checked)." #: src/hello-world/benefits.md msgid "Integer overflow is defined (panic or wrap-around)." msgstr "" +"يتم تعريف تجاوز السعة العددية (Integer overflow) (إما panic أو wrap-around)." #: src/hello-world/benefits.md msgid "" "_Modern language features_ - as expressive and ergonomic as higher-level " "languages" msgstr "" +"ميزات اللغة الحديثة (Modern language features) - معبرة ومريحة مثل اللغات " +"عالية المستوى." #: src/hello-world/benefits.md msgid "Enums and pattern matching." -msgstr "" +msgstr "التعدادات (Enums) ومطابقة الأنماط (pattern matching)." #: src/hello-world/benefits.md msgid "Generics." -msgstr "" +msgstr "الأنماط العامة (Generics)." #: src/hello-world/benefits.md msgid "No overhead FFI." -msgstr "" +msgstr "لا يوجد عبء إضافي لواجهة استدعاء الوظائف الأجنبية (FFI)." #: src/hello-world/benefits.md msgid "Zero-cost abstractions." -msgstr "" +msgstr "تجريدات بدون تكلفة (Zero-cost abstractions)." #: src/hello-world/benefits.md msgid "Great compiler errors." -msgstr "" +msgstr "أخطاء مترجم رائعة (Great compiler errors)." #: src/hello-world/benefits.md msgid "Built-in dependency manager." -msgstr "" +msgstr "مدير التبعيات المدمج (Built-in dependency manager)." #: src/hello-world/benefits.md msgid "Built-in support for testing." -msgstr "" +msgstr "دعم مدمج للاختبار (Built-in support for testing)." #: src/hello-world/benefits.md msgid "Excellent Language Server Protocol support." -msgstr "" +msgstr "دعم ممتاز لبروتوكول خادم اللغة (Language Server Protocol)." #: src/hello-world/benefits.md msgid "" "Do not spend much time here. All of these points will be covered in more " "depth later." msgstr "" +"لا تقضِ الكثير من الوقت هنا. سيتم تغطية جميع هذه النقاط بمزيد من العمق لاحقًا." #: src/hello-world/benefits.md msgid "" "Make sure to ask the class which languages they have experience with. " "Depending on the answer you can highlight different features of Rust:" msgstr "" +"تأكد من سؤال الفصل عن اللغات التي لديهم خبرة بها. بناءً على الإجابة، يمكنك " +"تسليط الضوء على ميزات مختلفة لـ Rust:" #: src/hello-world/benefits.md msgid "" @@ -2563,6 +2858,11 @@ msgid "" "have the memory unsafety issues. In addition, you get a modern language with " "constructs like pattern matching and built-in dependency management." msgstr "" +"الخبرة مع C أو C++: يقضي Rust على فئة كاملة من أخطاء وقت التشغيل (runtime " +"errors) عبر مدقق الاقتراض (borrow checker). تحصل على أداء مثل C و C++، ولكن " +"بدون مشاكل عدم أمان الذاكرة. بالإضافة إلى ذلك، تحصل على لغة حديثة مع تراكيب " +"مثل مطابقة الأنماط (pattern matching) وإدارة التبعيات المدمجة (built-in " +"dependency management)." #: src/hello-world/benefits.md msgid "" @@ -2571,6 +2871,10 @@ msgid "" "addition you get fast and predictable performance like C and C++ (no garbage " "collector) as well as access to low-level hardware (should you need it)." msgstr "" +"الخبرة مع Java، Go، Python، JavaScript...: تحصل على نفس أمان الذاكرة كما في " +"تلك اللغات، بالإضافة إلى شعور لغة عالية المستوى مماثل. بالإضافة إلى ذلك، " +"تحصل على أداء سريع ومتوقع مثل C و C++ (بدون جامع القمامة (garbage " +"collector)) وكذلك الوصول إلى الأجهزة منخفضة المستوى (إذا كنت بحاجة إليها)." #: src/hello-world/playground.md msgid "" @@ -2579,12 +2883,17 @@ msgid "" "this course. Try running the \"hello-world\" program it starts with. It " "comes with a few handy features:" msgstr "" +"يوفر [Rust Playground](https://play.rust-lang.org/) طريقة سهلة لتشغيل برامج " +"Rust القصيرة، وهو الأساس للأمثلة والتمارين في هذه الدورة. جرب تشغيل برنامج " +"\"hello-world\" الذي يبدأ به. يأتي مع بعض الميزات المفيدة:" #: src/hello-world/playground.md msgid "" "Under \"Tools\", use the `rustfmt` option to format your code in the " "\"standard\" way." msgstr "" +"تحت \"الأدوات\"، استخدم خيار `rustfmt` لتنسيق الكود الخاص بك بالطريقة " +"\"القياسية\"." #: src/hello-world/playground.md msgid "" @@ -2592,12 +2901,17 @@ msgid "" "checks, less optimization) and Release (fewer runtime checks, lots of " "optimization). These are accessible under \"Debug\" at the top." msgstr "" +"لدى Rust ملفان رئيسيان لتوليد الكود: Debug (فحص إضافي في وقت التشغيل، تحسين " +"أقل) و Release (فحص أقل في وقت التشغيل، تحسين كبير). يمكن الوصول إليهما تحت " +"\"Debug\" في الأعلى." #: src/hello-world/playground.md msgid "" "If you're interested, use \"ASM\" under \"...\" to see the generated " "assembly code." msgstr "" +"إذا كنت مهتمًا، استخدم \"ASM\" تحت \"...\" لرؤية كود التجميع (assembly code) " +"الناتج." #: src/hello-world/playground.md msgid "" @@ -2607,68 +2921,73 @@ msgid "" "students who want to know more about Rust's optimizations or generated " "assembly." msgstr "" +"عندما يتوجه الطلاب إلى الاستراحة، شجعهم على فتح الملعب (playground) والتجربة " +"قليلاً. شجعهم على إبقاء علامة تبويب المتصفح مفتوحة وتجربة الأشياء خلال بقية الدورة. هذا " +"مفيد بشكل خاص للطلاب المتقدمين الذين يريدون معرفة المزيد عن تحسينات Rust أو " +"كود التجميع (assembly) الناتج." #: src/types-and-values.md msgid "[Hello, World](./types-and-values/hello-world.md) (5 minutes)" -msgstr "" +msgstr "[Hello, World](./types-and-values/hello-world.md) (5 دقائق)" #: src/types-and-values.md msgid "[Variables](./types-and-values/variables.md) (5 minutes)" -msgstr "" +msgstr "[Variables](./types-and-values/variables.md) (5 دقائق)" #: src/types-and-values.md msgid "[Values](./types-and-values/values.md) (5 minutes)" -msgstr "" +msgstr "[القيم](./types-and-values/values.md) (5 دقائق)" #: src/types-and-values.md msgid "[Arithmetic](./types-and-values/arithmetic.md) (3 minutes)" -msgstr "" +msgstr "[الحساب](./types-and-values/arithmetic.md) (3 دقائق)" #: src/types-and-values.md msgid "[Type Inference](./types-and-values/inference.md) (3 minutes)" -msgstr "" +msgstr "[استنتاج النوع](./types-and-values/inference.md) (3 دقائق)" #: src/types-and-values.md msgid "[Exercise: Fibonacci](./types-and-values/exercise.md) (15 minutes)" -msgstr "" +msgstr "[تمرين: فيبوناتشي](./types-and-values/exercise.md) (15 دقائق)" #: src/types-and-values.md src/control-flow-basics.md src/modules.md msgid "This segment should take about 40 minutes" -msgstr "" +msgstr "يجب أن يستغرق هذا الجزء حوالي 40 دقيقة" #: src/types-and-values/hello-world.md msgid "" "Let us jump into the simplest possible Rust program, a classic Hello World " "program:" msgstr "" +"دعونا نبدأ بأبسط برنامج ممكن في Rust، وهو برنامج كلاسيكي لطباعة Hello World:" #: src/types-and-values/hello-world.md msgid "\"Hello 🌍!\"" -msgstr "" +msgstr "\"Hello 🌍!\"" #: src/types-and-values/hello-world.md msgid "What you see:" -msgstr "" +msgstr "ما تراه:" #: src/types-and-values/hello-world.md msgid "Functions are introduced with `fn`." -msgstr "" +msgstr "يتم تعريف الدوال باستخدام `fn`." #: src/types-and-values/hello-world.md msgid "Blocks are delimited by curly braces like in C and C++." -msgstr "" +msgstr "يتم تحديد الكتل باستخدام الأقواس المعقوفة مثل C و C++." #: src/types-and-values/hello-world.md msgid "The `main` function is the entry point of the program." -msgstr "" +msgstr "دالة `main` هي نقطة الدخول للبرنامج." #: src/types-and-values/hello-world.md msgid "Rust has hygienic macros, `println!` is an example of this." -msgstr "" +msgstr "Rust has hygienic macros, `println!` is an example of this." #: src/types-and-values/hello-world.md msgid "Rust strings are UTF-8 encoded and can contain any Unicode character." -msgstr "" +msgstr "سلاسل Rust مرمّزه بـ UTF-8 ويمكن أن تحتوي على أي حرف Unicode." #: src/types-and-values/hello-world.md msgid "" @@ -2676,22 +2995,28 @@ msgid "" "see a ton of it over the next four days so we start small with something " "familiar." msgstr "" +"تحاول هذه الشريحة تجعل الطلاب مرتاحين مع كود Rust. سيرون الكثير منه خلال " +"الأيام الأربعة القادمة لذا نبدأ بشيء صغير ومألوف." #: src/types-and-values/hello-world.md msgid "" "Rust is very much like other languages in the C/C++/Java tradition. It is " "imperative and it doesn't try to reinvent things unless absolutely necessary." msgstr "" +"Rust يشبه إلى حد كبير اللغات الأخرى في تقليد C/C++/Java. إنه لغة imperative " +"ولا تحاول إعادة اختراع الأشياء إلا إذا كان ذلك ضروريًا للغاية." #: src/types-and-values/hello-world.md msgid "Rust is modern with full support for things like Unicode." -msgstr "" +msgstr "Rust حديثة وتدعم بشكل كامل أشياء مثل Unicode." #: src/types-and-values/hello-world.md msgid "" "Rust uses macros for situations where you want to have a variable number of " "arguments (no function [overloading](../control-flow-basics/functions.md))." msgstr "" +"Rust يستخدم الماكروهات في الحالات التي تريد فيها الحصول على عدد متغير من " +"الوسائط (لا يوجد [overloading](../control-flow-basics/functions.md) للدوال)." #: src/types-and-values/hello-world.md msgid "" @@ -2700,6 +3025,10 @@ msgid "" "hygienic](https://veykril.github.io/tlborm/decl-macros/minutiae/hygiene." "html)." msgstr "" +"كون الماكروهات (macros) 'hygienic' يعني أنها لا تلتقط identifiers من scope " +"الذي تُستخدم فيه عن طريق الخطأ. في الواقع، ماكروهات Rust (macros) هي فقط " +"[hygienic جزئيًا](https://veykril.github.io/tlborm/decl-macros/minutiae/" +"hygiene.html)." #: src/types-and-values/hello-world.md msgid "" @@ -2708,29 +3037,39 @@ msgid "" "while it is not a functional language, it includes a range of [functional " "concepts](https://doc.rust-lang.org/book/ch13-00-functional-features.html)." msgstr "" +"Rust متعدد الأنماط (multi-paradigm). على سبيل المثال، يحتوي على ميزات قوية " +"لبرمجة الكائنات (object-oriented programming features)، وعلى الرغم من أنه " +"ليس لغة وظيفية، إلا أنه يتضمن مجموعة من المفاهيم الوظيفية (functional " +"concepts)." #: src/types-and-values/variables.md msgid "" "Rust provides type safety via static typing. Variable bindings are made with " "`let`:" msgstr "" +"Rust يوفر أمان النوع من خلال الكتابة الثابتة (static typing). يتم إنشاء " +"ارتباطات المتغيرات باستخدام `let`:" #: src/types-and-values/variables.md src/control-flow-basics/loops/for.md #: src/control-flow-basics/blocks-and-scopes.md msgid "\"x: {x}\"" -msgstr "" +msgstr "\"x: {x}\"" #: src/types-and-values/variables.md msgid "" "// x = 20;\n" " // println!(\"x: {x}\");\n" msgstr "" +"// x = 20;\n" +" // println!(\"x: {x}\");\n" #: src/types-and-values/variables.md msgid "" "Uncomment the `x = 20` to demonstrate that variables are immutable by " "default. Add the `mut` keyword to allow changes." msgstr "" +"قم بإلغاء التعليق على `x = 20` لإظهار أن المتغيرات غير قابلة للتغيير بشكل " +"افتراضي. أضف الكلمة المفتاحية `mut` للسماح بالتغييرات." #: src/types-and-values/variables.md msgid "" @@ -2738,104 +3077,109 @@ msgid "" "time, but type inference (covered later) allows the programmer to omit it in " "many cases." msgstr "" +"الـ `i32` هنا هو نوع المتغير (type). يجب أن يكون هذا معروفًا في وقت الترجمة " +"(compile time)، ولكن استنباط النوع (type inference) (الذي سيتم تغطيته لاحقًا) " +"يسمح للمبرمج بتجاهله في العديد من الحالات." #: src/types-and-values/values.md msgid "" "Here are some basic built-in types, and the syntax for literal values of " "each type." msgstr "" +"هنا بعض الأنواع المدمجة الأساسية (built-in types)، وصيغة القيم الحرفية " +"(literal values) لكل نوع (type)." #: src/types-and-values/values.md src/unsafe-rust/exercise.md msgid "Types" -msgstr "" +msgstr "الأنواع (Types)" #: src/types-and-values/values.md msgid "Literals" -msgstr "" +msgstr "القيم الحرفية (Literals)" #: src/types-and-values/values.md msgid "Signed integers" -msgstr "" +msgstr "الأعداد الصحيحة الموقعة، اي لها اشارة (Signed integers)" #: src/types-and-values/values.md msgid "`i8`, `i16`, `i32`, `i64`, `i128`, `isize`" -msgstr "" +msgstr "`i8`، `i16`، `i32`، `i64`، `i128`، `isize`" #: src/types-and-values/values.md msgid "`-10`, `0`, `1_000`, `123_i64`" -msgstr "" +msgstr "`-10`، `0`، `1_000`، `123_i64`" #: src/types-and-values/values.md msgid "Unsigned integers" -msgstr "" +msgstr "الأعداد الصحيحة غير الموقعة، اي ليس لها اشارة (Unsigned integers)" #: src/types-and-values/values.md msgid "`u8`, `u16`, `u32`, `u64`, `u128`, `usize`" -msgstr "" +msgstr "`u8`، `u16`، `u32`، `u64`، `u128`، `usize`" #: src/types-and-values/values.md msgid "`0`, `123`, `10_u16`" -msgstr "" +msgstr "`0`، `123`، `10_u16`" #: src/types-and-values/values.md msgid "Floating point numbers" -msgstr "" +msgstr "الأعداد العشرية (Floating point numbers)" #: src/types-and-values/values.md msgid "`f32`, `f64`" -msgstr "" +msgstr "`f32`، `f64`" #: src/types-and-values/values.md msgid "`3.14`, `-10.0e20`, `2_f32`" -msgstr "" +msgstr "`3.14`، `-10.0e20`، `2_f32`" #: src/types-and-values/values.md msgid "Unicode scalar values" -msgstr "" +msgstr "قيم يونيكود العددية (Unicode scalar values)" #: src/types-and-values/values.md src/android/aidl/types/primitives.md msgid "`char`" -msgstr "" +msgstr "`char`" #: src/types-and-values/values.md msgid "`'a'`, `'α'`, `'∞'`" -msgstr "" +msgstr "`'a'`، `'α'`، `'∞'`" #: src/types-and-values/values.md msgid "Booleans" -msgstr "" +msgstr "القيم المنطقية (Booleans)" #: src/types-and-values/values.md src/android/aidl/types/primitives.md msgid "`bool`" -msgstr "" +msgstr "`bool`" #: src/types-and-values/values.md msgid "`true`, `false`" -msgstr "" +msgstr "`true`، `false`" #: src/types-and-values/values.md msgid "The types have widths as follows:" -msgstr "" +msgstr "عرض الأنواع كما يلي:" #: src/types-and-values/values.md msgid "`iN`, `uN`, and `fN` are _N_ bits wide," -msgstr "" +msgstr "`iN`، `uN`، و `fN` عرضها _N_ بت،" #: src/types-and-values/values.md msgid "`isize` and `usize` are the width of a pointer," -msgstr "" +msgstr "`isize` و `usize` هما عرض المؤشر،" #: src/types-and-values/values.md msgid "`char` is 32 bits wide," -msgstr "" +msgstr "`char` عرضه 32 بت،" #: src/types-and-values/values.md msgid "`bool` is 8 bits wide." -msgstr "" +msgstr "`bool` عرضه 8 بت." #: src/types-and-values/values.md msgid "There are a few syntaxes which are not shown above:" -msgstr "" +msgstr "هناك بعض الصيغ التي لم يتم عرضها أعلاه:" #: src/types-and-values/values.md msgid "" @@ -2843,10 +3187,12 @@ msgid "" "`1_000` can be written as `1000` (or `10_00`), and `123_i64` can be written " "as `123i64`." msgstr "" +"يمكن حذف جميع الشرطات السفلية في الأرقام، فهي فقط من أجل الوضوح. لذلك يمكن " +"كتابة `1_000` كـ `1000` (أو `10_00`)، ويمكن كتابة `123_i64` كـ `123i64`." #: src/types-and-values/arithmetic.md msgid "\"result: {}\"" -msgstr "" +msgstr "\"النتيجة: {}\"" #: src/types-and-values/arithmetic.md msgid "" @@ -2854,10 +3200,13 @@ msgid "" "meaning should be clear: it takes three integers, and returns an integer. " "Functions will be covered in more detail later." msgstr "" +"هذه هي المرة الأولى التي نرى فيها دالة غير `main`، ولكن يجب أن يكون المعنى " +"واضحًا: إنها تأخذ ثلاثة أعداد صحيحة (integers)، وتعيد عددًا صحيحًا (integer). " +"سيتم تغطية الدوال (functions) بمزيد من التفصيل لاحقًا." #: src/types-and-values/arithmetic.md msgid "Arithmetic is very similar to other languages, with similar precedence." -msgstr "" +msgstr "الحساب مشابه جدًا للغات الأخرى، مع أسبقية مشابهة." #: src/types-and-values/arithmetic.md msgid "" @@ -2865,6 +3214,9 @@ msgid "" "actually undefined, and might do unknown things at runtime. In Rust, it's " "defined." msgstr "" +"ماذا عن تجاوز السعة للأعداد الصحيحة (integer overflow)؟ في C و C++، تجاوز " +"السعة للأعداد الصحيحة الموقعة (signed) غير معرف فعليًا، وقد يقوم بأشياء غير " +"معروفة أثناء التشغيل. في Rust، هو معرف." #: src/types-and-values/arithmetic.md msgid "" @@ -2874,22 +3226,31 @@ msgid "" "with method syntax, e.g., `(a * b).saturating_add(b * c).saturating_add(c * " "a)`." msgstr "" +"قم بتغيير `i32` إلى `i16` لرؤية تجاوز السعة للأعداد الصحيحة، والذي يسبب (panic) " +"(panic) في بناء التصحيح (debug build) ويلتف في بناء الإصدار (release build). " +"هناك خيارات أخرى، مثل التجاوز (overflowing)، التشبع (saturating)، والحمل " +"(carrying). يتم الوصول إليها باستخدام صيغة الدالة (method syntax)، مثل `(a * " +"b).saturating_add(b * c).saturating_add(c * a)`." #: src/types-and-values/arithmetic.md msgid "" "In fact, the compiler will detect overflow of constant expressions, which is " "why the example requires a separate function." msgstr "" +"في الواقع، سيكتشف المترجم (compiler) تجاوز السعة (overflow) للتعابير الثابتة " +"(constant expressions)، وهذا هو السبب في أن المثال يتطلب دالة منفصلة." #: src/types-and-values/inference.md msgid "Rust will look at how the variable is _used_ to determine the type:" -msgstr "" +msgstr "ستنظر Rust في كيفية _استخدام_ المتغير لتحديد النوع:" #: src/types-and-values/inference.md msgid "" "This slide demonstrates how the Rust compiler infers types based on " "constraints given by variable declarations and usages." msgstr "" +"توضح هذه الشريحة كيف يستنتج مترجم Rust الأنواع بناءً على القيود المقدمة من " +"انشاء المتغيرات (variable declarations) واستخداماتها." #: src/types-and-values/inference.md msgid "" @@ -2899,6 +3260,10 @@ msgid "" "of a type. The compiler does the job for us and helps us write more concise " "code." msgstr "" +"من المهم جدًا التأكيد على أن المتغيرات المعلنة بهذه الطريقة ليست من نوع " +"ديناميكي \"أي نوع\" يمكنه الاحتفاظ بأي بيانات. الكود الآلي الناتج عن هذا " +"التصريح مطابق للتصريح الصريح عن النوع. يقوم المترجم بالعمل نيابة عنا " +"ويساعدنا في كتابة كود أكثر اختصارًا." #: src/types-and-values/inference.md msgid "" @@ -2906,10 +3271,13 @@ msgid "" "`i32`. This sometimes appears as `{integer}` in error messages. Similarly, " "floating-point literals default to `f64`." msgstr "" +"عندما لا يوجد شيء يقيد نوع العدد الصحيح (integer literal)، فإن Rust تستخدم " +"افتراضيًا `i32`. يظهر هذا أحيانًا كـ `{integer}` في رسائل الخطأ. وبالمثل، " +"تستخدم الأعداد العشرية (floating-point literals) افتراضيًا `f64`." #: src/types-and-values/inference.md msgid "// ERROR: no implementation for `{float} == {integer}`\n" -msgstr "" +msgstr "// خطأ: لا يوجد تنفيذ لـ `{float} == {integer}`\n" #: src/types-and-values/exercise.md msgid "" @@ -2917,99 +3285,112 @@ msgid "" "number is calculated recursively as the sum of the n-1'th and n-2'th " "Fibonacci numbers." msgstr "" +"تبدأ متتالية فيبوناتشي بـ `[0,1]`. بالنسبة لـ n>1، يتم حساب العدد فيبوناتشي " +"الـ n عن طريق الاستدعاء الذاتي كمجموع للعدد فيبوناتشي الـ n-1 والعدد " +"فيبوناتشي الـ n-2." #: src/types-and-values/exercise.md msgid "" "Write a function `fib(n)` that calculates the n'th Fibonacci number. When " "will this function panic?" msgstr "" +"اكتب دالة `fib(n)` التي تحسب العدد فيبوناتشي الـ n. متى ستسبب هذه الدالة " +"(panic)؟" #: src/types-and-values/exercise.md msgid "// The base case.\n" -msgstr "" +msgstr "// الحالة الأساسية.\n" #: src/types-and-values/exercise.md src/control-flow-basics/exercise.md msgid "\"Implement this\"" -msgstr "" +msgstr "\"نفذ هذا\"" #: src/types-and-values/exercise.md msgid "// The recursive case.\n" -msgstr "" +msgstr "// الحالة العودية (recursive case).\n" #: src/types-and-values/exercise.md src/types-and-values/solution.md msgid "\"fib({n}) = {}\"" -msgstr "" +msgstr "\"fib({n}) = {}\"" #: src/control-flow-basics.md msgid "[if Expressions](./control-flow-basics/if.md) (4 minutes)" -msgstr "" +msgstr "[تعابير if](./control-flow-basics/if.md) (4 دقائق)" #: src/control-flow-basics.md msgid "[Loops](./control-flow-basics/loops.md) (5 minutes)" -msgstr "" +msgstr "[الحلقات (Loops)](./control-flow-basics/loops.md) (5 دقائق)" #: src/control-flow-basics.md msgid "" "[break and continue](./control-flow-basics/break-continue.md) (4 minutes)" -msgstr "" +msgstr "[break و continue](./control-flow-basics/break-continue.md) (4 دقائق)" #: src/control-flow-basics.md msgid "" "[Blocks and Scopes](./control-flow-basics/blocks-and-scopes.md) (5 minutes)" msgstr "" +"[الكتل (Blocks) والنطاقات (Scopes)](./control-flow-basics/blocks-and-scopes." +"md) (5 دقائق)" #: src/control-flow-basics.md msgid "[Functions](./control-flow-basics/functions.md) (3 minutes)" -msgstr "" +msgstr "[الدوال (Functions)](./control-flow-basics/functions.md) (3 دقائق)" #: src/control-flow-basics.md msgid "[Macros](./control-flow-basics/macros.md) (2 minutes)" -msgstr "" +msgstr "[الماكروز (Macros)](./control-flow-basics/macros.md) (2 دقائق)" #: src/control-flow-basics.md msgid "" "[Exercise: Collatz Sequence](./control-flow-basics/exercise.md) (15 minutes)" msgstr "" +"[تمرين: متتالية كولاتز (Collatz Sequence)](./control-flow-basics/exercise." +"md) (15 دقائق)" #: src/control-flow-basics/if.md msgid "`if` expressions" -msgstr "" +msgstr "تعابير `if`" #: src/control-flow-basics/if.md msgid "" "You use [`if` expressions](https://doc.rust-lang.org/reference/expressions/" "if-expr.html#if-expressions) exactly like `if` statements in other languages:" msgstr "" +"تستخدم [تعابير `if`](https://doc.rust-lang.org/reference/expressions/if-expr." +"html#if-expressions) تمامًا مثل جمل `if` في اللغات الأخرى:" #: src/control-flow-basics/if.md msgid "\"zero!\"" -msgstr "" +msgstr "\"صفر!\"" #: src/control-flow-basics/if.md msgid "\"biggish\"" -msgstr "" +msgstr "\"كبير نوعًا ما\"" #: src/control-flow-basics/if.md msgid "\"huge\"" -msgstr "" +msgstr "\"ضخم\"" #: src/control-flow-basics/if.md msgid "" "In addition, you can use `if` as an expression. The last expression of each " "block becomes the value of the `if` expression:" msgstr "" +"بالإضافة إلى ذلك، يمكنك استخدام `if` كتعبير. يصبح التعبير الأخير في كل كتلة " +"هو قيمة تعبير `if`:" #: src/control-flow-basics/if.md msgid "\"small\"" -msgstr "" +msgstr "\"صغير\"" #: src/control-flow-basics/if.md msgid "\"large\"" -msgstr "" +msgstr "\"كبير\"" #: src/control-flow-basics/if.md msgid "\"number size: {}\"" -msgstr "" +msgstr "\"حجم الرقم: {}\"" #: src/control-flow-basics/if.md msgid "" @@ -3017,6 +3398,9 @@ msgid "" "branch blocks must have the same type. Show what happens if you add `;` " "after `\"small\"` in the second example." msgstr "" +"لأن `if` هو تعبير ويجب أن يكون له نوع معين، يجب أن تكون كلا الكتلتين " +"الفرعيتين من نفس النوع. أظهر ما يحدث إذا أضفت `;` بعد `\"small\"` في المثال " +"الثاني." #: src/control-flow-basics/if.md msgid "" @@ -3024,14 +3408,16 @@ msgid "" "separate it from the next statement. Remove the `;` before `println!` to see " "the compiler error." msgstr "" +"عندما يتم استخدام `if` في تعبير، يجب أن يحتوي التعبير على `;` لفصله عن " +"الجملة التالية. قم بإزالة `;` قبل `println!` لرؤية خطأ المترجم." #: src/control-flow-basics/loops.md msgid "There are three looping keywords in Rust: `while`, `loop`, and `for`:" -msgstr "" +msgstr "هناك ثلاث كلمات مفتاحية للتكرار في Rust: `while`، `loop`، و `for`:" #: src/control-flow-basics/loops.md msgid "`while`" -msgstr "" +msgstr "`while`" #: src/control-flow-basics/loops.md msgid "" @@ -3039,20 +3425,25 @@ msgid "" "expr.html#predicate-loops) works much like in other languages, executing the " "loop body as long as the condition is true." msgstr "" +"تعمل [الكلمة المفتاحية `while`](https://doc.rust-lang.org/reference/" +"expressions/loop-expr.html#predicate-loops) بشكل مشابه لما في اللغات الأخرى، " +"حيث تنفذ جسم الحلقة طالما أن الشرط صحيح." #: src/control-flow-basics/loops.md msgid "\"Final x: {x}\"" -msgstr "" +msgstr "\"القيمة النهائية لـ x: {x}\"" #: src/control-flow-basics/loops/for.md msgid "" "The [`for` loop](https://doc.rust-lang.org/std/keyword.for.html) iterates " "over ranges of values or the items in a collection:" msgstr "" +"تقوم [حلقة `for`](https://doc.rust-lang.org/std/keyword.for.html) بالتكرار " +"عبر نطاقات القيم أو العناصر في مجموعة:" #: src/control-flow-basics/loops/for.md msgid "\"elem: {elem}\"" -msgstr "" +msgstr "\"العنصر (elem): {elem}\"" #: src/control-flow-basics/loops/for.md msgid "" @@ -3060,28 +3451,37 @@ msgid "" "iterating over different kinds of ranges/collections. Iterators will be " "discussed in more detail later." msgstr "" +"تستخدم حلقات `for` مفهوم يسمى \"المكررات (iterators)\" للتعامل مع التكرار " +"عبر أنواع مختلفة من النطاقات/المجموعات. سيتم مناقشة المكررات بمزيد من " +"التفصيل لاحقًا." #: src/control-flow-basics/loops/for.md msgid "" "Note that the first `for` loop only iterates to `4`. Show the `1..=5` syntax " "for an inclusive range." msgstr "" +"لاحظ أن حلقة `for` الأولى تتكرر فقط حتى `4`. أظهر بناء الجملة `1..=5` لنطاق " +"شامل." #: src/control-flow-basics/loops/loop.md msgid "" "The [`loop` statement](https://doc.rust-lang.org/std/keyword.loop.html) just " "loops forever, until a `break`." msgstr "" +"تقوم [جملة `loop`](https://doc.rust-lang.org/std/keyword.loop.html) بالتكرار " +"إلى الأبد، حتى يتم استخدام `break`." #: src/control-flow-basics/loops/loop.md msgid "\"{i}\"" -msgstr "" +msgstr "\"{i}\"" #: src/control-flow-basics/break-continue.md msgid "" "If you want to immediately start the next iteration use [`continue`](https://" "doc.rust-lang.org/reference/expressions/loop-expr.html#continue-expressions)." msgstr "" +"إذا كنت تريد بدء التكرار التالي فورًا، استخدم [`continue`](https://doc.rust-" +"lang.org/reference/expressions/loop-expr.html#continue-expressions)." #: src/control-flow-basics/break-continue.md msgid "" @@ -3090,6 +3490,9 @@ msgid "" "`loop`, this can take an optional expression that becomes the value of the " "`loop` expression." msgstr "" +"إذا كنت تريد الخروج من أي نوع من الحلقات مبكرًا، استخدم [`break`](https://doc." +"rust-lang.org/reference/expressions/loop-expr.html#break-expressions). " +"بالنسبة لـ `loop`، يمكن أن تأخذ هذه تعبيرًا اختياريًا يصبح قيمة تعبير `loop`." #: src/control-flow-basics/break-continue.md src/std-traits/exercise.md #: src/std-traits/solution.md src/smart-pointers/trait-objects.md @@ -3098,17 +3501,19 @@ msgstr "" #: src/android/interoperability/cpp/rust-bridge.md #: src/concurrency/async-pitfalls/cancellation.md msgid "\"{}\"" -msgstr "" +msgstr "\"{}\"" #: src/control-flow-basics/break-continue/labels.md msgid "" "Both `continue` and `break` can optionally take a label argument which is " "used to break out of nested loops:" msgstr "" +"يمكن لكل من `continue` و `break` أن يأخذوا اختياريًا وسيط تسمية يُستخدم للخروج " +"من الحلقات المتداخلة:" #: src/control-flow-basics/break-continue/labels.md msgid "\"elements searched: {elements_searched}\"" -msgstr "" +msgstr "\"العناصر التي تم البحث عنها: {elements_searched}\"" #: src/control-flow-basics/break-continue/labels.md msgid "" @@ -3116,10 +3521,13 @@ msgid "" "value. This is because it's guaranteed to be entered at least once (unlike " "`while` and `for` loops)." msgstr "" +"لاحظ أن `loop` هو البناء التكراري الوحيد الذي يعيد قيمة معقده (non-" +"trivial value). هذا لأنه مضمون الدخول إليه مرة واحدة على الأقل (على عكس " +"حلقات `while` و `for` (while و for))." #: src/control-flow-basics/blocks-and-scopes.md msgid "Blocks" -msgstr "" +msgstr "الكتل" #: src/control-flow-basics/blocks-and-scopes.md msgid "" @@ -3127,59 +3535,67 @@ msgid "" "Each block has a value and a type, which are those of the last expression of " "the block:" msgstr "" +"الكتلة في Rust تحتوي على تسلسل من التعابير، محاطة بأقواس `{}`. كل كتلة لها " +"قيمة ونوع، وهما نفسهما للعبارة الأخيرة في الكتلة:" #: src/control-flow-basics/blocks-and-scopes.md msgid "\"y: {y}\"" -msgstr "" +msgstr "\"y: {y}\"" #: src/control-flow-basics/blocks-and-scopes.md msgid "" "If the last expression ends with `;`, then the resulting value and type is " "`()`." -msgstr "" +msgstr "إذا انتهى التعبير الأخير بـ `;`، فإن القيمة والنوع الناتجين هما `()`." #: src/control-flow-basics/blocks-and-scopes.md msgid "" "You can show how the value of the block changes by changing the last line in " "the block. For instance, adding/removing a semicolon or using a `return`." msgstr "" +"يمكنك إظهار كيفية تغير قيمة الكتلة عن طريق تغيير السطر الأخير في الكتلة. على " +"سبيل المثال، إضافة/إزالة فاصلة منقوطة أو استخدام `return`." #: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "A variable's scope is limited to the enclosing block." -msgstr "" +msgstr "نطاق المتغير محدود بالكتلة المحيطة به." #: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "" "You can shadow variables, both those from outer scopes and variables from " "the same scope:" msgstr "" +"يمكنك تظليل المتغيرات، سواء تلك من النطاقات الخارجية أو المتغيرات من نفس " +"النطاق:" #: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "\"before: {a}\"" -msgstr "" +msgstr "\"قبل: {a}\"" #: src/control-flow-basics/blocks-and-scopes/scopes.md src/generics/exercise.md #: src/generics/solution.md src/std-traits/from-and-into.md msgid "\"hello\"" -msgstr "" +msgstr "\"hello\"" #: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "\"inner scope: {a}\"" -msgstr "" +msgstr "\"النطاق الداخلي: {a}\"" #: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "\"shadowed in inner scope: {a}\"" -msgstr "" +msgstr "\"مظلل في النطاق الداخلي: {a}\"" #: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "\"after: {a}\"" -msgstr "" +msgstr "\"بعد: {a}\"" #: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "" "Show that a variable's scope is limited by adding a `b` in the inner block " "in the last example, and then trying to access it outside that block." msgstr "" +"أظهر أن نطاق المتغير محدود عن طريق إضافة `b` في الكتلة الداخلية في المثال " +"الأخير، ثم محاولة الوصول إليه خارج تلك الكتلة." #: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "" @@ -3187,22 +3603,29 @@ msgid "" "variable's memory locations exist at the same time. Both are available under " "the same name, depending where you use it in the code." msgstr "" +"التظليل (Shadowing) يختلف عن التغيير (Mutation)، لأنه بعد التظليل، كلا موقعي " +"ذاكرة المتغيرين موجودان في نفس الوقت. كلاهما متاحان تحت نفس الاسم، اعتمادًا " +"على مكان استخدامه في الكود." #: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "A shadowing variable can have a different type." -msgstr "" +msgstr "المتغير المظلل (Shadowing) يمكن أن يكون له نوع مختلف." #: src/control-flow-basics/blocks-and-scopes/scopes.md msgid "" "Shadowing looks obscure at first, but is convenient for holding on to values " "after `.unwrap()`." msgstr "" +"التظليل (Shadowing) يبدو غامضًا في البداية، لكنه مريح للاحتفاظ بالقيم بعد `." +"unwrap()`." #: src/control-flow-basics/functions.md msgid "" "Declaration parameters are followed by a type (the reverse of some " "programming languages), then a return type." msgstr "" +"معلمات التصريح (Declaration parameters) يتبعها نوع (type) (عكس بعض لغات " +"البرمجة)، ثم نوع الإرجاع (return type)." #: src/control-flow-basics/functions.md msgid "" @@ -3211,29 +3634,40 @@ msgid "" "keyword can be used for early return, but the \"bare value\" form is " "idiomatic at the end of a function (refactor `gcd` to use a `return`)." msgstr "" +"آخر تعبير في جسم الدالة (function body) (أو أي كتلة) يصبح قيمة الإرجاع " +"(return value). ببساطة احذف `;` في نهاية التعبير. يمكن استخدام الكلمة " +"المفتاحية `return` للإرجاع المبكر (early return)، ولكن الشكل \"bare value\" " +"هو الشكل الاصطلاحي في نهاية الدالة (refactor `gcd` to use a `return`) قم بتغيير 'gcd' و استخدم 'return'." #: src/control-flow-basics/functions.md msgid "" "Some functions have no return value, and return the 'unit type', `()`. The " "compiler will infer this if the `-> ()` return type is omitted." msgstr "" +"بعض الدوال ليس لها قيمة إرجاع، وتعيد 'unit type'، `()`. سيستنتج المترجم " +"(compiler) هذا إذا تم حذف نوع الإرجاع `-> ()`." #: src/control-flow-basics/functions.md msgid "" "Overloading is not supported -- each function has a single implementation." -msgstr "" +msgstr "التحميل الزائد (Overloading) غير مدعوم -- كل دالة لها تنفيذ واحد فقط." #: src/control-flow-basics/functions.md msgid "" "Always takes a fixed number of parameters. Default arguments are not " "supported. Macros can be used to support variadic functions." msgstr "" +"دائمًا تأخذ عددًا ثابتًا من المعلمات (parameters). المعلمات الافتراضية (Default " +"arguments) غير مدعومة. يمكن استخدام الماكروز (Macros) لدعم الدوال المتغيرة " +"(variadic functions)." #: src/control-flow-basics/functions.md msgid "" "Always takes a single set of parameter types. These types can be generic, " "which will be covered later." msgstr "" +"دائمًا تأخذ مجموعة واحدة من أنواع المعلمات (parameter types). يمكن أن تكون " +"هذه الأنواع عامة (generic)، والتي سيتم تغطيتها لاحقًا." #: src/control-flow-basics/macros.md msgid "" @@ -3241,38 +3675,50 @@ msgid "" "variable number of arguments. They are distinguished by a `!` at the end. " "The Rust standard library includes an assortment of useful macros." msgstr "" +"الماكروز (Macros) يتم توسيعها إلى كود Rust أثناء الترجمة، ويمكن أن تأخذ عددًا " +"متغيرًا من المعلمات (arguments). يتم تمييزها بعلامة `!` في النهاية. تتضمن " +"مكتبة Rust القياسية مجموعة من الماكروز المفيدة." #: src/control-flow-basics/macros.md msgid "" "`println!(format, ..)` prints a line to standard output, applying formatting " "described in [`std::fmt`](https://doc.rust-lang.org/std/fmt/index.html)." msgstr "" +"`println!(format, ..)` تطبع سطرًا إلى الإخراج القياسي (standard output)، " +"وتطبق التنسيق (formatting) الموضح في [`std::fmt`](https://doc.rust-lang.org/" +"std/fmt/index.html)." #: src/control-flow-basics/macros.md msgid "" "`format!(format, ..)` works just like `println!` but returns the result as a " "string." msgstr "" +"`format!(format, ..)` تعمل تمامًا مثل `println!` ولكنها تعيد النتيجة كسلسلة " +"نصية (string)." #: src/control-flow-basics/macros.md msgid "`dbg!(expression)` logs the value of the expression and returns it." -msgstr "" +msgstr "`dbg!(expression)` يسجل قيمة التعبير (expression) ويعيدها." #: src/control-flow-basics/macros.md msgid "" "`todo!()` marks a bit of code as not-yet-implemented. If executed, it will " "panic." msgstr "" +"`todo!()` تشير إلى جزء من الكود على أنه لم يتم تنفيذه بعد (not-yet-" +"implemented). إذا تم تنفيذه، سيتسبب في (panic)." #: src/control-flow-basics/macros.md msgid "" "`unreachable!()` marks a bit of code as unreachable. If executed, it will " "panic." msgstr "" +"`unreachable!()` تشير إلى جزء من الكود على أنه غير قابل للوصول " +"(unreachable). إذا تم تنفيذه، سيتسبب في (panic)." #: src/control-flow-basics/macros.md msgid "\"{n}! = {}\"" -msgstr "" +msgstr "\"{n}! = {}\"" #: src/control-flow-basics/macros.md msgid "" @@ -3280,230 +3726,239 @@ msgid "" "how to use them. Why they are defined as macros, and what they expand to, is " "not especially critical." msgstr "" +"الخلاصة من هذا القسم هي أن هذه التسهيلات الشائعة موجودة، وكيفية استخدامها. " +"لماذا تم تعريفها كـ macros، وما الذي تتوسع إليه، ليس بالأمر الحاسم بشكل خاص." #: src/control-flow-basics/macros.md msgid "" "The course does not cover defining macros, but a later section will describe " "use of derive macros." msgstr "" +"الدورة لا تغطي تعريف الماكروز (macros)، ولكن قسم لاحق سيصف استخدام الماكروز " +"المشتقة (derive macros)." #: src/control-flow-basics/exercise.md msgid "" "The [Collatz Sequence](https://en.wikipedia.org/wiki/Collatz_conjecture) is " "defined as follows, for an arbitrary n" msgstr "" +"تُعرّف [متتالية كولاتز (Collatz Sequence)](https://en.wikipedia.org/wiki/" +"Collatz_conjecture) كما يلي، لأي قيمة n عشوائية:" #: src/control-flow-basics/exercise.md msgid "1" -msgstr "" +msgstr "1" #: src/control-flow-basics/exercise.md msgid " greater than zero:" -msgstr "" +msgstr "أكبر من الصفر:" #: src/control-flow-basics/exercise.md msgid "If _n" -msgstr "" +msgstr "إذا كانت _n" #: src/control-flow-basics/exercise.md msgid "i" -msgstr "" +msgstr "i" #: src/control-flow-basics/exercise.md msgid "_ is 1, then the sequence terminates at _n" -msgstr "" +msgstr "_ تساوي 1، فإن المتتالية تنتهي عند _n" #: src/control-flow-basics/exercise.md msgid "_." -msgstr "" +msgstr "." #: src/control-flow-basics/exercise.md msgid "_ is even, then _n" -msgstr "" +msgstr "_ زوجية، فإن _n" #: src/control-flow-basics/exercise.md msgid "i+1" -msgstr "" +msgstr "i+1" #: src/control-flow-basics/exercise.md msgid " = n" -msgstr "" +msgstr " = n" #: src/control-flow-basics/exercise.md msgid " / 2_." -msgstr "" +msgstr " / 2_." #: src/control-flow-basics/exercise.md msgid "_ is odd, then _n" -msgstr "" +msgstr "_ فردية، فإن _n" #: src/control-flow-basics/exercise.md msgid " = 3 * n" -msgstr "" +msgstr " = 3 * n" #: src/control-flow-basics/exercise.md msgid " + 1_." -msgstr "" +msgstr " + 1_." #: src/control-flow-basics/exercise.md msgid "For example, beginning with _n" -msgstr "" +msgstr "على سبيل المثال، بدءًا من _n" #: src/control-flow-basics/exercise.md msgid "_ = 3:" -msgstr "" +msgstr "_ = 3:" #: src/control-flow-basics/exercise.md msgid "3 is odd, so _n" -msgstr "" +msgstr "3 فردية، لذا _n" #: src/control-flow-basics/exercise.md msgid "2" -msgstr "" +msgstr "2" #: src/control-flow-basics/exercise.md msgid "_ = 3 * 3 + 1 = 10;" -msgstr "" +msgstr "_ = 3 * 3 + 1 = 10;" #: src/control-flow-basics/exercise.md msgid "10 is even, so _n" -msgstr "" +msgstr "10 زوجية، لذا _n" #: src/control-flow-basics/exercise.md src/bare-metal/aps/better-uart.md msgid "3" -msgstr "" +msgstr "3" #: src/control-flow-basics/exercise.md msgid "_ = 10 / 2 = 5;" -msgstr "" +msgstr "_ = 10 / 2 = 5;" #: src/control-flow-basics/exercise.md msgid "5 is odd, so _n" -msgstr "" +msgstr "5 فردية، لذا _n" #: src/control-flow-basics/exercise.md src/bare-metal/aps/better-uart.md msgid "4" -msgstr "" +msgstr "4" #: src/control-flow-basics/exercise.md msgid "_ = 3 * 5 + 1 = 16;" -msgstr "" +msgstr "_ = 3 * 5 + 1 = 16;" #: src/control-flow-basics/exercise.md msgid "16 is even, so _n" -msgstr "" +msgstr "16 زوجية، لذا _n" #: src/control-flow-basics/exercise.md msgid "5" -msgstr "" +msgstr "5" #: src/control-flow-basics/exercise.md msgid "_ = 16 / 2 = 8;" -msgstr "" +msgstr "_ = 16 / 2 = 8;" #: src/control-flow-basics/exercise.md msgid "8 is even, so _n" -msgstr "" +msgstr "8 زوجية، لذا _n" #: src/control-flow-basics/exercise.md src/bare-metal/aps/better-uart.md msgid "6" -msgstr "" +msgstr "6" #: src/control-flow-basics/exercise.md msgid "_ = 8 / 2 = 4;" -msgstr "" +msgstr "_ = 8 / 2 = 4;" #: src/control-flow-basics/exercise.md msgid "4 is even, so _n" -msgstr "" +msgstr "4 زوجية، لذا _n" #: src/control-flow-basics/exercise.md msgid "7" -msgstr "" +msgstr "7" #: src/control-flow-basics/exercise.md msgid "_ = 4 / 2 = 2;" -msgstr "" +msgstr "_ = 4 / 2 = 2;" #: src/control-flow-basics/exercise.md msgid "2 is even, so _n" -msgstr "" +msgstr "2 زوجية، لذا _n" #: src/control-flow-basics/exercise.md src/bare-metal/aps/better-uart.md msgid "8" -msgstr "" +msgstr "8" #: src/control-flow-basics/exercise.md msgid "_ = 1; and" -msgstr "" +msgstr "_ = 1; و" #: src/control-flow-basics/exercise.md msgid "the sequence terminates." -msgstr "" +msgstr "تنتهي السلسلة." #: src/control-flow-basics/exercise.md msgid "" "Write a function to calculate the length of the collatz sequence for a given " "initial `n`." msgstr "" +"اكتب دالة لحساب طول سلسلة كولاتز (collatz sequence) لقيمة ابتدائية معينة `n`." #: src/control-flow-basics/exercise.md src/control-flow-basics/solution.md msgid "/// Determine the length of the collatz sequence beginning at `n`.\n" -msgstr "" +msgstr "/// تحديد طول سلسلة كولاتز (collatz sequence) بدءًا من `n`.\n" #: src/control-flow-basics/solution.md src/concurrency/threads/scoped.md msgid "\"Length: {}\"" -msgstr "" +msgstr "\"الطول: {}\"" #: src/welcome-day-1-afternoon.md src/welcome-day-2-afternoon.md #: src/welcome-day-3-afternoon.md src/welcome-day-4-afternoon.md #, fuzzy msgid "Welcome Back" -msgstr "مرحبًا" +msgstr "مرحبًا بعودتكم" #: src/welcome-day-1-afternoon.md msgid "[Tuples and Arrays](./tuples-and-arrays.md) (35 minutes)" -msgstr "" +msgstr "[Tuples and Arrays] (التجمعات والمصفوفات) (35 دقيقة)" #: src/welcome-day-1-afternoon.md msgid "[References](./references.md) (55 minutes)" -msgstr "" +msgstr "[References] (المراجع) (55 دقيقة)" #: src/welcome-day-1-afternoon.md msgid "[User-Defined Types](./user-defined-types.md) (50 minutes)" -msgstr "" +msgstr "[User-Defined Types] (الأنواع المعرفة من قبل المستخدم) (50 دقيقة)" #: src/welcome-day-1-afternoon.md msgid "" "Including 10 minute breaks, this session should take about 2 hours and 35 " "minutes" msgstr "" +"بما في ذلك فترات استراحة لمدة 10 دقائق، يجب أن تستغرق هذه الجلسة حوالي " +"ساعتين و35 دقيقة" #: src/tuples-and-arrays.md msgid "[Arrays](./tuples-and-arrays/arrays.md) (5 minutes)" -msgstr "" +msgstr "[Arrays] (المصفوفات) (5 دقائق)" #: src/tuples-and-arrays.md msgid "[Tuples](./tuples-and-arrays/tuples.md) (5 minutes)" -msgstr "" +msgstr "[Tuples] (التجمعات) (5 دقائق)" #: src/tuples-and-arrays.md msgid "[Array Iteration](./tuples-and-arrays/iteration.md) (3 minutes)" -msgstr "" +msgstr "[Array Iteration] (تكرار المصفوفة) (3 دقائق)" #: src/tuples-and-arrays.md msgid "" "[Patterns and Destructuring](./tuples-and-arrays/destructuring.md) (5 " "minutes)" -msgstr "" +msgstr "[Patterns and Destructuring] (الأنماط والتفكيك) (5 دقائق)" #: src/tuples-and-arrays.md msgid "[Exercise: Nested Arrays](./tuples-and-arrays/exercise.md) (15 minutes)" -msgstr "" +msgstr "[Exercise: Nested Arrays] (تمرين: المصفوفات المتداخلة) (15 دقيقة)" #: src/tuples-and-arrays.md msgid "This segment should take about 35 minutes" -msgstr "" +msgstr "يجب أن يستغرق هذا الجزء حوالي 35 دقيقة" #: src/tuples-and-arrays/arrays.md msgid "" @@ -3513,6 +3968,10 @@ msgid "" "different types. Slices, which have a size determined at runtime, are " "covered later." msgstr "" +"قيمة من نوع المصفوفة `[T; N]` تحتوي على `N` (ثابت وقت الترجمة) عناصر من نفس " +"النوع `T`. لاحظ أن طول المصفوفة هو _جزء من نوعها_، مما يعني أن `[u8; 3]` و " +"`[u8; 4]` يعتبران نوعين مختلفين. سيتم تغطية الشرائح (slices)، التي يتم تحديد " +"حجمها في وقت التشغيل، لاحقًا." #: src/tuples-and-arrays/arrays.md msgid "" @@ -3520,10 +3979,13 @@ msgid "" "runtime. Rust can usually optimize these checks away, and they can be " "avoided using unsafe Rust." msgstr "" +"حاول الوصول إلى عنصر مصفوفة خارج الحدود. يتم التحقق من الوصول إلى المصفوفة " +"في وقت التشغيل. يمكن لـ Rust عادةً تحسين هذه الفحوصات، ويمكن تجنبها باستخدام " +"Rust غير الآمن (unsafe Rust)." #: src/tuples-and-arrays/arrays.md msgid "We can use literals to assign values to arrays." -msgstr "" +msgstr "يمكننا استخدام القيم الحرفية (literals) لتعيين القيم إلى المصفوفات." #: src/tuples-and-arrays/arrays.md msgid "" @@ -3533,42 +3995,54 @@ msgid "" "only implement the debug output. This means that we must use debug output " "here." msgstr "" +"الماكرو `println!` يطلب تنفيذ التصحيح (debug implementation) باستخدام معامل " +"التنسيق `?`: `{}` يعطي المخرجات الافتراضية، `{:?}` يعطي مخرجات التصحيح " +"(debug output). الأنواع مثل الأعداد الصحيحة (integers) والسلاسل النصية " +"(strings) تنفذ المخرجات الافتراضية، لكن المصفوفات تنفذ فقط مخرجات التصحيح. " +"هذا يعني أنه يجب علينا استخدام مخرجات التصحيح هنا." #: src/tuples-and-arrays/arrays.md msgid "" "Adding `#`, eg `{a:#?}`, invokes a \"pretty printing\" format, which can be " "easier to read." msgstr "" +"إضافة `#`، مثل `{a:#?}`، يستدعي تنسيق \"الطباعة الجميلة\" (pretty printing)، " +"والذي يمكن أن يكون أسهل في القراءة." #: src/tuples-and-arrays/tuples.md msgid "Like arrays, tuples have a fixed length." -msgstr "" +msgstr "مثل المصفوفات، التجمعات (tuples) لها طول ثابت." #: src/tuples-and-arrays/tuples.md msgid "Tuples group together values of different types into a compound type." -msgstr "" +msgstr "تجمع التجمعات (tuples) القيم من أنواع مختلفة في نوع مركب." #: src/tuples-and-arrays/tuples.md msgid "" "Fields of a tuple can be accessed by the period and the index of the value, " "e.g. `t.0`, `t.1`." msgstr "" +"يمكن الوصول إلى حقول التجمع (tuple) باستخدام النقطة (period) وفهرس القيمة، " +"مثل `t.0`، `t.1`." #: src/tuples-and-arrays/tuples.md msgid "" "The empty tuple `()` is referred to as the \"unit type\" and signifies " "absence of a return value, akin to `void` in other languages." msgstr "" +"التجمع الفارغ `()` يُشار إليه بـ \"نوع الوحدة\" (unit type) ويشير إلى غياب " +"قيمة الإرجاع، مشابهًا لـ `void` في لغات البرمجة الأخرى." #: src/tuples-and-arrays/iteration.md msgid "The `for` statement supports iterating over arrays (but not tuples)." msgstr "" +"جملة `for` تدعم التكرار عبر المصفوفات (arrays) (ولكن ليس التجمعات (tuples))." #: src/tuples-and-arrays/iteration.md msgid "" "This functionality uses the `IntoIterator` trait, but we haven't covered " "that yet." -msgstr "" +msgstr "هذه الوظيفة تستخدم السمة `IntoIterator`، لكننا لم نغطي ذلك بعد." #: src/tuples-and-arrays/iteration.md msgid "" @@ -3576,6 +4050,9 @@ msgid "" "` macros. These are always checked while, debug-only variants like " "`debug_assert!` compile to nothing in release builds." msgstr "" +"الماكرو `assert_ne!` جديد هنا. هناك أيضًا ماكروهات `assert_eq!` و `assert!`. " +"هذه دائمًا ما يتم التحقق منها، بينما المتغيرات الخاصة بالتصحيح فقط مثل " +"`debug_assert!` لا يتم تجميعها في إصدارات الإنتاج (release builds)." #: src/tuples-and-arrays/destructuring.md msgid "" @@ -3583,16 +4060,21 @@ msgid "" "extract the inner values into local variables. This can be done manually by " "directly accessing the inner values:" msgstr "" +"عند العمل مع التجمعات (tuples) والقيم المهيكلة الأخرى، من الشائع الرغبة في " +"استخراج القيم الداخلية إلى متغيرات محلية. يمكن القيام بذلك يدويًا عن طريق " +"الوصول المباشر إلى القيم الداخلية:" #: src/tuples-and-arrays/destructuring.md msgid "\"left: {left}, right: {right}\"" -msgstr "" +msgstr "\"left: {left}, right: {right}\"" #: src/tuples-and-arrays/destructuring.md msgid "" "However, Rust also supports using pattern matching to destructure a larger " "value into its constituent parts:" msgstr "" +"ومع ذلك، تدعم Rust أيضًا استخدام مطابقة الأنماط (pattern matching) لتفكيك " +"قيمة أكبر إلى أجزائها المكونة:" #: src/tuples-and-arrays/destructuring.md msgid "" @@ -3600,12 +4082,16 @@ msgid "" "statically verify that the value on the right of `=` has the same structure " "as the pattern." msgstr "" +"الأنماط المستخدمة هنا هي \"غير قابلة للدحض\" (irrefutable)، مما يعني أن " +"المترجم يمكنه التحقق بشكل ثابت من أن القيمة على يمين `=` لها نفس بنية النمط." #: src/tuples-and-arrays/destructuring.md msgid "" "A variable name is an irrefutable pattern that always matches any value, " "hence why we can also use `let` to declare a single variable." msgstr "" +"اسم المتغير هو نمط غير قابل للدحض (irrefutable pattern) يطابق دائمًا أي قيمة، " +"لذلك يمكننا أيضًا استخدام `let` لإعلان متغير واحد." #: src/tuples-and-arrays/destructuring.md msgid "" @@ -3613,78 +4099,87 @@ msgid "" "comparison and destructuring to happen at the same time. This form of " "pattern matching will be discussed in more detail later." msgstr "" +"تدعم Rust أيضًا استخدام الأنماط في العبارات الشرطية (conditionals)، مما يسمح " +"بمقارنة المساواة والتفكيك (destructuring) في نفس الوقت. سيتم مناقشة هذا " +"الشكل من مطابقة الأنماط بمزيد من التفصيل لاحقًا." #: src/tuples-and-arrays/destructuring.md msgid "" "Edit the examples above to show the compiler error when the pattern doesn't " "match the value being matched on." msgstr "" +"قم بتحرير الأمثلة أعلاه لإظهار خطأ المترجم عندما لا يتطابق النمط مع القيمة " +"التي يتم مطابقتها." #: src/tuples-and-arrays/exercise.md msgid "Arrays can contain other arrays:" -msgstr "" +msgstr "المصفوفات (arrays) يمكن أن تحتوي على مصفوفات أخرى:" #: src/tuples-and-arrays/exercise.md msgid "What is the type of this variable?" -msgstr "" +msgstr "ما هو نوع (type) هذا المتغير؟" #: src/tuples-and-arrays/exercise.md msgid "" "Use an array such as the above to write a function `transpose` which will " "transpose a matrix (turn rows into columns):" msgstr "" +"استخدم مصفوفة مثل المذكورة أعلاه لكتابة دالة `transpose` التي ستقوم بتبديل " +"مصفوفة (تحويل الصفوف إلى أعمدة):" #: src/tuples-and-arrays/exercise.md msgid "" "Copy the code below to and implement the " "function. This function only operates on 3x3 matrices." msgstr "" +"انسخ الكود أدناه إلى ونفذ الدالة. هذه الدالة " +"تعمل فقط على المصفوفات 3x3." #: src/tuples-and-arrays/exercise.md src/borrowing/exercise.md #: src/unsafe-rust/exercise.md msgid "// TODO: remove this when you're done with your implementation.\n" -msgstr "" +msgstr "// TODO: قم بإزالة هذا عند الانتهاء من تنفيذك.\n" #: src/tuples-and-arrays/exercise.md src/tuples-and-arrays/solution.md msgid "//\n" -msgstr "" +msgstr "//\n" #: src/tuples-and-arrays/exercise.md src/tuples-and-arrays/solution.md msgid "// <-- the comment makes rustfmt add a newline\n" -msgstr "" +msgstr "// <-- التعليق يجعل rustfmt يضيف سطرًا جديدًا\n" #: src/tuples-and-arrays/exercise.md src/tuples-and-arrays/solution.md msgid "\"matrix: {:#?}\"" -msgstr "" +msgstr "\"matrix: {:#?}\"" #: src/tuples-and-arrays/exercise.md src/tuples-and-arrays/solution.md msgid "\"transposed: {:#?}\"" -msgstr "" +msgstr "\"transposed: {:#?}\"" #: src/references.md msgid "[Shared References](./references/shared.md) (10 minutes)" -msgstr "" +msgstr "[Shared References](./references/shared.md) (10 دقائق)" #: src/references.md msgid "[Exclusive References](./references/exclusive.md) (10 minutes)" -msgstr "" +msgstr "[Exclusive References] (المراجع الحصرية) (10 دقائق)" #: src/references.md msgid "[Slices: &\\[T\\]](./references/slices.md) (10 minutes)" -msgstr "" +msgstr "[Slices: &\\[T\\]] (الشرائح: &\\[T\\]) (10 دقائق)" #: src/references.md msgid "[Strings](./references/strings.md) (10 minutes)" -msgstr "" +msgstr "[Strings] (السلاسل النصية) (10 دقائق)" #: src/references.md msgid "[Exercise: Geometry](./references/exercise.md) (15 minutes)" -msgstr "" +msgstr "[Exercise: Geometry] (تمرين: الهندسة) (15 دقيقة)" #: src/references.md src/smart-pointers.md src/borrowing.md #: src/concurrency/async-pitfalls.md msgid "This segment should take about 55 minutes" -msgstr "" +msgstr "يجب أن يستغرق هذا الجزء حوالي 55 دقيقة" #: src/references/shared.md msgid "" @@ -3692,6 +4187,9 @@ msgid "" "responsibility for the value, and is also called \"borrowing\". Shared " "references are read-only, and the referenced data cannot change." msgstr "" +"المرجع (reference) يوفر طريقة للوصول إلى قيمة أخرى دون تحمل المسؤولية عن " +"القيمة، ويُسمى أيضًا \"الاستعارة\" (borrowing). المراجع المشتركة (Shared " +"references) هي للقراءة فقط، ولا يمكن تغيير البيانات المشار إليها." #: src/references/shared.md msgid "" @@ -3699,10 +4197,13 @@ msgid "" "with the `&` operator. The `*` operator \"dereferences\" a reference, " "yielding its value." msgstr "" +"المرجع المشترك (shared reference) لنوع `T` يكون من النوع `&T`. يتم إنشاء " +"قيمة المرجع باستخدام المعامل `&`." +"·المعامل·`*`·يقوم·بـ·\"إلغاء·المرجع\"·(dereferences)·للمرجع،·مما·يعطي·قيمته." #: src/references/shared.md msgid "Rust will statically forbid dangling references:" -msgstr "" +msgstr "سيمنع Rust بشكل ثابت المراجع المتدلية (dangling references):" #: src/references/shared.md msgid "" @@ -3711,6 +4212,10 @@ msgid "" "access the value, but is still \"owned\" by the original variable. The " "course will get into more detail on ownership in day 3." msgstr "" +"يُقال أن المرجع \"يستعير\" (borrow) القيمة التي يشير إليها، وهذا نموذج جيد " +"للطلاب غير المألوفين بالمؤشرات (pointers): يمكن للكود استخدام المرجع للوصول " +"إلى القيمة، ولكنها لا تزال \"مملوكة\" (owned) من قبل المتغير الأصلي. ستتناول " +"الدورة مزيدًا من التفاصيل حول الملكية (ownership) في اليوم الثالث." #: src/references/shared.md msgid "" @@ -3720,12 +4225,18 @@ msgid "" "cover how Rust prevents the memory-safety bugs that come from using raw " "pointers." msgstr "" +"يتم تنفيذ المراجع (references) كمؤشرات (pointers)، وميزة رئيسية هي أنها يمكن " +"أن تكون أصغر بكثير من الشيء الذي تشير إليه. الطلاب المألوفون بلغة C أو C++ " +"سيتعرفون على المراجع (references) كمؤشرات (pointers). ستغطي الأجزاء اللاحقة " +"من الدورة كيفية منع Rust أخطاء أمان الذاكرة (memory-safety bugs) التي تأتي " +"من استخدام المؤشرات الخام (raw pointers)." #: src/references/shared.md msgid "" "Rust does not automatically create references for you - the `&` is always " "required." msgstr "" +"لا يقوم Rust بإنشاء المراجع (references) تلقائيًا - المعامل `&` مطلوب دائمًا." #: src/references/shared.md msgid "" @@ -3733,6 +4244,9 @@ msgid "" "methods (try `r.is_ascii()`). There is no need for an `->` operator like in " "C++." msgstr "" +"سيقوم Rust بإلغاء المرجع تلقائيًا (auto-dereference) في بعض الحالات، خاصة عند " +"استدعاء الدوال (methods) (جرب `r.is_ascii()`). لا حاجة لمعامل `->` كما في C+" +"+." #: src/references/shared.md msgid "" @@ -3741,12 +4255,17 @@ msgid "" "different from C++, where assignment to a reference changes the referenced " "value." msgstr "" +"في هذا المثال، `r` قابل للتغيير (mutable) بحيث يمكن إعادة تعيينه (`r = &b`). " +"لاحظ أن هذا يعيد ربط `r`، بحيث يشير إلى شيء آخر. هذا يختلف عن C++، حيث أن " +"التعيين إلى مرجع يغير القيمة المشار إليها." #: src/references/shared.md msgid "" "A shared reference does not allow modifying the value it refers to, even if " "that value was mutable. Try `*r = 'X'`." msgstr "" +"المرجع المشترك (shared reference) لا يسمح بتعديل القيمة التي يشير إليها، حتى " +"لو كانت تلك القيمة قابلة للتغيير (mutable). جرب `*r = 'X'`." #: src/references/shared.md msgid "" @@ -3755,16 +4274,24 @@ msgid "" "a reference to `point`, but `point` will be deallocated when the function " "returns, so this will not compile." msgstr "" +"يقوم Rust بتتبع أعمار (lifetimes) جميع المراجع لضمان أنها تعيش لفترة كافية. " +"لا يمكن أن تحدث المراجع المتدلية (dangling references) في Rust الآمن. ستعيد " +"`x_axis` مرجعًا إلى `point`، ولكن سيتم إلغاء تخصيص `point` عند انتهاء الدالة، " +"لذلك لن يتم تجميع هذا الكود." #: src/references/shared.md msgid "We will talk more about borrowing when we get to ownership." msgstr "" +"سنتحدث أكثر عن الاستعارة (borrowing) عندما نصل إلى الملكية (ownership)." #: src/references/exclusive.md msgid "" "Exclusive references, also known as mutable references, allow changing the " "value they refer to. They have type `&mut T`." msgstr "" +"المراجع الحصرية (Exclusive references)، والمعروفة أيضًا بالمراجع القابلة " +"للتغيير (mutable references)، تسمح بتغيير القيمة التي تشير إليها. نوعها هو " +"`&mut T`." #: src/references/exclusive.md msgid "" @@ -3774,6 +4301,10 @@ msgid "" "exists. Try making an `&point.0` or changing `point.0` while `x_coord` is " "alive." msgstr "" +"تعني \"حصرية\" (Exclusive) أن هذا المرجع فقط يمكن استخدامه للوصول إلى " +"القيمة. لا يمكن أن توجد مراجع أخرى (مشتركة أو حصرية) في نفس الوقت، ولا يمكن " +"الوصول إلى القيمة المشار إليها بينما المرجع الحصري موجود. جرب إنشاء " +"`&point.0` أو تغيير `point.0` بينما `x_coord` موجود." #: src/references/exclusive.md msgid "" @@ -3782,28 +4313,34 @@ msgid "" "bound to different values, while the second represents an exclusive " "reference to a mutable value." msgstr "" +"تأكد من ملاحظة الفرق بين `let mut x_coord: &i32` و `let x_coord: &mut i32`. " +"الأول يمثل مرجعًا مشتركًا (shared reference) يمكن ربطه بقيم مختلفة، بينما " +"الثاني يمثل مرجعًا حصريًا (exclusive reference) لقيمة قابلة للتغيير (mutable " +"value)." #: src/references/slices.md msgid "Slices" -msgstr "" +msgstr "الشرائح (Slices)" #: src/references/slices.md msgid "A slice gives you a view into a larger collection:" -msgstr "" +msgstr "تعطيك الشريحة (slice) نظرة على مجموعة أكبر:" #: src/references/slices.md msgid "Slices borrow data from the sliced type." -msgstr "" +msgstr "تستعير الشرائح (Slices) البيانات من النوع المقطوع (sliced type)." #: src/references/slices.md msgid "Question: What happens if you modify `a[3]` right before printing `s`?" -msgstr "" +msgstr "سؤال: ماذا يحدث إذا قمت بتعديل `a[3]` قبل طباعة `s` مباشرةً؟" #: src/references/slices.md msgid "" "We create a slice by borrowing `a` and specifying the starting and ending " "indexes in brackets." msgstr "" +"نقوم بإنشاء شريحة (slice) عن طريق استعارة `a` وتحديد الفهارس (indexes) " +"البداية والنهاية بين الأقواس." #: src/references/slices.md msgid "" @@ -3811,17 +4348,23 @@ msgid "" "starting index, meaning that `&a[0..a.len()]` and `&a[..a.len()]` are " "identical." msgstr "" +"إذا بدأت الشريحة (slice) عند الفهرس 0، فإن صيغة النطاق (range syntax) في " +"Rust تسمح لنا بإسقاط فهرس البداية، مما يعني أن `&a[0..a.len()]` و `&a[..a." +"len()]` متطابقتان." #: src/references/slices.md msgid "" "The same is true for the last index, so `&a[2..a.len()]` and `&a[2..]` are " "identical." msgstr "" +"ينطبق نفس الشيء على الفهرس الأخير، لذا فإن `&a[2..a.len()]` و `&a[2..]` " +"متطابقتان." #: src/references/slices.md msgid "" "To easily create a slice of the full array, we can therefore use `&a[..]`." msgstr "" +"لإنشاء شريحة (slice) بسهولة من المصفوفة الكاملة، يمكننا استخدام `&a[..]`." #: src/references/slices.md msgid "" @@ -3829,12 +4372,17 @@ msgid "" "(`&[i32]`) no longer mentions the array length. This allows us to perform " "computation on slices of different sizes." msgstr "" +"`s` هو مرجع لشريحة (slice) من `i32`s. لاحظ أن نوع `s` (`&[i32]`) لم يعد يذكر " +"طول المصفوفة. هذا يسمح لنا بإجراء العمليات الحسابية على شرائح (slices) " +"بأحجام مختلفة." #: src/references/slices.md msgid "" "Slices always borrow from another object. In this example, `a` has to remain " "'alive' (in scope) for at least as long as our slice." msgstr "" +"الشرائح (Slices) تستعير دائمًا من كائن آخر. في هذا المثال، يجب أن يبقى `a` " +"موجودًا (في النطاق) على الأقل طالما أن شريحتنا (slice) موجودة." #: src/references/slices.md msgid "" @@ -3844,40 +4392,47 @@ msgid "" "safely. It works before you created the slice, and again after the " "`println`, when the slice is no longer used." msgstr "" +"السؤال حول تعديل `a[3]` يمكن أن يثير نقاشًا مثيرًا للاهتمام، ولكن الإجابة هي " +"أنه لأسباب تتعلق بسلامة الذاكرة (memory safety) لا يمكنك القيام بذلك من خلال " +"`a` في هذه المرحلة من التنفيذ (execution)، ولكن يمكنك قراءة البيانات من كل " +"من `a` و `s` بأمان. يعمل ذلك قبل إنشاء الشريحة (slice)، ومرة أخرى بعد " +"`println`، عندما لا يتم استخدام الشريحة (slice) بعد الآن." #: src/references/strings.md msgid "We can now understand the two string types in Rust:" -msgstr "" +msgstr "يمكننا الآن فهم نوعي السلاسل النصية (string types) في Rust:" #: src/references/strings.md msgid "`&str` is a slice of UTF-8 encoded bytes, similar to `&[u8]`." -msgstr "" +msgstr "`&str` هو شريحة (slice) من بايتات مشفرة بـ UTF-8، مشابهة لـ `&[u8]`." #: src/references/strings.md msgid "" "`String` is an owned buffer of UTF-8 encoded bytes, similar to `Vec`." msgstr "" +"`String` هو مخزن مؤقت مملوك (owned buffer) من بايتات مشفرة بـ UTF-8، مشابه " +"لـ `Vec`." #: src/references/strings.md src/std-traits/read-and-write.md msgid "\"World\"" -msgstr "" +msgstr "\"World\"" #: src/references/strings.md msgid "\"s1: {s1}\"" -msgstr "" +msgstr "\"s1: {s1}\"" #: src/references/strings.md #, fuzzy msgid "\"Hello \"" -msgstr "مرحبًا، أيها العالم" +msgstr "\"مرحبًا، أيها العالم\"" #: src/references/strings.md src/memory-management/move.md msgid "\"s2: {s2}\"" -msgstr "" +msgstr "\"s2: {s2}\"" #: src/references/strings.md msgid "\"s3: {s3}\"" -msgstr "" +msgstr "\"s3: {s3}\"" #: src/references/strings.md msgid "" @@ -3885,12 +4440,17 @@ msgid "" "encoded string data stored in a block of memory. String literals " "(`\"Hello\"`), are stored in the program’s binary." msgstr "" +"`&str` يقدم شريحة نصية (string slice)، وهي مرجع غير قابل للتغيير (immutable " +"reference) لبيانات نصية مشفرة بـ UTF-8 مخزنة في كتلة من الذاكرة. الحروف " +"النصية (`\"Hello\"`)، مخزنة في البرنامج الثنائي (binary)." #: src/references/strings.md msgid "" "Rust's `String` type is a wrapper around a vector of bytes. As with a " "`Vec`, it is owned." msgstr "" +"نوع `String` في Rust هو غلاف حول متجه من البايتات (vector of bytes). كما هو " +"الحال مع `Vec`، فهو مملوك (owned)." #: src/references/strings.md msgid "" @@ -3898,12 +4458,18 @@ msgid "" "literal; `String::new()` creates a new empty string, to which string data " "can be added using the `push()` and `push_str()` methods." msgstr "" +"كما هو الحال مع العديد من الأنواع الأخرى، فإن `String::from()` ينشئ سلسلة " +"نصية من حرف نصي (string literal)؛ `String::new()` ينشئ سلسلة نصية جديدة " +"فارغة، يمكن إضافة بيانات نصية إليها باستخدام طريقتي `push()` و `push_str()`." #: src/references/strings.md msgid "" "The `format!()` macro is a convenient way to generate an owned string from " "dynamic values. It accepts the same format specification as `println!()`." msgstr "" +"الماكرو `format!()` هو طريقة مريحة لإنشاء سلسلة نصية مملوكة (owned string) " +"من قيم ديناميكية. يقبل نفس مواصفات التنسيق (format specification) مثل " +"`println!()`." #: src/references/strings.md msgid "" @@ -3912,6 +4478,10 @@ msgid "" "boundaries, the expression will panic. The `chars` iterator iterates over " "characters and is preferred over trying to get character boundaries right." msgstr "" +"يمكنك استعارة شرائح `&str` من `String` عبر `&` واختيار النطاق (range " +"selection) اختياريًا. إذا اخترت نطاق بايت غير متوافق مع حدود الأحرف، فإن " +"التعبير سيتسبب في خطأ (panic). المكرر `chars` يتكرر عبر الأحرف ويفضل " +"استخدامه على محاولة الحصول على حدود الأحرف بشكل صحيح." #: src/references/strings.md msgid "" @@ -3920,10 +4490,16 @@ msgid "" "equivalent of `std::string` from C++ (main difference: it can only contain " "UTF-8 encoded bytes and will never use a small-string optimization)." msgstr "" +"لمبرمجي C++: فكر في `&str` كـ `std::string_view` من C++، ولكنه دائمًا يشير " +"إلى سلسلة نصية صالحة في الذاكرة. `String` في Rust هو مكافئ تقريبي لـ `std::" +"string` من C++ (الفرق الرئيسي: يمكن أن يحتوي فقط على بايتات مشفرة بـ UTF-8 " +"ولن يستخدم أبدًا تحسين السلسلة الصغيرة (small-string optimization))." #: src/references/strings.md msgid "Byte strings literals allow you to create a `&[u8]` value directly:" msgstr "" +"الحروف النصية للبايت (Byte strings literals) تتيح لك إنشاء قيمة `&[u8]` " +"مباشرةً:" #: src/references/strings.md msgid "" @@ -3931,13 +4507,9 @@ msgid "" "`r\"\\n\" == \"\\\\n\"`. You can embed double-quotes by using an equal " "amount of `#` on either side of the quotes:" msgstr "" - -#: src/references/exercise.md -msgid "" -"We will create a few utility functions for 3-dimensional geometry, " -"representing a point as `[f64;3]`. It is up to you to determine the function " -"signatures." -msgstr "" +"السلاسل النصية الخام (Raw strings) تتيح لك إنشاء قيمة `&str` مع تعطيل الهروب " +"(escapes): `r\"\\n\" == \"\\\\n\"`. يمكنك تضمين علامات الاقتباس المزدوجة " +"باستخدام كمية متساوية من `#` على جانبي علامات الاقتباس:" #: src/references/exercise.md msgid "" @@ -3947,111 +4519,126 @@ msgid "" "square\n" "// root, like `v.sqrt()`.\n" msgstr "" +"// احسب مقدار المتجه (magnitude of a vector) بجمع مربعات إحداثياته\n" +"// وأخذ الجذر التربيعي (square root). استخدم طريقة `sqrt()` لحساب الجذر\n" +"// التربيعي، مثل `v.sqrt()`.\n" #: src/references/exercise.md msgid "" "// Normalize a vector by calculating its magnitude and dividing all of its\n" "// coordinates by that magnitude.\n" msgstr "" +"// قم بتطبيع المتجه (Normalize a vector) بحساب مقداره (magnitude) وقسمة جميع " +"إحداثياته\n" +"// على هذا المقدار (magnitude).\n" #: src/references/exercise.md msgid "// Use the following `main` to test your work.\n" -msgstr "" +msgstr "// استخدم `main` التالي لاختبار عملك.\n" #: src/references/exercise.md src/references/solution.md msgid "\"Magnitude of a unit vector: {}\"" -msgstr "" +msgstr "\"مقدار المتجه الواحد: {}\"" #: src/references/exercise.md src/references/solution.md msgid "\"Magnitude of {v:?}: {}\"" -msgstr "" +msgstr "\"مقدار {v:?}: {}\"" #: src/references/exercise.md src/references/solution.md msgid "\"Magnitude of {v:?} after normalization: {}\"" -msgstr "" +msgstr "\"مقدار {v:?} بعد التطبيع: {}\"" #: src/references/solution.md msgid "/// Calculate the magnitude of the given vector.\n" -msgstr "" +msgstr "/// احسب مقدار المتجه (magnitude of the vector) المعطى.\n" #: src/references/solution.md msgid "" "/// Change the magnitude of the vector to 1.0 without changing its " "direction.\n" -msgstr "" +msgstr "/// غير مقدار المتجه إلى 1.0 دون تغيير اتجاهه.\n" #: src/user-defined-types.md msgid "[Named Structs](./user-defined-types/named-structs.md) (10 minutes)" msgstr "" +"[الهياكل المسماة (Named Structs)](./user-defined-types/named-structs.md) (10 " +"دقائق)" #: src/user-defined-types.md msgid "[Tuple Structs](./user-defined-types/tuple-structs.md) (10 minutes)" msgstr "" +"[هياكل الترتيب (Tuple Structs)](./user-defined-types/tuple-structs.md) (10 " +"دقائق)" #: src/user-defined-types.md msgid "[Enums](./user-defined-types/enums.md) (5 minutes)" -msgstr "" +msgstr "[التعدادات (Enums)](./user-defined-types/enums.md) (5 دقائق)" #: src/user-defined-types.md msgid "[Static](./user-defined-types/static.md) (5 minutes)" -msgstr "" +msgstr "[ثابت (Static)](./user-defined-types/static.md) (5 دقائق)" #: src/user-defined-types.md msgid "[Type Aliases](./user-defined-types/aliases.md) (2 minutes)" msgstr "" +"[أسماء مستعارة للأنواع (Type Aliases)](./user-defined-types/aliases.md) " +"(دقيقتان)" #: src/user-defined-types.md msgid "" "[Exercise: Elevator Events](./user-defined-types/exercise.md) (15 minutes)" msgstr "" +"[تمرين: أحداث المصعد (Elevator Events)](./user-defined-types/exercise.md) " +"(15 دقيقة)" #: src/user-defined-types.md src/methods-and-traits.md src/lifetimes.md msgid "This segment should take about 50 minutes" -msgstr "" +msgstr "يجب أن يستغرق هذا الجزء حوالي 50 دقيقة" #: src/user-defined-types/named-structs.md msgid "Like C and C++, Rust has support for custom structs:" -msgstr "" +msgstr "مثل C و C++، يدعم Rust الهياكل المخصصة (custom structs):" #: src/user-defined-types/named-structs.md msgid "\"{} is {} years old\"" -msgstr "" +msgstr "\"{} is {} years old\"" #: src/user-defined-types/named-structs.md #: src/android/interoperability/with-c/bindgen.md msgid "\"Peter\"" -msgstr "" +msgstr "\"بيتر\"" #: src/user-defined-types/named-structs.md msgid "\"Avery\"" -msgstr "" +msgstr "\"أفيري\"" #: src/user-defined-types/named-structs.md msgid "\"Jackie\"" -msgstr "" +msgstr "\"جاكي\"" #: src/user-defined-types/named-structs.md src/user-defined-types/enums.md #: src/pattern-matching/match.md src/methods-and-traits/methods.md msgid "Key Points:" -msgstr "" +msgstr "نقاط رئيسية (Key Points):" #: src/user-defined-types/named-structs.md msgid "Structs work like in C or C++." -msgstr "" +msgstr "الهياكل (Structs) تعمل مثلما في C أو C++." #: src/user-defined-types/named-structs.md msgid "Like in C++, and unlike in C, no typedef is needed to define a type." -msgstr "" +msgstr "مثل C++، وعلى عكس C، لا حاجة إلى typedef لتعريف نوع." #: src/user-defined-types/named-structs.md msgid "Unlike in C++, there is no inheritance between structs." -msgstr "" +msgstr "على عكس C++، لا يوجد وراثة (inheritance) بين الهياكل (structs)." #: src/user-defined-types/named-structs.md msgid "" "This may be a good time to let people know there are different types of " "structs." msgstr "" +"قد يكون هذا وقتًا جيدًا لإعلام الناس بوجود أنواع مختلفة من الهياكل (structs)." #: src/user-defined-types/named-structs.md msgid "" @@ -4059,18 +4646,25 @@ msgid "" "trait on some type but don’t have any data that you want to store in the " "value itself." msgstr "" +"الهياكل ذات الحجم الصفري (Zero-sized structs) (مثل `struct Foo;`) قد تُستخدم " +"عند تطبيق سمة (trait) على نوع معين ولكن لا تحتوي على أي بيانات تريد تخزينها " +"في القيمة نفسها." #: src/user-defined-types/named-structs.md msgid "" "The next slide will introduce Tuple structs, used when the field names are " "not important." msgstr "" +"الشريحة التالية ستقدم هياكل الترتيب (Tuple structs)، التي تُستخدم عندما لا " +"تكون أسماء الحقول مهمة." #: src/user-defined-types/named-structs.md msgid "" "If you already have variables with the right names, then you can create the " "struct using a shorthand." msgstr "" +"إذا كان لديك بالفعل متغيرات بالأسماء الصحيحة، فيمكنك إنشاء الهيكل (struct) " +"باستخدام اختصار." #: src/user-defined-types/named-structs.md msgid "" @@ -4078,99 +4672,121 @@ msgid "" "old struct without having to explicitly type it all out. It must always be " "the last element." msgstr "" +"الصيغة `..avery` تسمح لنا بنسخ معظم الحقول من الهيكل القديم دون الحاجة إلى " +"كتابتها جميعًا بشكل صريح. يجب أن تكون دائمًا العنصر الأخير." #: src/user-defined-types/tuple-structs.md msgid "If the field names are unimportant, you can use a tuple struct:" msgstr "" +"إذا كانت أسماء الحقول غير مهمة، يمكنك استخدام هيكل الترتيب (tuple struct):" #: src/user-defined-types/tuple-structs.md msgid "\"({}, {})\"" -msgstr "" +msgstr "\"({}, {})\"" #: src/user-defined-types/tuple-structs.md msgid "This is often used for single-field wrappers (called newtypes):" msgstr "" +"غالبًا ما يُستخدم هذا للأغلفة ذات الحقل الواحد (single-field wrappers) (تسمى " +"newtypes):" #: src/user-defined-types/tuple-structs.md msgid "\"Ask a rocket scientist at NASA\"" -msgstr "" +msgstr "\"اسأل عالم صواريخ في ناسا\"" #: src/user-defined-types/tuple-structs.md #: src/android/interoperability/cpp/cpp-bridge.md #: src/bare-metal/microcontrollers/type-state.md #: src/concurrency/async-pitfalls/cancellation.md msgid "// ...\n" -msgstr "" +msgstr "// ...\n" #: src/user-defined-types/tuple-structs.md msgid "" "Newtypes are a great way to encode additional information about the value in " "a primitive type, for example:" msgstr "" +"الأنواع الجديدة (Newtypes) هي طريقة رائعة لترميز معلومات إضافية حول القيمة " +"في نوع بدائي (primitive type)، على سبيل المثال:" #: src/user-defined-types/tuple-structs.md msgid "The number is measured in some units: `Newtons` in the example above." -msgstr "" +msgstr "يتم قياس الرقم بوحدات معينة: `نيوتن` (Newtons) في المثال أعلاه." #: src/user-defined-types/tuple-structs.md msgid "" "The value passed some validation when it was created, so you no longer have " "to validate it again at every use: `PhoneNumber(String)` or `OddNumber(u32)`." msgstr "" +"القيمة اجتازت بعض التحقق عند إنشائها، لذلك لم تعد بحاجة إلى التحقق منها مرة " +"أخرى في كل استخدام: `PhoneNumber(String)` أو `OddNumber(u32)`." #: src/user-defined-types/tuple-structs.md msgid "" "Demonstrate how to add a `f64` value to a `Newtons` type by accessing the " "single field in the newtype." msgstr "" +"أظهر كيفية إضافة قيمة `f64` إلى نوع `Newtons` عن طريق الوصول إلى الحقل " +"الفردي في النوع الجديد (newtype)." #: src/user-defined-types/tuple-structs.md msgid "" "Rust generally doesn’t like inexplicit things, like automatic unwrapping or " "for instance using booleans as integers." msgstr "" +"Rust عمومًا لا يحب الأشياء غير الواضحة، مثل فك التغليف التلقائي (automatic " +"unwrapping) أو على سبيل المثال استخدام القيم المنطقية (booleans) كأعداد " +"صحيحة (integers)." #: src/user-defined-types/tuple-structs.md msgid "Operator overloading is discussed on Day 3 (generics)." msgstr "" +"يتم مناقشة التحميل الزائد للمشغل (Operator overloading) في اليوم الثالث (Day " +"3) (الأنواع العامة (generics))." #: src/user-defined-types/tuple-structs.md msgid "" "The example is a subtle reference to the [Mars Climate Orbiter](https://en." "wikipedia.org/wiki/Mars_Climate_Orbiter) failure." msgstr "" +"المثال هو إشارة دقيقة إلى فشل [Mars Climate Orbiter](https://en.wikipedia." +"org/wiki/Mars_Climate_Orbiter)." #: src/user-defined-types/enums.md msgid "" "The `enum` keyword allows the creation of a type which has a few different " "variants:" msgstr "" +"الكلمة المفتاحية `enum` تسمح بإنشاء نوع يحتوي على عدة متغيرات مختلفة " +"(variants):" #: src/user-defined-types/enums.md msgid "// Simple variant\n" -msgstr "" +msgstr "// متغير بسيط (Simple variant)\n" #: src/user-defined-types/enums.md msgid "// Tuple variant\n" -msgstr "" +msgstr "// متغير ترتيب (Tuple variant)\n" #: src/user-defined-types/enums.md msgid "// Struct variant\n" -msgstr "" +msgstr "// متغير هيكل (Struct variant)\n" #: src/user-defined-types/enums.md msgid "\"On this turn: {:?}\"" -msgstr "" +msgstr "\"في هذا الدور: {:?}\"" #: src/user-defined-types/enums.md msgid "Enumerations allow you to collect a set of values under one type." -msgstr "" +msgstr "التعدادات (Enumerations) تسمح لك بجمع مجموعة من القيم تحت نوع واحد." #: src/user-defined-types/enums.md msgid "" "`Direction` is a type with variants. There are two values of `Direction`: " "`Direction::Left` and `Direction::Right`." msgstr "" +"`Direction` هو نوع يحتوي على متغيرات (variants). هناك قيمتان لـ `Direction`: " +"`Direction::Left` و `Direction::Right`." #: src/user-defined-types/enums.md msgid "" @@ -4178,16 +4794,21 @@ msgid "" "Rust will store a discriminant so that it knows at runtime which variant is " "in a `PlayerMove` value." msgstr "" +"`PlayerMove` هو نوع يحتوي على ثلاثة متغيرات (variants). بالإضافة إلى " +"الحمولات (payloads)، سيخزن Rust مميزًا (discriminant) حتى يعرف في وقت التشغيل " +"(runtime) أي متغير موجود في قيمة `PlayerMove`." #: src/user-defined-types/enums.md msgid "This might be a good time to compare structs and enums:" -msgstr "" +msgstr "قد يكون هذا وقتًا جيدًا لمقارنة الهياكل (structs) والتعدادات (enums):" #: src/user-defined-types/enums.md msgid "" "In both, you can have a simple version without fields (unit struct) or one " "with different types of fields (variant payloads)." msgstr "" +"في كليهما، يمكنك الحصول على نسخة بسيطة بدون حقول (unit struct) أو واحدة " +"تحتوي على أنواع مختلفة من الحقول (variant payloads)." #: src/user-defined-types/enums.md msgid "" @@ -4195,14 +4816,17 @@ msgid "" "structs but then they wouldn’t be the same type as they would if they were " "all defined in an enum." msgstr "" +"يمكنك حتى تنفيذ المتغيرات المختلفة (variants) لتعداد (enum) باستخدام هياكل " +"منفصلة (separate structs) ولكنها لن تكون من نفس النوع كما لو كانت جميعها " +"معرفة في تعداد (enum)." #: src/user-defined-types/enums.md msgid "Rust uses minimal space to store the discriminant." -msgstr "" +msgstr "Rust يستخدم مساحة صغيرة لتخزين المميز (discriminant)." #: src/user-defined-types/enums.md msgid "If necessary, it stores an integer of the smallest required size" -msgstr "" +msgstr "إذا لزم الأمر، فإنه يخزن عددًا صحيحًا (integer) بأصغر حجم مطلوب." #: src/user-defined-types/enums.md msgid "" @@ -4211,30 +4835,41 @@ msgid "" "optimization\"). For example, `Option<&u8>` stores either a pointer to an " "integer or `NULL` for the `None` variant." msgstr "" +"إذا لم تغطي القيم المسموح بها للمتغيرات (variant values) جميع أنماط البتات " +"(bit patterns)، فسيستخدم أنماط البتات غير الصالحة (invalid bit patterns) " +"لترميز المميز (discriminant) (تحسين الفجوة (niche optimization)). على سبيل " +"المثال، `Option<&u8>` يخزن إما مؤشرًا إلى عدد صحيح (integer) أو `NULL` " +"للمتغير `None`." #: src/user-defined-types/enums.md msgid "" "You can control the discriminant if needed (e.g., for compatibility with C):" msgstr "" +"يمكنك التحكم في المميز (discriminant) إذا لزم الأمر (على سبيل المثال، " +"للتوافق مع C):" #: src/user-defined-types/enums.md msgid "" "Without `repr`, the discriminant type takes 2 bytes, because 10001 fits 2 " "bytes." msgstr "" +"بدون `repr`، يأخذ نوع المميز (discriminant type) 2 بايت، لأن 10001 يناسب 2 " +"بايت." #: src/user-defined-types/enums.md src/user-defined-types/static.md #: src/memory-management/review.md src/memory-management/move.md #: src/memory-management/copy-types.md src/smart-pointers/box.md #: src/borrowing/shared.md src/error-handling/result.md msgid "More to Explore" -msgstr "" +msgstr "المزيد لاستكشافه" #: src/user-defined-types/enums.md msgid "" "Rust has several optimizations it can employ to make enums take up less " "space." msgstr "" +"لدى Rust العديد من التحسينات (optimizations) التي يمكن استخدامها لجعل " +"التعدادات (enums) تشغل مساحة أقل." #: src/user-defined-types/enums.md msgid "" @@ -4242,6 +4877,8 @@ msgid "" "option/#representation), Rust guarantees that `size_of::()` equals " "`size_of::>()`." msgstr "" +"تحسين المؤشر الفارغ (Null pointer optimization): بالنسبة لبعض الأنواع " +"(types)، يضمن Rust أن `size_of::()` يساوي `size_of::>()`." #: src/user-defined-types/enums.md msgid "" @@ -4249,24 +4886,29 @@ msgid "" "like in practice. It's important to note that the compiler provides no " "guarantees regarding this representation, therefore this is totally unsafe." msgstr "" +"مثال إذا كنت تريد إظهار كيف يمكن أن تبدو التمثيلات الثنائية (bitwise " +"representation) في الممارسة العملية. من المهم ملاحظة أن المترجم (compiler) " +"لا يقدم أي ضمانات بخصوص هذا التمثيل، لذلك هذا غير آمن تمامًا." #: src/user-defined-types/static.md msgid "`static`" -msgstr "" +msgstr "`static`" #: src/user-defined-types/static.md msgid "" "Static variables will live during the whole execution of the program, and " "therefore will not move:" msgstr "" +"المتغيرات الثابتة (Static variables) ستظل موجودة طوال تنفيذ البرنامج " +"بالكامل، وبالتالي لن تتحرك:" #: src/user-defined-types/static.md msgid "\"Welcome to RustOS 3.14\"" -msgstr "" +msgstr "\"Welcome to RustOS 3.14\"" #: src/user-defined-types/static.md msgid "\"{BANNER}\"" -msgstr "" +msgstr "\"{BANNER}\"" #: src/user-defined-types/static.md msgid "" @@ -4277,16 +4919,27 @@ msgid "" "globally-scoped value does not have a reason to need object identity, " "`const` is generally preferred." msgstr "" +"كما هو مذكور في [Rust RFC Book](https://rust-lang.github.io/rfcs/0246-const-" +"vs-static.html)، هذه المتغيرات لا يتم تضمينها عند الاستخدام ولها موقع ذاكرة " +"فعلي مرتبط بها. هذا مفيد للكود غير الآمن (unsafe) والمضمن (embedded)، ويظل " +"المتغير موجودًا طوال تنفيذ البرنامج بالكامل. عندما لا يكون للقيمة ذات النطاق " +"العالمي سبب للحاجة إلى هوية الكائن (object identity)، يفضل استخدام `const` " +"بشكل عام." #: src/user-defined-types/static.md msgid "`static` is similar to mutable global variables in C++." msgstr "" +"`static` مشابه للمتغيرات العالمية القابلة للتغيير (mutable global variables) " +"في C++." #: src/user-defined-types/static.md msgid "" "`static` provides object identity: an address in memory and state as " "required by types with interior mutability such as `Mutex`." msgstr "" +"`static` يوفر هوية الكائن (object identity): عنوان في الذاكرة وحالة كما هو " +"مطلوب من الأنواع ذات القابلية للتغيير الداخلي (interior mutability) مثل " +"`Mutex`." #: src/user-defined-types/static.md msgid "" @@ -4294,56 +4947,74 @@ msgid "" "`Sync`. Interior mutability is possible through a [`Mutex`](https://doc.rust-" "lang.org/std/sync/struct.Mutex.html), atomic or similar." msgstr "" +"نظرًا لأن المتغيرات الثابتة (`static` variables) يمكن الوصول إليها من أي خيط " +"(thread)، يجب أن تكون `Sync`. القابلية للتغيير الداخلي (Interior mutability) " +"ممكنة من خلال [`Mutex`](https://doc.rust-lang.org/std/sync/struct.Mutex." +"html)، (atomic) أو ما شابه." #: src/user-defined-types/static.md msgid "Thread-local data can be created with the macro `std::thread_local`." msgstr "" +"يمكن إنشاء البيانات المحلية للخيط (Thread-local data) باستخدام الماكرو `std::" +"thread_local`." #: src/user-defined-types/const.md msgid "`const`" -msgstr "" +msgstr "`const`" #: src/user-defined-types/const.md msgid "" "Constants are evaluated at compile time and their values are inlined " "wherever they are used:" msgstr "" +"يتم تقييم الثوابت (Constants) في وقت الترجمة (compile time) ويتم تضمين قيمها " +"في أي مكان يتم استخدامها فيه:" #: src/user-defined-types/const.md msgid "" "According to the [Rust RFC Book](https://rust-lang.github.io/rfcs/0246-const-" "vs-static.html) these are inlined upon use." msgstr "" +"وفقًا لـ [Rust RFC Book](https://rust-lang.github.io/rfcs/0246-const-vs-" +"static.html) يتم تضمين هذه القيم عند الاستخدام." #: src/user-defined-types/const.md msgid "" "Only functions marked `const` can be called at compile time to generate " "`const` values. `const` functions can however be called at runtime." msgstr "" +"فقط الدوال المميزة بـ `const` يمكن استدعاؤها في وقت الترجمة (compile time) " +"لتوليد قيم `const`. ومع ذلك، يمكن استدعاء الدوال `const` في وقت التشغيل " +"(runtime)." #: src/user-defined-types/const.md msgid "Mention that `const` behaves semantically similar to C++'s `constexpr`" -msgstr "" +msgstr "اذكر أن `const` يتصرف بشكل مشابه دلاليًا لـ `constexpr` في C++." #: src/user-defined-types/const.md msgid "" "It isn't super common that one would need a runtime evaluated constant, but " "it is helpful and safer than using a static." msgstr "" +"ليس من الشائع جدًا أن يحتاج المرء إلى ثابت يتم تقييمه في وقت التشغيل (runtime " +"evaluated constant)، ولكنه مفيد وأكثر أمانًا من استخدام ثابت (static)." #: src/user-defined-types/aliases.md msgid "" "A type alias creates a name for another type. The two types can be used " "interchangeably." msgstr "" +"الاسم المستعار للنوع (type alias) ينشئ اسمًا لنوع آخر. يمكن استخدام النوعين " +"بالتبادل." #: src/user-defined-types/aliases.md msgid "// Aliases are more useful with long, complex types:\n" msgstr "" +"// الأسماء المستعارة (Aliases) تكون أكثر فائدة مع الأنواع الطويلة والمعقدة:\n" #: src/user-defined-types/aliases.md msgid "C programmers will recognize this as similar to a `typedef`." -msgstr "" +msgstr "مبرمجو C سيتعرفون على هذا كشيء مشابه لـ `typedef`." #: src/user-defined-types/exercise.md msgid "" @@ -4352,6 +5023,10 @@ msgid "" "various events. Use `#[derive(Debug)]` to allow the types to be formatted " "with `{:?}`." msgstr "" +"سنقوم بإنشاء هيكل بيانات (data structure) لتمثيل حدث في نظام التحكم في " +"المصعد. الأمر متروك لك لتحديد الأنواع (types) والدوال (functions) لبناء " +"الأحداث المختلفة. استخدم `#[derive(Debug)]` للسماح بتنسيق الأنواع باستخدام " +"`{:?}`." #: src/user-defined-types/exercise.md msgid "" @@ -4359,11 +5034,9 @@ msgid "" "`main` runs without errors. The next part of the course will cover getting " "data out of these structures." msgstr "" - -#: src/user-defined-types/exercise.md src/user-defined-types/solution.md -msgid "" -"/// An event in the elevator system that the controller must react to.\n" -msgstr "" +"يتطلب هذا التمرين فقط إنشاء وملء هياكل البيانات (data structures) بحيث يتم " +"تشغيل `main` بدون أخطاء. سيغطي الجزء التالي من الدورة استخراج البيانات من " +"هذه الهياكل." #: src/user-defined-types/exercise.md msgid "// TODO: add required variants\n"