The type-to-confirm dialog guarding destructive operations renders in English regardless of the selected locale. A Korean or Chinese user gets Tama warning them in their own language over a fully English modal.
Where
armDanger in src/legacy/main.ts:2403 composes its text from string literals rather than t() keys:
typeLabel.textContent = "Type the " + (ctx.typeNoun || "branch name") + " ";
...
typeLabel.appendChild(document.createTextNode(" to " + (ctx.typeVerb || "arm the rewrite") + ":"));
$("#dangerGo").textContent = ctx.confirmLabel || "Confirm";
Because the shared arm line is built here, all ten call sites are affected — including resethead and forcepush, which otherwise use t() correctly.
Six of those call sites in src/islands/sidebar/sidebar.svelte.ts (around :1973) pass zero translated fields. Title, description, the "What happens" list, the backup note and the confirm button are all hardcoded: deinit submodule, remove submodule, force switch, delete branch, reset to upstream, delete tag.
filterrepo.danger_type_label already exists in en, zh and ko, and nothing references it.
Fix
Key-ify the shared arm line, then pass translated fields from each call site. Use placeholders for the noun and verb rather than concatenation — "Type the" + noun + "to" + verb does not survive translation into Korean or Chinese word order.
Note
This predates Korean; Chinese users have had it since v1.1.
Good first issue
Well-bounded, an unused translation key already exists to build on, and it visibly improves the experience for every non-English user.
Found during v1.3.0 research: parallel codebase surveys, then each finding independently verified against the code before filing. Line numbers are from dev at the time of writing.
The type-to-confirm dialog guarding destructive operations renders in English regardless of the selected locale. A Korean or Chinese user gets Tama warning them in their own language over a fully English modal.
Where
armDangerinsrc/legacy/main.ts:2403composes its text from string literals rather thant()keys:Because the shared arm line is built here, all ten call sites are affected — including
resetheadandforcepush, which otherwise uset()correctly.Six of those call sites in
src/islands/sidebar/sidebar.svelte.ts(around:1973) pass zero translated fields. Title, description, the "What happens" list, the backup note and the confirm button are all hardcoded: deinit submodule, remove submodule, force switch, delete branch, reset to upstream, delete tag.filterrepo.danger_type_labelalready exists inen,zhandko, and nothing references it.Fix
Key-ify the shared arm line, then pass translated fields from each call site. Use placeholders for the noun and verb rather than concatenation — "Type the" + noun + "to" + verb does not survive translation into Korean or Chinese word order.
Note
This predates Korean; Chinese users have had it since v1.1.
Good first issue
Well-bounded, an unused translation key already exists to build on, and it visibly improves the experience for every non-English user.
Found during v1.3.0 research: parallel codebase surveys, then each finding independently verified against the code before filing. Line numbers are from
devat the time of writing.