Начало работы
Вам нужны 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"). В Windowstools\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 или новее.