راهاندازی
شما به Windows 10 یا 11 و Rust stable 1.95 یا بالاتر (ابزار MSVC) نیاز دارید.
cargo build
cargo run -p mdm-app
برای امتحان تغییرات بدون دست زدن به دانلودهای خودتان، یک پوشه داده جداگانه به برنامه بدهید:
set MDM_DATA_DIR=C:\some\empty\folder
cargo run -p mdm-app
cargo run -p mdm-labserver -- --faults "rate=2M"یک سرور آزمایشی محلی راهاندازی میکند که فایلهای تولید شده را با هر مشکلی که شما درخواست کنید (اتصالات کند، قطعیها، پاسخهای شلوغ، عدم پشتیبانی از محدودهها؛ GET / آنها را لیست میکند) ارائه میدهد، بنابراین دانلودها را میتوان بدون اینترنت آزمایش کرد.
قبل از ارسال یک درخواست پول (pull request)
اینها بررسیهایی هستند که CI اجرا میکند؛ هر کدام روی یک کلون تمیز کار میکند:
cargo fmt --all --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace
python tools/i18n/extract.py # then: git diff --exit-code i18n/en.tsv
node tools/extension/test.mjs
تغییرات را متمرکز نگه دارید و با کدهای اطراف آنها مطابقت دهید. چند قانون در همه جا برقرار است:
- اتاق تمیز. MDM شامل هیچ کد، باینری، اثر هنری، آیکون، صدا یا متنی از Internet Download Manager یا هر مدیر دانلود دیگری نیست. هرگز برنامهای دیگر را دیساسمبل، دیکامپایل یا پچ نکنید و هرگز مجوز هیچ کس را دور نزنید. برای اطلاعات بیشتر به پروژه مهندسی معکوس نیست مراجعه کنید.
- هر متنی که کاربر میبیند از طریق
crate::i18n(t،tc،tn،fmt) میگذرد؛ پس از افزودن یک مورد،python tools/i18n/extract.pyرا اجرا کنید. دادههای داخل یک جمله (نام فایل، آدرس، اندازه) از طریقi18n::ltrیاi18n::isolateوارد میشوند تا در زبانهای راست به چپ به درستی خوانده شوند. - فراخوانیهای فقط Windows در
crates/app/src/win32.rsقرار دارند، معادلهای Linux و macOS آنها درunix.rs؛ بقیه فضای کاری Rust امن و قابل حمل است (unsafe_code = "deny"). در Windows،tools\dev\check-cross.ps1بررسی میکند که همچنان برای Linux و macOS ساخته میشود. - علل را اصلاح کنید، نه موارد را، و تولیدکنندگان و مصرفکنندگان دادههای مشترک (لیست دانلود، پیامهای افزونه مرورگر، کاتالوگها) را هماهنگ نگه دارید.
ترجمهها
رابط کاربری به تمام زبانهایی است که Windows 11 ارائه میدهد. کاتالوگهای موجود در i18n/ با ترجمه ماشینی ساخته شدهاند و هر ردیف با علامت #, machine منتظر یک بومیزبان است:
i18n/<code>.tsvرا باز کنید (کدها درi18n/languages.tsvهستند).- ترجمه را در ستون سوم ردیف اصلاح کنید و خط
#, machineآن را حذف کنید. {placeholders}و&(حرف میانبر صفحه کلید) را همانطور که هستند نگه دارید.
cargo test -p mdm-app every_catalogهر کاتالوگ را بررسی میکند. برای اینکه ببینید آیا متون شما مناسب هستند، MDM_FIT_AUDIT را روی یک فایل تنظیم کنید و اسکرینشاتها را به زبان خود بگیرید (tools\lab\docs-shots.ps1 ... -Lang <code>): هر متنی که از پنجره خود یا روی دیگری رد شود، در آنجا لیست میشود. برای اینکه لیست زبان، نصبکننده و طرحبندی راست به چپ چگونه با هم کار میکنند، به زبانها مراجعه کنید.
وبسایت هم به 20 زبان، از جمله ترجمه ماشینی، موجود است. متون آن در i18n/site/<code>.json، هر سطر یک جمله: "text" یک سطر را اصلاح کنید (تگهایی مانند <g1>…</g1> و <x2/> را همانطور که هستند نگه دارید، آنها لینکها و آیکونها هستند). python tools/website/translate_site.py
--status نشان میدهد که هر زبان هنوز چه کمبودهایی دارد، و همان ابزار با --langs <code> فقط آن را ترجمه میکند.
گزارش مشکلات
از راهنما → گزارش یک مشکل در برنامه استفاده کنید: این فرم گزارش اشکال را با نسخه، سیستم، نحوه نصب MDM و زبان آن پر شده باز میکند. این فرم هنگام باز کردن آن توسط خودتان نیز همین موارد را درخواست میکند. مشکلات امنیتی: به SECURITY.md مراجعه کنید.
درخواستهای پول (pull requests) تحت مجوز پروژه، GNU GPL، نسخه 3 یا بالاتر پذیرفته میشوند.