1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2025-04-18 22:33:33 +02:00

fa: try to complete Farsi - part 4 (#2401)

fa: try to complete Farsi - part 4

---------

Co-authored-by: javad-jafari <javajafarifromsharak@gmail.com>
Co-authored-by: javad-jafari <65780584+javad-jafari@users.noreply.github.com>
This commit is contained in:
Danny Ra 2024-10-14 00:00:04 +03:30 committed by GitHub
parent 252bb62521
commit 25a2fa6a09
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 243 additions and 52 deletions

288
po/fa.po
View File

@ -2,7 +2,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Comprehensive Rust 🦀\n" "Project-Id-Version: Comprehensive Rust 🦀\n"
"POT-Creation-Date: 2024-09-11T22:10:46Z\n" "POT-Creation-Date: 2024-09-11T22:10:46Z\n"
"PO-Revision-Date: 2024-10-04 21:48+0330\n" "PO-Revision-Date: 2024-10-13 22:50+0330\n"
"Last-Translator: alix1383 <dev.alix13@gmail.com>\n" "Last-Translator: alix1383 <dev.alix13@gmail.com>\n"
"Language-Team: Persian\n" "Language-Team: Persian\n"
"Language: fa\n" "Language: fa\n"
@ -554,7 +554,7 @@ msgstr "روز چهارم: صبح"
#: src/SUMMARY.md src/running-the-course/course-structure.md #: src/SUMMARY.md src/running-the-course/course-structure.md
#: src/welcome-day-4.md src/iterators.md #: src/welcome-day-4.md src/iterators.md
msgid "Iterators" msgid "Iterators"
msgstr "" msgstr "Iterators"
#: src/SUMMARY.md src/iterators/iterator.md src/bare-metal/no_std.md #: src/SUMMARY.md src/iterators/iterator.md src/bare-metal/no_std.md
msgid "`Iterator`" msgid "`Iterator`"
@ -776,7 +776,7 @@ msgstr "GoogleTest"
#: src/SUMMARY.md src/android/testing/mocking.md #: src/SUMMARY.md src/android/testing/mocking.md
msgid "Mocking" msgid "Mocking"
msgstr "" msgstr "Mocking"
#: src/SUMMARY.md src/android/logging.md src/bare-metal/aps/logging.md #: src/SUMMARY.md src/android/logging.md src/bare-metal/aps/logging.md
msgid "Logging" msgid "Logging"
@ -812,7 +812,7 @@ msgstr "Rust Bridge"
#: src/SUMMARY.md src/android/interoperability/cpp/generated-cpp.md #: src/SUMMARY.md src/android/interoperability/cpp/generated-cpp.md
msgid "Generated C++" msgid "Generated C++"
msgstr "" msgstr "Generated C++"
#: src/SUMMARY.md #: src/SUMMARY.md
msgid "C++ Bridge" msgid "C++ Bridge"
@ -836,7 +836,7 @@ msgstr "مدیریت خطا ++C "
#: src/SUMMARY.md src/android/interoperability/cpp/type-mapping.md #: src/SUMMARY.md src/android/interoperability/cpp/type-mapping.md
msgid "Additional Types" msgid "Additional Types"
msgstr "" msgstr "تایپ‌های اضافی"
#: src/SUMMARY.md #: src/SUMMARY.md
msgid "Building for Android: C++" msgid "Building for Android: C++"
@ -904,9 +904,8 @@ msgid "`chromium::import!` Macro"
msgstr "`chromium::import!` Macro" msgstr "`chromium::import!` Macro"
#: src/SUMMARY.md src/chromium/interoperability-with-cpp.md #: src/SUMMARY.md src/chromium/interoperability-with-cpp.md
#, fuzzy
msgid "Interoperability with C++" msgid "Interoperability with C++"
msgstr "قابلیت همکاری" msgstr "قابلیت همکاری با ++C"
#: src/SUMMARY.md src/chromium/interoperability-with-cpp/example-bindings.md #: src/SUMMARY.md src/chromium/interoperability-with-cpp/example-bindings.md
#, fuzzy #, fuzzy
@ -915,7 +914,7 @@ msgstr "مثال‌ها"
#: src/SUMMARY.md src/chromium/interoperability-with-cpp/limitations-of-cxx.md #: src/SUMMARY.md src/chromium/interoperability-with-cpp/limitations-of-cxx.md
msgid "Limitations of CXX" msgid "Limitations of CXX"
msgstr "" msgstr "محدودیت‌های CXX"
#: src/SUMMARY.md src/chromium/interoperability-with-cpp/error-handling.md #: src/SUMMARY.md src/chromium/interoperability-with-cpp/error-handling.md
msgid "CXX Error Handling" msgid "CXX Error Handling"
@ -935,7 +934,7 @@ msgstr "استفاده از CXX در Chromium"
#: src/SUMMARY.md src/chromium/adding-third-party-crates.md #: src/SUMMARY.md src/chromium/adding-third-party-crates.md
msgid "Adding Third Party Crates" msgid "Adding Third Party Crates"
msgstr "" msgstr "اضافه‌کردن Crateهای شخص ثالث"
#: src/SUMMARY.md #: src/SUMMARY.md
msgid "Configuring Cargo.toml" msgid "Configuring Cargo.toml"
@ -984,7 +983,7 @@ msgstr "کد‌های Chromium را بررسی کنید."
#: src/SUMMARY.md src/chromium/adding-third-party-crates/keeping-up-to-date.md #: src/SUMMARY.md src/chromium/adding-third-party-crates/keeping-up-to-date.md
msgid "Keeping Crates Up to Date" msgid "Keeping Crates Up to Date"
msgstr "" msgstr "به روز نگه داشتن Crateها"
#: src/SUMMARY.md #: src/SUMMARY.md
msgid "Bringing It Together - Exercise" msgid "Bringing It Together - Exercise"
@ -2161,6 +2160,10 @@ msgid ""
"translation-report.html) or [synced to the latest version of the course]" "translation-report.html) or [synced to the latest version of the course]"
"(https://google.github.io/comprehensive-rust/synced-translation-report.html)." "(https://google.github.io/comprehensive-rust/synced-translation-report.html)."
msgstr "" msgstr ""
"فهرست کامل ترجمه‌ها با وضعیت فعلی‌شان نیز [در آخرین به‌روزرسانی](https://google."
"github.io/comprehensive-rust/translation-report.html) یا [همگام‌سازی شده با "
"آخرین نسخه دوره](https://google.github.io/comprehensive-rust/synced-"
"translation-report.html)."
#: src/running-the-course/translations.md #: src/running-the-course/translations.md
msgid "" msgid ""
@ -4580,7 +4583,7 @@ msgstr ""
#: src/user-defined-types/tuple-structs.md #: src/user-defined-types/tuple-structs.md
msgid "If the field names are unimportant, you can use a tuple struct:" msgid "If the field names are unimportant, you can use a tuple struct:"
msgstr "" msgstr "اگر نام فیلدها بی‌اهمیت هستند، می‌توانید از ساختار tuple استفاده کنید:"
#: src/user-defined-types/tuple-structs.md #: src/user-defined-types/tuple-structs.md
msgid "\"({}, {})\"" msgid "\"({}, {})\""
@ -4612,19 +4615,24 @@ msgstr ""
#: src/user-defined-types/tuple-structs.md #: src/user-defined-types/tuple-structs.md
msgid "The number is measured in some units: `Newtons` in the example above." msgid "The number is measured in some units: `Newtons` in the example above."
msgstr "" msgstr "این عدد در برخی واحدها اندازه گیری می‌شود: `Newtons` در مثال بالا."
#: src/user-defined-types/tuple-structs.md #: src/user-defined-types/tuple-structs.md
msgid "" msgid ""
"The value passed some validation when it was created, so you no longer have " "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)`." "to validate it again at every use: `PhoneNumber(String)` or `OddNumber(u32)`."
msgstr "" msgstr ""
"مقدار زمانی که ایجاد شد مقداری اعتبارسنجی را دریافت کرد، بنابراین دیگر لازم "
"نیست در هر بار استفاده دوباره آن را تأیید کنید: `PhoneNumber(String)` یا "
"`OddNumber(u32)`."
#: src/user-defined-types/tuple-structs.md #: src/user-defined-types/tuple-structs.md
msgid "" msgid ""
"Demonstrate how to add a `f64` value to a `Newtons` type by accessing the " "Demonstrate how to add a `f64` value to a `Newtons` type by accessing the "
"single field in the newtype." "single field in the newtype."
msgstr "" msgstr ""
"نحوه افزودن مقدار `f64` به نوع `Newtons` را با دسترسی به single field در نوع "
"جدید نشان دهید."
#: src/user-defined-types/tuple-structs.md #: src/user-defined-types/tuple-structs.md
msgid "" msgid ""
@ -4643,6 +4651,8 @@ msgid ""
"The example is a subtle reference to the [Mars Climate Orbiter](https://en." "The example is a subtle reference to the [Mars Climate Orbiter](https://en."
"wikipedia.org/wiki/Mars_Climate_Orbiter) failure." "wikipedia.org/wiki/Mars_Climate_Orbiter) failure."
msgstr "" msgstr ""
"این مثال، اشاره ظریفی به شکست [مدارگَرد آب‌و‌هوای مریخ](https://en.wikipedia."
"org/wiki/Mars_Climate_Orbiter) است."
#: src/user-defined-types/enums.md #: src/user-defined-types/enums.md
msgid "" msgid ""
@ -4721,7 +4731,7 @@ msgstr ""
#: src/user-defined-types/enums.md #: src/user-defined-types/enums.md
msgid "If necessary, it stores an integer of the smallest required size" msgid "If necessary, it stores an integer of the smallest required size"
msgstr "" msgstr "در صورت لزوم، یک عدد صحیح با کوچکترین اندازه مورد نیاز را ذخیره می‌کند"
#: src/user-defined-types/enums.md #: src/user-defined-types/enums.md
msgid "" msgid ""
@ -4730,6 +4740,10 @@ msgid ""
"optimization\"). For example, `Option<&u8>` stores either a pointer to an " "optimization\"). For example, `Option<&u8>` stores either a pointer to an "
"integer or `NULL` for the `None` variant." "integer or `NULL` for the `None` variant."
msgstr "" msgstr ""
"اگر مقادیر متغیر مجاز همه الگوهای bit را پوشش ندهند، از الگوهای bit نامعتبر "
"برای رمزگذاری متمایز کننده (یک \"niche optimization\") استفاده می‌کند. برای "
"مثال، `Option<&u8>` یک اشاره‌گر به یک عدد صحیح یا `NULL` را برای نوع `None` "
"ذخیره می‌کند."
#: src/user-defined-types/enums.md #: src/user-defined-types/enums.md
msgid "" msgid ""
@ -10089,11 +10103,11 @@ msgstr ""
#: src/welcome-day-4.md #: src/welcome-day-4.md
msgid "Iterators: a deep dive on the `Iterator` trait." msgid "Iterators: a deep dive on the `Iterator` trait."
msgstr "" msgstr "Iterators: شیرجه عمیق در ویژگی `Iterator`."
#: src/welcome-day-4.md #: src/welcome-day-4.md
msgid "Modules and visibility." msgid "Modules and visibility."
msgstr "" msgstr "ماژول ها و قابلیت مشاهده"
#: src/welcome-day-4.md #: src/welcome-day-4.md
msgid "Testing." msgid "Testing."
@ -10107,22 +10121,24 @@ msgstr "رسیدگی به خطا: panics در `Result` و اپراتور تلا
msgid "" msgid ""
"Unsafe Rust: the escape hatch when you can't express yourself in safe Rust." "Unsafe Rust: the escape hatch when you can't express yourself in safe Rust."
msgstr "" msgstr ""
"با Unsafe Rust: پنجره فرار مبتنی بر زمان که نمی‌توانید خود را در safe Rust "
"بیان کنید."
#: src/welcome-day-4.md #: src/welcome-day-4.md
msgid "" msgid ""
"Including 10 minute breaks, this session should take about 2 hours and 40 " "Including 10 minute breaks, this session should take about 2 hours and 40 "
"minutes. It contains:" "minutes. It contains:"
msgstr "" msgstr ""
"با احتساب ۱۰ دقیقه استراحت، این جلسه باید حدود ۲ ساعت و ۴۰ دقیقه طول بکشد. "
"شامل:"
#: src/iterators.md #: src/iterators.md
#, fuzzy
msgid "Iterator" msgid "Iterator"
msgstr "FromIterator" msgstr "Iterator"
#: src/iterators.md #: src/iterators.md
#, fuzzy
msgid "IntoIterator" msgid "IntoIterator"
msgstr "FromIterator" msgstr "IntoIterator"
#: src/iterators.md src/iterators/fromiterator.md #: src/iterators.md src/iterators/fromiterator.md
msgid "FromIterator" msgid "FromIterator"
@ -10215,7 +10231,7 @@ msgstr ""
#: src/iterators/intoiterator.md #: src/iterators/intoiterator.md
msgid "The example iterates over all combinations of x and y coordinates." msgid "The example iterates over all combinations of x and y coordinates."
msgstr "" msgstr "مثال روی تمام ترکیبات مختصات x و y تکرار می‌شود."
#: src/iterators/intoiterator.md #: src/iterators/intoiterator.md
msgid "" msgid ""
@ -10238,6 +10254,10 @@ msgid ""
"elements from that vector. Use `for e in &some_vector` instead, to iterate " "elements from that vector. Use `for e in &some_vector` instead, to iterate "
"over references to elements of `some_vector`." "over references to elements of `some_vector`."
msgstr "" msgstr ""
"همین مشکل می‌تواند برای انواع کتابخانه استاندارد رخ دهد: `برای e در "
"some_vector` مالکیت `some_vector` را در اختیار می‌گیرد و روی عناصر متعلق به "
"آن بردار تکرار می‌شود. به جای آن از `e در &some_vector` برای تکرار بر روی "
"ارجاعات به عناصر `some_vector` استفاده کنید."
#: src/iterators/fromiterator.md #: src/iterators/fromiterator.md
msgid "" msgid ""
@ -10268,6 +10288,9 @@ msgid ""
"shown. The `_` shorthand used here lets Rust infer the type of the `Vec` " "shown. The `_` shorthand used here lets Rust infer the type of the `Vec` "
"elements." "elements."
msgstr "" msgstr ""
"با کمک \"turbofish\": `some_iterator.collect::<COLLECTION_TYPE>()`، همانطور "
"که نشان داده شده است و به طور خلاصه `_` استفاده شده در اینجا به Rust امکان "
"می‌دهد نوع عناصر \"Vec\" را استنتاج کند."
#: src/iterators/fromiterator.md #: src/iterators/fromiterator.md
msgid "" msgid ""
@ -10283,6 +10306,10 @@ msgid ""
"There are also more specialized implementations which let you do cool things " "There are also more specialized implementations which let you do cool things "
"like convert an `Iterator<Item = Result<V, E>>` into a `Result<Vec<V>, E>`." "like convert an `Iterator<Item = Result<V, E>>` into a `Result<Vec<V>, E>`."
msgstr "" msgstr ""
"پیاده‌سازی‌های اولیه `FromIterator` برای`Vec`, `HashMap` و غیره وجود دارد. "
"همچنین پیاده‌سازی‌های تخصصی‌تری وجود دارد که به شما امکان می‌دهد کارهای جالبی "
"مانند تبدیل `Iterator<Item = Result<V, E>>` به یک `Result<Vec<V>, E>` انجام "
"دهید."
#: src/iterators/exercise.md #: src/iterators/exercise.md
msgid "" msgid ""
@ -10290,6 +10317,9 @@ msgid ""
"in the [`Iterator`](https://doc.rust-lang.org/std/iter/trait.Iterator.html) " "in the [`Iterator`](https://doc.rust-lang.org/std/iter/trait.Iterator.html) "
"trait to implement a complex calculation." "trait to implement a complex calculation."
msgstr "" msgstr ""
"در این تمرین، باید برخی از روش های ارائه شده در [`Iterator`](https://doc."
"rust-lang.org/std/iter/trait.Iterator.html) را برای پیاده‌سازی یک ویژگی پیدا "
"کنید و از آنها برای محاسبه پیچیده استفاده کنید."
#: src/iterators/exercise.md #: src/iterators/exercise.md
msgid "" msgid ""
@ -10358,7 +10388,7 @@ msgstr ""
#: src/modules/modules.md #: src/modules/modules.md
msgid "Modules define organization, scope, and are the focus of this section." msgid "Modules define organization, scope, and are the focus of this section."
msgstr "" msgstr "ماژول‌های organization، scope، و تمرکز این بخش را تعریف می‌کنند."
#: src/modules/filesystem.md #: src/modules/filesystem.md
msgid "" msgid ""
@ -10393,6 +10423,9 @@ msgid ""
"comments\". These document the item that contains them -- in this case, a " "comments\". These document the item that contains them -- in this case, a "
"module." "module."
msgstr "" msgstr ""
"ماژول‌های تعریف‌شده در فایل‌ها را نیز می‌توان با استفاده از «کامنت‌های مستند "
"داخلی» مستند کرد. اینها موردی را که حاوی آنها است - در این مورد، یک ماژول "
"مستند می‌کنند."
#: src/modules/filesystem.md #: src/modules/filesystem.md
#, fuzzy #, fuzzy
@ -10433,6 +10466,8 @@ msgid ""
"The main reason to introduce `filename.rs` as alternative to `filename/mod." "The main reason to introduce `filename.rs` as alternative to `filename/mod."
"rs` was because many files named `mod.rs` can be hard to distinguish in IDEs." "rs` was because many files named `mod.rs` can be hard to distinguish in IDEs."
msgstr "" msgstr ""
"دلیل اصلی معرفی `filename.rs` به‌عنوان جایگزین `filename/mod.rs` این بود که "
"تشخیص بسیاری از فایل‌ها با نام `mod.rs` در IDE‌ها دشوار است."
#: src/modules/filesystem.md #: src/modules/filesystem.md
msgid "Deeper nesting can use folders, even if the main module is a file:" msgid "Deeper nesting can use folders, even if the main module is a file:"
@ -10445,6 +10480,7 @@ msgid ""
"The place rust will look for modules can be changed with a compiler " "The place rust will look for modules can be changed with a compiler "
"directive:" "directive:"
msgstr "" msgstr ""
"مکانی که rust به دنبال ماژول‌ها می‌گردد را می‌توان با دستور کامپایلر تغییر داد:"
#: src/modules/filesystem.md #: src/modules/filesystem.md
msgid "\"some/path.rs\"" msgid "\"some/path.rs\""
@ -10461,11 +10497,13 @@ msgstr ""
#: src/modules/visibility.md #: src/modules/visibility.md
msgid "Modules are a privacy boundary:" msgid "Modules are a privacy boundary:"
msgstr "" msgstr "ماژول‌ها یک مرز حریم خصوصی هستند:"
#: src/modules/visibility.md #: src/modules/visibility.md
msgid "Module items are private by default (hides implementation details)." msgid "Module items are private by default (hides implementation details)."
msgstr "" msgstr ""
"گزینه‌های ماژول به طور پیش‌فرض private هستند (جزئیات پیاده سازی را پنهان "
"می‌کند)."
#: src/modules/visibility.md #: src/modules/visibility.md
msgid "Parent and sibling items are always visible." msgid "Parent and sibling items are always visible."
@ -10504,6 +10542,8 @@ msgid ""
"Additionally, there are advanced `pub(...)` specifiers to restrict the scope " "Additionally, there are advanced `pub(...)` specifiers to restrict the scope "
"of public visibility." "of public visibility."
msgstr "" msgstr ""
"علاوه بر این، مشخص‌کننده‌های پیشرفته `pub(...)` برای محدود کردن دامنه دید "
"عمومی وجود دارد."
#: src/modules/visibility.md #: src/modules/visibility.md
msgid "" msgid ""
@ -10519,7 +10559,7 @@ msgstr "پیکربندی قابل نمایش بودن `pub(crate)` یک الگو
#: src/modules/visibility.md #: src/modules/visibility.md
msgid "Less commonly, you can give visibility to a specific path." msgid "Less commonly, you can give visibility to a specific path."
msgstr "" msgstr "این مورد کمتر متداول است، شما می‌توانید به یک مسیر خاص دید بدهید."
#: src/modules/visibility.md #: src/modules/visibility.md
msgid "" msgid ""
@ -10544,7 +10584,7 @@ msgstr "مسیرها (Paths) به شرح زیر حل می‌شوند:"
#: src/modules/paths.md #: src/modules/paths.md
msgid "As a relative path:" msgid "As a relative path:"
msgstr "" msgstr "به عنوان یک path نسبی:"
#: src/modules/paths.md #: src/modules/paths.md
msgid "`foo` or `self::foo` refers to `foo` in the current module," msgid "`foo` or `self::foo` refers to `foo` in the current module,"
@ -10556,7 +10596,7 @@ msgstr ""
#: src/modules/paths.md #: src/modules/paths.md
msgid "As an absolute path:" msgid "As an absolute path:"
msgstr "" msgstr "به عنوان یک path مطلق:"
#: src/modules/paths.md #: src/modules/paths.md
msgid "`crate::foo` refers to `foo` in the root of the current crate," msgid "`crate::foo` refers to `foo` in the root of the current crate,"
@ -10571,12 +10611,16 @@ msgid ""
"It is common to \"re-export\" symbols at a shorter path. For example, the " "It is common to \"re-export\" symbols at a shorter path. For example, the "
"top-level `lib.rs` in a crate might have" "top-level `lib.rs` in a crate might have"
msgstr "" msgstr ""
"این\"re-export\" نمادها در مسیر کوتاه‌تری معمول است. برای مثال، `lib.rs` سطح "
"بالا در یک crate ممکن است داشته باشد"
#: src/modules/paths.md #: src/modules/paths.md
msgid "" msgid ""
"making `DiskStorage` and `NetworkStorage` available to other crates with a " "making `DiskStorage` and `NetworkStorage` available to other crates with a "
"convenient, short path." "convenient, short path."
msgstr "" msgstr ""
"در دسترس قرار دادن `DiskStorage` و `NetworkStorage` برای سایر crateها با یک "
"مسیر راحت و کوتاه."
#: src/modules/paths.md #: src/modules/paths.md
msgid "" msgid ""
@ -10603,12 +10647,17 @@ msgid ""
"This library defines a `Widget` trait and a few implementations of that " "This library defines a `Widget` trait and a few implementations of that "
"trait, as well as a `main` function." "trait, as well as a `main` function."
msgstr "" msgstr ""
"در این تمرین، یک پیاده‌سازی کتابخانه GUI کوچک را دوباره سازماندهی خواهید کرد. "
"این کتابخانه یک ویژگی`Widget` و چند پیاده‌سازی از آن ویژگی و همچنین یک تابع "
"`main` را تعریف می‌کند."
#: src/modules/exercise.md #: src/modules/exercise.md
msgid "" msgid ""
"It is typical to put each type or set of closely-related types into its own " "It is typical to put each type or set of closely-related types into its own "
"module, so each widget type should get its own module." "module, so each widget type should get its own module."
msgstr "" msgstr ""
"معمول است که هر نوع یا مجموعه‌ای از انواع مرتبط نزدیک را در ماژول خود قرار "
"دهید، بنابراین هر نوع ویجت باید ماژول خاص خود را داشته باشد."
#: src/modules/exercise.md #: src/modules/exercise.md
#, fuzzy #, fuzzy
@ -10620,12 +10669,16 @@ msgid ""
"The Rust playground only supports one file, so you will need to make a Cargo " "The Rust playground only supports one file, so you will need to make a Cargo "
"project on your local filesystem:" "project on your local filesystem:"
msgstr "" msgstr ""
"یک Rust playground فقط از یک فایل پشتیبانی می‌کند، بنابراین باید یک پروژه "
"Cargo را در سیستم فایل محلی خود ایجاد کنید:"
#: src/modules/exercise.md #: src/modules/exercise.md
msgid "" msgid ""
"Edit the resulting `src/main.rs` to add `mod` statements, and add additional " "Edit the resulting `src/main.rs` to add `mod` statements, and add additional "
"files in the `src` directory." "files in the `src` directory."
msgstr "" msgstr ""
"این `src/main.rs` حاصل را ویرایش کنید تا عبارات `mod` را اضافه کنید و "
"فایل‌های اضافی را در دایرکتوری `src` اضافه کنید."
#: src/modules/exercise.md #: src/modules/exercise.md
msgid "Source" msgid "Source"
@ -10717,6 +10770,9 @@ msgid ""
"and get accustomed to the required `mod`, `use`, and `pub` declarations. " "and get accustomed to the required `mod`, `use`, and `pub` declarations. "
"Afterward, discuss what organizations are most idiomatic." "Afterward, discuss what organizations are most idiomatic."
msgstr "" msgstr ""
"دانش‌آموزان را تشویق کنید تا کد را به‌گونه‌ای تقسیم کنند که برایشان طبیعی است و "
"به اعلان‌های `mod`, `use` و `pub`عادت کنند. پس از آن، در مورد اینکه چه "
"organizationهایی idiomatic هستند بحث کنید."
#: src/modules/solution.md #: src/modules/solution.md
msgid "// ---- src/widgets.rs ----\n" msgid "// ---- src/widgets.rs ----\n"
@ -10808,7 +10864,7 @@ msgstr ""
#: src/testing/unit-tests.md #: src/testing/unit-tests.md
msgid "Integration tests are supported via the `tests/` directory." msgid "Integration tests are supported via the `tests/` directory."
msgstr "" msgstr "تست‌های یکپارچه‌سازی از طریق دایرکتوری `tests/` پشتیبانی می‌شوند."
#: src/testing/unit-tests.md #: src/testing/unit-tests.md
msgid "" msgid ""
@ -10844,6 +10900,8 @@ msgstr "Integration Tests"
#: src/testing/other.md #: src/testing/other.md
msgid "If you want to test your library as a client, use an integration test." msgid "If you want to test your library as a client, use an integration test."
msgstr "" msgstr ""
"اگر می‌خواهید کتابخانه خود را به عنوان یک سرویس‌گیرنده آزمایش کنید، از تست "
"یکپارچه‌سازی (integration test) استفاده کنید."
#: src/testing/other.md #: src/testing/other.md
msgid "Create a `.rs` file under `tests/`:" msgid "Create a `.rs` file under `tests/`:"
@ -10864,7 +10922,7 @@ msgstr "تست‌ سندها"
#: src/testing/other.md #: src/testing/other.md
msgid "Rust has built-in support for documentation tests:" msgid "Rust has built-in support for documentation tests:"
msgstr "" msgstr "زبان Rust دارای پشتیبانی داخلی برای تست‌های مستندسازی است:"
#: src/testing/other.md #: src/testing/other.md
#, fuzzy #, fuzzy
@ -10892,7 +10950,7 @@ msgstr ""
#: src/testing/other.md #: src/testing/other.md
msgid "The code will be compiled and executed as part of `cargo test`." msgid "The code will be compiled and executed as part of `cargo test`."
msgstr "" msgstr "این کد به عنوان بخشی از `cargo test` کامپایل و اجرا می‌شود."
#: src/testing/other.md #: src/testing/other.md
msgid "" msgid ""
@ -10915,6 +10973,9 @@ msgid ""
"built-in lints. [Clippy](https://doc.rust-lang.org/clippy/) provides even " "built-in lints. [Clippy](https://doc.rust-lang.org/clippy/) provides even "
"more lints, organized into groups that can be enabled per-project." "more lints, organized into groups that can be enabled per-project."
msgstr "" msgstr ""
"کامپایلر Rust پیام‌های خطای جالب و همچنین built-in lint مناسبی تولید می‌کند. "
"[Clippy](https://doc.rust-lang.org/clippy/) که lintهای بیشتری را ارائه "
"می‌دهد، که در گروه‌هایی سازماندهی شده‌اند که می‌توانند در هر پروژه فعال شوند."
#: src/testing/lints.md #: src/testing/lints.md
msgid "\"X probably fits in a u16, right? {}\"" msgid "\"X probably fits in a u16, right? {}\""
@ -10999,6 +11060,8 @@ msgid ""
"along with two basic unit tests that confirm that most of the algorithm is " "along with two basic unit tests that confirm that most of the algorithm is "
"implemented correctly." "implemented correctly."
msgstr "" msgstr ""
"کد ارائه شده یک پیاده‌سازی باگ از الگوریتم luhn را به همراه دو unit test پایه "
"ارائه می‌کند که تأیید می‌کند بیشتر الگوریتم به درستی پیاده‌سازی شده است."
#: src/testing/exercise.md #: src/testing/exercise.md
#, fuzzy #, fuzzy
@ -11132,7 +11195,7 @@ msgstr "خرابی‌های زمان اجرا مانند failed bounds checkها
#: src/error-handling/panics.md #: src/error-handling/panics.md
msgid "Assertions (such as `assert!`) panic on failure" msgid "Assertions (such as `assert!`) panic on failure"
msgstr "" msgstr "Assertions (such as `assert!`) panic on failure"
#: src/error-handling/panics.md #: src/error-handling/panics.md
msgid "Purpose-specific panics can use the `panic!` macro." msgid "Purpose-specific panics can use the `panic!` macro."
@ -11226,6 +11289,12 @@ msgid ""
"error handling, but means that you can always see in your source code where " "error handling, but means that you can always see in your source code where "
"proper error handling is being skipped." "proper error handling is being skipped."
msgstr "" msgstr ""
"مانند `Option`، هیچ راهی برای فراموش کردن خطا وجود ندارد: شما نمی‌توانید به "
"مقدار موفقیت یا مقدار خطا بدون تطبیق الگوی اولیه در `Result` دسترسی پیدا "
"کنید تا بررسی کنید کدام نوع را دارید. روش‌هایی مانند`unwrap` نوشتن کدهای "
"سریع و کثیف را آسان‌تر می‌کنند که مدیریت خطا را به خوبی انجام نمی‌دهد، اما به "
"این معنی است که همیشه می‌توانید در کد منبع خود ببینید که در کجا مدیریت صحیح "
"خطا نادیده گرفته می‌شود."
#: src/error-handling/result.md #: src/error-handling/result.md
msgid "" msgid ""
@ -11233,10 +11302,14 @@ msgid ""
"conventions that students may be familiar with from other programming " "conventions that students may be familiar with from other programming "
"languages." "languages."
msgstr "" msgstr ""
"مقایسه مدیریت خطا در Rust با قراردادهای مدیریت خطا که دانش‌آموزان ممکن است با "
"سایر زبان‌های برنامه‌نویسی آشنا باشند، ممکن است مفید باشد."
#: src/error-handling/result.md #: src/error-handling/result.md
msgid "Many languages use exceptions, e.g. C++, Java, Python." msgid "Many languages use exceptions, e.g. C++, Java, Python."
msgstr "" msgstr ""
"بسیاری از زبان‌ها از exceptionها استفاده می‌کنند، به عنوان مثال. ++C، جاوا، "
"پایتون."
#: src/error-handling/result.md #: src/error-handling/result.md
msgid "" msgid ""
@ -11256,6 +11329,9 @@ msgid ""
"block is reached. An error originating deep in the call stack may impact an " "block is reached. An error originating deep in the call stack may impact an "
"unrelated function further up." "unrelated function further up."
msgstr "" msgstr ""
"استثناها معمولاً call stack را باز می‌کنند و تا رسیدن به بلوک `try` به سمت "
"بالا منتشر می‌شوند. خطایی که در اعماق call stack ایجاد می‌شود ممکن است بر "
"عملکرد نامرتبط بیشتر تأثیر بگذارد."
#: src/error-handling/result.md #: src/error-handling/result.md
msgid "Error Numbers" msgid "Error Numbers"
@ -11267,6 +11343,9 @@ msgid ""
"value) separately from the successful return value of the function. Examples " "value) separately from the successful return value of the function. Examples "
"include C and Go." "include C and Go."
msgstr "" msgstr ""
"برخی از زبان‌ها دارای توابعی هستند که یک عدد خطا (یا مقداری خطای دیگر) را جدا "
"از مقدار بازگشت موفقیت‌آمیز تابع برمی‌گردانند. به عنوان مثال می توان به C و Go "
"اشاره کرد."
#: src/error-handling/result.md #: src/error-handling/result.md
msgid "" msgid ""
@ -11274,6 +11353,8 @@ msgid ""
"value, in which case you may be accessing an uninitialized or otherwise " "value, in which case you may be accessing an uninitialized or otherwise "
"invalid success value." "invalid success value."
msgstr "" msgstr ""
"بسته به زبان ممکن است فراموش کنید مقدار خطا را بررسی کنید، در این صورت ممکن "
"است به یک مقدار موفقیت نامعتبر یا نامعتبر دسترسی داشته باشید."
#: src/error-handling/try.md #: src/error-handling/try.md
msgid "" msgid ""
@ -11341,7 +11422,7 @@ msgstr ""
msgid "" msgid ""
"The effective expansion of `?` is a little more complicated than previously " "The effective expansion of `?` is a little more complicated than previously "
"indicated:" "indicated:"
msgstr "" msgstr "گسترش مؤثر `?` کمی پیچیده‌تر از آنچه قبلاً ذکر شد است:"
#: src/error-handling/try-conversions.md #: src/error-handling/try-conversions.md
msgid "works the same as" msgid "works the same as"
@ -11467,6 +11548,10 @@ msgid ""
"compatible with `no_std` in [nightly](https://github.com/rust-lang/rust/" "compatible with `no_std` in [nightly](https://github.com/rust-lang/rust/"
"issues/103765) only." "issues/103765) only."
msgstr "" msgstr ""
"هنگام تعریف یک نوع خطای سفارشی، مطمئن شوید که ویژگی `std::error::Error` را "
"اجرا کنید تا بتوان آن را در جعبه قرار داد. اما اگر نیاز به پشتیبانی از ویژگی "
"`no_std` دارید، به خاطر داشته باشید که ویژگی `std::error::Error` در حال حاضر "
"با `no_std` در [nightly](https://github.com/rust-lang) سازگار است."
#: src/error-handling/thiserror-and-anyhow.md #: src/error-handling/thiserror-and-anyhow.md
msgid "" msgid ""
@ -11534,7 +11619,7 @@ msgstr "ویژگی `std::error::Error` به طور خودکار مشتق می‌
#: src/error-handling/thiserror-and-anyhow.md #: src/error-handling/thiserror-and-anyhow.md
msgid "The message from `#[error]` is used to derive the `Display` trait." msgid "The message from `#[error]` is used to derive the `Display` trait."
msgstr "" msgstr "پیام `#[error]` برای استخراج ویژگی `Display` استفاده می‌شود."
#: src/error-handling/thiserror-and-anyhow.md #: src/error-handling/thiserror-and-anyhow.md
msgid "`anyhow`" msgid "`anyhow`"
@ -11565,6 +11650,9 @@ msgid ""
"developers, as it provides similar usage patterns and ergonomics to `(T, " "developers, as it provides similar usage patterns and ergonomics to `(T, "
"error)` from Go." "error)` from Go."
msgstr "" msgstr ""
"عملکرد ارائه شده توسط `anyhow::Result<T>` ممکن است برای توسعه‌دهندگان Go آشنا "
"باشد، زیرا الگوهای استفاده و ارگونومی مشابهی را با `(T, error)` از Go ارائه "
"می‌دهد."
#: src/error-handling/thiserror-and-anyhow.md #: src/error-handling/thiserror-and-anyhow.md
msgid "" msgid ""
@ -11583,6 +11671,10 @@ msgid ""
"error handling and propagate errors to a return from `main`. Feel free to " "error handling and propagate errors to a return from `main`. Feel free to "
"use `thiserror` and `anyhow`." "use `thiserror` and `anyhow`."
msgstr "" msgstr ""
"در زیر یک تجزیه‌کننده بسیار ساده برای یک زبان عبارت پیاده‌سازی می‌کند. با این "
"حال، با panic خطاها را کنترل می‌کند. آن را بازنویسی کنید تا به جای آن از "
"مدیریت خطای اصطلاحی استفاده کنید و خطاها را به بازگشت از `main` منتشر کنید. "
"با خیال راحت از `thiserror` و `anyhow` استفاده کنید."
#: src/error-handling/exercise.md #: src/error-handling/exercise.md
msgid "" msgid ""
@ -11590,6 +11682,9 @@ msgid ""
"working correctly, update `Tokenizer` to implement " "working correctly, update `Tokenizer` to implement "
"`Iterator<Item=Result<Token, TokenizerError>>` and handle that in the parser." "`Iterator<Item=Result<Token, TokenizerError>>` and handle that in the parser."
msgstr "" msgstr ""
"نکته: با رفع خطا در عملکرد `parse` شروع کنید. هنگامی که به درستی کار کرد، "
"`Tokenizer` را برای پیاده‌سازی `Iterator<Item=Result<Token, TokenizerError>>` "
"به‌روزرسانی کنید و آن را در parser کنترل کنید."
#: src/error-handling/exercise.md src/error-handling/solution.md #: src/error-handling/exercise.md src/error-handling/solution.md
#, fuzzy #, fuzzy
@ -11684,7 +11779,7 @@ msgstr "این بخش باید حدود ۱ ساعت و ۵ دقیقه طول بک
#: src/unsafe-rust/unsafe.md #: src/unsafe-rust/unsafe.md
msgid "The Rust language has two parts:" msgid "The Rust language has two parts:"
msgstr "" msgstr "زبان Rust دو بخش دارد:"
#: src/unsafe-rust/unsafe.md #: src/unsafe-rust/unsafe.md
msgid "**Safe Rust:** memory safe, no undefined behavior possible." msgid "**Safe Rust:** memory safe, no undefined behavior possible."
@ -11717,7 +11812,7 @@ msgstr ""
#: src/unsafe-rust/unsafe.md #: src/unsafe-rust/unsafe.md
msgid "Unsafe Rust gives you access to five new capabilities:" msgid "Unsafe Rust gives you access to five new capabilities:"
msgstr "" msgstr "این Unsafe Rust به شما امکان دسترسی به پنج قابلیت جدید را می‌دهد:"
#: src/unsafe-rust/unsafe.md #: src/unsafe-rust/unsafe.md
msgid "Dereference raw pointers." msgid "Dereference raw pointers."
@ -11733,11 +11828,11 @@ msgstr ""
#: src/unsafe-rust/unsafe.md #: src/unsafe-rust/unsafe.md
msgid "Call `unsafe` functions, including `extern` functions." msgid "Call `unsafe` functions, including `extern` functions."
msgstr "" msgstr "توابع `unsafe`، از جمله توابع `extern` را فراخوانی کنید."
#: src/unsafe-rust/unsafe.md #: src/unsafe-rust/unsafe.md
msgid "Implement `unsafe` traits." msgid "Implement `unsafe` traits."
msgstr "" msgstr "ویژگی‌های `unsafe` را اجرا کنید."
#: src/unsafe-rust/unsafe.md #: src/unsafe-rust/unsafe.md
msgid "" msgid ""
@ -11756,6 +11851,10 @@ msgid ""
"by themselves. It means the compiler no longer enforces Rust's memory-safety " "by themselves. It means the compiler no longer enforces Rust's memory-safety "
"rules." "rules."
msgstr "" msgstr ""
"همینطور Unsafe Rust به این معنی نیست که کد نادرست است. این بدان معنی است که "
"توسعه‌دهندگان برخی از ویژگی‌های ایمنی کامپایلر را خاموش کرده‌اند و باید کد صحیح "
"را خودشان بنویسند. این بدان معناست که کامپایلر دیگر قواعد ایمنی Rust را اجرا "
"نمی‌کند."
#: src/unsafe-rust/dereferencing.md #: src/unsafe-rust/dereferencing.md
msgid "Creating pointers is safe, but dereferencing them requires `unsafe`:" msgid "Creating pointers is safe, but dereferencing them requires `unsafe`:"
@ -11816,26 +11915,32 @@ msgid ""
"a comment for each `unsafe` block explaining how the code inside it " "a comment for each `unsafe` block explaining how the code inside it "
"satisfies the safety requirements of the unsafe operations it is doing." "satisfies the safety requirements of the unsafe operations it is doing."
msgstr "" msgstr ""
"این تمرین خوبی است (و طبق راهنمای سبک Android Rust لازم است) برای هر بلوک "
"`unsafe` یک نظر بنویسید و توضیح دهد که چگونه کد داخل آن الزامات ایمنی عملیات "
"ناامنی را که انجام می‌دهد برآورده می‌کند."
#: src/unsafe-rust/dereferencing.md #: src/unsafe-rust/dereferencing.md
msgid "" msgid ""
"In the case of pointer dereferences, this means that the pointers must be " "In the case of pointer dereferences, this means that the pointers must be "
"[_valid_](https://doc.rust-lang.org/std/ptr/index.html#safety), i.e.:" "[_valid_](https://doc.rust-lang.org/std/ptr/index.html#safety), i.e.:"
msgstr "" msgstr ""
"در مورد عدم ارجاع اشاره‌گر، این بدان معنی است که نشانگرها باید [_valid_]"
"(https://doc.rust-lang.org/std/ptr/index.html#safety) باشند، یعنی:"
#: src/unsafe-rust/dereferencing.md #: src/unsafe-rust/dereferencing.md
msgid "The pointer must be non-null." msgid "The pointer must be non-null."
msgstr "" msgstr "اشاره‌گر باید غیر تهی یا non-null باشد."
#: src/unsafe-rust/dereferencing.md #: src/unsafe-rust/dereferencing.md
msgid "" msgid ""
"The pointer must be _dereferenceable_ (within the bounds of a single " "The pointer must be _dereferenceable_ (within the bounds of a single "
"allocated object)." "allocated object)."
msgstr "" msgstr ""
"اشاره‌گر باید _dereferenceable_ باشد (در محدوده یک object اختصاص داده شده)."
#: src/unsafe-rust/dereferencing.md #: src/unsafe-rust/dereferencing.md
msgid "The object must not have been deallocated." msgid "The object must not have been deallocated."
msgstr "" msgstr "این object نباید جابجا شده باشد."
#: src/unsafe-rust/dereferencing.md #: src/unsafe-rust/dereferencing.md
msgid "There must not be concurrent accesses to the same location." msgid "There must not be concurrent accesses to the same location."
@ -11846,6 +11951,8 @@ msgid ""
"If the pointer was obtained by casting a reference, the underlying object " "If the pointer was obtained by casting a reference, the underlying object "
"must be live and no reference may be used to access the memory." "must be live and no reference may be used to access the memory."
msgstr "" msgstr ""
"اگر اشاره‌گر با فرستادن یک reference به دست آمده باشد، object زیرین باید live "
"باشد و نمی‌توان از هیچ مرجعی برای دسترسی به حافظه استفاده کرد."
#: src/unsafe-rust/dereferencing.md #: src/unsafe-rust/dereferencing.md
msgid "In most cases the pointer must also be properly aligned." msgid "In most cases the pointer must also be properly aligned."
@ -11864,7 +11971,7 @@ msgstr ""
#: src/unsafe-rust/mutable-static.md #: src/unsafe-rust/mutable-static.md
msgid "It is safe to read an immutable static variable:" msgid "It is safe to read an immutable static variable:"
msgstr "" msgstr "خواندن یک متغیر استاتیک تغییرناپذیر بی‌خطر است:"
#: src/unsafe-rust/mutable-static.md #: src/unsafe-rust/mutable-static.md
msgid "\"Hello, world!\"" msgid "\"Hello, world!\""
@ -11879,6 +11986,8 @@ msgid ""
"However, since data races can occur, it is unsafe to read and write mutable " "However, since data races can occur, it is unsafe to read and write mutable "
"static variables:" "static variables:"
msgstr "" msgstr ""
"با‌این‌حال، از آنجایی که شرایط رقابتی داده‌ها ممکن است رخ دهد، خواندن و نوشتن "
"متغیرهای mutable static ناامن است:"
#: src/unsafe-rust/mutable-static.md #: src/unsafe-rust/mutable-static.md
#, fuzzy #, fuzzy
@ -11898,6 +12007,10 @@ msgid ""
"`unsafe` and see how the compiler explains that it is undefined behavior to " "`unsafe` and see how the compiler explains that it is undefined behavior to "
"mutate a static from multiple threads." "mutate a static from multiple threads."
msgstr "" msgstr ""
"برنامه در اینجا امن است زیرا single-thread است. با این حال، کامپایلر Rust "
"محافظه کار است و بدترین‌ها را در نظر می‌گیرد. `unsafe` را حذف کنید و ببینید "
"چگونه کامپایلر توضیح می‌دهد که جهش یک static از چندین thread یک رفتار تعریف "
"نشده است."
#: src/unsafe-rust/mutable-static.md #: src/unsafe-rust/mutable-static.md
msgid "" msgid ""
@ -11912,6 +12025,8 @@ msgstr ""
#: src/unsafe-rust/unions.md #: src/unsafe-rust/unions.md
msgid "Unions are like enums, but you need to track the active field yourself:" msgid "Unions are like enums, but you need to track the active field yourself:"
msgstr "" msgstr ""
"همینطور Unionها مانند enum‌ها هستند، اما شما باید خودتان active field را "
"ردیابی کنید:"
#: src/unsafe-rust/unions.md #: src/unsafe-rust/unions.md
msgid "\"int: {}\"" msgid "\"int: {}\""
@ -11931,6 +12046,9 @@ msgid ""
"Unions are very rarely needed in Rust as you can usually use an enum. They " "Unions are very rarely needed in Rust as you can usually use an enum. They "
"are occasionally needed for interacting with C library APIs." "are occasionally needed for interacting with C library APIs."
msgstr "" msgstr ""
"به طور کلی Unionها در Rust به ندرت مورد نیاز هستند زیرا معمولاً می‌توانید از "
"enum استفاده کنید. آنها گاهی اوقات برای تعامل با APIهای کتابخانه C مورد نیاز "
"هستند."
#: src/unsafe-rust/unions.md #: src/unsafe-rust/unions.md
msgid "" msgid ""
@ -11939,6 +12057,10 @@ msgid ""
"transmute.html) or a safe wrapper such as the [`zerocopy`](https://crates.io/" "transmute.html) or a safe wrapper such as the [`zerocopy`](https://crates.io/"
"crates/zerocopy) crate." "crates/zerocopy) crate."
msgstr "" msgstr ""
"اگر فقط می‌خواهید بایت‌ها را به‌عنوان نوع متفاوتی تفسیر کنید، احتمالاً [`std::"
"mem::transmute`](https://doc.rust-lang.org/stable/std/mem/fn.transmute.html "
"را می‌خواهید ) یا یک safe wrapper مانند جعبه [`zerocopy`(https://crates.io/"
"crates/zerocopy)."
#: src/unsafe-rust/unsafe-functions.md #: src/unsafe-rust/unsafe-functions.md
msgid "Calling Unsafe Functions" msgid "Calling Unsafe Functions"
@ -12071,6 +12193,8 @@ msgid ""
"We wouldn't actually use pointers for a `swap` function - it can be done " "We wouldn't actually use pointers for a `swap` function - it can be done "
"safely with references." "safely with references."
msgstr "" msgstr ""
"ما در واقع از pointerها برای یک تابع`swap` استفاده نمی‌کنیم - این کار را "
"می‌توان به‌طور ایمن با referenceها انجام داد."
#: src/unsafe-rust/unsafe-functions.md #: src/unsafe-rust/unsafe-functions.md
msgid "" msgid ""
@ -12093,6 +12217,8 @@ msgid ""
"Like with functions, you can mark a trait as `unsafe` if the implementation " "Like with functions, you can mark a trait as `unsafe` if the implementation "
"must guarantee particular conditions to avoid undefined behaviour." "must guarantee particular conditions to avoid undefined behaviour."
msgstr "" msgstr ""
"مانند توابع، اگر پیاده‌سازی باید شرایط خاصی را تضمین کند تا از رفتار نامشخص "
"جلوگیری شود، می‌توانید یک ویژگی را به‌عنوان `unsafe` علامت‌گذاری کنید."
#: src/unsafe-rust/unsafe-traits.md #: src/unsafe-rust/unsafe-traits.md
msgid "" msgid ""
@ -12132,7 +12258,7 @@ msgstr "بخش ایمنی واقعی برای `AsBytes` نسبتا طولانی
#: src/unsafe-rust/unsafe-traits.md #: src/unsafe-rust/unsafe-traits.md
msgid "The built-in `Send` and `Sync` traits are unsafe." msgid "The built-in `Send` and `Sync` traits are unsafe."
msgstr "" msgstr "ویژگی‌های داخلی`Send` و `Sync` ناامن (unsafe) هستند."
#: src/unsafe-rust/exercise.md #: src/unsafe-rust/exercise.md
msgid "Safe FFI Wrapper" msgid "Safe FFI Wrapper"
@ -12144,6 +12270,10 @@ msgid ""
"interface_ (FFI). We will use this to build a safe wrapper for the `libc` " "interface_ (FFI). We will use this to build a safe wrapper for the `libc` "
"functions you would use from C to read the names of files in a directory." "functions you would use from C to read the names of files in a directory."
msgstr "" msgstr ""
"زبان Rust پشتیبانی بسیار خوبی برای فراخوانی توابع از طریق رابط تابع خارجی "
"_foreign function interface_ (FFI) دارد. ما از آن برای ساختن یک پوشش امن "
"برای توابع `libc` استفاده می‌کنیم که از C برای خواندن نام فایل ها در یک فهرست "
"استفاده می کنید."
#: src/unsafe-rust/exercise.md #: src/unsafe-rust/exercise.md
msgid "You will want to consult the manual pages:" msgid "You will want to consult the manual pages:"
@ -12170,7 +12300,7 @@ msgstr "همچنین می‌خواهید [`std::ffi`](https://doc.rust-lang.or)
#: src/unsafe-rust/exercise.md #: src/unsafe-rust/exercise.md
msgid "Encoding" msgid "Encoding"
msgstr "" msgstr "رمزگذاری"
#: src/unsafe-rust/exercise.md #: src/unsafe-rust/exercise.md
msgid "Use" msgid "Use"
@ -17650,6 +17780,11 @@ msgid ""
"[CXX supported types can transfer a lot of u16s](https://cxx.rs/binding/" "[CXX supported types can transfer a lot of u16s](https://cxx.rs/binding/"
"slice.html)." "slice.html)."
msgstr "" msgstr ""
"اگر دانش‌آموزان تصمیم بگیرند که تبدیل را در سمت Rust انجام دهند، باید "
"[`String::from_utf16`](https://doc.rust-lang.org/std/string/struct.String."
"html#method را در نظر بگیرند. مدیریت خطا را در نظر بگیرید و در نظر داشته "
"باشید که کدام [نوع های پشتیبانی شده از CXX می توانند تعداد زیادی از u16 ها "
"را منتقل کنند](https://cxx.rs/binding/slice.html)."
#: src/exercises/chromium/bringing-it-together.md #: src/exercises/chromium/bringing-it-together.md
msgid "" msgid ""
@ -17755,6 +17890,7 @@ msgstr ""
msgid "" msgid ""
"And give users in the `plugdev` group access to the micro:bit programmer:" "And give users in the `plugdev` group access to the micro:bit programmer:"
msgstr "" msgstr ""
"و به کاربران گروه `plugdev` اجازه دسترسی به برنامه‌نویس micro:bit را بدهید:"
#: src/bare-metal.md src/bare-metal/microcontrollers/debugging.md #: src/bare-metal.md src/bare-metal/microcontrollers/debugging.md
msgid "On MacOS:" msgid "On MacOS:"
@ -17875,7 +18011,7 @@ msgstr ""
#: src/bare-metal/minimal.md #: src/bare-metal/minimal.md
msgid "It can also be provided by another crate, such as `panic-halt`." msgid "It can also be provided by another crate, such as `panic-halt`."
msgstr "" msgstr "همچنین می‌توان آن را توسط crate دیگری مانند `panic-halt` تهیه کرد."
#: src/bare-metal/minimal.md #: src/bare-metal/minimal.md
msgid "" msgid ""
@ -17938,6 +18074,8 @@ msgid ""
"The const parameter of `LockedHeap` is the max order of the allocator; i.e. " "The const parameter of `LockedHeap` is the max order of the allocator; i.e. "
"in this case it can allocate regions of up to 2\\*\\*32 bytes." "in this case it can allocate regions of up to 2\\*\\*32 bytes."
msgstr "" msgstr ""
"پارامتر const `LockedHeap` حداکثر ترتیب تخصیص‌دهنده (allocator) است. یعنی در "
"این مورد می‌تواند مناطقی تا 2\\*\\*32 بایت را اختصاص دهد."
#: src/bare-metal/alloc.md #: src/bare-metal/alloc.md
msgid "" msgid ""
@ -17945,6 +18083,9 @@ msgid ""
"exactly one global allocator defined in your binary. Usually this is done in " "exactly one global allocator defined in your binary. Usually this is done in "
"the top-level binary crate." "the top-level binary crate."
msgstr "" msgstr ""
"اگر هر crate ای در درخت وابستگی شما به `alloc` بستگی دارد، باید دقیقاً یک "
"تخصیص‌دهنده سراسری در باینری خود تعریف کنید. معمولاً این کار در binary crate "
"سطح بالا انجام می‌شود."
#: src/bare-metal/alloc.md #: src/bare-metal/alloc.md
msgid "" msgid ""
@ -18072,6 +18213,8 @@ msgid ""
"They are organised by peripheral, register, field and value, with names, " "They are organised by peripheral, register, field and value, with names, "
"descriptions, addresses and so on." "descriptions, addresses and so on."
msgstr "" msgstr ""
"آنها بر اساس peripheral، register، field و value، با نام، توضیحات، آدرس و "
"غیره سازماندهی می‌شوند."
#: src/bare-metal/microcontrollers/pacs.md #: src/bare-metal/microcontrollers/pacs.md
msgid "" msgid ""
@ -18092,6 +18235,8 @@ msgid ""
"If you `cargo install cargo-binutils` then you can run `cargo objdump --bin " "If you `cargo install cargo-binutils` then you can run `cargo objdump --bin "
"pac -- -d --no-show-raw-insn` to see the resulting binary." "pac -- -d --no-show-raw-insn` to see the resulting binary."
msgstr "" msgstr ""
"اگر`cargo install cargo-binutils` را انجام دهید، می‌توانید `cargo objdump --"
"bin pac -- -d --no-show-raw-insn` را اجرا کنید تا باینری حاصل را ببینید."
#: src/bare-metal/microcontrollers/hals.md #: src/bare-metal/microcontrollers/hals.md
msgid "HAL crates" msgid "HAL crates"
@ -18144,12 +18289,16 @@ msgid ""
"In this case the board support crate is just providing more useful names, " "In this case the board support crate is just providing more useful names, "
"and a bit of initialisation." "and a bit of initialisation."
msgstr "" msgstr ""
"در این مورد crate پشتیبانی برد فقط نام‌های مفیدتر و مقداری مقداردهی اولیه را "
"ارائه می‌دهد."
#: src/bare-metal/microcontrollers/board-support.md #: src/bare-metal/microcontrollers/board-support.md
msgid "" msgid ""
"The crate may also include drivers for some on-board devices outside of the " "The crate may also include drivers for some on-board devices outside of the "
"microcontroller itself." "microcontroller itself."
msgstr "" msgstr ""
"این crate ممکن است شامل درایورهایی برای برخی از دستگاه‌های داخلی خارج از خود "
"میکروکنترلر نیز باشد."
#: src/bare-metal/microcontrollers/board-support.md #: src/bare-metal/microcontrollers/board-support.md
msgid "`microbit-v2` includes a simple driver for the LED matrix." msgid "`microbit-v2` includes a simple driver for the LED matrix."
@ -18157,7 +18306,7 @@ msgstr "ء `microbit-v2` شامل یک درایور ساده برای ماتری
#: src/bare-metal/microcontrollers/type-state.md #: src/bare-metal/microcontrollers/type-state.md
msgid "The type state pattern" msgid "The type state pattern"
msgstr "" msgstr "یک تایپ state pattern"
#: src/bare-metal/microcontrollers/type-state.md #: src/bare-metal/microcontrollers/type-state.md
#, fuzzy #, fuzzy
@ -18194,6 +18343,11 @@ msgid ""
"way without properly configuring it first. Illegal state transitions are " "way without properly configuring it first. Illegal state transitions are "
"caught at compile time." "caught at compile time."
msgstr "" msgstr ""
"این type یک مقدار state را نشان می‌دهد که در آن قرار دارد: به عنوان مثال. در "
"این مورد، وضعیت پیکربندی یک پین GPIO. این state machine را در type system "
"رمزگذاری می‌کند و تضمین می‌کند که سعی نکنید از pin به روشی خاص استفاده کنید "
"بدون اینکه ابتدا آن را به درستی پیکربندی کنید. state transition غیرمجاز در "
"زمان کامپایل شناسایی می‌شود."
#: src/bare-metal/microcontrollers/type-state.md #: src/bare-metal/microcontrollers/type-state.md
msgid "" msgid ""
@ -18205,7 +18359,7 @@ msgstr ""
#: src/bare-metal/microcontrollers/type-state.md #: src/bare-metal/microcontrollers/type-state.md
msgid "Many HAL crates follow this pattern." msgid "Many HAL crates follow this pattern."
msgstr "" msgstr "بسیاری از HAL crateها از این الگو پیروی می‌کنند."
#: src/bare-metal/microcontrollers/embedded-hal.md #: src/bare-metal/microcontrollers/embedded-hal.md
msgid "" msgid ""
@ -18260,12 +18414,17 @@ msgid ""
"them, as initialisation and configuration is usually highly platform-" "them, as initialisation and configuration is usually highly platform-"
"specific." "specific."
msgstr "" msgstr ""
"این ویژگی‌ها با استفاده از وسایل جانبی(peripherals) پوشش می‌دهند، اما آنها را "
"مقداردهی اولیه یا پیکربندی نمی‌کنند، زیرا مقداردهی اولیه و پیکربندی معمولاً به "
"پلتفرم خاص بستگی دارد."
#: src/bare-metal/microcontrollers/embedded-hal.md #: src/bare-metal/microcontrollers/embedded-hal.md
msgid "" msgid ""
"There are implementations for many microcontrollers, as well as other " "There are implementations for many microcontrollers, as well as other "
"platforms such as Linux on Raspberry Pi." "platforms such as Linux on Raspberry Pi."
msgstr "" msgstr ""
"پیاده‌سازی‌هایی برای بسیاری از میکروکنترلرها و همچنین پلتفرم‌های دیگری مانند "
"لینوکس در Raspberry Pi وجود دارد."
#: src/bare-metal/microcontrollers/embedded-hal.md #: src/bare-metal/microcontrollers/embedded-hal.md
msgid "" msgid ""
@ -18301,7 +18460,7 @@ msgstr ""
#: src/bare-metal/microcontrollers/probe-rs.md #: src/bare-metal/microcontrollers/probe-rs.md
msgid "GDB stub and Microsoft DAP (Debug Adapter Protocol) server" msgid "GDB stub and Microsoft DAP (Debug Adapter Protocol) server"
msgstr "" msgstr "GDB stub و Microsoft DAP (Debug Adapter Protocol) server"
#: src/bare-metal/microcontrollers/probe-rs.md #: src/bare-metal/microcontrollers/probe-rs.md
msgid "Cargo integration" msgid "Cargo integration"
@ -18343,6 +18502,8 @@ msgid ""
"The Debug Access Port is usually either a 5-pin JTAG interface or 2-pin " "The Debug Access Port is usually either a 5-pin JTAG interface or 2-pin "
"Serial Wire Debug." "Serial Wire Debug."
msgstr "" msgstr ""
"پورت دسترسی Debug معمولا یا یک رابط JTAG 5 پین یا Serial Wire Debug 2 پین "
"است."
#: src/bare-metal/microcontrollers/probe-rs.md #: src/bare-metal/microcontrollers/probe-rs.md
msgid "" msgid ""
@ -18378,7 +18539,7 @@ msgstr ""
#: src/bare-metal/microcontrollers/debugging.md #: src/bare-metal/microcontrollers/debugging.md
msgid "_Embed.toml_:" msgid "_Embed.toml_:"
msgstr "" msgstr "_Embed.toml_:"
#: src/bare-metal/microcontrollers/debugging.md #: src/bare-metal/microcontrollers/debugging.md
msgid "In one terminal under `src/bare-metal/microcontrollers/examples/`:" msgid "In one terminal under `src/bare-metal/microcontrollers/examples/`:"
@ -18445,6 +18606,8 @@ msgid ""
"Microkernel RTOS from Oxide Computer Company with memory protection, " "Microkernel RTOS from Oxide Computer Company with memory protection, "
"unprivileged drivers, IPC" "unprivileged drivers, IPC"
msgstr "" msgstr ""
"یک Microkernel RTOS از شرکت Oxide Computer با protection از حافظه، درایورهای "
"غیرمجاز و IPC"
#: src/bare-metal/microcontrollers/other-projects.md #: src/bare-metal/microcontrollers/other-projects.md
msgid "[Bindings for FreeRTOS](https://github.com/lobaro/FreeRTOS-rust)" msgid "[Bindings for FreeRTOS](https://github.com/lobaro/FreeRTOS-rust)"
@ -18473,6 +18636,8 @@ msgid ""
"It uses the Cortex-M NVIC (Nested Virtual Interrupt Controller) for " "It uses the Cortex-M NVIC (Nested Virtual Interrupt Controller) for "
"scheduling rather than a proper kernel." "scheduling rather than a proper kernel."
msgstr "" msgstr ""
"از Cortex-M NVIC (کنترل‌کننده وقفه مجازی تودرتو-Nested Virtual Interrupt "
"Controller) برای زمان‌بندی به جای یک هسته مناسب استفاده می‌کند."
#: src/bare-metal/microcontrollers/other-projects.md #: src/bare-metal/microcontrollers/other-projects.md
msgid "Cortex-M only." msgid "Cortex-M only."
@ -18489,6 +18654,8 @@ msgid ""
"FreeRTOS is mostly written in C, but there are Rust bindings for writing " "FreeRTOS is mostly written in C, but there are Rust bindings for writing "
"applications." "applications."
msgstr "" msgstr ""
"در واقع FreeRTOS بیشتر به زبان C نوشته شده است، اما رابط‌های Rust برای نوشتن "
"برنامه‌ها در این حالت وجود دارد."
#: src/exercises/bare-metal/morning.md #: src/exercises/bare-metal/morning.md
msgid "" msgid ""
@ -18534,7 +18701,7 @@ msgstr ""
#: src/exercises/bare-metal/compass.md #: src/exercises/bare-metal/compass.md
msgid "" msgid ""
"The LSM303AGR Inertial Measurement Unit is connected to the internal I2C bus." "The LSM303AGR Inertial Measurement Unit is connected to the internal I2C bus."
msgstr "" msgstr "واحد اندازه‌گیری اینرسی در قطعه LSM303AGR به bus داخلی I2C متصل است."
#: src/exercises/bare-metal/compass.md #: src/exercises/bare-metal/compass.md
msgid "" msgid ""
@ -18548,6 +18715,9 @@ msgid ""
"I2c` trait. The [`microbit::hal::Twim`](https://docs.rs/microbit-v2/latest/" "I2c` trait. The [`microbit::hal::Twim`](https://docs.rs/microbit-v2/latest/"
"microbit/hal/struct.Twim.html) struct implements this." "microbit/hal/struct.Twim.html) struct implements this."
msgstr "" msgstr ""
"درایور LSM303AGR به چیزی نیاز دارد که ویژگی `embedded_hal::i2c::I2c` را اجرا "
"کند. ساختار[`microbit::hal::Twim`](https://docs.rs/microbit-v2/latest/"
"microbit/hal/struct.Twim.html) این مورد را پیاده‌سازی می‌کند."
#: src/exercises/bare-metal/compass.md #: src/exercises/bare-metal/compass.md
msgid "" msgid ""
@ -18585,7 +18755,7 @@ msgstr "_Cargo.toml_ (نیاز به تغییر ندارد):"
#: src/exercises/bare-metal/compass.md #: src/exercises/bare-metal/compass.md
msgid "_Embed.toml_ (you shouldn't need to change this):" msgid "_Embed.toml_ (you shouldn't need to change this):"
msgstr "" msgstr "_Embed.toml_ (نیازی به تغییر این نیست):"
#: src/exercises/bare-metal/compass.md src/exercises/bare-metal/rtc.md #: src/exercises/bare-metal/compass.md src/exercises/bare-metal/rtc.md
msgid "_.cargo/config.toml_ (you shouldn't need to change this):" msgid "_.cargo/config.toml_ (you shouldn't need to change this):"
@ -18662,7 +18832,7 @@ msgstr ""
#: src/bare-metal/aps.md #: src/bare-metal/aps.md
msgid "Application processors" msgid "Application processors"
msgstr "" msgstr "Application processors"
#: src/bare-metal/aps.md #: src/bare-metal/aps.md
msgid "" msgid ""
@ -18867,12 +19037,18 @@ msgid ""
"on zeroes. The compiler assumes that the loader will take care of zeroing " "on zeroes. The compiler assumes that the loader will take care of zeroing "
"them." "them."
msgstr "" msgstr ""
"این BSS (نماد شروع بلوک، به دلایل تاریخی) بخشی از object file است که حاوی "
"متغیرهای تخصیص یافته استاتیکی است که مقدار اولیه آنها صفر است. برای جلوگیری "
"از اتلاف فضا روی صفر، آنها از تصویر حذف شده‌اند. کامپایلر فرض می‌کند که لودر "
"از صفر کردن آنها مراقبت می‌کند."
#: src/bare-metal/aps/entry-point.md #: src/bare-metal/aps/entry-point.md
msgid "" msgid ""
"The BSS may already be zeroed, depending on how memory is initialised and " "The BSS may already be zeroed, depending on how memory is initialised and "
"the image is loaded, but we zero it to be sure." "the image is loaded, but we zero it to be sure."
msgstr "" msgstr ""
"ممکن است BSS قبلاً صفر شده باشد، بسته به اینکه چگونه حافظه مقداردهی اولیه شده "
"و تصویر بارگذاری شده است، اما برای اطمینان آن را صفر می‌کنیم."
#: src/bare-metal/aps/entry-point.md #: src/bare-metal/aps/entry-point.md
msgid "" msgid ""
@ -18889,6 +19065,10 @@ msgid ""
"generating unaligned accesses, so it should be fine in this case, but this " "generating unaligned accesses, so it should be fine in this case, but this "
"is not necessarily the case in general." "is not necessarily the case in general."
msgstr "" msgstr ""
"دسترسی‌های بدون تراز خطا خواهند داشت. ما کد Rust را برای هدف`aarch64-unknown-"
"none` می‌سازیم که `+strict-align` را تنظیم می‌کند تا از ایجاد دسترسی‌های بدون "
"تراز توسط کامپایلر جلوگیری کند، بنابراین در این مورد باید خوب باشد، اما "
"لزوماً اینطور نیست."
#: src/bare-metal/aps/entry-point.md #: src/bare-metal/aps/entry-point.md
msgid "" msgid ""
@ -18900,6 +19080,13 @@ msgid ""
"is cleaned or the VM enables the cache. (Cache is keyed by physical address, " "is cleaned or the VM enables the cache. (Cache is keyed by physical address, "
"not VA or IPA.)" "not VA or IPA.)"
msgstr "" msgstr ""
"اگر در VM اجرا می‌شد، این کار می‌تواند منجر به مشکلات انسجام cache شود. مشکل "
"این است که VM مستقیماً با حافظه cache غیرفعال شده به حافظه دسترسی پیدا می‌کند، "
"در حالی که host دارای نام مستعار قابل cache برای همان حافظه است. حتی اگر "
"cache به طور صریح به حافظه دسترسی نداشته باشد، دسترسی‌های گمانه‌زنی می‌تواند "
"منجر به پر شدن حافظه cache شود، و پس از پاک شدن حافظه cache یا فعال کردن "
"حافظه توسط VM، تغییرات از یک یا دیگری از بین می‌رود. (حافظه cache با آدرس "
"فیزیکی کلید می‌خورد، نه VA یا IPA.)"
#: src/bare-metal/aps/entry-point.md #: src/bare-metal/aps/entry-point.md
msgid "" msgid ""
@ -18923,6 +19110,9 @@ msgid ""
"(EL1). If you need to run at a different exception level you'll need to " "(EL1). If you need to run at a different exception level you'll need to "
"modify `entry.S` accordingly." "modify `entry.S` accordingly."
msgstr "" msgstr ""
"همه مثال‌ها امروز بعد از ظهر فرض می‌کنند که ما در سطح استثنا 1 (EL1) اجرا "
"خواهیم کرد. اگر نیاز به اجرا در سطح استثنایی متفاوت دارید، باید `entry.S`را "
"بر این اساس تغییر دهید."
#: src/bare-metal/aps/inline-assembly.md #: src/bare-metal/aps/inline-assembly.md
msgid "Inline assembly" msgid "Inline assembly"
@ -23076,6 +23266,8 @@ msgid ""
"A type associated with a specific trait. Useful for defining the " "A type associated with a specific trait. Useful for defining the "
"relationship between types." "relationship between types."
msgstr "" msgstr ""
"نوع مرتبط:\n"
"نوعی که با یک ویژگی خاص مرتبط است. برای تعریف رابطه بین typeها مفید است."
#: src/glossary.md #: src/glossary.md
msgid "" msgid ""

View File

@ -14,8 +14,9 @@ volunteers:
- [Korean][ko] by [@keispace], [@jiyongp], [@jooyunghan], and [@namhyung]. - [Korean][ko] by [@keispace], [@jiyongp], [@jooyunghan], and [@namhyung].
- [Spanish][es] by [@deavid]. - [Spanish][es] by [@deavid].
- [Ukrainian][uk] by [@git-user-cpp], [@yaremam] and [@reta]. - [Ukrainian][uk] by [@git-user-cpp], [@yaremam] and [@reta].
- [Farsi][fa] by [@DannyRavi], [@javad-jafari], [@Alix1383], [@moaminsharifi] ,
Use the language picker in the top-right corner to switch between languages. [@hamidrezakp] and [@mehrad77]. . Use the language picker in the top-right
corner to switch between languages.
## Incomplete Translations ## Incomplete Translations
@ -24,8 +25,6 @@ recently updated translations:
- [Arabic][ar] by [@younies] - [Arabic][ar] by [@younies]
- [Bengali][bn] by [@raselmandol]. - [Bengali][bn] by [@raselmandol].
- [Farsi][fa] by [@Alix1383], [@DannyRavi], [@hamidrezakp], [@javad-jafari] and
[@moaminsharifi].
- [French][fr] by [@KookaS], [@vcaen] and [@AdrienBaudemont]. - [French][fr] by [@KookaS], [@vcaen] and [@AdrienBaudemont].
- [German][de] by [@Throvn] and [@ronaldfw]. - [German][de] by [@Throvn] and [@ronaldfw].
- [Italian][it] by [@henrythebuilder] and [@detro]. - [Italian][it] by [@henrythebuilder] and [@detro].