diff --git a/po/fa.po b/po/fa.po index 423e42f6..f1defaff 100644 --- a/po/fa.po +++ b/po/fa.po @@ -14178,13 +14178,15 @@ msgstr "" #: src/chromium.md msgid "Welcome to Rust in Chromium" -msgstr "" +msgstr "به Rust در Chromium خوش‌آمدید." #: src/chromium.md msgid "" "Rust is supported for third-party libraries in Chromium, with first-party " "glue code to connect between Rust and existing Chromium C++ code." msgstr "" +"‏ Rust برای کتابخانه‌های شخص ثالث در Chromium پشتیبانی می‌شود، با glue code اول " +"شخص برای اتصال بین Rust و کد موجود در ++Chromium C." #: src/chromium.md msgid "" @@ -14193,6 +14195,10 @@ msgid "" "feel free to follow this recipe in your part of the codebase instead of the " "exact part we talk about." msgstr "" +"امروز ما با Rust ارتباط می‌گیریم تا کار احمقانه‌ای با stringها انجام دهد. اگر " +"گوشه‌ای از کد را دارید که در آن رشته UTF8 را به کاربر نشان می دهید، به جای " +"قسمت دقیقی که در مورد آن صحبت می‌کنیم، این دستور العمل را در قسمت خود از " +"پایگاه کد دنبال کنید." #: src/chromium/setup.md msgid "" @@ -14200,12 +14206,18 @@ msgid "" "flags is OK, so long as your code is relatively recent (commit position " "1223636 onwards, corresponding to November 2023):" msgstr "" +"مطمئن شوید که می‌توانید Chromium را build و اجرا کنید. هر پلتفرم و مجموعه‌ای " +"از build flag ها بدون مشکل هستند، تا زمانی که کد شما نسبتاً جدید باشد (موقعیت " +"commit 1223636 به بعد، مربوط به نوامبر 2023):" #: src/chromium/setup.md +#, fuzzy msgid "" "(A component, debug build is recommended for quickest iteration time. This " "is the default!)" msgstr "" +"(یک component به صورت debug build برای سریع‌ترین زمان تکرار توصیه می‌شود. این " +"یک حالت پیش‌فرض است!)" #: src/chromium/setup.md msgid "" @@ -14213,14 +14225,17 @@ msgid "" "the-code/) if you aren't already at that point. Be warned: setting up to " "build Chromium takes time." msgstr "" +"اگر از قبل در آن مرحله نیستید، به [چگونه Chromium بسازیم](https://www." +"chromium.org/developers/how-tos/get-the-code/) مراجعه کنید. هشدار: راه‌اندازی " +"برای build Chromium زمان زیادی می‌برد." #: src/chromium/setup.md msgid "It's also recommended that you have Visual Studio code installed." -msgstr "" +msgstr "همچنین توصیه می شود که Visual Studio code را نصب کرده باشید." #: src/chromium/setup.md msgid "About the exercises" -msgstr "" +msgstr "در مورد تمرین‌ها" #: src/chromium/setup.md msgid "" @@ -14229,6 +14244,10 @@ msgid "" "If you don't have time to complete a certain part, don't worry: you can " "catch up in the next slot." msgstr "" +"این بخش از دوره دارای یک سری تمرینات است که بر روی یکدیگر ساخته می‌شوند. ما " +"آنها را به جای اینکه فقط در انتها انجام دهیم، در طول دوره پخش خواهیم کرد. " +"اگر برای تکمیل قسمت خاصی وقت ندارید، نگران نباشید: می توانید در اسلاید بعدی " +"به عقب برگردید." #: src/chromium/cargo.md msgid "" @@ -14236,10 +14255,13 @@ msgid "" "(https://crates.io/). Chromium is built using `gn` and `ninja` and a curated " "set of dependencies." msgstr "" +"جامعه Rust معمولاً از `cargo` و کتابخانه‌های [crates.io](https://crates.io/) " +"استفاده می‌کند. Chromium با استفاده از `gn` و `ninja` و مجموعه‌ای از وابستگی‌ها " +"ساخته شده است." #: src/chromium/cargo.md msgid "When writing code in Rust, your choices are:" -msgstr "" +msgstr "هنگام نوشتن کد در Rust، انتخاب‌های شما عبارتند از:" #: src/chromium/cargo.md msgid "" @@ -14247,6 +14269,9 @@ msgid "" "gni` (e.g. `rust_static_library` that we'll meet later). This uses " "Chromium's audited toolchain and crates." msgstr "" +"از `gn` و `ninja` با کمک الگوهای `//build/rust/*.gni` استفاده کنید (مثلاً " +"`rust_static_library` که بعداً با آن آشنا خواهیم شد). این از toolchain و " +"crateهای بررسی‌شده Chromium استفاده می‌کند." #: src/chromium/cargo.md msgid "" @@ -14254,12 +14279,17 @@ msgid "" "crates](https://chromium.googlesource.com/chromium/src/+/refs/heads/main/" "docs/rust.md#Using-cargo)" msgstr "" +"از `cargo` استفاده کنید، اما [خود را به toolchain و crateهای بررسی‌شده " +"Chromium محدود کنید](https://chromium.googlesource.com/chromium/src/+/refs/" +"heads/main/docs/rust.md#Using-cargo)" #: src/chromium/cargo.md msgid "" "Use `cargo`, trusting a [toolchain](https://rustup.rs/) and/or [crates " "downloaded from the internet](https://crates.io/)" msgstr "" +"از `cargo` استفاده کنید، به یک [toolchain](https://rustup.rs/) و/یا " +"[crateهای دانلود شده از اینترنت]‌(https://crates.io/) اعتماد کنید." #: src/chromium/cargo.md msgid "" @@ -14267,27 +14297,33 @@ msgid "" "code can be built into the Chromium browser. At the same time, Cargo is an " "important part of the Rust ecosystem and you should keep it in your toolbox." msgstr "" +"از اینجا به بعد ما روی `gn` و `ninja` تمرکز خواهیم کرد، زیرا به این ترتیب " +"می‌توان کد Rust را در مرورگر Chromium ایجاد کرد. در عین حال، Cargo بخش مهمی " +"از اکوسیستم Rust است و شما باید آن را در جعبه ابزار خود نگه دارید." #: src/chromium/cargo.md -#, fuzzy msgid "Mini exercise" -msgstr "تمرین‌ها" +msgstr "خرده تمرین" #: src/chromium/cargo.md msgid "Split into small groups and:" -msgstr "" +msgstr "به گروه‌های کوچک تقسیم شده و:" #: src/chromium/cargo.md msgid "" "Brainstorm scenarios where `cargo` may offer an advantage and assess the " "risk profile of these scenarios." msgstr "" +"سناریوهای طوفان فکری که در آن `cargo` ممکن است مزیتی را ارائه دهد و نمایه " +"ریسک‌های این سناریوها را ارزیابی کند." #: src/chromium/cargo.md msgid "" "Discuss which tools, libraries, and groups of people need to be trusted when " "using `gn` and `ninja`, offline `cargo`, etc." msgstr "" +"در هنگام استفاده از `gn` و `ninja`و `cargo` آفلاین و غیره در مورد ابزارها، " +"کتابخانه‌ها و گروه‌هایی از افراد بحث کنید." #: src/chromium/cargo.md msgid "" @@ -14295,12 +14331,17 @@ msgid "" "exercise. Assuming folks taking the course are physically together, ask them " "to discuss in small groups of 3-4 people." msgstr "" +"از دانش‌آموزان بخواهید که قبل از اتمام تمرین از نگاه کردن به یادداشت‌های " +"سخنران خودداری کنند. با فرض اینکه افرادی که دوره را می‌گذرانند از نظر فیزیکی " +"با هم هستند، از آنها بخواهید در گروه های کوچک ۳-۴ نفره بحث کنند." #: src/chromium/cargo.md msgid "" "Notes/hints related to the first part of the exercise (\"scenarios where " "Cargo may offer an advantage\"):" msgstr "" +"نکته‌ها/تکنیک‌ها مربوط به بخش اول تمرین (\"سناریوهایی که Cargo ممکن است مزیتی " +"را ارائه دهد\"):" #: src/chromium/cargo.md msgid "" @@ -14310,20 +14351,30 @@ msgid "" "(`clap` for command-line parsing, `serde` for serializing/deserializing to/" "from various formats, `itertools` for working with iterators, etc.)." msgstr "" +"این فوق العاده است که هنگام نوشتن یک ابزار یا نمونه‌سازی بخشی از Chromium به " +"اکوسیستم غنی کتابخانه‌های crates.io دسترسی داشته باشید. تقریباً برای هر چیزی " +"یک crate وجود دارد و معمولاً استفاده از آنها بسیار لذت بخش است. (`clap` برای " +"تجزیه خط فرمان، `serde` برای سریال‌سازی/جداسازی‌سریال به/از قالب‌های مختلف، " +"`itertools` برای کار با تکرارکننده‌ها (iterators) و غیره)." #: src/chromium/cargo.md msgid "" "`cargo` makes it easy to try a library (just add a single line to `Cargo." "toml` and start writing code)" msgstr "" +"‏ `cargo` بررسی کردن یک کتابخانه را آسان می‌کند (فقط یک خط به `Cargo.toml` " +"اضافه کنید و شروع به نوشتن کد کنید)" #: src/chromium/cargo.md msgid "" "It may be worth comparing how CPAN helped make `perl` a popular choice. Or " "comparing with `python` + `pip`." msgstr "" +"شاید ارزش این را داشته باشد که چگونه CPAN به انتخاب `perl` کمک کرد. یا " +"مقایسه با `python` + `pip`." #: src/chromium/cargo.md +#, fuzzy msgid "" "Development experience is made really nice not only by core Rust tools (e.g. " "using `rustup` to switch to a different `rustc` version when testing a crate " @@ -14332,15 +14383,25 @@ msgid "" "streamlining and sharing security audits; `criterion` crate gives a " "streamlined way to run benchmarks)." msgstr "" +"تجربه توسعه نه تنها با ابزارهای اصلی Rust (به عنوان مثال استفاده از `rustup` " +"برای تغییر به نسخه `rustc` متفاوت در هنگام آزمایش crate ای که نیاز به کار بر " +"روی پایداری‌های شبانه، فعلی و قدیمی‌تر دارد) بسیار خوب است، بلکه توسط یک " +"اکوسیستم نیز انجام می‌شود. از ابزارهای شخص ثالث (مثلاً موزیلا `cargo vet` را " +"برای ساده‌سازی و اشتراک‌گذاری ممیزی‌های امنیتی فراهم می‌کند؛ `criterion` crate " +"راهی ساده برای اجرای benchmark‌ها می‌دهد)." #: src/chromium/cargo.md msgid "" "`cargo` makes it easy to add a tool via `cargo install --locked cargo-vet`." msgstr "" +"‏ `cargo` افزودن ابزارها را از طریق`cargo install --locked cargo-vet` تسهیل " +"می‌کند." #: src/chromium/cargo.md msgid "It may be worth comparing with Chrome Extensions or VScode extensions." msgstr "" +"ممکن است ارزش مقایسه با برنامه‌های افزودنی کروم یا افزونه‌های VScode را داشته " +"باشد." #: src/chromium/cargo.md msgid "" @@ -14355,6 +14416,10 @@ msgid "" "typesystem) and running faster (as a compiled, rather than interpreted " "language)." msgstr "" +"شاید تعجب‌آور باشد که Rust به طور فزاینده ای در صنعت برای نوشتن ابزارهای خط " +"فرمان محبوب می‌شود. گستردگی و ارگونومی کتابخانه‌ها با پایتون قابل مقایسه است، " +"درحالی‌که قوی‌تر (به لطف تایپ سیستم غنی) است و سریعتر کار می‌کند (به عنوان یک " +"زبان کامپایل شده و نه مفسری)." #: src/chromium/cargo.md msgid "" @@ -14363,33 +14428,45 @@ msgid "" "used outside of Chromium (e.g. in Bazel or Android/Soong build environments) " "should probably use Cargo." msgstr "" +"مشارکت در اکوسیستم Rust مستلزم استفاده از ابزار استاندارد Rust مانند Cargo " +"است. کتابخانه‌هایی که می‌خواهند مشارکت‌های خارجی دریافت کنند و می‌خواهند خارج از " +"Chromium استفاده شوند (مثلاً در محیط‌های ساخت Bazel یا Android/Soong) احتمالاً " +"باید از Cargo استفاده کنند." #: src/chromium/cargo.md msgid "Examples of Chromium-related projects that are `cargo`\\-based:" -msgstr "" +msgstr "نمونه‌هایی از پروژه‌های مرتبط با Chromium که مبتنی بر `cargo` هستند:" #: src/chromium/cargo.md msgid "" "`serde_json_lenient` (experimented with in other parts of Google which " "resulted in PRs with performance improvements)" msgstr "" +"‏ `serde_json_lenient` (در قسمت‌های دیگر Google آزمایش شده که منجر به PRهایی " +"با بهبود در عملکرد می‌باشد.)" #: src/chromium/cargo.md msgid "Fontations libraries like `font-types`" -msgstr "" +msgstr "کتابخانه‌های فونت مانند `font-types`." #: src/chromium/cargo.md msgid "" "`gnrt` tool (we will meet it later in the course) which depends on `clap` " "for command-line parsing and on `toml` for configuration files." msgstr "" +"ابزار `gnrt` (ما بعداً در دوره با آن آشنا خواهیم شد) که برای تجزیه خط فرمان " +"به `clap` و برای فایل‌های پیکربندی به `toml` بستگی دارد." #: src/chromium/cargo.md +#, fuzzy msgid "" "Disclaimer: a unique reason for using `cargo` was unavailability of `gn` " "when building and bootstrapping Rust standard library when building Rust " "toolchain." msgstr "" +"سلب مسئولیت: یک دلیل منحصر به فرد برای استفاده از `cargo` در دسترس نبودن " +"`gn` در هنگام ساخت و راه‌اندازی کتابخانه استاندارد Rust درحین ساخت Rust " +"toolchain بود." #: src/chromium/cargo.md msgid "" @@ -14397,12 +14474,17 @@ msgid "" "third-party libraries downloaded from the internet, but `run_gnrt.py` asks " "`cargo` that only `--locked` content is allowed via `Cargo.lock`.)" msgstr "" +"‏ `run_gnrt.py` از کپی Chromium از `cargo` و `rustc` استفاده می‌کند.`gnrt` به " +"کتابخانه‌های شخص ثالثی بستگی دارد که از اینترنت دانلود شده‌اند، اما `run_gnrt." +"py` از `cargo` می‌پرسد که فقط محتوای `--locked` از طریق `Cargo.lock` مجاز " +"است.)" #: src/chromium/cargo.md msgid "" "Students may identify the following items as being implicitly or explicitly " "trusted:" msgstr "" +"دانش‌آموزان ممکن است موارد زیر را به طور ضمنی یا صریح مورد اعتماد تشخیص‌دهند:" #: src/chromium/cargo.md msgid "" @@ -14410,40 +14492,49 @@ msgid "" "Clang compiler, the `rustc` sources (fetched from GitHub, reviewed by Rust " "compiler team), binary Rust compiler downloaded for bootstrapping" msgstr "" +"‏ `rustc` (کامپایلر Rust) که به نوبه خود به کتابخانه‌های LLVM، کامپایلر Clang، " +"منابع `rustc` (برگرفته از GitHub، بررسی شده توسط تیم کامپایلر Rust)، " +"کامپایلر Rust باینری که برای راه اندازی بارگیری شده است، بستگی دارد." #: src/chromium/cargo.md msgid "" "`rustup` (it may be worth pointing out that `rustup` is developed under the " "umbrella of the https://github.com/rust-lang/ organization - same as `rustc`)" msgstr "" +"‏ `rustup` (شاید شایان ذکر است که `rustup` زیر چتر سازمان https://github.com/" +"rust-lang/ - همانند `rustc` توسعه یافته است)" #: src/chromium/cargo.md msgid "`cargo`, `rustfmt`, etc." -msgstr "" +msgstr "`cargo`, `rustfmt`, ب." #: src/chromium/cargo.md msgid "" "Various internal infrastructure (bots that build `rustc`, system for " "distributing the prebuilt toolchain to Chromium engineers, etc.)" msgstr "" +"زیرساخت‌های داخلی مختلف (ربات‌هایی که `rustc` می‌سازند، سیستمی برای توزیع " +"toolchain از پیش‌ساخته شده بین مهندسان Chromium و بقیغ)" #: src/chromium/cargo.md msgid "Cargo tools like `cargo audit`, `cargo vet`, etc." -msgstr "" +msgstr "ابزار Cargo مانند `cargo audit`، `cargo vet` و غیره." #: src/chromium/cargo.md msgid "" "Rust libraries vendored into `//third_party/rust` (audited by " "security@chromium.org)" msgstr "" +"کتابخانه‌های Rust در `//third_party/rust` عرضه شده است (بازرسی شده توسط " +"security@chromium.org)" #: src/chromium/cargo.md msgid "Other Rust libraries (some niche, some quite popular and commonly used)" -msgstr "" +msgstr "سایر کتابخانه‌های Rust (بعضی خاص، برخی کاملاً محبوب و پرکاربرد)" #: src/chromium/policy.md msgid "Chromium Rust policy" -msgstr "" +msgstr "رویکرد Chromium Rust" #: src/chromium/policy.md msgid "" @@ -14451,6 +14542,9 @@ msgid "" "approved by Chromium's [Area Tech Leads](https://source.chromium.org/" "chromium/chromium/src/+/main:ATL_OWNERS)." msgstr "" +"‏ Chromium هنوز Rust شخص اول را مجاز نمی‌کند، مگر در موارد نادر که توسط [Area " +"Tech Leads](https://source.chromium.org/chromium/chromium/src/+/main:" +"ATL_OWNERS) تأیید شده است." #: src/chromium/policy.md msgid "" @@ -14460,6 +14554,10 @@ msgid "" "circumstances, including if they're the best option for performance or for " "security." msgstr "" +"رویکردهای Chromium در مورد کتابخانه‌های شخص ثالث [اینجا](https://chromium." +"googlesource.com/chromium/src/+/main/docs/adding_to_third_party.md#rust) " +"مشخص شده است. Rust برای کتابخانه‌های شخص ثالث تحت شرایط مختلف مجاز است، از " +"جمله اینکه آیا آنها بهترین گزینه برای کارایی بالا یا موارد امنیتی هستند." #: src/chromium/policy.md msgid "" @@ -14467,6 +14565,9 @@ msgid "" "nearly all such libraries will require a small amount of first-party glue " "code." msgstr "" +"تعداد بسیار کمی از کتابخانه‌های Rust مستقیماً یک C/C++ API را در معرض دید " +"(expose) قرار می‌دهند، به این معنی که تقریباً همه این کتابخانه‌ها به مقدار کمی " +"glue code اول شخص نیاز دارند." #: src/chromium/policy.md msgid "" @@ -14494,33 +14595,61 @@ msgid "" "-'\n" "```" msgstr "" +"```bob\n" +"\"C++\" Rust\n" +".- - - - - - - - - -. .- - - - - - - - - - - - - - - - - - - - - - " +"-.\n" +": : : :\n" +": Existing Chromium : : Chromium Rust Existing " +"Rust :\n" +": \"C++\" : : \"wrapper\" " +"crate :\n" +": +---------------+ : : +----------------+ +-------------" +"+ :\n" +": | | : : | | | " +"| :\n" +": | o-----+-+-----------+-+-> o-+----------+--> " +"| :\n" +": | | : Language : | | Crate | " +"| :\n" +": +---------------+ : boundary : +----------------+ API +-------------" +"+ :\n" +": : : :\n" +"`- - - - - - - - - -' `- - - - - - - - - - - - - - - - - - - - - - " +"-'\n" +"```" #: src/chromium/policy.md msgid "" "First-party Rust glue code for a particular third-party crate should " "normally be kept in `third_party/rust///wrapper`." msgstr "" +"کد Rust glue اول شخص برای یک crate شخص ثالث خاص معمولاً باید در `third_party/" +"rust///wrapper` نگهداری شود." #: src/chromium/policy.md msgid "Because of this, today's course will be heavily focused on:" -msgstr "" +msgstr "به‌همین دلیل، دوره‌ی امروز به شدت بر روی موارد زیر متمرکز خواهد شد:" #: src/chromium/policy.md msgid "Bringing in third-party Rust libraries (\"crates\")" -msgstr "" +msgstr "آوردن کتابخانه های Rust شخص ثالث (\"crates\")" #: src/chromium/policy.md msgid "Writing glue code to be able to use those crates from Chromium C++." msgstr "" +"نوشتن glue code برای اینکه بتوانید به کمک آن crateها از ++Chromium C استفاده " +"کنید." #: src/chromium/policy.md msgid "If this policy changes over time, the course will evolve to keep up." msgstr "" +"اگر این رویکرد در طول زمان تغییر کند، این دوره به گونه‌ای تکامل می‌یابد که در " +"مسیر مناسب ادامه یابد." #: src/chromium/build-rules.md -#, fuzzy msgid "Build rules" -msgstr "قوانین ساخت" +msgstr "قوانین Build" #: src/chromium/build-rules.md msgid "" @@ -14528,15 +14657,19 @@ msgid "" "`ninja` for efficiency --- its static rules allow maximum parallelism. Rust " "is no exception." msgstr "" +"کد Rust معمولاً با استفاده از `cargo` ساخته می‌شود. Chromium با `gn` و " +"`ninja` جهت کارایی بیشتر ساخته می‌شود --- قواعد استاتیک آن حداکثر موازی‌سازی " +"را امکان‌پذیر می‌سازد. Rust نیز از این قاعده مستثنی نیست." #: src/chromium/build-rules.md msgid "Adding Rust code to Chromium" -msgstr "" +msgstr "افزودن کد Rust به Chromium" #: src/chromium/build-rules.md msgid "" "In some existing Chromium `BUILD.gn` file, declare a `rust_static_library`:" msgstr "" +"در برخی از فایل‌های موجود `BUILD.gn` یک `rust_static_library` را اعلام کنید:" #: src/chromium/build-rules.md msgid "" @@ -14549,12 +14682,22 @@ msgid "" "}\n" "```" msgstr "" +"```gn\n" +"import(\"//build/rust/rust_static_library.gni\")\n" +"\n" +"rust_static_library(\"my_rust_lib\") {\n" +" crate_root = \"lib.rs\"\n" +" sources = [ \"lib.rs\" ]\n" +"}\n" +"```" #: src/chromium/build-rules.md msgid "" "You can also add `deps` on other Rust targets. Later we'll use this to " "depend upon third party code." msgstr "" +"همچنین می‌توانید `deps` را روی سایر اهداف Rust اضافه کنید. بعداً از این برای " +"وابستگی به کد شخص ثالث استفاده خواهیم کرد." #: src/chromium/build-rules.md msgid "" @@ -14564,12 +14707,19 @@ msgid "" "list of all source files which `ninja` needs in order to determine when " "rebuilds are necessary." msgstr "" +"شما باید هر دوی crate root و فهرست کامل منابع را مشخص کنید. `crate_root` " +"فایلی است که به کامپایلر Rust داده می‌شود که نشان‌دهنده فایل ریشه واحد کامپایل " +"است --- معمولاً به‌نام `lib.rs` است. همینطور `sources` فهرست کاملی از تمام " +"فایل‌های منبعی است که `ninja` برای تعیین زمان لازم برای بازسازی به آن‌ها نیاز " +"دارد." #: src/chromium/build-rules.md msgid "" "(There's no such thing as a Rust `source_set`, because in Rust, an entire " "crate is a compilation unit. A `static_library` is the smallest unit.)" msgstr "" +"(چیزی به نام Rust `source_set` وجود ندارد، زیرا در Rust، تمامی crate یک واحد " +"جمع‌آوری است. `static_library` کوچک‌ترین واحد است.)" #: src/chromium/build-rules.md msgid "" @@ -14579,10 +14729,15 @@ msgid "" "this template provides support for CXX interop, Rust features, and unit " "tests, some of which we'll use later." msgstr "" +"دانش‌آموزان ممکن است تعجب کنند که چرا به جای استفاده از [پشتیبانی داخلی gn " +"برای کتابخانه‌های استاتیک Rust](https://gn.googlesource.com/gn/+/main/docs/" +"reference.md#func_static_library) به یک الگوی gn نیاز داریم. پاسخ این است که " +"این الگو از CXX interop، ویژگی‌های Rust و تست‌های واحد پشتیبانی می‌کند که بعداً " +"از برخی از آنها استفاده خواهیم کرد." #: src/chromium/build-rules/unsafe.md:1 msgid "Including `unsafe` Rust Code" -msgstr "" +msgstr "شامل کد `unsafe` Rust." #: src/chromium/build-rules/unsafe.md:3 msgid ""