fix: translate remaining untranslated UI strings (empty states, Kanban) - #2432
Open
palamars wants to merge 4 commits into
Open
fix: translate remaining untranslated UI strings (empty states, Kanban)#2432palamars wants to merge 4 commits into
palamars wants to merge 4 commits into
Conversation
Fixes empty-state titles/descriptions passed as static props to EmptyState.vue not being translated (Activities, Notifications, SLA policies, lead sync sources, email templates, assignment rules), plus IconPicker's search placeholder/Random button, the assignment rule routing option labels, and the email signature editor placeholder.
Kanban board column names (deal/lead statuses) and the field labels in Kanban Settings (Column Field / Title Field / Fields Order) were rendered from raw field metadata without __(), so they stayed in English even though the same statuses/field labels are translated elsewhere in the app.
…ed-value display AssigneeRules.vue's routing-option dropdown has two render sites for option.label - the currently-selected value display (already fixed) and the list items in the open dropdown (missed). Caught by greptile-apps review on the original PR.
Contributor
|
Tick the box to add this pull request to the merge queue (same as
|
Contributor
Confidence Score: 5/5All changes are additive Every change is a mechanical No files require special attention. Reviews (2): Last reviewed commit: "fix: explicit '' fallback before __() wh..." | Re-trigger Greptile |
palamars
added a commit
to palamars/crm
that referenced
this pull request
Jul 9, 2026
- parseBgColor(): the !bg-* tint uses !important, which permanently overrode hover:bg-surface-gray-2 even during hover - not just for a rare no-color edge case as the first fix assumed, but for every column with a color (i.e. almost always, since columns get an auto-assigned color by default). Fixed by giving every branch its own hover:!bg-* variant instead of relying on a separate non-important class that could never win against !important. - AssigneeRules.vue: explicit '' fallback before __() when .find() returns no match, for clarity (was already safe - __(undefined) returns undefined without throwing - just not obviously so). Both caught by greptile-apps on the re-opened frappe#2432/frappe#2433.
…finds no match Was already safe (__(undefined) returns undefined without throwing) but greptile-apps flagged the intent as unclear. Caught on the re-opened PR.
Contributor
|
@palamars this pull request has merge conflicts. Please resolve them so it can be reviewed and merged. |
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.
Summary
EmptyState.vue'scomputedTitle/computedDescriptionreturned an explicitly-passedtitle/descriptionprop raw, without__()— only thename-based fallback text was translated. This silently broke translation for every call site that passes an explicittitle/descriptioninstead of relying on thenamefallback (Activities empty states, Notifications, SLA Policies, Lead Sources, Email Templates, Assignment Rules). Fixed by wrapping both props in__().IconPicker.vue: search placeholder and "Random" button text were unwrapped literals.AssignmentRules/AssigneeRules.vue: the routing-option dropdown (option.label) was rendered raw in two places — the "currently selected" display and the list items in the open dropdown.Settings/Profile/UserEmailSettings.vue: email signature editor placeholder was unwrapped.Kanban/KanbanView.vue: column headers (column.column.name, i.e. the lead/deal status name) were rendered raw — fixes Kanban column headers not translated (missing __() in KanbanView.vue) #2428.Kanban/KanbanSettings.vue: the Kanban Settings dialog (Column Field / Title Field / Fields Order / Add Field) rendered raw DocType field labels straight from field metadata, never through__().All fixes are the same shape: wrap an existing value in
__(); no behavior change for English, no new strings introduced. Verified against a live ru/uk-localized deployment — Kanban columns, Kanban Settings dialog, and the empty-state messages listed above all rendered as English before this fix and localized correctly after.(Re-opened against
develop— the original PR targetedmainand was auto-closed by Mergify. Also folds in a fix for a secondAssigneeRules.vueoccurrence caught by the greptile-apps review on that PR.)Test plan
__()(either passed as a statictitle/descriptionprop toEmptyState.vue, or interpolated raw in a template)__()wrappingFixes #2428