Repository navigation
feat(tui): add gettext language support with German and Greek - #30
Open
GiorgoLazaridis wants to merge 4 commits into
Open
GiorgoLazaridis wants to merge 4 commits into
GiorgoLazaridis wants to merge 4 commits into
Conversation
added 4 commits
October 29, 2026 22:48
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
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.
Problem
The TUI's controls are English-only. Users need a language choice, and contributors need a standard way to translate complete UI messages without changing action identifiers or account logic.
Change
Add
ui.languagewith English (en, the default), German (de) and Greek (el):The Settings menu also cycles the language. Its label and confirmation explicitly require a dashboard restart; the running application's translator is kept stable.
gettextcatalogs per app, without installing a global_, changing the process locale, or followingLANGUAGEfrom the environment. Missing messages, unavailable/corrupt catalogs and unsupported saved choices fall back to English.gettext("")is catalog metadata). Already translated dialog arguments are not translated a second time..posources, compiled.mofiles and an English.pottemplate. Babel is development-only; there is no new runtime dependency.The commits separate the translator/config foundation, catalog resources, navigation/settings wiring, and the remaining views/dialogs plus documentation. No changelog.
Validation
ab9fa00..po→.moconsistency.y/nretain their original meaning using synthetic accounts only.Weeklywindow ID for threshold lookup while showing the translated label, including translated spend countdowns.Scope and limits
This is TUI localization, not translation of CLI/API output, third-party command output, provider diagnostics, macOS menu-bar text, account data or operating-system date/number conventions. Shortcuts keep their existing keys, including
y/n; Enter on a focused button remains available with other keyboard layouts. Native Windows/macOS UI coverage is left to CI and subsequent user testing.This PR is based directly on v0.43.0, independently of the pending warmup, reset-display and tooltip contributions. The combined local test build is separate; combining pending UI changes may require resolving overlapping rendering/test hunks and refreshing catalogs for newly added messages.
A combined local integration reference includes all four contributions plus catalog/rendering conflict resolutions. It passed 4,686 tests (13 skipped) on Linux/Python 3.13, including German/Greek hover help together with an urgent expiry. This is a test build with a local version suffix, not an additional upstream merge candidate.