feat(langs): redesign the translations section as a master/detail studio - #16
Merged
Conversation
The Traduzioni page was a flat list of keys with language tabs exposing one column at a time, no inline editing, no indication of what was missing, and a silent 50 row cap whenever the search box was empty. It is now a translation studio: a searchable key list with per key completion rings and a "to translate" filter on the left, and a detail pane on the right with one editable field per language, per language status and live completion. - LangsStore keeps the page state and a buffer of the edits: the completion recomputes while typing, and the saves are debounced per key and serialized, because updateLang rewrites a whole language document from a snapshot and two overlapping calls would drop each other changes. - The key list is virtualized: the union of the dictionaries is several hundred keys and the cap that used to hide them is gone. - The langs dialogs are restyled: "Tutte le lingue" reviews, imports and exports the dictionary of a language, "Nuova traduzione" creates a key and, when wanted, its translations. - The colors follow the app theme through angular-material-css-vars, so the studio also follows the existing dark mode toggle. LangsUpdateDialog, LangsExportDialog, LangsFilterPipe, AsStringPipe and ObjectLengthPipe are dropped: inline editing and the new dialogs replace them. Adding and deleting a language are no longer reachable from the UI: the new "Tutte le lingue" dialog does not expose them. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…he list selected$ resolved the selection as "the first visible row" on every emission, so completing the selected key dropped it out of the "to translate" filter and moved the detail pane while the user was still typing in it: the keystrokes that followed were saved on whatever key took its place. The first visible key is now selected outright, and picked again only when the filter changes - an explicit selection is left alone.
sara-gnucoop
self-requested a review
September 3, 2026 13:50
sara-gnucoop
approved these changes
Sep 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The Traduzioni page was a flat list of keys with language tabs exposing one column at a time, no inline editing, no indication of what was missing, and a silent 50 row cap whenever the search box was empty.
It is now a translation studio: a searchable key list with per key completion rings and a "to translate" filter on the left, and a detail pane on the right with one editable field per language, per language status and live completion.
LangsUpdateDialog, LangsExportDialog, LangsFilterPipe, AsStringPipe and ObjectLengthPipe are dropped: inline editing and the new dialogs replace them.
Adding and deleting a language are no longer reachable from the UI: the new "Tutte le lingue" dialog does not expose them.