fix(i18n): wrap the remaining user-facing strings - #746
Merged
surajshetty3416 merged 1 commit intoAug 14, 2026
Conversation
The editor sweep did not walk every surface, so prose stayed in English regardless of the user's language: the route tree, the template gallery, the onboarding survey, the command palette, the design token manager, domains, redirects, users, the small-screen notice, and a number of stores and utils. Wraps those strings and converts every interpolated message into a stable placeholder source, so translators receive whole sentences rather than fragments. Counted messages now select a singular or plural string instead of rendering "token(s)", and the CSV import confirmation no longer joins translated fragments into another translated sentence. Left alone on purpose: - the permission messages passed to has_page_write and has_page_read. A decorator argument is evaluated at import time, so wrapping it there would resolve the translation before a user session exists. Translating inside the decorator instead is a contract change worth deciding on its own. - the visibility-condition description, which carries markup. - gradient and page preset names. They read as proper nouns, and the whole preset object is emitted to callers, so translating the name would change what consumers receive. - the AI surfaces, since frappe#671 is rewriting them. Lookup keys, persisted values and comparison sentinels stay raw: Mixed, UNGROUPED_LABEL, the breakpoint device values, the numeric font weights and the command palette group keys.
Contributor
Confidence Score: 5/5The PR appears safe to merge with no actionable defects identified. Translation calls preserve existing behavior, interpolation contracts, and stable non-display values. Reviews (1): Last reviewed commit: "fix(i18n): wrap the remaining user-facin..." | Re-trigger Greptile |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #746 +/- ##
===========================================
- Coverage 66.05% 66.04% -0.02%
===========================================
Files 37 37
Lines 4982 4983 +1
===========================================
Hits 3291 3291
- Misses 1691 1692 +1 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
surajshetty3416
approved these changes
Aug 14, 2026
This was referenced Aug 16, 2026
Merged
|
🎉 This PR is included in version 1.33.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
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.
Follow-up to #721. That sweep covered most of the editor, so after it merged I walked the rest of the app to see what still renders in English regardless of the user's language.
What this covers
Translator-facing changes
Every interpolated message became a stable placeholder source. Counted messages now select a singular or plural string instead of rendering
token(s), and the CSV import confirmation no longer joins translated fragments into another translated sentence. German and other inflected languages cannot express those forms.Deliberately not included
has_page_write/has_page_read. A decorator argument is evaluated at import time, so_()there would resolve the translation before a user session exists. Translating inside the decorator would work, but it changes the decorator's contract, so it seemed better to raise it than to slip it in here.namewould change what consumers receive.Lookup keys and sentinels stay raw:
Mixed,UNGROUPED_LABEL, the breakpointdevicevalues, the numeric font weights, and the command palettegroupkeys.Overlap with open PRs
Some of these files are also touched by open drafts: #733, #671 and #702. Everything here is a one-line wrap, so conflicts should be mechanical, but flagging it since #715 and #721 collided the same way. Happy to rebase whenever it suits.
Checks
Vue templates and TypeScript compile clean locally for all 37 changed frontend files, and
domain.pyparses. POT extraction and the suites run in CI.