Skip to content

chore(l10n): translate Tor connection guidance - #2586

Merged
ethicnology merged 1 commit into
developfrom
chore/tor-translations
Aug 18, 2026
Merged

chore(l10n): translate Tor connection guidance#2586
ethicnology merged 1 commit into
developfrom
chore/tor-translations

Conversation

@ethicnology

Copy link
Copy Markdown
Member

Stacked on the feat/tor-recoverbull-status-ui PR. Review that one first.

The Tor work in this stack added its keys to the app_en.arb template only, so 26 otherwise-complete locales fell back to English on the Tor settings and RecoverBull connecting screens — the two screens a censored user is most likely to be reading, and the least useful ones to serve in a language they may not speak.

All the new keys are now present in every locale. Applied with tools/arb.dart rather than by hand, so untouched keys stay byte-for-byte identical and the diff is limited to the added entries.

Two things a reviewer should know:

  • These translations have not been reviewed by native speakers. They are better than an English fallback, not final. Worth a pass before release.
  • Hinglish deliberately keeps the English terms for "Embedded Tor", "Automatic", "Direct" and "Active transport", which audit-identical will flag as expected rather than as a miss.

Placeholders survive in all locales — audit-placeholders reports no mismatch.

@ethicnology ethicnology self-assigned this Aug 10, 2026
@claude

claude Bot commented Aug 10, 2026

Copy link
Copy Markdown

Claude finished @ethicnology's task in 6m 19s —— View job


Review: Tor translation keys across 26 locales

  • Gather context and diff against feat/tor-recoverbull-status-ui
  • Validate ARB files (JSON validity, key coverage, placeholder consistency)
  • Spot-check translations for correctness issues
  • Post review summary

Note: I can't submit formal inline review comments, so findings are listed here with file/line references.

Summary

The mechanical claims in the PR description hold up. No correctness, security, or regression blockers — a few worthwhile observations below, the first of which questions whether one of the translated keys should exist at all.

Verified (all pass):

  • All 27 .arb files parse as valid JSON.
  • All 21 new keys are present in every locale (567 occurrences = 21 × 27, exact).
  • {percent} in torSettingsBootstrapProgress and {transport} in torSettingsActiveTransport survive intact in all 27 locales — no renamed, dropped, or corrupted placeholders.
  • Each locale diff is exactly the 21 new keys + the torSettingsInfoDescription update + a trailing-comma line; untouched keys are byte-identical as claimed.
  • Spot-checked ~15 locales (including RTL ar/fa and CJK/Thai): each is in the correct language and faithfully conveys the English meaning. No English leakage outside the disclosed Hinglish exceptions.
  • No bidi override/embedding control characters (U+202A–U+202E, U+2066–U+2069) smuggled into the RTL files.

Findings

1. torSettingsInfoDescription appears to be dead code on this stack — 27 files translate a string that's never shown.
The key is referenced on origin/main (tor_proxy_widget.dart), but on feat/tor-recoverbull-status-ui and this branch nothing in lib/ or test/ references torSettingsInfoTitle/torSettingsInfoDescription — the rewritten proxy widget uses torSettingsExternalProxy* instead. If that's intentional, the reworded English at localization/app_en.arb:12308 plus its 26 fresh translations should probably be deleted rather than updated. If the info card is meant to survive, ignore this. Fix this →

2. The new English text of that key is ambiguous about RecoverBull, and the ambiguity propagates into all 26 translations.
Bullet 2 — "Orbot, when enabled, replaces embedded Tor for those .onion servers" — follows a bullet naming both RecoverBull and Electrum, so it reads as Orbot also taking over RecoverBull. The code says otherwise: RecoverBull has no Orbot/external-proxy path (lib/core/recoverbull, lib/features/recoverbull contain zero references), and both the live torSettingsExternalProxyDescription and this key's own new @description ("this Orbot setting applies only to Bitcoin Electrum .onion servers") scope Orbot to Electrum. Several translations harden the ambiguity into a claim (e.g. Korean at localization/app_ko.arb:1899: "해당 .onion 서버에서 내장 Tor 대신 Orbot이 사용됩니다"). Moot if the key is deleted per finding 1; otherwise worth rewording bullet 2 to name Electrum explicitly.

3. Register inconsistency in French and German (minor, translation quality).

  • localization/app_fr.arb:5009-5010recoverbullTorClockSkewed and recoverbullTorCantStart use tu ("Vérifie tes réglages", "Réessaie") in a file with ~310 vous-register strings; the other new keys in this same PR use vous.
  • localization/app_de.arb:4925-4926 — same two keys use du ("deines Geräts", "Überprüfe", "versuche") in a file where Sie dominates (~730 occurrences).

The PR already flags translations as pending native-speaker review, but these two keys are the concrete instances to catch in that pass.

4. Cosmetic, French only: torSettingsDescCensored (localization/app_fr.arb:5004) uses a curly apostrophe (’) where the file convention is straight ('), and torSettingsBootstrapProgress puts a regular breaking space before % ("{percent} %"), so the lone % can wrap to the next line — a narrow no-break space (U+202F) would match French typography.

I couldn't run tools/arb.dart audits directly (no Dart SDK in this environment), but the checks above replicate the placeholder and key-coverage audits with jq/grep.

@ethicnology
ethicnology force-pushed the chore/tor-translations branch from 49bb155 to e559a56 Compare August 10, 2026 20:10
@ethicnology
ethicnology force-pushed the chore/tor-translations branch 2 times, most recently from e2049ca to 9e0ebb2 Compare August 10, 2026 21:46
@ethicnology
ethicnology force-pushed the chore/tor-translations branch from 9e0ebb2 to ce5819b Compare August 11, 2026 00:52
@ethicnology
ethicnology force-pushed the chore/tor-translations branch from ce5819b to 76b2f14 Compare August 11, 2026 01:59
@ethicnology
ethicnology force-pushed the chore/tor-translations branch 2 times, most recently from 6020cd5 to 76bf06a Compare August 17, 2026 17:08
@ethicnology
ethicnology force-pushed the chore/tor-translations branch from 76bf06a to c747d8a Compare August 17, 2026 18:28
@ethicnology
ethicnology force-pushed the chore/tor-translations branch from c747d8a to 073e74b Compare August 18, 2026 15:05
@ethicnology
ethicnology force-pushed the chore/tor-translations branch from 073e74b to 75417c1 Compare August 18, 2026 15:07
@ethicnology
ethicnology force-pushed the chore/tor-translations branch from 75417c1 to a5bafe0 Compare August 18, 2026 15:36
@ethicnology
ethicnology force-pushed the chore/tor-translations branch from a5bafe0 to 56388c7 Compare August 18, 2026 15:37
@ethicnology
ethicnology force-pushed the chore/tor-translations branch from 56388c7 to 285197f Compare August 18, 2026 19:44
Base automatically changed from feat/tor-recoverbull-status-ui to develop August 18, 2026 19:44
@ethicnology
ethicnology force-pushed the chore/tor-translations branch from 285197f to e7d023e Compare August 18, 2026 19:44
@ethicnology
ethicnology merged commit b88707e into develop Aug 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant