सेटअप करना
आपको 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 / उन्हें सूचीबद्ध करता है) के साथ जेनरेट की गई फ़ाइलों को परोसता है, ताकि इंटरनेट के बिना डाउनलोड का परीक्षण किया जा सके।
पुल रिक्वेस्ट खोलने से पहले
ये वे जाँचें हैं जो 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 देखें।
पुल रिक्वेस्ट प्रोजेक्ट के लाइसेंस, GNU GPL, संस्करण 3 या बाद के के तहत स्वीकार किए जाते हैं।