Comfy-Org / Comfy-Org/ComfyUI_frontend

~210+ user-facing UI strings are hardcoded in English instead of using vue-i18n t()

Open
#12,914 3 comments 2 reactions 0 assignees View on GitHub
area:i18n
Dominant language
TypeScript
Stars
2k
Forks
699
Avg merge
1d 7h
Merged PRs (30d)
490

Description

## Prerequisites
- [x] I am running the latest version of ComfyUI (frontend v1.45.15)

## What happened?
The project's CONTRIBUTING.md explicitly states "All user-facing strings must use vue-i18n". However, I found **~210+ UI strings** across multiple source files that are hardcoded in English instead of using `t()` / `st()` from `vue-i18n`. These strings never get translated when switching locales despite the i18n files being nearly complete (99.98%, ~8,100+ keys).

## Files with hardcoded strings (missing `t()` usage)

### 1. Menu and command labels (~105 strings, most severe)
**`src/composables/useCoreCommands.ts`**

Almost every command's `label` and `menubarLabel` property is a raw English string. These labels appear in the menubar dropdown, keyboard shortcuts dialog, and shortcuts help panel.

Examples: "New Blank Workflow", "Open Workflow", "Save Workflow", "Save Workflow As", "Export Workflow", "Undo", "Redo", "Clear Workflow", "Reset View", "Zoom In", "Zoom Out", "Queue Prompt", "Queue Prompt (Front)", "Mute/Unmute Selected Nodes", "Bypass/Unbypass Selected Nodes", "Pin/Unpin Selected Nodes", "Group Selected Nodes", "Toggle Theme (Dark/Light)", "Manager", "Help Center", "Sign Out", "Copy", "Paste", "Select All", "Delete Selected Items", "Custom Nodes Manager", ~80 more similar.

Only 3 commands use `label: () => t('...')` correctly (e.g., `Comfy.Queue.ToggleOverlay`).

### 2. Legacy UI buttons and labels (~30 strings)
**`src/scripts/ui.ts`**

All button labels are set via `textContent` with raw strings, no i18n import: "Cancel", "Delete", "Load", "Close", "Refresh", "Queue Prompt", "Queue Front", "View Queue", "View History", "Batch count", "Auto Queue", "Save", "Save (API Format)", "Clear", "Load Default", "Reset View", "Clipspace", "Queue size:"

### 3. Core extension files (~45 strings)

| File | Examples |
|---|---|
| `src/extensions/core/clipspace.ts` | "Close", "Select Image", "Clipspace is Empty!" |
| `src/extensions/core/groupNodeManage.ts` | "Visible", "Group Nodes", "Save", "Delete Group Node" |
| `src/extensions/core/groupNode.ts` | Alert and confirm dialog messages |
| `src/extensions/core/nodeTemplates.ts` | "Close", "Export", "Import", "Delete", "Manage", "Node Templates" |
| `src/extensions/core/rerouteNode.ts` | "Hide Type", "Show Type" |
| `src/extensions/core/webcamCapture.ts` | "waiting for camera...", error messages |
| `src/extensions/core/electronAdapter.ts` | "Reinstall", "Restart", "Quit" |
| `src/extensions/core/maskeditor.ts` | "Open Mask Editor for Selected Node" |
| `src/extensions/core/load3d.ts` | "upload 3d model", "clear" |

### 4. Vue components with hardcoded labels (~17 files)
Files like `UserSelectView.vue`, various widget/thumbnail components contain hardcoded labels, alt text, and placeholder text.

### 5. Other files (~20 strings)
`src/scripts/app.ts`, `src/utils/runtimeErrorMatcher.ts`, `src/schemas/workflowSchema.ts`, `src/platform/assets/services/assetService.ts` contain hardcoded error messages and validation strings.

## Steps to Reproduce
1. Set ComfyUI locale to any non-English language (e.g. 中文, 日本語, Русский)
2. Open the menubar (ComfyUI logo dropdown in top-left) - observe English-only labels
3. Open Settings > Keybindings - observe English-only command labels
4. Use legacy UI buttons (Queue, Save, Load etc.) - observe English-only text
5. Open extension management dialogs - observe English-only text

## How is this affecting you?
Minor inconvenience - the i18n infrastructure and translation files are comprehensive (~8,100+ keys, 99.98% complete), but ~210+ source-level strings bypass the system entirely, leaving many UI elements untranslated for non-English users.

## ComfyUI Frontend Version
1.45.15

## Browser
Chrome/Chromium

Contributor guide

Open the contributing guide

Research direction

Start with CONTRIBUTING.md and reproduce the untranslated labels using a non-English locale. Audit the named entry points, including src/composables/useCoreCommands.ts, src/scripts/ui.ts, the core extension files, Vue components, and other listed files. Done means the identified user-facing strings use the existing vue-i18n t()/st() approach and the affected menus, dialogs, buttons, and validation messages are translated.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
frontend, internationalization
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.