Configuração
Você precisa do Windows 10 ou 11 e do Rust stable 1.95 ou posterior (a toolchain MSVC).
cargo build
cargo run -p mdm-app
Para testar as alterações sem afetar seus próprios downloads, dê ao aplicativo uma pasta de dados separada:
set MDM_DATA_DIR=C:\some\empty\folder
cargo run -p mdm-app
cargo run -p mdm-labserver -- --faults "rate=2M"inicia um servidor de teste local que serve arquivos gerados com qualquer problema que você solicitar (conexões lentas, cortes, respostas ocupadas, sem intervalos; GET / os lista), para que os downloads possam ser testados sem a internet.
Antes de abrir um pull request
Estas são as verificações que o CI executa; cada uma funciona em um clone limpo:
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
Mantenha as alterações focadas e alinhadas com o código ao redor. Algumas regras valem em todos os lugares:
- Ambiente limpo. O MDM não contém código, binários, arte, ícones, sons ou texto do Internet Download Manager ou de qualquer outro gerenciador de downloads. Nunca desmonte, descompile ou corrija outro programa, e nunca ignore o licenciamento de ninguém. Consulte Não é um projeto de engenharia reversa.
- Todo texto que o usuário vê passa por
crate::i18n(t,tc,tn,fmt); depois de adicionar um, executepython tools/i18n/extract.py. Dados dentro de uma frase (um nome de arquivo, um endereço, um tamanho) entram pori18n::ltroui18n::isolate, para que sejam lidos corretamente em idiomas da direita para a esquerda. - Chamadas somente para Windows ficam em
crates/app/src/win32.rs, suas contrapartes para Linux e macOS emunix.rs; o resto do espaço de trabalho é Rust seguro e portátil (unsafe_code = "deny"). No Windows,tools\dev\check-cross.ps1verifica se ainda é compilado para Linux e macOS. - Corrija as causas, não os casos, e mantenha produtores e consumidores de dados compartilhados (a lista de downloads, as mensagens da extensão do navegador, os catálogos) em sincronia.
Traduções
A interface está em todos os idiomas que o Windows 11 oferece. Os catálogos em i18n/ foram feitos por tradução automática, e cada linha marcada #, machine aguarda um falante nativo:
- Abra
i18n/<code>.tsv(os códigos estão emi18n/languages.tsv). - Corrija a tradução na terceira coluna da linha e exclua sua linha
#, machine. - Mantenha
{placeholders}e o&(a letra do atalho de teclado) como estão.
cargo test -p mdm-app every_catalogverifica cada catálogo. Para ver se seus textos se encaixam, defina MDM_FIT_AUDIT para um arquivo e tire as capturas de tela em seu idioma (tools\lab\docs-shots.ps1 ... -Lang <code>): todo texto que ultrapassa sua janela ou sobrepõe outro é listado lá. Consulte Idiomas para saber como a lista de idiomas, o instalador e o layout da direita para a esquerda se encaixam.
O site também está em 20 idiomas, igualmente traduzido por máquina. Seus textos estão em i18n/site/<code>.json, uma linha por frase: corrija o "text" de uma linha (mantenha as tags como <g1>…</g1> e <x2/> como estão, elas são os links e ícones). python tools/website/translate_site.py
--status mostra o que ainda falta em cada idioma, e a mesma ferramenta com --langs <code> traduz apenas isso.
Relatar problemas
Use Ajuda → Relatar um problema no aplicativo: ele abre o formulário de relatório de bug com sua versão, sistema, como o MDM foi instalado e seu idioma preenchidos. O formulário pede o mesmo quando você o abre por conta própria. Problemas de segurança: consulte SECURITY.md.
Pull requests são aceitos sob a licença do projeto, a GNU GPL, versão 3 ou posterior.