Skip update and bump status when the locale file is identical
on weblate/master and HEAD. Also bump status when all pending
commits are already in master.
- pl: duration was "Kierunek" (Direction), fixed to "Czas trwania"
- pl: no_dump/no_dump_info said "pausing" instead of "dumping"
- ta: geolocation was "உலகம் நீக்கம்" (world removal), fixed to "புவிஇருப்பிடம்"
- ta: errno_ehostunreach used garbled "ஓச்டு" for host, fixed to "புரவலன்"
- ta: all port strings used "துறைமுகம்" (seaport/harbor), fixed to "போர்ட்"
- de: tls_conn_info had English "user" in "user Anleitung", fixed to "Benutzeranleitung"
- es: geo_db_not_found had wrong gender "deshabilitado", fixed to "deshabilitada"
- de: malware_status_detected had inverted meaning (said "no malicious
connections" instead of "malicious connections detected"), get_app used
inappropriate slang "Kapiert:"
- ta: all 6 unblock-related strings were translated as "block" (opposite)
- ar: paid_features_unlocked said "locked" instead of "unlocked",
network_interface said "user interface" instead of "network interface"
- pt-BR: no_data/tcp_collector_info/tcp_exporter contained translator
notes instead of actual translations
- ko: pcap_file said "PCAP pharming" instead of "PCAP file" (typo)
Cherry-picks translation commits from the weblate remote, squashing
consecutive commits by the same author. Uses 3-way merge to preserve
master-only changes. Tracks last processed commit per locale in
tools/weblate_status.
On Android <= 12, the in-app language selector was hardcoded to only
offer "System default" and "English". Parse locales_config.xml at
runtime to populate the dropdown with all supported languages, showing
each language in its native display name.
Closes#510
dumpHttpLog() and dumpCsv() ran file I/O on the UI thread, risking
ANR for large exports. Rewrite both to match the exportHttpLogHar()
pattern: snapshot data on the UI thread, then run the write loop on
a background ExecutorService with a cancellable progress dialog.
Also fix dumpCsv() using getBytes() without explicit charset.
Allow specifying domain names (not just IP addresses) as the
redirect host in port mapping rules. Domains are resolved via
the underlying network in CaptureService.resolveHosts() before
the packet loop starts. If resolution fails, capture is aborted.
Closes#807
Host resolution was performed in CaptureHelper before starting the
service, but this was skipped for always-on VPN (system starts the
service directly) and BootReceiver (starts service without CaptureHelper).
Resolve the SOCKS5 proxy hostname in the capture thread using the
underlying (non-VPN) network saved before VPN establishment. This
covers all startup paths and also re-enables hostname support for
the intent-based API (disabled in 6ca1073 to work around a UI glitch
that no longer applies since resolution is now async in the service).