From 9f79b22d511505be2b98158f71b2391bddce6b1f Mon Sep 17 00:00:00 2001 From: Phil Larson Date: Thu, 23 Jul 2026 15:54:41 -0700 Subject: [PATCH] fix(i18n): restore secondary locale key parity (#2430) ## Summary - synchronize all five secondary app locale catalogs with the authored English key structure - restore fallback entries for heartbeat controls, release-channel settings, report targeting, and task provenance labels - add a patch changeset for the catalog parity fix ## Test Plan - `pnpm i18n:status` - `pnpm --filter @fusion/i18n test` (29 tests) - `pnpm --filter @fusion/dashboard exec vitest run app/components/__tests__/AgentsView.test.tsx --silent=passed-only --reporter=dot` (138 tests) - `pnpm check:changesets` - `pnpm build` ## Summary by CodeRabbit - **Bug Fixes** - Improved localization consistency for heartbeat controls, capability settings, release-channel configuration, reporting guidance, and task provenance details. - Added missing translation entries across Spanish, French, Korean, Simplified Chinese, and Traditional Chinese locales. - Untranslated values now fall back cleanly to the authored English text structure, preventing missing or inconsistent labels in supported interfaces. --- .changeset/sync-heartbeat-locale-parity.md | 7 +++++ packages/i18n/locales/es/app.json | 16 ++++++++-- packages/i18n/locales/fr/app.json | 16 ++++++++-- packages/i18n/locales/ko/app.json | 35 +++++++++++++++++++--- packages/i18n/locales/zh-CN/app.json | 35 +++++++++++++++++++--- packages/i18n/locales/zh-TW/app.json | 35 +++++++++++++++++++--- 6 files changed, 126 insertions(+), 18 deletions(-) create mode 100644 .changeset/sync-heartbeat-locale-parity.md diff --git a/.changeset/sync-heartbeat-locale-parity.md b/.changeset/sync-heartbeat-locale-parity.md new file mode 100644 index 0000000000..9f24f9fa89 --- /dev/null +++ b/.changeset/sync-heartbeat-locale-parity.md @@ -0,0 +1,7 @@ +--- +"@runfusion/fusion": patch +--- + +summary: Keep secondary locale catalogs in sync with heartbeat controls and settings provenance labels. +category: fix +dev: Synchronize all five secondary app catalogs with the authored English key structure so untranslated values fall back cleanly to English. diff --git a/packages/i18n/locales/es/app.json b/packages/i18n/locales/es/app.json index 7bc3b6b18f..980225e583 100644 --- a/packages/i18n/locales/es/app.json +++ b/packages/i18n/locales/es/app.json @@ -5981,7 +5981,8 @@ "reportDiscussionCategoryHelp": "Obligatoria al enviar a Discusiones de GitHub. Las categorías se cargan desde el repositorio configurado.", "reportDiscussionCategorySelect": "Selecciona una categoría de discusión", "reportDiscussionCategoryUnavailable": "Las categorías de discusión no están disponibles para el repositorio configurado.", - "reportDiscussionCategoryEmpty": "No hay categorías de discusión disponibles para el repositorio configurado." + "reportDiscussionCategoryEmpty": "No hay categorías de discusión disponibles para el repositorio configurado.", + "reportTargetByActionHelp": "" }, "globalGeneral": { "andShowsUpdateNoticesInTheCLIAnd": "", @@ -6027,7 +6028,11 @@ "skipConfirmationDialogs": "", "skipConfirmationDialogsHint": "", "enableProactiveTaskChat": "", - "enableProactiveTaskChatHint": "" + "enableProactiveTaskChatHint": "", + "releaseChannel": "", + "releaseChannelHelp": "", + "channelStable": "", + "channelBeta": "" }, "globalModels": { "allow": "", @@ -7837,7 +7842,12 @@ "createdVia": "Creado mediante", "parentTaskOf": "", "createdToUndo": "", - "undoTask": "" + "undoTask": "", + "creatingAgent": "", + "importedFrom": "", + "nearDuplicateOf": "", + "parentTask": "", + "title": "" }, "recoveryState": "Estado de recuperación", "refine": { diff --git a/packages/i18n/locales/fr/app.json b/packages/i18n/locales/fr/app.json index 361286c2a0..19ab258f10 100644 --- a/packages/i18n/locales/fr/app.json +++ b/packages/i18n/locales/fr/app.json @@ -5981,7 +5981,8 @@ "reportDiscussionCategoryHelp": "Obligatoire pour envoyer vers les Discussions GitHub. Les catégories sont chargées depuis le dépôt configuré.", "reportDiscussionCategorySelect": "Sélectionnez une catégorie de discussion", "reportDiscussionCategoryUnavailable": "Les catégories de discussion ne sont pas disponibles pour le dépôt configuré.", - "reportDiscussionCategoryEmpty": "Aucune catégorie de discussion n’est disponible pour le dépôt configuré." + "reportDiscussionCategoryEmpty": "Aucune catégorie de discussion n’est disponible pour le dépôt configuré.", + "reportTargetByActionHelp": "" }, "globalGeneral": { "andShowsUpdateNoticesInTheCLIAnd": "", @@ -6027,7 +6028,11 @@ "skipConfirmationDialogs": "", "skipConfirmationDialogsHint": "", "enableProactiveTaskChat": "", - "enableProactiveTaskChatHint": "" + "enableProactiveTaskChatHint": "", + "releaseChannel": "", + "releaseChannelHelp": "", + "channelStable": "", + "channelBeta": "" }, "globalModels": { "allow": "", @@ -7837,7 +7842,12 @@ "createdVia": "Créé via", "parentTaskOf": "", "createdToUndo": "", - "undoTask": "" + "undoTask": "", + "creatingAgent": "", + "importedFrom": "", + "nearDuplicateOf": "", + "parentTask": "", + "title": "" }, "recoveryState": "État de récupération", "refine": { diff --git a/packages/i18n/locales/ko/app.json b/packages/i18n/locales/ko/app.json index 5107fc79b1..48d9877d26 100644 --- a/packages/i18n/locales/ko/app.json +++ b/packages/i18n/locales/ko/app.json @@ -1128,7 +1128,24 @@ "notGranted": "Not granted", "toggleCapabilityGrant": "Toggle explicit grant for {{permission}}", "capabilityPermissionsUpdated": "Capability grants updated", - "capabilityPermissionsFailed": "Failed to update capability grants: {{error}}" + "capabilityPermissionsFailed": "Failed to update capability grants: {{error}}", + "disableHeartbeat": "", + "enableHeartbeat": "", + "heartbeatActionForAgent": "", + "heartbeatUpdating": "", + "heartbeatEnabledForAgent": "", + "heartbeatUpdateFailed": "", + "enableAllHeartbeats": "", + "disableAllHeartbeats": "", + "enableAllHeartbeatsConfirm": "", + "disableAllHeartbeatsConfirm": "", + "noHeartbeatsToEnable": "", + "noHeartbeatsToDisable": "", + "enableHeartbeatsSummary": "", + "disableHeartbeatsSummary": "", + "enableHeartbeatsCountHint": "", + "disableHeartbeatsCountHint": "", + "bulkFailures": "" }, "app": { "backendError": { @@ -5964,7 +5981,8 @@ "reportDiscussionCategoryHelp": "Required when filing to GitHub Discussions. Categories are loaded from the configured repository.", "reportDiscussionCategorySelect": "토론 카테고리 선택", "reportDiscussionCategoryUnavailable": "Discussion categories are unavailable for the configured repository.", - "reportDiscussionCategoryEmpty": "No Discussion categories are available for the configured repository." + "reportDiscussionCategoryEmpty": "No Discussion categories are available for the configured repository.", + "reportTargetByActionHelp": "" }, "globalGeneral": { "andShowsUpdateNoticesInTheCLIAnd": "", @@ -6010,7 +6028,11 @@ "skipConfirmationDialogs": "", "skipConfirmationDialogsHint": "", "enableProactiveTaskChat": "", - "enableProactiveTaskChatHint": "" + "enableProactiveTaskChatHint": "", + "releaseChannel": "", + "releaseChannelHelp": "", + "channelStable": "", + "channelBeta": "" }, "globalModels": { "allow": "", @@ -7820,7 +7842,12 @@ "createdVia": "생성 경로", "parentTaskOf": "", "createdToUndo": "", - "undoTask": "" + "undoTask": "", + "creatingAgent": "", + "importedFrom": "", + "nearDuplicateOf": "", + "parentTask": "", + "title": "" }, "recoveryState": "복구 상태", "refine": { diff --git a/packages/i18n/locales/zh-CN/app.json b/packages/i18n/locales/zh-CN/app.json index 89215031a3..209a0ec734 100644 --- a/packages/i18n/locales/zh-CN/app.json +++ b/packages/i18n/locales/zh-CN/app.json @@ -1128,7 +1128,24 @@ "notGranted": "Not granted", "toggleCapabilityGrant": "Toggle explicit grant for {{permission}}", "capabilityPermissionsUpdated": "Capability grants updated", - "capabilityPermissionsFailed": "Failed to update capability grants: {{error}}" + "capabilityPermissionsFailed": "Failed to update capability grants: {{error}}", + "disableHeartbeat": "", + "enableHeartbeat": "", + "heartbeatActionForAgent": "", + "heartbeatUpdating": "", + "heartbeatEnabledForAgent": "", + "heartbeatUpdateFailed": "", + "enableAllHeartbeats": "", + "disableAllHeartbeats": "", + "enableAllHeartbeatsConfirm": "", + "disableAllHeartbeatsConfirm": "", + "noHeartbeatsToEnable": "", + "noHeartbeatsToDisable": "", + "enableHeartbeatsSummary": "", + "disableHeartbeatsSummary": "", + "enableHeartbeatsCountHint": "", + "disableHeartbeatsCountHint": "", + "bulkFailures": "" }, "app": { "backendError": { @@ -5964,7 +5981,8 @@ "reportDiscussionCategoryHelp": "Required when filing to GitHub Discussions. Categories are loaded from the configured repository.", "reportDiscussionCategorySelect": "选择讨论类别", "reportDiscussionCategoryUnavailable": "Discussion categories are unavailable for the configured repository.", - "reportDiscussionCategoryEmpty": "No Discussion categories are available for the configured repository." + "reportDiscussionCategoryEmpty": "No Discussion categories are available for the configured repository.", + "reportTargetByActionHelp": "" }, "globalGeneral": { "andShowsUpdateNoticesInTheCLIAnd": "", @@ -6010,7 +6028,11 @@ "skipConfirmationDialogs": "", "skipConfirmationDialogsHint": "", "enableProactiveTaskChat": "", - "enableProactiveTaskChatHint": "" + "enableProactiveTaskChatHint": "", + "releaseChannel": "", + "releaseChannelHelp": "", + "channelStable": "", + "channelBeta": "" }, "globalModels": { "allow": "", @@ -7820,7 +7842,12 @@ "createdVia": "通过…创建", "parentTaskOf": "", "createdToUndo": "", - "undoTask": "" + "undoTask": "", + "creatingAgent": "", + "importedFrom": "", + "nearDuplicateOf": "", + "parentTask": "", + "title": "" }, "recoveryState": "恢复状态", "refine": { diff --git a/packages/i18n/locales/zh-TW/app.json b/packages/i18n/locales/zh-TW/app.json index 0734a6ac2c..2c4795dc41 100644 --- a/packages/i18n/locales/zh-TW/app.json +++ b/packages/i18n/locales/zh-TW/app.json @@ -1128,7 +1128,24 @@ "notGranted": "Not granted", "toggleCapabilityGrant": "Toggle explicit grant for {{permission}}", "capabilityPermissionsUpdated": "Capability grants updated", - "capabilityPermissionsFailed": "Failed to update capability grants: {{error}}" + "capabilityPermissionsFailed": "Failed to update capability grants: {{error}}", + "disableHeartbeat": "", + "enableHeartbeat": "", + "heartbeatActionForAgent": "", + "heartbeatUpdating": "", + "heartbeatEnabledForAgent": "", + "heartbeatUpdateFailed": "", + "enableAllHeartbeats": "", + "disableAllHeartbeats": "", + "enableAllHeartbeatsConfirm": "", + "disableAllHeartbeatsConfirm": "", + "noHeartbeatsToEnable": "", + "noHeartbeatsToDisable": "", + "enableHeartbeatsSummary": "", + "disableHeartbeatsSummary": "", + "enableHeartbeatsCountHint": "", + "disableHeartbeatsCountHint": "", + "bulkFailures": "" }, "app": { "backendError": { @@ -5964,7 +5981,8 @@ "reportDiscussionCategoryHelp": "Required when filing to GitHub Discussions. Categories are loaded from the configured repository.", "reportDiscussionCategorySelect": "選擇討論分類", "reportDiscussionCategoryUnavailable": "Discussion categories are unavailable for the configured repository.", - "reportDiscussionCategoryEmpty": "No Discussion categories are available for the configured repository." + "reportDiscussionCategoryEmpty": "No Discussion categories are available for the configured repository.", + "reportTargetByActionHelp": "" }, "globalGeneral": { "andShowsUpdateNoticesInTheCLIAnd": "", @@ -6010,7 +6028,11 @@ "skipConfirmationDialogs": "", "skipConfirmationDialogsHint": "", "enableProactiveTaskChat": "", - "enableProactiveTaskChatHint": "" + "enableProactiveTaskChatHint": "", + "releaseChannel": "", + "releaseChannelHelp": "", + "channelStable": "", + "channelBeta": "" }, "globalModels": { "allow": "", @@ -7820,7 +7842,12 @@ "createdVia": "通過…建立", "parentTaskOf": "", "createdToUndo": "", - "undoTask": "" + "undoTask": "", + "creatingAgent": "", + "importedFrom": "", + "nearDuplicateOf": "", + "parentTask": "", + "title": "" }, "recoveryState": "恢復狀態", "refine": {