diff --git a/po/fa.po b/po/fa.po
index d67c042c..e5d4a68d 100644
--- a/po/fa.po
+++ b/po/fa.po
@@ -13331,51 +13331,54 @@ msgid ""
"Create a wrapper header file for the library (not strictly needed in this "
"example):"
msgstr ""
+"یک فایل هدر wrapper برای کتابخانه ایجاد کنید (در این مثال به شدت مورد نیاز "
+"نیست):"
#: src/android/interoperability/with-c/bindgen.md:47
msgid "_interoperability/bindgen/libbirthday_wrapper.h_:"
-msgstr ""
+msgstr "_interoperability/bindgen/libbirthday_wrapper.h_:"
#: src/android/interoperability/with-c/bindgen.md:53
msgid "You can now auto-generate the bindings:"
-msgstr ""
+msgstr "اکنون می توانید اتصالات (bindings) را به طور خودکار ایجاد کنید:"
#: src/android/interoperability/with-c/bindgen.md:59
#: src/android/interoperability/with-c/bindgen.md:75
msgid "\"libbirthday_bindgen\""
-msgstr ""
+msgstr "\"libbirthday_bindgen\""
#: src/android/interoperability/with-c/bindgen.md:60
msgid "\"birthday_bindgen\""
-msgstr ""
+msgstr "\"birthday_bindgen\""
#: src/android/interoperability/with-c/bindgen.md:61
msgid "\"libbirthday_wrapper.h\""
-msgstr ""
+msgstr "\"libbirthday_wrapper.h\""
#: src/android/interoperability/with-c/bindgen.md:62
msgid "\"bindings\""
-msgstr ""
+msgstr "\"bindings\""
#: src/android/interoperability/with-c/bindgen.md:67
msgid "Finally, we can use the bindings in our Rust program:"
-msgstr ""
+msgstr "در نهایت، میتوانیم از bindingها در برنامه Rust خود استفاده کنیم:"
#: src/android/interoperability/with-c/bindgen.md:73
+#, fuzzy
msgid "\"print_birthday_card\""
-msgstr ""
+msgstr "\"print_birthday_card\""
#: src/android/interoperability/with-c/bindgen.md:74
msgid "\"main.rs\""
-msgstr ""
+msgstr "\"main.rs\""
#: src/android/interoperability/with-c/bindgen.md:79
msgid "_interoperability/bindgen/main.rs_:"
-msgstr ""
+msgstr "_interoperability/bindgen/main.rs_:"
#: src/android/interoperability/with-c/bindgen.md:82
msgid "//! Bindgen demo.\n"
-msgstr ""
+msgstr "//! Bindgen demo.\n"
#: src/android/interoperability/with-c/bindgen.md:89
msgid ""
@@ -13386,6 +13389,12 @@ msgid ""
"later\n"
" // after it returns.\n"
msgstr ""
+"// SAFETY: The pointer we pass is valid because it came from a Rust\n"
+" // reference, and the `name` it contains refers to `name` above which "
+"also\n"
+" // remains valid. `print_card` doesn't store either pointer to use "
+"later\n"
+" // after it returns.\n"
#: src/android/interoperability/with-c/bindgen.md:101
msgid ""
@@ -13396,101 +13405,111 @@ msgid ""
"adb shell /data/local/tmp/print_birthday_card\n"
"```"
msgstr ""
+"```shell\n"
+"m print_birthday_card\n"
+"adb push \"$ANDROID_PRODUCT_OUT/system/bin/print_birthday_card\" /data/local/"
+"tmp\n"
+"adb shell /data/local/tmp/print_birthday_card\n"
+"```"
#: src/android/interoperability/with-c/bindgen.md:107
msgid "Finally, we can run auto-generated tests to ensure the bindings work:"
msgstr ""
+"در نهایت، ما میتوانیم تستهای تولید شده خودکار را برای اطمینان از کارکرد "
+"اتصالات (bindings) اجرا کنیم:"
#: src/android/interoperability/with-c/bindgen.md:113
#: src/android/interoperability/with-c/bindgen.md:115
msgid "\"libbirthday_bindgen_test\""
-msgstr ""
+msgstr "\"libbirthday_bindgen_test\""
#: src/android/interoperability/with-c/bindgen.md:114
msgid "\":libbirthday_bindgen\""
-msgstr ""
+msgstr "\":libbirthday_bindgen\""
#: src/android/interoperability/with-c/bindgen.md:118
#: src/android/interoperability/with-c/bindgen.md:119
msgid "\"none\""
-msgstr ""
+msgstr "\"none\""
#: src/android/interoperability/with-c/bindgen.md:118
msgid "// Generated file, skip linting\n"
-msgstr ""
+msgstr "// Generated file, skip linting\n"
#: src/android/interoperability/with-c/rust.md:1
msgid "Calling Rust"
-msgstr ""
+msgstr "فراخوانی Rust"
#: src/android/interoperability/with-c/rust.md:3
msgid "Exporting Rust functions and types to C is easy:"
-msgstr ""
+msgstr "صدور یا Exporting توابع و تایپها از Rust به C آسان است:"
#: src/android/interoperability/with-c/rust.md:5
msgid "_interoperability/rust/libanalyze/analyze.rs_"
-msgstr ""
+msgstr "_interoperability/rust/libanalyze/analyze.rs_"
#: src/android/interoperability/with-c/rust.md:8
msgid "//! Rust FFI demo.\n"
-msgstr ""
+msgstr "//! Rust FFI demo.\n"
#: src/android/interoperability/with-c/rust.md:12
msgid "/// Analyze the numbers.\n"
-msgstr ""
+msgstr "/// Analyze the numbers.\n"
#: src/android/interoperability/with-c/rust.md:17
+#, fuzzy
msgid "\"x ({x}) is smallest!\""
-msgstr ""
+msgstr "\"x ({x}) is smallest!\""
#: src/android/interoperability/with-c/rust.md:19
+#, fuzzy
msgid "\"y ({y}) is probably larger than x ({x})\""
-msgstr ""
+msgstr "\"y ({y}) is probably larger than x ({x})\""
#: src/android/interoperability/with-c/rust.md:24
msgid "_interoperability/rust/libanalyze/analyze.h_"
-msgstr ""
+msgstr "_interoperability/rust/libanalyze/analyze.h_"
#: src/android/interoperability/with-c/rust.md:37
msgid "_interoperability/rust/libanalyze/Android.bp_"
-msgstr ""
+msgstr "_interoperability/rust/libanalyze/Android.bp_"
#: src/android/interoperability/with-c/rust.md:41
#: src/android/interoperability/with-c/rust.md:68
msgid "\"libanalyze_ffi\""
-msgstr ""
+msgstr "\"libanalyze_ffi\""
#: src/android/interoperability/with-c/rust.md:42
msgid "\"analyze_ffi\""
-msgstr ""
+msgstr "\"analyze_ffi\""
#: src/android/interoperability/with-c/rust.md:43
msgid "\"analyze.rs\""
-msgstr ""
+msgstr "\"analyze.rs\""
#: src/android/interoperability/with-c/rust.md:48
msgid "We can now call this from a C binary:"
-msgstr ""
+msgstr "اکنون می توانیم این را از یک باینری C فراخوانی کنیم:"
#: src/android/interoperability/with-c/rust.md:50
msgid "_interoperability/rust/analyze/main.c_"
-msgstr ""
+msgstr "_interoperability/rust/analyze/Android.bp_"
#: src/android/interoperability/with-c/rust.md:53
msgid "\"analyze.h\""
-msgstr ""
+msgstr "\"analyze.h\""
#: src/android/interoperability/with-c/rust.md:62
msgid "_interoperability/rust/analyze/Android.bp_"
-msgstr ""
+msgstr "_interoperability/rust/analyze/Android.bp_"
#: src/android/interoperability/with-c/rust.md:66
msgid "\"analyze_numbers\""
-msgstr ""
+msgstr "\"analyze_numbers\""
#: src/android/interoperability/with-c/rust.md:67
msgid "\"main.c\""
-msgstr ""
+msgstr "\"main.c\""
#: src/android/interoperability/with-c/rust.md:74
msgid ""
@@ -13501,6 +13520,12 @@ msgid ""
"adb shell /data/local/tmp/analyze_numbers\n"
"```"
msgstr ""
+"```shell\n"
+"m analyze_numbers\n"
+"adb push \"$ANDROID_PRODUCT_OUT/system/bin/analyze_numbers\" /data/local/"
+"tmp\n"
+"adb shell /data/local/tmp/analyze_numbers\n"
+"```"
#: src/android/interoperability/with-c/rust.md:82
msgid ""
@@ -13508,16 +13533,21 @@ msgid ""
"will just be the name of the function. You can also use `#[export_name = "
"\"some_name\"]` to specify whatever name you want."
msgstr ""
+"`#[no_mangle]` نامگذاری معمول Rust را غیرفعال میکند، بنابراین نماد صادر شده "
+"فقط نام تابع خواهد بود. همچنین میتوانید از `#[export_name = \"some_name\"]` "
+"برای تعیین هر نامی استفاده کنید"
#: src/android/interoperability/cpp.md:3
msgid ""
"The [CXX crate](https://cxx.rs/) makes it possible to do safe "
"interoperability between Rust and C++."
msgstr ""
+"این [CXX crate](https://cxx.rs/) امکان همکاری امن بین Rust و C++ را فراهم "
+"میکند."
#: src/android/interoperability/cpp.md:6
msgid "The overall approach looks like this:"
-msgstr ""
+msgstr "رویکرد کلی به این صورت است:"
#: src/android/interoperability/cpp/bridge.md:3
msgid ""
@@ -13525,19 +13555,23 @@ msgid ""
"from each language to the other. You provide this description using extern "
"blocks in a Rust module annotated with the `#[cxx::bridge]` attribute macro."
msgstr ""
+" CXX متکی به توصیفی از signatureهای تابع است که از هر زبان به زبان دیگر در "
+"معرض دید قرار میگیرد. شما این توضیحات را با استفاده از بلوکهای خارجی در یک "
+"ماژول Rust ارائه میکنید که با attribute ماکروها `#[cxx::bridge]` شرح داده "
+"شده است."
#: src/android/interoperability/cpp/bridge.md:9
msgid "\"org::blobstore\""
-msgstr ""
+msgstr "\"org::blobstore\""
#: src/android/interoperability/cpp/bridge.md:11
msgid "// Shared structs with fields visible to both languages.\n"
-msgstr ""
+msgstr "// Shared structs with fields visible to both languages.\n"
#: src/android/interoperability/cpp/bridge.md:17
#: src/android/interoperability/cpp/generated-cpp.md:6
msgid "// Rust types and signatures exposed to C++.\n"
-msgstr ""
+msgstr "// Rust types and signatures exposed to C++.\n"
#: src/android/interoperability/cpp/bridge.md:18
#: src/android/interoperability/cpp/rust-bridge.md:6
@@ -13546,9 +13580,8 @@ msgstr ""
#: src/chromium/interoperability-with-cpp/example-bindings.md:9
#: src/chromium/interoperability-with-cpp/error-handling-qr.md:10
#: src/chromium/interoperability-with-cpp/error-handling-png.md:9
-#, fuzzy
msgid "\"Rust\""
-msgstr "Rustdoc"
+msgstr "\"Rust\""
#: src/android/interoperability/cpp/bridge.md:24
#: src/android/interoperability/cpp/cpp-bridge.md:6
@@ -13560,16 +13593,16 @@ msgstr ""
#: src/android/interoperability/cpp/cpp-exception.md:6
#: src/chromium/interoperability-with-cpp/example-bindings.md:15
msgid "\"C++\""
-msgstr ""
+msgstr "\"C++\""
#: src/android/interoperability/cpp/bridge.md:26
#: src/android/interoperability/cpp/cpp-bridge.md:8
msgid "\"include/blobstore.h\""
-msgstr ""
+msgstr "\"include/blobstore.h\""
#: src/android/interoperability/cpp/bridge.md:40
msgid "The bridge is generally declared in an `ffi` module within your crate."
-msgstr ""
+msgstr "پل به طور کلی در یک ماژول `ffi`در crate شما اعلام میشود."
#: src/android/interoperability/cpp/bridge.md:41
msgid ""
@@ -13577,6 +13610,9 @@ msgid ""
"Rust and C++ type/function definitions in order to expose those items to "
"both languages."
msgstr ""
+"از اعلانهای (declarations) انجام شده در ماژول پل، CXX تعاریف مطابق با type/"
+"function در Rust و ++C را ایجاد میکند تا آن موارد را در معرض هر دو زبان قرار "
+"دهد."
#: src/android/interoperability/cpp/bridge.md:44
msgid ""
@@ -13585,22 +13621,26 @@ msgid ""
"examples you would use `cargo expand ::ffi` to expand just the `ffi` module "
"(though this doesn't apply for Android projects)."
msgstr ""
+"برای مشاهده کد Rust ایجاد شده از [cargo-expand](https://github.com/dtolnay/"
+"cargo-expand) که برای مشاهده ماکرو proc توسعه یافته استفاده کنید. برای بیشتر "
+"نمونهها از `cargo expand ::ffi` فقط برای گسترش ماژول `ffi` استفاده کنید "
+"(اگرچه این برای پروژههای Android کاربرد ندارد)."
#: src/android/interoperability/cpp/bridge.md:47
msgid "To view the generated C++ code, look in `target/cxxbridge`."
-msgstr ""
+msgstr "برای مشاهده کد ++C تولید شده به `target/cxxbridge` نگاه کنید."
#: src/android/interoperability/cpp/rust-bridge.md:1
msgid "Rust Bridge Declarations"
-msgstr ""
+msgstr "تعریف پل در Rust"
#: src/android/interoperability/cpp/rust-bridge.md:7
msgid "// Opaque type\n"
-msgstr ""
+msgstr "// Opaque type\n"
#: src/android/interoperability/cpp/rust-bridge.md:8
msgid "// Method on `MyType`\n"
-msgstr ""
+msgstr "// Method on `MyType`\n"
#: src/android/interoperability/cpp/rust-bridge.md:9
#, fuzzy
@@ -13612,6 +13652,8 @@ msgid ""
"Items declared in the `extern \"Rust\"` reference items that are in scope in "
"the parent module."
msgstr ""
+"موارد اعلام شده در موارد `extern \"Rust\"` reference که در محدوده ماژول "
+"والد قرار دارند."
#: src/android/interoperability/cpp/rust-bridge.md:30
msgid ""
@@ -13620,26 +13662,31 @@ msgid ""
"header has the same path as the Rust source file containing the bridge, "
"except with a .rs.h file extension."
msgstr ""
+"تولیدکننده کد CXX از `extern \"Rust\"` خارجی شما برای تولید یک فایل هدر +"
+"+C حاوی اعلانهای ++C مربوطه استفاده میکند. header تولیدشده همان مسیری را "
+"دارد که فایل منبع Rust حاوی پل دارای آن است، به جز استفاده از پسوند فایل rs."
+"h."
#: src/android/interoperability/cpp/generated-cpp.md:15
msgid "Results in (roughly) the following C++:"
-msgstr ""
+msgstr "نتیجه (تقریبی) ++C در زیر است:"
#: src/android/interoperability/cpp/cpp-bridge.md:1
+#, fuzzy
msgid "C++ Bridge Declarations"
-msgstr ""
+msgstr "C++ Bridge Declarations"
#: src/android/interoperability/cpp/cpp-bridge.md:20
msgid "Results in (roughly) the following Rust:"
-msgstr ""
+msgstr "نتیجه (تقریبی) Rust در زیر است:"
#: src/android/interoperability/cpp/cpp-bridge.md:30
msgid "\"org$blobstore$cxxbridge1$new_blobstore_client\""
-msgstr ""
+msgstr "\"org$blobstore$cxxbridge1$new_blobstore_client\""
#: src/android/interoperability/cpp/cpp-bridge.md:39
msgid "\"org$blobstore$cxxbridge1$BlobstoreClient$put\""
-msgstr ""
+msgstr "\"org$blobstore$cxxbridge1$BlobstoreClient$put\""
#: src/android/interoperability/cpp/cpp-bridge.md:56
msgid ""
@@ -13647,20 +13694,25 @@ msgid ""
"in are accurate. CXX performs static assertions that the signatures exactly "
"correspond with what is declared in C++."
msgstr ""
+"برنامهنویس نیازی به تضمینی در مورد درست بودن signatureهایی که تایپ کرده است "
+"ندارد. CXX اظهارات ثابتی را انجام می دهد که signatureها دقیقاً با آنچه در ++C "
+"اعلام شده مطابقت دارند."
#: src/android/interoperability/cpp/cpp-bridge.md:59
msgid ""
"`unsafe extern` blocks allow you to declare C++ functions that are safe to "
"call from Rust."
msgstr ""
+"بلوکهای `unsafe extern` به شما امکان میدهند توابع ++C را که برای فراخوانی از "
+"Rust امن هستند را اعلام کنید."
#: src/android/interoperability/cpp/shared-types.md:9
msgid "// A=1, J=11, Q=12, K=13\n"
-msgstr ""
+msgstr "// A=1, J=11, Q=12, K=13\n"
#: src/android/interoperability/cpp/shared-types.md:23
msgid "Only C-like (unit) enums are supported."
-msgstr ""
+msgstr "فقط C-like (unit) enums پشتیبانی میشود."
#: src/android/interoperability/cpp/shared-types.md:24
msgid ""
@@ -13669,37 +13721,45 @@ msgid ""
"derive `Hash` also generates an implementation of `std::hash` for the "
"corresponding C++ type."
msgstr ""
+"تعداد محدودی از ویژگیها برای `#[derive()]`در انواع مشترک پشتیبانی میشوند. "
+"عملکرد مربوطه نیز برای کد ++C ایجاد می شود، به عنوان مثال. اگر `Hash` را "
+"استخراج کنید، پیادهسازی `std::hash` برای نوع ++C مربوطه نیز ایجاد میکند."
#: src/android/interoperability/cpp/shared-enums.md:15
-#, fuzzy
msgid "Generated Rust:"
-msgstr "Rust ناایمن"
+msgstr "Generated Rust:"
#: src/android/interoperability/cpp/shared-enums.md:33
msgid "Generated C++:"
-msgstr ""
+msgstr "Generated C++:"
#: src/android/interoperability/cpp/shared-enums.md:46
+#, fuzzy
msgid ""
"On the Rust side, the code generated for shared enums is actually a struct "
"wrapping a numeric value. This is because it is not UB in C++ for an enum "
"class to hold a value different from all of the listed variants, and our "
"Rust representation needs to have the same behavior."
msgstr ""
+"در سمت Rust، کد تولید شده برای enums مشترک در واقع ساختاری است که یک مقدار "
+"عددی را بستهبندی میکند. به این دلیل که UB در ++C نیست تا یک کلاس enum مقداری "
+"متفاوت از همه انواع فهرست شده داشته باشد و نمایشدهنده Rust مورد نظر ما باید "
+"رفتار مشابهی داشته باشد."
#: src/android/interoperability/cpp/rust-result.md:13
msgid "\"fallible1 requires depth > 0\""
-msgstr ""
+msgstr "\"fallible1 requires depth > 0\""
#: src/android/interoperability/cpp/rust-result.md:16
msgid "\"Success!\""
-msgstr ""
+msgstr "\"Success!\""
#: src/android/interoperability/cpp/rust-result.md:22
msgid ""
"Rust functions that return `Result` are translated to exceptions on the C++ "
"side."
msgstr ""
+"توابع Rust که «نتیجه» را برمیگردانند به exceptionهای سمت ++C ترجمه میشوند."
#: src/android/interoperability/cpp/rust-result.md:24
msgid ""
@@ -13707,26 +13767,34 @@ msgid ""
"exposes a way to get the error message string. The error message will come "
"from the error type's `Display` impl."
msgstr ""
+"این exception به وقوع پیوسته همیشه از نوع `rust::Error` خواهد بود که در درجه "
+"اول راهی برای دریافت string پیام خطا نشان میدهد. پیغام خطا از نوع "
+"خطای`Display` میآید."
#: src/android/interoperability/cpp/rust-result.md:27
msgid ""
"A panic unwinding from Rust to C++ will always cause the process to "
"immediately terminate."
msgstr ""
+"باز شدن panic از Rust به ++C همیشه باعث میشود که فرآیند بلافاصله خاتمه یابد."
#: src/android/interoperability/cpp/cpp-exception.md:7
msgid "\"example/include/example.h\""
-msgstr ""
+msgstr "\"example/include/example.h\""
#: src/android/interoperability/cpp/cpp-exception.md:14
msgid "\"Error: {}\""
-msgstr ""
+msgstr "\"Error: {}\""
#: src/android/interoperability/cpp/cpp-exception.md:22
+#, fuzzy
msgid ""
"C++ functions declared to return a `Result` will catch any thrown exception "
"on the C++ side and return it as an `Err` value to the calling Rust function."
msgstr ""
+"توابع ++C اعلام شده برای برگرداندن «نتیجه»، هر exception صورت گرفته شده در "
+"سمت ++C را میگیرند و آن را به عنوان مقدار `Err` به تابع فراخوانی Rust "
+"برمیگردانند."
#: src/android/interoperability/cpp/cpp-exception.md:24
msgid ""
@@ -13735,29 +13803,30 @@ msgid ""
"terminate`. The behavior is equivalent to the same exception being thrown "
"through a `noexcept` C++ function."
msgstr ""
+"اگر یک exception از یک extern \"C++\" function که توسط پل CXX برای بازگشت "
+"\"نتیجه\" اعلان نشده است، ایجاد شود، برنامه C++' `std::terminate` را "
+"فراخوانی میکند. این رفتار معادل همان exception است که از طریق یک `noexcept` "
+"C++ function فعال میشود."
#: src/android/interoperability/cpp/type-mapping.md:3
-#, fuzzy
msgid "C++ Type"
-msgstr "مثالی در C++"
+msgstr "C++ Type"
#: src/android/interoperability/cpp/type-mapping.md:5
-#, fuzzy
msgid "`rust::String`"
-msgstr "String"
+msgstr "`rust::String`"
#: src/android/interoperability/cpp/type-mapping.md:6
msgid "`&str`"
-msgstr "&str
"
+msgstr "`&str`"
#: src/android/interoperability/cpp/type-mapping.md:6
msgid "`rust::Str`"
-msgstr ""
+msgstr "`rust::Str`"
#: src/android/interoperability/cpp/type-mapping.md:7
-#, fuzzy
msgid "`CxxString`"
-msgstr "String"
+msgstr "`CxxString`"
#: src/android/interoperability/cpp/type-mapping.md:7
#, fuzzy