Skip to content

fix(i18n): replace placeholder strings with real translations across 9 locales#259

Merged
walterlow merged 1 commit into
stagingfrom
fix/i18n-placeholders
May 25, 2026
Merged

fix(i18n): replace placeholder strings with real translations across 9 locales#259
walterlow merged 1 commit into
stagingfrom
fix/i18n-placeholders

Conversation

@walterlow
Copy link
Copy Markdown
Owner

Summary

  • Replaces machine-generated placeholder strings (e.g. \"Title Settings\", \"Frames Label\", \"Toast No Removable\") with real user-facing copy.
  • Adds the missing export.videoContainer.{mp4,mov,webm,mkv} keys that were surfacing as raw i18n keys in the export dialog.
  • Translates everything across all 9 supported locales: en, es, fr, de, pt-BR, tr, ja, ko, zh.
  • Tooltips on timeline-header and preview-controls now mirror their aria-label (the standard hover-text pattern).

Scope covers: export dialog (settings/progress/complete/error/cancelled states + format descriptions), reverse-conform dialog, timeline header toolbar, filler/silence removal panels, keyframe editor, effects panel, preview controls/monitor/zoom/stage/player/align, media library/card/info/picker/grid/transcribe/embedded-subtitles/orphaned-clips/unsupported-codec.

Single-file change: src/i18n/locales/partials/missing.json (+2143 / -2089).

Test plan

  • Open the export dialog — settings header, format descriptions under MP4/MOV/WebM/MKV, progress labels, complete/error/cancelled states all read naturally.
  • Trigger reverse playback on a clip — dialog titles/descriptions/toasts are sentences, not key fragments.
  • Hover toolbar buttons (timeline header, playback controls) — tooltips match their aria-labels.
  • Switch to es / fr / de / pt-BR / tr / ja / ko / zh and re-verify the above — no raw English fallback in the user-facing strings touched by this PR.
  • Spot-check filler-word removal and silence removal panels (toast wording on apply / no-results / preview-failed).

…ocales

Sweeps missing.json placeholders: export dialog (titles/descriptions/progress
labels/format descriptions), reverse-conform dialog, timeline header tooltips,
filler/silence removal toasts, keyframe editor, effects panel, media library,
preview controls/monitor/zoom. Adds missing export.videoContainer.* keys that
were previously surfacing as raw i18n keys. Translates all newly-fixed strings
across es, fr, de, pt-BR, tr, ja, ko, zh.
@vercel
Copy link
Copy Markdown

vercel Bot commented May 25, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
freecut Ready Ready Preview, Comment May 25, 2026 1:54pm

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 25, 2026

Important

Review skipped

Review was skipped as selected files did not have any reviewable changes.

💤 Files selected but had no reviewable changes (1)
  • src/i18n/locales/partials/missing.json
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 21330cfc-6903-4bf1-b32d-016b010cc9bb

📥 Commits

Reviewing files that changed from the base of the PR and between 6783ddc and 2e25543.

📒 Files selected for processing (1)
  • src/i18n/locales/partials/missing.json

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/i18n-placeholders

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@walterlow walterlow merged commit eaf4160 into staging May 25, 2026
6 checks passed
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented May 25, 2026

Greptile Summary

This PR replaces machine-generated placeholder strings (e.g., "Title Settings", "Frames Label", "Toast No Removable") with real user-facing copy and adds missing export.videoContainer keys across all 9 supported locales.

  • All non-English locales (es, fr, de, pt-BR, tr, ja, ko, zh) received thorough translations for export, media, timeline, preview, and effects sections; the JSON remains structurally valid.
  • The en locale was partially updated but still has ~15 placeholder strings in media.embeddedSubtitles, media.picker.descAll, media.subtitleScan, media.transcribe.progressAria, and timeline.addAudioTrackHint/addVideoTrackHint — identical patterns to the keys the PR is meant to fix.

Confidence Score: 3/5

The en locale is the canonical fallback; several sections the PR claims to fix still render raw key-fragment strings for English-speaking users.

The en locale still contains ~15 untranslated placeholder values in the embedded-subtitles panel, media picker, subtitle scan dialog, transcription progress, and timeline track hints. Any English-language user opening those UI surfaces will see strings like 'Cues Count', 'Description All', 'Progress ARIA', and 'Add Video Track Hint' instead of natural copy.

src/i18n/locales/partials/missing.json needs a pass over the en locale block (roughly lines 1-730) to fill in the keys that were translated for every other locale but left as placeholders for English.

Important Files Changed

Filename Overview
src/i18n/locales/partials/missing.json Replaces placeholder i18n strings with real copy across 9 locales, but the en locale still contains ~15 unreplaced placeholders in media.embeddedSubtitles, media.picker, media.subtitleScan, media.transcribe, and timeline that other locales had properly translated.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[missing.json] --> B{Locale}
    B --> EN[en]
    B --> ES[es]
    B --> FR[fr]
    B --> DE[de]
    B --> PTBR[pt-BR]
    B --> TR[tr]
    B --> JA[ja]
    B --> KO[ko]
    B --> ZH[zh]
    EN --> EN1[checkmark export / effects / timeline.header / preview.controls]
    EN --> EN2[cross media.embeddedSubtitles cuesCount / desc / trackInfo etc.]
    EN --> EN3[cross media.picker.descAll / subtitleScan / transcribe.progressAria]
    EN --> EN4[cross timeline.addAudioTrackHint / addVideoTrackHint]
    ES --> ES1[checkmark All sections translated]
    FR --> FR1[checkmark All sections translated]
    DE --> DE1[checkmark All sections translated]
    PTBR --> PTBR1[checkmark Most sections translated]
    TR --> TR1[checkmark All sections translated]
    JA --> JA1[checkmark All sections translated]
    KO --> KO1[checkmark All sections translated]
    ZH --> ZH1[checkmark All sections translated]
Loading

Fix All in Claude Code Fix All in Codex

Prompt To Fix All With AI
Fix the following 3 code review issues. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 3
src/i18n/locales/partials/missing.json:200-213
**Placeholder strings still present in `en` locale — `media.embeddedSubtitles`**

The `en` locale's `media.embeddedSubtitles` block still contains machine-generated placeholder values that were not replaced in this PR, while the equivalent keys were fully translated in `es`, `fr`, `de`, `ja`, `ko`, `zh` (e.g., `es``"cuesCount": "{{count}} líneas"`, `"desc": "Selecciona una pista de subtítulos…"`, `"trackInfo": "Pista {{n}} · {{lang}} · {{codec}}"`). The unchanged `en` keys include `cuesCount`, `desc`, `descForFile`, `empty`, `insert`, `insertWithCues`, `loadedFromCache`, `scanning`, and `trackInfo` — any user running in English will see these raw key-fragment strings in the embedded-subtitles panel.

### Issue 2 of 3
src/i18n/locales/partials/missing.json:350-372
**Additional `en` locale placeholder strings missed in `media` section**

Several more keys in the `en` locale block were not updated while every other locale received real copy: `media.picker.descAll` is still `"Description All"` (line 351), `media.subtitleScan.descComplete` is `"Description Complete"` (line 360), `media.subtitleScan.descScanning` is `"Description Scanning"` (line 361), and `media.transcribe.progressAria` is `"Progress ARIA"` (line 372). The Spanish equivalents, for example, are `"Elige un archivo de la biblioteca del proyecto."`, `"Búsqueda de subtítulos completada."`, `"Buscando subtítulos en tus medios…"`, and `"Progreso de la transcripción"` respectively.

### Issue 3 of 3
src/i18n/locales/partials/missing.json:455-457
**`en` locale `timeline.addAudioTrackHint` and `timeline.addVideoTrackHint` still placeholders**

Both `"addAudioTrackHint": "Add Audio Track Hint"` and `"addVideoTrackHint": "Add Video Track Hint"` are unchanged title-cased placeholder fragments in the `en` locale. Other locales have either kept similar machine-generated forms or translated them properly. Since these hint strings appear in the timeline header, English-speaking users will see raw key-fragment text as UI copy.

Reviews (1): Last reviewed commit: "fix(i18n): replace placeholders with rea..." | Re-trigger Greptile

Comment on lines 200 to 213
@@ -203,14 +209,14 @@
"insertWithCues": "Insert With Cues",
"loadedFromCache": "Loaded From Cache",
"scanning": "Scanning",
"title": "Title",
"title": "Embedded subtitles",
"trackInfo": "Track Info"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Placeholder strings still present in en locale — media.embeddedSubtitles

The en locale's media.embeddedSubtitles block still contains machine-generated placeholder values that were not replaced in this PR, while the equivalent keys were fully translated in es, fr, de, ja, ko, zh (e.g., es"cuesCount": "{{count}} líneas", "desc": "Selecciona una pista de subtítulos…", "trackInfo": "Pista {{n}} · {{lang}} · {{codec}}"). The unchanged en keys include cuesCount, desc, descForFile, empty, insert, insertWithCues, loadedFromCache, scanning, and trackInfo — any user running in English will see these raw key-fragment strings in the embedded-subtitles panel.

Prompt To Fix With AI
This is a comment left during a code review.
Path: src/i18n/locales/partials/missing.json
Line: 200-213

Comment:
**Placeholder strings still present in `en` locale — `media.embeddedSubtitles`**

The `en` locale's `media.embeddedSubtitles` block still contains machine-generated placeholder values that were not replaced in this PR, while the equivalent keys were fully translated in `es`, `fr`, `de`, `ja`, `ko`, `zh` (e.g., `es``"cuesCount": "{{count}} líneas"`, `"desc": "Selecciona una pista de subtítulos…"`, `"trackInfo": "Pista {{n}} · {{lang}} · {{codec}}"`). The unchanged `en` keys include `cuesCount`, `desc`, `descForFile`, `empty`, `insert`, `insertWithCues`, `loadedFromCache`, `scanning`, and `trackInfo` — any user running in English will see these raw key-fragment strings in the embedded-subtitles panel.

How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code Fix in Codex

Comment on lines 350 to 372
"picker": {
"descAll": "Description All",
"noFiles": "No Files",
"noFiles": "No media in this project yet.",
"noSearchResults": "No Search Results",
"title": "Title"
"title": "Choose media"
},
"searchMedia": "Search Media",
"subtitleScan": {
"cached": "Cached",
"cancelBatch": "Cancel Batch",
"cancelBatch": "Cancel all",
"descComplete": "Description Complete",
"descScanning": "Description Scanning",
"failed": "Failed",
"titleComplete": "Title Complete",
"titleScanning": "Title Scanning"
"titleComplete": "Subtitle scan complete",
"titleScanning": "Scanning for subtitles…"
},
"transcribe": {
"autoDetect": "Auto Detect",
"generateTitle": "Generate Title",
"generateTitle": "Generate transcript",
"language": "Language",
"model": "Model",
"noLanguages": "No Languages",
"progressAria": "Progress ARIA",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Additional en locale placeholder strings missed in media section

Several more keys in the en locale block were not updated while every other locale received real copy: media.picker.descAll is still "Description All" (line 351), media.subtitleScan.descComplete is "Description Complete" (line 360), media.subtitleScan.descScanning is "Description Scanning" (line 361), and media.transcribe.progressAria is "Progress ARIA" (line 372). The Spanish equivalents, for example, are "Elige un archivo de la biblioteca del proyecto.", "Búsqueda de subtítulos completada.", "Buscando subtítulos en tus medios…", and "Progreso de la transcripción" respectively.

Prompt To Fix With AI
This is a comment left during a code review.
Path: src/i18n/locales/partials/missing.json
Line: 350-372

Comment:
**Additional `en` locale placeholder strings missed in `media` section**

Several more keys in the `en` locale block were not updated while every other locale received real copy: `media.picker.descAll` is still `"Description All"` (line 351), `media.subtitleScan.descComplete` is `"Description Complete"` (line 360), `media.subtitleScan.descScanning` is `"Description Scanning"` (line 361), and `media.transcribe.progressAria` is `"Progress ARIA"` (line 372). The Spanish equivalents, for example, are `"Elige un archivo de la biblioteca del proyecto."`, `"Búsqueda de subtítulos completada."`, `"Buscando subtítulos en tus medios…"`, and `"Progreso de la transcripción"` respectively.

How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code Fix in Codex

Comment on lines 455 to 457
"timeline": {
"addAudioTrackHint": "Add Audio Track Hint",
"addVideoTrackHint": "Add Video Track Hint",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 en locale timeline.addAudioTrackHint and timeline.addVideoTrackHint still placeholders

Both "addAudioTrackHint": "Add Audio Track Hint" and "addVideoTrackHint": "Add Video Track Hint" are unchanged title-cased placeholder fragments in the en locale. Other locales have either kept similar machine-generated forms or translated them properly. Since these hint strings appear in the timeline header, English-speaking users will see raw key-fragment text as UI copy.

Prompt To Fix With AI
This is a comment left during a code review.
Path: src/i18n/locales/partials/missing.json
Line: 455-457

Comment:
**`en` locale `timeline.addAudioTrackHint` and `timeline.addVideoTrackHint` still placeholders**

Both `"addAudioTrackHint": "Add Audio Track Hint"` and `"addVideoTrackHint": "Add Video Track Hint"` are unchanged title-cased placeholder fragments in the `en` locale. Other locales have either kept similar machine-generated forms or translated them properly. Since these hint strings appear in the timeline header, English-speaking users will see raw key-fragment text as UI copy.

How can I resolve this? If you propose a fix, please make it concise.

Fix in Claude Code Fix in Codex

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant