From 83b74de18b06689399c37895f4dcc8c9d03d041c Mon Sep 17 00:00:00 2001 From: Danny Khosravi Date: Sat, 21 Sep 2024 22:11:21 +0330 Subject: [PATCH] fa: Try to complete Farsi Part1 (#2374) fa: Try to complete Farsi Part1 --------- Co-authored-by: javad-jafari Co-authored-by: javad-jafari <65780584+javad-jafari@users.noreply.github.com> --- po/fa.po | 298 +++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 235 insertions(+), 63 deletions(-) diff --git a/po/fa.po b/po/fa.po index 250e1755..b124444e 100644 --- a/po/fa.po +++ b/po/fa.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: Comprehensive Rust 🦀\n" "POT-Creation-Date: 2024-09-11T22:10:46Z\n" -"PO-Revision-Date: 2024-09-16 01:06+0330\n" +"PO-Revision-Date: 2024-09-21 20:11+0330\n" "Last-Translator: alix1383 \n" "Language-Team: Persian\n" "Language: fa\n" @@ -625,11 +625,11 @@ msgstr "مدیریت خطا" #: src/SUMMARY.md src/error-handling.md src/error-handling/panics.md msgid "Panics" -msgstr "" +msgstr "در مورد Panicها" #: src/SUMMARY.md src/error-handling.md src/error-handling/try.md msgid "Try Operator" -msgstr "" +msgstr "عملگرد Try" #: src/SUMMARY.md src/error-handling.md src/error-handling/try-conversions.md msgid "Try Conversions" @@ -714,7 +714,7 @@ msgstr "رابط (Interface)" #: src/SUMMARY.md msgid "Service API" -msgstr "" +msgstr "Service API" #: src/SUMMARY.md #, fuzzy @@ -749,7 +749,7 @@ msgstr "انواع" #: src/SUMMARY.md src/android/aidl/types/primitives.md msgid "Primitive Types" -msgstr "" +msgstr "انواع اولیه" #: src/SUMMARY.md src/android/aidl/types/arrays.md #, fuzzy @@ -768,7 +768,7 @@ msgstr "متغیرها" #: src/SUMMARY.md src/android/aidl/types/file-descriptor.md msgid "Sending Files" -msgstr "" +msgstr "ارسال فایل‌ها" #: src/SUMMARY.md src/android/testing/googletest.md msgid "GoogleTest" @@ -804,11 +804,11 @@ msgstr "با C++" #: src/SUMMARY.md src/android/interoperability/cpp/bridge.md msgid "The Bridge Module" -msgstr "" +msgstr "ماژول پل" #: src/SUMMARY.md msgid "Rust Bridge" -msgstr "" +msgstr "Rust Bridge" #: src/SUMMARY.md src/android/interoperability/cpp/generated-cpp.md msgid "Generated C++" @@ -820,11 +820,11 @@ msgstr "" #: src/SUMMARY.md src/android/interoperability/cpp/shared-types.md msgid "Shared Types" -msgstr "" +msgstr "انواع مشترک" #: 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" @@ -872,7 +872,7 @@ msgstr "" #: src/SUMMARY.md msgid "Policy" -msgstr "" +msgstr "قواعد" #: src/SUMMARY.md #, fuzzy @@ -957,7 +957,7 @@ msgstr "" #: 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 @@ -976,7 +976,7 @@ msgstr "" #: src/SUMMARY.md msgid "Reviews and Audits" -msgstr "" +msgstr "بررسی‌ها و ممیزی‌ها" #: src/SUMMARY.md msgid "Checking into Chromium Source Code" @@ -1017,7 +1017,7 @@ msgstr "میکروکنترلرها" #: src/SUMMARY.md src/bare-metal/microcontrollers/mmio.md msgid "Raw MMIO" -msgstr "Raw MMIO" +msgstr "MMIO خام" #: src/SUMMARY.md msgid "PACs" @@ -2242,6 +2242,9 @@ 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 msgid "The Rust Ecosystem" @@ -4581,7 +4584,7 @@ msgstr "" #: 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):" @@ -4603,6 +4606,8 @@ 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." @@ -4625,10 +4630,12 @@ msgid "" "Rust generally doesn’t like inexplicit things, like automatic unwrapping or " "for instance using booleans as integers." msgstr "" +"Rust معمولاً چیزهای غیر واضح را دوست ندارد، مانند automatic unwrapping یا " +"به‌عنوان‌مثال استفاده از booleanها به عنوان اعداد صحیح." #: src/user-defined-types/tuple-structs.md msgid "Operator overloading is discussed on Day 3 (generics)." -msgstr "" +msgstr "مبحث Operator overloading در روز سوم مورد بحث قرار می گیرد (generics)." #: src/user-defined-types/tuple-structs.md msgid "" @@ -4709,6 +4716,7 @@ msgstr "" #: src/user-defined-types/enums.md msgid "Rust uses minimal space to store the discriminant." msgstr "" +"Rust از حداقل فضا برای ذخیره‌سازی متمایز‌کننده (discriminant) استفاده می‌کند." #: src/user-defined-types/enums.md msgid "If necessary, it stores an integer of the smallest required size" @@ -6491,7 +6499,7 @@ msgstr "Option" #: src/std-types.md src/std-types/result.md src/error-handling.md msgid "Result" -msgstr "Result" +msgstr "نتیجه" #: src/std-types.md src/std-types/string.md msgid "String" @@ -6657,7 +6665,7 @@ msgstr "\"Löwe 老虎 Léopard Gepardi\"" #: src/std-types/option.md msgid "'é'" -msgstr "" +msgstr "'é'" #: src/std-types/option.md msgid "\"find returned {position:?}\"" @@ -7351,12 +7359,17 @@ msgstr "" "Add<(i32, i32)> for Point` می‌تواند یک tuple را به یک `Point` اضافه کند." #: src/std-traits/operators.md +#, fuzzy msgid "" "The `Not` trait (`!` operator) is notable because it does not \"boolify\" " "like the same operator in C-family languages; instead, for integer types it " "negates each bit of the number, which arithmetically is equivalent to " "subtracting it from -1: `!5 == -6`." msgstr "" +"عملگر `Not` یک ویژگی(`!` operator) قابل توجه است زیرا مانند همان عملگر در " +"زبان‌های خانواده C هرگز \"boolify\" نمی شود. در عوض، برای انواع عدد صحیح، " +"هر بیت از عدد را نفی می‌کند، که از نظر حسابی معادل کم کردن آن از -1: `!5 == " +"-6` است." #: src/std-traits/from-and-into.md #, fuzzy @@ -10056,6 +10069,8 @@ msgstr "به روز ۱ خوش آمدید" msgid "" "Today we will cover topics relating to building large-scale software in Rust:" msgstr "" +"امروز ما موضوعات مربوط به ساخت نرم افزار در مقیاس بزرگ در Rust را پوشش " +"خواهیم داد:" #: src/welcome-day-4.md msgid "Iterators: a deep dive on the `Iterator` trait." @@ -10066,7 +10081,6 @@ msgid "Modules and visibility." msgstr "" #: src/welcome-day-4.md -#, fuzzy msgid "Testing." msgstr "تست‌کردن" @@ -10106,6 +10120,11 @@ msgid "" "method and provides lots of methods. Many standard library types implement " "`Iterator`, and you can implement it yourself, too:" msgstr "" +"ویژگی ['Iterator'](https://doc.rust-lang.org/std/iter/trait.Iterator.html) " +"از تکرار بیش از مقادیر در یک مجموعه پشتیبانی می‌کند. این به یک متد `next` " +"نیاز دارد و متدهای زیادی را ارائه می‌کند. بسیاری از انواع کتابخانه استاندارد " +"`Iterator` را پیاده‌سازی می‌کنند و شما نیز می‌توانید آن را خودتان پیاده‌سازی " +"کنید:" #: src/iterators/iterator.md msgid "\"fib({i}): {n}\"" @@ -10119,6 +10138,10 @@ msgid "" "functions should produce the code as efficient as equivalent imperative " "implementations." msgstr "" +"ویژگی `Iterator` بسیاری از عملیات برنامه‌نویسی تابعی رایج را روی collectionها " +"پیاده‌سازی می‌کند (مانند `map`, `filter`, `reduce`,و غیره). این ویژگی است که " +"در آن می‌توانید تمام اسناد مربوط به آنها را پیدا کنید. در Rust، این توابع " +"باید کد را به اندازه پیاده‌سازی‌های ضروری معادل تولید کنند." #: src/iterators/iterator.md msgid "" @@ -10140,6 +10163,10 @@ msgid "" "iter/trait.IntoIterator.html) defines how to create an iterator for a type. " "It is used automatically by the `for` loop." msgstr "" +"ویژگی `Iterator` به شما می‌گوید که چگونه پس از ایجاد یک تکرار کننده، " +"_iterate_ کنید. ویژگی مرتبط [`IntoIterator`](https://doc.rust-lang.org/std/" +"iter/trait.IntoIterator.html) نحوه ایجاد یک تکرار کننده برای یک نوع را مشخص " +"می‌کند. به طور خودکار توسط حلقه `for` استفاده می‌شود." #: src/iterators/intoiterator.md msgid "\"point = {x}, {y}\"" @@ -10165,6 +10192,9 @@ msgid "" "Note that `IntoIter` and `Item` are linked: the iterator must have the same " "`Item` type, which means that it returns `Option`" msgstr "" +"توجه داشته باشید که `IntoIter` و`Item` به هم link شده‌اند: تکرار‌کننده " +"(iterator) باید همان `Item` type را داشته باشد، به این معنی که " +"`Option` را برمی‌گرداند." #: src/iterators/intoiterator.md msgid "The example iterates over all combinations of x and y coordinates." @@ -10175,6 +10205,8 @@ msgid "" "Try iterating over the grid twice in `main`. Why does this fail? Note that " "`IntoIterator::into_iter` takes ownership of `self`." msgstr "" +"سعی کنید دو بار روی شبکه در `main` تکرار کنید. چرا این گزینه شکست می‌خورد؟ " +"توجه داشته باشید که `IntoIterator::into_iter` مالکیت `self` را می‌گیرد." #: src/iterators/intoiterator.md msgid "" @@ -10273,6 +10305,8 @@ msgstr "" #: src/modules/modules.md msgid "Similarly, `mod` lets us namespace types and functions:" msgstr "" +"به طور مشابه، `mod` به ما اجازه می‌دهد تا توابع و namespace type به این صورت " +"داشته باشیم:" #: src/modules/modules.md msgid "\"In the foo module\"" @@ -10287,6 +10321,8 @@ msgid "" "Packages provide functionality and include a `Cargo.toml` file that " "describes how to build a bundle of 1+ crates." msgstr "" +"بسته‌ها یا Packageهای عملکردی را ارائه می‌کنند و شامل یک فایل`Cargo.toml` " +"می‌شوند که نحوه ساخت بسته‌ای از crateهای 1+ را شرح می‌دهد." #: src/modules/modules.md msgid "" @@ -10301,7 +10337,7 @@ msgstr "" #: src/modules/filesystem.md msgid "" "Omitting the module content will tell Rust to look for it in another file:" -msgstr "" +msgstr "حذف محتوای ماژول به Rust می‌گوید که آن را در فایل دیگری جستجو کند:" #: src/modules/filesystem.md msgid "" @@ -10312,7 +10348,7 @@ msgstr "" #: src/modules/filesystem.md msgid "The `crate` root is in:" -msgstr "" +msgstr "ریشه`crate` در:" #: src/modules/filesystem.md msgid "`src/lib.rs` (for a library crate)" @@ -10397,7 +10433,7 @@ msgstr "" #: src/modules/visibility.md msgid "Parent and sibling items are always visible." -msgstr "" +msgstr "کزینه‌های sibling و sibling همیشه قابل مشاهده است." #: src/modules/visibility.md msgid "" @@ -10436,6 +10472,8 @@ msgid "" "See the [Rust Reference](https://doc.rust-lang.org/reference/visibility-and-" "privacy.html#pubin-path-pubcrate-pubsuper-and-pubself)." msgstr "" +"این آدرس با ببینید [Rust Reference](https://doc.rust-lang.org/reference/" +"visibility-and-privacy.html#pubin-path-pubcrate-pubsuper-and-pubself)." #: src/modules/visibility.md msgid "Configuring `pub(crate)` visibility is a common pattern." @@ -10463,7 +10501,7 @@ msgstr "مسیر" #: src/modules/paths.md msgid "Paths are resolved as follows:" -msgstr "" +msgstr "مسیرها (Paths) به شرح زیر حل می‌شوند:" #: src/modules/paths.md msgid "As a relative path:" @@ -10516,6 +10554,9 @@ msgid "" "discouraged because it is not clear which items are imported, and those " "might change over time." msgstr "" +"عبارت `use` می‌تواند دارای علامت عام باشد: `use std::io::*`. از این کار منع " +"شده است زیرا مشخص نیست کدام موارد import می‌شوند و ممکن است در طول زمان تغییر " +"کنند." #: src/modules/exercise.md msgid "" @@ -10549,7 +10590,7 @@ msgstr "" #: src/modules/exercise.md msgid "Source" -msgstr "" +msgstr "منبع" #: src/modules/exercise.md msgid "Here's the single-module implementation of the GUI library:" @@ -10720,7 +10761,7 @@ msgstr "تست‌های واحد (Unit Tests)" #: src/testing/unit-tests.md msgid "Rust and Cargo come with a simple unit test framework:" -msgstr "" +msgstr "Rust and Cargo با یک چارچوب تست واحد ساده ارائه می شود:" #: src/testing/unit-tests.md msgid "Unit tests are supported throughout your code." @@ -10736,6 +10777,9 @@ msgid "" "`tests` module, using `#[cfg(test)]` to conditionally compile them only when " "building tests." msgstr "" +"تست‌ها با `#[test]`علامت‌گذاری شده‌اند. تست‌های واحد اغلب در یک ماژول `tests` " +"تودرتو قرار می‌گیرند و از `#[cfg(test)]` استفاده می‌کنند تا آنها را به صورت " +"مشروط تنها در هنگام build تست‌ها کامپایل کنند." #: src/testing/unit-tests.md msgid "\"Hello World\"" @@ -10748,10 +10792,11 @@ msgstr "" #: src/testing/unit-tests.md msgid "The `#[cfg(test)]` attribute is only active when you run `cargo test`." msgstr "" +"ویژگی `#[cfg(test)]` تنها زمانی فعال است که `cargo test` را اجرا کنید." #: src/testing/unit-tests.md msgid "Run the tests in the playground in order to show their results." -msgstr "" +msgstr "تست‌ها را در playground اجرا کنید تا نتیجه‌های آن‌ها را نشان‌دهید." #: src/testing/other.md msgid "Integration Tests" @@ -10820,6 +10865,9 @@ msgid "" "Test the above code on the [Rust Playground](https://play.rust-lang.org/?" "version=stable&mode=debug&edition=2021&gist=3ce2ad13ea1302f6572cb15cd96becf0)." msgstr "" +"کد بالا را در [Rust Playground](https://play.rust-lang.org/?" +"version=stable&mode=debug&edition=2021&gist=3ce2ad13ea1302f6572cb15cd96becf0) " +"تست کنید." #: src/testing/lints.md msgid "" @@ -10840,6 +10888,9 @@ msgid "" "visible here, but those will not be shown once the code compiles. Switch to " "the Playground site to show those lints." msgstr "" +"نمونه کد را اجرا کنید و پیام خطا را بررسی کنید. lintهایی نیز در اینجا قابل " +"مشاهده هستند، اما پس از کامپایل شدن کد، آن‌ها نشان‌داده نمی‌شوند. برای نمایش آن " +"lintها به سایت Playground بروید." #: src/testing/lints.md msgid "" @@ -10853,6 +10904,8 @@ msgid "" "Note that errors or warnings with `help: ...` can be fixed with `cargo fix` " "or via your editor." msgstr "" +"توجه داشته باشید که خطاها یا هشدارهای مربوط به `help: ...` را می‌توان با " +"`cargo fix` یا از طریق ویرایشگر خود برطرف کرد." #: src/testing/exercise.md msgid "Luhn Algorithm" @@ -11007,7 +11060,7 @@ msgstr "صفت‌های بیشتر" #: src/error-handling.md msgid "thiserror and anyhow" -msgstr "" +msgstr "thiserror و anyhow" #: src/error-handling.md src/error-handling/exercise.md msgid "Exercise: Rewriting with Result" @@ -11015,11 +11068,11 @@ msgstr "" #: src/error-handling/panics.md msgid "Rust handles fatal errors with a \"panic\"." -msgstr "" +msgstr "Rust خطاهای مهلک را با \"panic\" کنترل می‌کند." #: src/error-handling/panics.md msgid "Rust will trigger a panic if a fatal error happens at runtime:" -msgstr "" +msgstr "اگر یک خطای مرگبار در زمان اجرا رخ دهد، Rust باعث panic می‌شود:" #: src/error-handling/panics.md msgid "\"v[100]: {}\"" @@ -11027,15 +11080,15 @@ msgstr "\"v[100]: {}\"" #: src/error-handling/panics.md msgid "Panics are for unrecoverable and unexpected errors." -msgstr "" +msgstr "استفاده از Panicها برای خطاهای غیر قابل جبران و غیرمنتظره است." #: src/error-handling/panics.md msgid "Panics are symptoms of bugs in the program." -msgstr "" +msgstr "پانیک‌ها علائم باگ در برنامه هستند." #: src/error-handling/panics.md msgid "Runtime failures like failed bounds checks can panic" -msgstr "" +msgstr "خرابی‌های زمان اجرا مانند failed bounds checkها می‌تواند باعث panic شود" #: src/error-handling/panics.md msgid "Assertions (such as `assert!`) panic on failure" @@ -11043,7 +11096,7 @@ msgstr "" #: src/error-handling/panics.md msgid "Purpose-specific panics can use the `panic!` macro." -msgstr "" +msgstr "پنیک‌های خاص می‌توانند از ماکرو `panic!` استفاده کنند." #: src/error-handling/panics.md msgid "" @@ -11096,6 +11149,9 @@ msgid "" "doc.rust-lang.org/stable/std/result/enum.Result.html) enum, which we briefly " "saw when discussing standard library types." msgstr "" +"مکانیسم اصلی ما برای مدیریت خطا در Rust، فهرست [`Result`](https://doc.rust-" +"lang.org/stable/std/result/enum.Result.html) است، که به طور خلاصه هنگام بحث " +"در مورد تایپ‌های کتابخانه استاندارد مشاهده کردیم." #: src/error-handling/result.md msgid "" @@ -11170,6 +11226,10 @@ msgid "" "The try-operator `?` is used to return errors to the caller. It lets you " "turn the common" msgstr "" +"خطاهای زمان اجرا مانند connection-refused یا file-not-found با نوع «نتیجه» " +"مدیریت می‌شوند، اما تطبیق این نوع در هر تماس می‌تواند دشوار باشد. اپراتور `?` " +"برای برگرداندن خطاها به تماس گیرنده استفاده می‌شود. این به شما امکان می‌دهد تا " +"موارد مشترک را بازگردانید." #: src/error-handling/try.md msgid "into the much simpler" @@ -11195,11 +11255,11 @@ msgstr "\"نام‌کاربری یا خطا: {username:?}\"" #: src/error-handling/try.md msgid "Simplify the `read_username` function to use `?`." -msgstr "" +msgstr "تابع `read_username` را برای استفاده از `?` ساده کنید." #: src/error-handling/try.md msgid "The `username` variable can be either `Ok(string)` or `Err(error)`." -msgstr "" +msgstr "متغیر`username` می تواند `Ok(string)` یا `Err(error)` باشد." #: src/error-handling/try.md msgid "" @@ -11214,6 +11274,10 @@ msgid "" "The executable will print the `Err` variant and return a nonzero exit status " "on error." msgstr "" +"توجه داشته باشید که `main` تا زمانی که `std::process::Termination` را " +"پیاده‌سازی کند، می‌تواند `نتیجه<(), E>` را برگرداند. در عمل، این بدان معنی است " +"که `E` پیاده‌سازی `Debug` را انجام‌می‌دهد. فایل اجرایی، نوع `Err` را چاپ می‌کند " +"و در صورت خطا، وضعیت خروج غیر صفر (nonzero) را برمی‌گرداند." #: src/error-handling/try-conversions.md msgid "" @@ -11223,7 +11287,7 @@ msgstr "" #: src/error-handling/try-conversions.md msgid "works the same as" -msgstr "" +msgstr "به طو مشابه کار می‌کند" #: src/error-handling/try-conversions.md msgid "" @@ -11231,6 +11295,9 @@ msgid "" "type returned by the function. This makes it easy to encapsulate errors into " "higher-level errors." msgstr "" +"فراخوانی `From::from` در اینجا به این معنی است که ما سعی می کنیم نوع خطا را " +"به نوع بازگشتی توسط تابع تبدیل کنیم. این باعث می‌شود که خطاها به خطاهای سطح " +"بالاتر کپسوله شوند." #: src/error-handling/try-conversions.md msgid "\"IO error: {e}\"" @@ -11253,6 +11320,11 @@ msgid "" "of type `Result` if `ErrorOuter` and `ErrorInner` are the " "same type or if `ErrorOuter` implements `From`." msgstr "" +"عملگر `?` باید مقداری سازگار با نوع بازگشتی تابع برگرداند. برای `Result`، به " +"این معنی است که انواع خطا باید سازگار باشند. تابعی که`Result` " +"را برمی‌گرداند، تنها می‌تواند از `?` در مقداری از تایپ‌های `Result` استفاده کند اگر `ErrorOuter` و `ErrorInner` یک نوع باشند یا " +"اگر `ErrorOuter` از` را پیاده‌سازی کند." #: src/error-handling/try-conversions.md msgid "" @@ -11285,6 +11357,9 @@ msgid "" "Error` trait makes it easy to create a trait object that can contain any " "error." msgstr "" +"گاهی اوقات می‌خواهیم اجازه دهیم هر نوع خطای بدون نوشتن enum خودمان که تمام " +"احتمالات مختلف را پوشش می‌دهد، برگردانده شود. ویژگی `std::error::Error` ایجاد " +"یک object مشخ استه که می‌تواند حاوی هر خطایی باشد را آسان می‌کند." #: src/error-handling/error.md msgid "\"count.dat\"" @@ -11307,6 +11382,8 @@ msgid "" "The `read_count` function can return `std::io::Error` (from file operations) " "or `std::num::ParseIntError` (from `String::parse`)." msgstr "" +"تابع `read_count`می‌تواند `std::io::Error` (از عملیات فایل) یا `std::num::" +"ParseIntError` (از `String::parse`) را برگرداند." #: src/error-handling/error.md msgid "" @@ -11331,6 +11408,9 @@ msgid "" "The [`thiserror`](https://docs.rs/thiserror/) and [`anyhow`](https://docs.rs/" "anyhow/) crates are widely used to simplify error handling." msgstr "" +"این [`thiserror`](https://docs.rs/thiserror/) و [`anyhow`](https://docs.rs/" +"anyhow/) crateها به طور گسترده ای برای ساده کردن رسیدگی به خطا استفاده " +"می‌شوند." #: src/error-handling/thiserror-and-anyhow.md msgid "" @@ -11380,10 +11460,12 @@ msgid "" "The `Error` derive macro is provided by `thiserror`, and has lots of useful " "attributes to help define error types in a compact way." msgstr "" +"ماکرو استخراج `Error` توسط `thiserror` ارائه می‌شود و دارای ویژگی‌های مفید " +"زیادی برای کمک به تعریف انواع خطا به روشی فشرده است." #: src/error-handling/thiserror-and-anyhow.md msgid "The `std::error::Error` trait is derived automatically." -msgstr "" +msgstr "ویژگی `std::error::Error` به طور خودکار مشتق می‌شود." #: src/error-handling/thiserror-and-anyhow.md msgid "The message from `#[error]` is used to derive the `Display` trait." @@ -11703,6 +11785,10 @@ msgid "" "has the `'static` lifetime, so `r3` has type `&'static String`, and thus " "outlives `s`. Creating a reference from a pointer requires _great care_." msgstr "" +"بخش «NOT SAFE» نمونه‌ای از یک نوع رایج از اشکال UB را ارائه می‌کند: `*r1` " +"دارای طول عمر `'static` است، بنابراین `r3` دارای نوع `&'static String` است " +"و بنابراین عمر `s` بیشتر می‌شود. ایجاد یک مرجع از یک اشاره گر نیاز به دقت " +"بسیار دارد." #: src/unsafe-rust/mutable-static.md msgid "It is safe to read an immutable static variable:" @@ -11854,6 +11940,8 @@ msgid "" "You can mark your own functions as `unsafe` if they require particular " "conditions to avoid undefined behaviour." msgstr "" +"اگر عملکردهای خود را برای جلوگیری از رفتار نامشخص به شرایط خاصی نیاز دارند، " +"می‌توانید به‌عنوان`unsafe` علامت‌گذاری کنید." #: src/unsafe-rust/unsafe-functions.md #, fuzzy @@ -11900,6 +11988,8 @@ msgid "" "The `\"C\"` in this example is the ABI; [other ABIs are available too]" "(https://doc.rust-lang.org/reference/items/external-blocks.html)." msgstr "" +"زبان برنامه‌نویسی `\"C\"` در این مثال ABI است. [ABIهای دیگر نیز در دسترس " +"هستند](https://doc.rust-lang.org/reference/items/external-blocks.html)." #: src/unsafe-rust/unsafe-functions.md msgid "" @@ -11914,6 +12004,10 @@ msgid "" "Try adding it and see what happens. This will likely change in a future Rust " "edition." msgstr "" +"توجه داشته باشید که کد ناامن در یک تابع ناامن بدون بلوک `unsafe` مجاز است. " +"ما می‌توانیم این کار را با `#[deny(unsafe_op_in_unsafe_fn)]` غیرمجاز کنیم. " +"سعی کنید آن را اضافه کنید و ببینید چه اتفاقی می افتد. این احتمالاً در نسخه " +"بعدی Rust تغییر خواهد کرد." #: src/unsafe-rust/unsafe-traits.md msgid "Implementing Unsafe Traits" @@ -11957,7 +12051,7 @@ msgstr "" msgid "" "The actual safety section for `AsBytes` is rather longer and more " "complicated." -msgstr "" +msgstr "بخش ایمنی واقعی برای `AsBytes` نسبتا طولانی‌تر و پیچیده‌تر است." #: src/unsafe-rust/unsafe-traits.md msgid "The built-in `Send` and `Sync` traits are unsafe." @@ -11976,7 +12070,7 @@ msgstr "" #: src/unsafe-rust/exercise.md msgid "You will want to consult the manual pages:" -msgstr "" +msgstr "شما می‌خواهید به صفحات راهنما مراجعه کنید:" #: src/unsafe-rust/exercise.md msgid "[`opendir(3)`](https://man7.org/linux/man-pages/man3/opendir.3.html)" @@ -11995,7 +12089,7 @@ msgid "" "You will also want to browse the [`std::ffi`](https://doc.rust-lang.org/std/" "ffi/) module. There you find a number of string types which you need for the " "exercise:" -msgstr "" +msgstr "همچنین می‌خواهید [`std::ffi`](https://doc.rust-lang.or) را مرور کنید" #: src/unsafe-rust/exercise.md msgid "Encoding" @@ -12003,7 +12097,7 @@ msgstr "" #: src/unsafe-rust/exercise.md msgid "Use" -msgstr "" +msgstr "استفاده" #: src/unsafe-rust/exercise.md msgid "" @@ -12019,7 +12113,7 @@ msgstr "" #: src/unsafe-rust/exercise.md msgid "Text processing in Rust" -msgstr "" +msgstr "پردازش متن در Rust" #: src/unsafe-rust/exercise.md msgid "" @@ -12031,7 +12125,7 @@ msgstr "" #: src/unsafe-rust/exercise.md msgid "NUL-terminated" -msgstr "" +msgstr "NUL-terminated" #: src/unsafe-rust/exercise.md msgid "Communicating with C functions" @@ -12047,7 +12141,7 @@ msgstr "" #: src/unsafe-rust/exercise.md msgid "OS-specific" -msgstr "" +msgstr "مخصوص سیستم‌عامل" #: src/unsafe-rust/exercise.md msgid "Communicating with the OS" @@ -12055,7 +12149,7 @@ msgstr "" #: src/unsafe-rust/exercise.md msgid "You will convert between all these types:" -msgstr "" +msgstr "شما بین تمام این typeها تبدیل خواهید کرد:" #: src/unsafe-rust/exercise.md msgid "" @@ -12101,6 +12195,8 @@ msgid "" "The [Nomicon](https://doc.rust-lang.org/nomicon/ffi.html) also has a very " "useful chapter about FFI." msgstr "" +"مورد [Nomicon](https://doc.rust-lang.org/nomicon/ffi.html) همچنین یک فصل " +"بسیار مفید در مورد FFI دارد." #: src/unsafe-rust/exercise.md msgid "" @@ -16603,7 +16699,9 @@ msgstr "" #: src/exercises/chromium/interoperability-with-cpp.md msgid "Some of the questions you may encounter:" -msgstr "برخی از سؤالاتی که ممکن است با آن مواجه شوید:" +msgstr "" +"برخی از سؤالاتی که ممکن است با آن مواجه شوید:برخی از سوالاتی که ممکن است با " +"آن مواجه شوید:" #: src/exercises/chromium/interoperability-with-cpp.md msgid "" @@ -17535,6 +17633,8 @@ msgid "" "Today we will talk about 'bare-metal' Rust: running Rust code without an OS " "underneath us. This will be divided into several parts:" msgstr "" +"امروز ما در مورد'bare-metal' Rust صحبت خواهیم کرد: اجرای کد Rust بدون " +"سیستم‌عامل در ادامه به چند بخش تقسیم خواهد شد:" #: src/bare-metal.md msgid "What is `no_std` Rust?" @@ -17542,15 +17642,15 @@ msgstr "" #: src/bare-metal.md msgid "Writing firmware for microcontrollers." -msgstr "" +msgstr "نوشتنfirmware برای میکروکنترلرها." #: src/bare-metal.md msgid "Writing bootloader / kernel code for application processors." -msgstr "" +msgstr "نوشتن کد bootloader / kernel برای پردازنده‌های برنامه." #: src/bare-metal.md msgid "Some useful crates for bare-metal Rust development." -msgstr "" +msgstr "برخی از crateهای مفید برای توسعه bare-metal Rust." #: src/bare-metal.md msgid "" @@ -17565,6 +17665,8 @@ msgstr "" msgid "" "To get started, install some tools we'll need later. On gLinux or Debian:" msgstr "" +"برای شروع، ابزارهایی را که بعداً به آنها نیاز خواهیم داشت نصب کنید. در لینوکس " +"یا دبیان:" #: src/bare-metal.md msgid "" @@ -17573,7 +17675,7 @@ msgstr "" #: src/bare-metal.md src/bare-metal/microcontrollers/debugging.md msgid "On MacOS:" -msgstr "" +msgstr "در MacOS:" #: src/bare-metal/no_std.md msgid "`core`" @@ -17585,7 +17687,7 @@ msgstr "`std`" #: src/bare-metal/no_std.md msgid "Slices, `&str`, `CStr`" -msgstr "" +msgstr "Slices, `&str`, `CStr`" #: src/bare-metal/no_std.md msgid "`NonZeroU8`..." @@ -17682,7 +17784,7 @@ msgstr "" #: src/bare-metal/minimal.md msgid "This will compile to an empty binary." -msgstr "" +msgstr "این به یک باینری خالی کامپایل می‌شود." #: src/bare-metal/minimal.md msgid "`std` provides a panic handler; without it we must provide our own." @@ -17704,12 +17806,17 @@ msgid "" "define your own entry point. This will typically involve a linker script and " "some assembly code to set things up ready for Rust code to run." msgstr "" +"توجه داشته باشید که `main` یا هیچ نقطه ورودی دیگری وجود ندارد. این به شما " +"بستگی دارد که نقطه ورود خود را تعریف کنید. این معمولاً شامل یک اسکریپت linker " +"و مقداری کد اسمبلی برای تنظیم موارد آماده برای اجرای کد Rust است." #: src/bare-metal/alloc.md msgid "" "To use `alloc` you must implement a [global (heap) allocator](https://doc." "rust-lang.org/stable/std/alloc/trait.GlobalAlloc.html)." msgstr "" +"برای استفاده از `alloc` باید یک [global (heap) allocator](https://doc.rust-" +"lang.org/stable/std/alloc/trait.GlobalAlloc.html) را پیاده‌سازی کنید." #: src/bare-metal/alloc.md #, fuzzy @@ -17771,22 +17878,28 @@ msgid "" "The `cortex_m_rt` crate provides (among other things) a reset handler for " "Cortex M microcontrollers." msgstr "" +"یک `cortex_m_rt` crate (در میان چیزهای دیگر) یکreset handler برای " +"میکروکنترلرهای Cortex M فراهم می‌کند." #: src/bare-metal/microcontrollers.md msgid "" "Next we'll look at how to access peripherals, with increasing levels of " "abstraction." msgstr "" +"در ادامه نحوه دسترسی به لوازم جانبی (peripherals) را با افزایش سطح انتزاع " +"بررسی خواهیم کرد." #: src/bare-metal/microcontrollers.md msgid "" "The `cortex_m_rt::entry` macro requires that the function have type `fn() -" "> !`, because returning to the reset handler doesn't make sense." msgstr "" +"ماکرو `cortex_m_rt::entry` مستلزم این است که تابع دارای نوع `cortex_m_rt::" +"entry` باشد، زیرا بازگشت به reset handler منطقی نیست." #: src/bare-metal/microcontrollers.md msgid "Run the example with `cargo embed --bin minimal`" -msgstr "" +msgstr "مثال را با `cargo embed --bin minimal` اجرا کنید" #: src/bare-metal/microcontrollers/mmio.md msgid "" @@ -17843,11 +17956,11 @@ msgstr "" #: src/bare-metal/microcontrollers/hals.md #: src/bare-metal/microcontrollers/board-support.md msgid "Run the example with:" -msgstr "" +msgstr "مثال را با:" #: src/bare-metal/microcontrollers/pacs.md msgid "Peripheral Access Crates" -msgstr "" +msgstr "Crateهای دسترسی جانبی" #: src/bare-metal/microcontrollers/pacs.md msgid "" @@ -17864,6 +17977,9 @@ msgid "" "SVD (System View Description) files are XML files typically provided by " "silicon vendors which describe the memory map of the device." msgstr "" +"فایل‌های SVD (System View Description) در واقع فایل‌های XML هستند که معمولاً " +"توسط فروشندگان تجهیزات ریزپردازنده ارائه می‌شوند که memory map دستگاه را " +"توصیف می‌کنند." #: src/bare-metal/microcontrollers/pacs.md msgid "" @@ -17877,6 +17993,9 @@ msgid "" "which patch the mistakes, add missing details, and publish the generated " "crates." msgstr "" +"فایل‌های SVD اغلب دارای باگ و ناقص هستند، بنابراین پروژه‌های مختلفی وجود دارد " +"که اشتباهات را اصلاح می‌کنند، جزئیات گمشده را اضافه می‌کنند و crateهای تولید " +"شده را منتشر می‌کنند." #: src/bare-metal/microcontrollers/pacs.md msgid "`cortex-m-rt` provides the vector table, among other things." @@ -17964,6 +18083,9 @@ msgid "" "Pins don't implement `Copy` or `Clone`, so only one instance of each can " "exist. Once a pin is moved out of the port struct nobody else can take it." msgstr "" +"پین‌ها `Copy` یا `Clone` را اجرا نمی‌کنند، بنابراین فقط یک نمونه از هر کدام " +"می‌تواند وجود داشته باشد. هنگامی که یک pin از ساختار پورت خارج می شود، هیچ کس " +"دیگری نمی تواند آن را بگیرد." #: src/bare-metal/microcontrollers/type-state.md msgid "" @@ -17985,6 +18107,8 @@ msgid "" "You can call `is_high` on an input pin and `set_high` on an output pin, but " "not vice-versa." msgstr "" +"می‌توانید `is_high` را در یک پین ورودی و `set_high` را در یک پایه خروجی " +"فراخوانی کنید، اما برعکس امکان پذیر نیست." #: src/bare-metal/microcontrollers/type-state.md msgid "Many HAL crates follow this pattern." @@ -17995,6 +18119,8 @@ msgid "" "The [`embedded-hal`](https://crates.io/crates/embedded-hal) crate provides a " "number of traits covering common microcontroller peripherals:" msgstr "" +"این crate ['embedded-hal'](https://crates.io/crates/embedded-hal) تعدادی " +"ویژگی را ارائه می‌دهد که میکروکنترلرهای جانبی رایج را پوشش می‌دهد:" #: src/bare-metal/microcontrollers/embedded-hal.md msgid "GPIO" @@ -18002,7 +18128,7 @@ msgstr "" #: src/bare-metal/microcontrollers/embedded-hal.md msgid "PWM" -msgstr "" +msgstr "PWM" #: src/bare-metal/microcontrollers/embedded-hal.md msgid "Delay timers" @@ -18019,6 +18145,10 @@ msgid "" "can`](https://crates.io/crates/embedded-can) and [`rand_core`](https://" "crates.io/crates/rand_core) respectively." msgstr "" +"ویژگی‌های مشابه برای جریان‌های بایت (مانند UART)، گذرگاه‌های CAN و RNG و تقسیم " +"شدن به [`embedded-io`](https://crates.io/crates/embedded-io)، [`embedded-" +"can`](https ://crates.io/crates/embedded-can) و [`rand_core`](https://crates." +"io/crates/rand_core) به ترتیب." #: src/bare-metal/microcontrollers/embedded-hal.md msgid "" @@ -18026,6 +18156,10 @@ msgid "" "awesome-embedded-rust#driver-crates) in terms of these traits, e.g. an " "accelerometer driver might need an I2C or SPI device instance." msgstr "" +"سپس crateهای دیگر [درایورها](https://github.com/rust-embedded/wesome-" +"embedded-rust#driver-crates) را بر حسب این ویژگی‌ها پیاده‌سازی می‌کنند، به " +"عنوان مثال. یک درایور شتاب سنج ممکن است به یک نمونه دستگاه I2C یا SPI نیاز " +"داشته باشد." #: src/bare-metal/microcontrollers/embedded-hal.md msgid "" @@ -18070,6 +18204,7 @@ msgstr "" msgid "" "SWD (Serial Wire Debug) and JTAG via CMSIS-DAP, ST-Link and J-Link probes" msgstr "" +"SWD (Serial Wire Debug) و JTAG از طریق پروب های CMSIS-DAP، ST-Link و J-Link" #: src/bare-metal/microcontrollers/probe-rs.md msgid "GDB stub and Microsoft DAP (Debug Adapter Protocol) server" @@ -18107,6 +18242,8 @@ msgid "" "ST-Link is a range of in-circuit debuggers from ST Microelectronics, J-Link " "is a range from SEGGER." msgstr "" +"ST-Link طیفی از دیباگرهای درون مدار از ST Microelectronics است، J-Link " +"محدوده ای از SEGGER است." #: src/bare-metal/microcontrollers/probe-rs.md msgid "" @@ -18119,6 +18256,8 @@ msgid "" "probe-rs is a library which you can integrate into your own tools if you " "want to." msgstr "" +"probe-rs یک کتابخانه است که در صورت تمایل می‌توانید آن را در ابزارهای خود " +"ادغام کنید." #: src/bare-metal/microcontrollers/probe-rs.md msgid "" @@ -18126,6 +18265,9 @@ msgid "" "adapter-protocol/) lets VSCode and other IDEs debug code running on any " "supported microcontroller." msgstr "" +"[پروتکل آداپتور Debug مایکروسافت](https://microsoft.github.io/debug-adapter-" +"protocol/) به VSCode و سایر IDE‌ها اجازه می‌دهد کدهای موجود در هر میکروکنترلر " +"پشتیبانی‌شده را Debug کنند." #: src/bare-metal/microcontrollers/probe-rs.md msgid "cargo-embed is a binary built using the probe-rs library." @@ -18136,6 +18278,8 @@ msgid "" "RTT (Real Time Transfers) is a mechanism to transfer data between the debug " "host and the target through a number of ringbuffers." msgstr "" +"RTT (Real Time Transfers) مکانیزمی برای انتقال داده‌ها بین debug host و " +"target از طریق تعدادی بافر حلقه‌ای (ringbuffers) است." #: src/bare-metal/microcontrollers/debugging.md msgid "_Embed.toml_:" @@ -18151,7 +18295,7 @@ msgstr "" #: src/bare-metal/microcontrollers/debugging.md msgid "On gLinux or Debian:" -msgstr "" +msgstr "در gLinux یا Debian:" #: src/bare-metal/microcontrollers/debugging.md msgid "In GDB, try running:" @@ -18160,7 +18304,7 @@ msgstr "" #: src/bare-metal/microcontrollers/other-projects.md #: src/bare-metal/aps/other-projects.md msgid "Other projects" -msgstr "" +msgstr "پروژه‌های دیگر" #: src/bare-metal/microcontrollers/other-projects.md msgid "[RTIC](https://rtic.rs/)" @@ -18174,6 +18318,8 @@ msgstr "\"همراهی مبتنی بر وقفه بلادرنگ\"" msgid "" "Shared resource management, message passing, task scheduling, timer queue" msgstr "" +"مدیریت منابع مشترک، ارسال پیام، زمان‌بندی تسک (task scheduling)، صف تایمر " +"(timer queue)" #: src/bare-metal/microcontrollers/other-projects.md msgid "[Embassy](https://embassy.dev/)" @@ -18192,6 +18338,8 @@ msgid "" "Security-focused RTOS with preemptive scheduling and Memory Protection Unit " "support" msgstr "" +"RTOS متمرکز بر امنیت با برنامه‌ریزی پیشگیرانه و پشتیبانی از واحد حفاظت از " +"حافظه" #: src/bare-metal/microcontrollers/other-projects.md msgid "[Hubris](https://hubris.oxide.computer/)" @@ -18212,10 +18360,14 @@ msgid "" "Some platforms have `std` implementations, e.g. [esp-idf](https://esp-rs." "github.io/book/overview/using-the-standard-library.html)." msgstr "" +"برخی از پلتفرم‌ها پیاده‌سازی `std` دارند، به عنوان مثال. [esp-idf](https://esp-" +"rs.github.io/book/overview/using-the-standard-library.html)." #: src/bare-metal/microcontrollers/other-projects.md msgid "RTIC can be considered either an RTOS or a concurrency framework." msgstr "" +"RTIC را می‌توان یک RTOS یا یک چارچوب همزمان (concurrency framework) در نظر " +"گرفت." #: src/bare-metal/microcontrollers/other-projects.md msgid "It doesn't include any HALs." @@ -18284,6 +18436,7 @@ msgstr "" msgid "" "TWI is another name for I2C, so the I2C master peripheral is called TWIM." msgstr "" +"TWI نام دیگری برای I2C است، بنابراین دستگاه جانبی اصلی I2C TWIM نامیده می‌شود." #: src/exercises/bare-metal/compass.md msgid "" @@ -18297,6 +18450,9 @@ msgid "" "You have a [`microbit::Board`](https://docs.rs/microbit-v2/latest/microbit/" "struct.Board.html) struct with fields for the various pins and peripherals." msgstr "" +"شما یک ساختار ['microbit::Board'](https://docs.rs/microbit-v2/latest/" +"microbit/struct.Board.html) با فیلدهایی برای پین‌ها و تجهیزات جانبی مختلف " +"دارید." #: src/exercises/bare-metal/compass.md msgid "" @@ -18313,7 +18469,7 @@ msgstr "" #: src/exercises/bare-metal/compass.md src/exercises/bare-metal/rtc.md msgid "_src/main.rs_:" -msgstr "" +msgstr "_src/main.rs_:" #: src/exercises/bare-metal/compass.md src/exercises/bare-metal/rtc.md msgid "_Cargo.toml_ (you shouldn't need to change this):" @@ -18329,12 +18485,13 @@ msgstr "" #: src/exercises/bare-metal/compass.md msgid "See the serial output on Linux with:" -msgstr "" +msgstr "مشاهده خروجی سریال در لینوکس با:" #: src/exercises/bare-metal/compass.md msgid "" "Or on Mac OS something like (the device name may be slightly different):" msgstr "" +"یا در سیستم‌عامل Mac چیزی شبیه به (نام دستگاه ممکن است کمی متفاوت باشد):" #: src/exercises/bare-metal/compass.md msgid "Use Ctrl+A Ctrl+Q to quit picocom." @@ -18406,6 +18563,10 @@ msgid "" "with QEMU's aarch64 ['virt'](https://qemu-project.gitlab.io/qemu/system/arm/" "virt.html) board." msgstr "" +"تا اینجا در مورد میکروکنترلرهایی مانند سری Arm Cortex-M صحبت کردیم. حالا " +"بیایید سعی کنیم چیزی برای Cortex-A بنویسیم. برای سادگی، ما فقط با بردQEMU's " +"aarch64 ['virt'](https://qemu-project.gitlab.io/qemu/system/arm/virt.html) " +"کار می‌کنیم." #: src/bare-metal/aps.md msgid "" @@ -18420,6 +18581,9 @@ msgid "" "architecture. The 'virt' board doesn't correspond to any particular real " "hardware, but is designed purely for virtual machines." msgstr "" +"QEMU از شبیه‌سازی ماشین‌های مختلف یا مدل‌های برد مختلف برای هر معماری پشتیبانی " +"می کند. برد 'virt' با هیچ سخت‌افزار واقعی خاصی مطابقت ندارد، اما صرفا برای " +"ماشین‌های مجازی طراحی شده است." #: src/bare-metal/aps/entry-point.md msgid "" @@ -20249,6 +20413,8 @@ msgid "" "Spawning new threads does not automatically delay program termination at the " "end of `main`." msgstr "" +"ایجاد threadهای جدید به طور خودکار خاتمه برنامه را تا پایان `main` به تاخیر " +"نمی‌اندازد." #: src/concurrency/threads/plain.md msgid "Thread panics are independent of each other." @@ -20444,13 +20610,16 @@ msgstr "" #: src/concurrency/channels.md src/concurrency/async-control-flow.md msgid "This segment should take about 20 minutes. It contains:" -msgstr "" +msgstr "این بخش باید حدود ۲۰ دقیقه طول بکشد. این شامل:" #: src/concurrency/channels/senders-receivers.md msgid "" "Rust channels have two parts: a `Sender` and a `Receiver`. The two " "parts are connected via the channel, but you only see the end-points." msgstr "" +"کانال‌های Rust دارای دو بخش هستند: `Sender` و `Receiver`. این دو بخش از " +"طریق channel به هم متصل می‌شوند، اما شما فقط نقاط پایانی (end-points) را " +"می‌بینید." #: src/concurrency/channels/senders-receivers.md msgid "\"Received: {:?}\"" @@ -20471,7 +20640,7 @@ msgstr "" #: src/concurrency/channels/unbounded.md msgid "You get an unbounded and asynchronous channel with `mpsc::channel()`:" -msgstr "" +msgstr "شما یک کانال نامحدود و ناهمزمان با `mpsc::channel()` دریافت می کنید:" #: src/concurrency/channels/unbounded.md src/concurrency/channels/bounded.md msgid "\"Message {i}\"" @@ -20519,7 +20688,7 @@ msgstr "ارسال" #: src/concurrency/send-sync.md msgid "Sync" -msgstr "همگام سازی" +msgstr "همگام‌سازی" #: src/concurrency/send-sync/marker-traits.md msgid "" @@ -21873,6 +22042,9 @@ msgid "" "or for a timeout. Change the `sleep` to sleep longer to see it fail. Why " "does the `send` also fail in this situation?" msgstr "" +"بلوک async `listener` در اینجا یک شکل رایج است: منتظر برخی رویدادهای async " +"یا به‌عنوان مثال برای timeoutها باشید. `sleep` را به sleep طولانی‌تر تغییر " +"دهید تا شاهد شکست آن باشید. چرا `send` نیز در این شرایط شکست می‌خورد؟" #: src/concurrency/async-control-flow/select.md msgid ""