From e4c966b21ec06325bce16863c79755ca32ce6e68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=B4=E5=A5=B9=E5=91=BD=40?= <908280968@qq.com> Date: Fri, 12 Jun 2026 13:10:24 +0800 Subject: [PATCH] fix(app): add missing i18n keys for host settings (#1478) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(app): add missing i18n keys for host settings The client UI i18n migration (#1282) referenced translation keys that were never added to any locale file, so i18next rendered the raw key string in Settings → Host (e.g. a button labeled "settings.host.daemon.restart.confirm"). Add the six missing keys to all six locales with real translations: - settings.host.daemon.rename.submit - settings.host.daemon.restart.confirm - settings.host.orchestration.systemPrompt.{edit,reset,save,saving} The seventh broken reference, in pair-device-modal.tsx, used the wrong namespace (settings.integrations.pairDevices.rowTitle); the key is defined at settings.host.pairDevices.rowTitle. Point the reference there. Reported in https://github.com/getpaseo/paseo/pull/1282#issuecomment-4686672699 Co-Authored-By: Claude Opus 4.8 (1M context) * fix(app): correct machine-translated Save/Saving labels (es/fr/ar) #1282 left several Save/Saving labels machine-translated into the "economize money" sense rather than the persist-data sense, so users saw "Ahorro..." (es), "Économie..." (fr), and "توفير..." (ar) where "Saving..." was meant. Fix renameModal.saving and settings.project.actions.{save,saving} in the three affected locales. ar's actions.save also moves from the conjugated "يحفظ" to the standard button form "حفظ". Wording matches each locale's already-correct siblings (e.g. es "Proyecto guardado") and the keys added in the previous commit. ru and zh-CN were already correct and are untouched. Co-Authored-By: Claude Opus 4.8 (1M context) --------- Co-authored-by: Claude Opus 4.8 (1M context) --- .../app/src/desktop/components/pair-device-modal.tsx | 2 +- packages/app/src/i18n/resources/ar.ts | 12 +++++++++--- packages/app/src/i18n/resources/en.ts | 6 ++++++ packages/app/src/i18n/resources/es.ts | 12 +++++++++--- packages/app/src/i18n/resources/fr.ts | 10 ++++++++-- packages/app/src/i18n/resources/ru.ts | 6 ++++++ packages/app/src/i18n/resources/zh-CN.ts | 6 ++++++ 7 files changed, 45 insertions(+), 9 deletions(-) diff --git a/packages/app/src/desktop/components/pair-device-modal.tsx b/packages/app/src/desktop/components/pair-device-modal.tsx index a3dab342e..4303a1e93 100644 --- a/packages/app/src/desktop/components/pair-device-modal.tsx +++ b/packages/app/src/desktop/components/pair-device-modal.tsx @@ -14,7 +14,7 @@ const SNAP_POINTS: string[] = ["82%", "94%"]; export function PairDeviceModal({ visible, onClose, testID }: PairDeviceModalProps) { const { t } = useTranslation(); const header = useMemo( - () => ({ title: t("settings.integrations.pairDevices.rowTitle") }), + () => ({ title: t("settings.host.pairDevices.rowTitle") }), [t], ); diff --git a/packages/app/src/i18n/resources/ar.ts b/packages/app/src/i18n/resources/ar.ts index eb693b3ac..4ecf9c623 100644 --- a/packages/app/src/i18n/resources/ar.ts +++ b/packages/app/src/i18n/resources/ar.ts @@ -1294,7 +1294,7 @@ export const ar: TranslationResources = { }, renameModal: { rename: "إعادة تسمية", - saving: "توفير...", + saving: "جارٍ الحفظ...", }, sidebarCallout: { dismiss: "رفض", @@ -1611,6 +1611,10 @@ export const ar: TranslationResources = { sheetTitle: "إلحاق موجه النظام", accessibilityLabel: "إلحاق موجه النظام", placeholder: "اجعل الردود موجزة دائمًا.", + edit: "تحرير", + reset: "إعادة ضبط", + save: "حفظ", + saving: "جارٍ الحفظ...", }, }, agents: { @@ -1624,10 +1628,12 @@ export const ar: TranslationResources = { editLabel: "تحرير التسمية", title: "إعادة تسمية المضيف", placeholder: "بلدي Host", + submit: "إعادة تسمية", }, restart: { title: "إعادة تشغيل البرنامج الخفي", hint: "إعادة تشغيل عملية البرنامج الخفي. سيتم إعادة الاتصال بالتطبيق تلقائيًا", + confirm: "إعادة التشغيل", confirmTitle: "أعد تشغيل{{name}}", confirmMessage: "سيؤدي هذا إلى إعادة تشغيل البرنامج الخفي. سيستمر العملاء الذين يعملون عليه؛ سيتم إعادة الاتصال بالتطبيق تلقائيًا.", @@ -1793,9 +1799,9 @@ export const ar: TranslationResources = { actions: { reload: "إعادة تحميل", tryAgain: "حاول ثانية", - save: "يحفظ", + save: "حفظ", saved: "تم حفظ المشروع", - saving: "توفير...", + saving: "جارٍ الحفظ...", cancel: "يلغي", }, }, diff --git a/packages/app/src/i18n/resources/en.ts b/packages/app/src/i18n/resources/en.ts index 14c7e0d63..e508191f8 100644 --- a/packages/app/src/i18n/resources/en.ts +++ b/packages/app/src/i18n/resources/en.ts @@ -1618,6 +1618,10 @@ export const en = { sheetTitle: "Append system prompt", accessibilityLabel: "Append system prompt", placeholder: "Always keep replies concise.", + edit: "Edit", + reset: "Reset", + save: "Save", + saving: "Saving...", }, }, agents: { @@ -1631,10 +1635,12 @@ export const en = { editLabel: "Edit label", title: "Rename host", placeholder: "My Host", + submit: "Rename", }, restart: { title: "Restart daemon", hint: "Restarts the daemon process. The app will reconnect automatically", + confirm: "Restart", confirmTitle: "Restart {{name}}", confirmMessage: "This will restart the daemon. Agents running on it will keep going; the app will reconnect automatically.", diff --git a/packages/app/src/i18n/resources/es.ts b/packages/app/src/i18n/resources/es.ts index 68a536f17..67bb1e5cc 100644 --- a/packages/app/src/i18n/resources/es.ts +++ b/packages/app/src/i18n/resources/es.ts @@ -1329,7 +1329,7 @@ export const es: TranslationResources = { }, renameModal: { rename: "Rebautizar", - saving: "Ahorro...", + saving: "Guardando...", }, sidebarCallout: { dismiss: "Despedir", @@ -1648,6 +1648,10 @@ export const es: TranslationResources = { sheetTitle: "Agregar mensaje del sistema", accessibilityLabel: "Agregar mensaje del sistema", placeholder: "Mantenga siempre respuestas concisas.", + edit: "Editar", + reset: "Restablecer", + save: "Guardar", + saving: "Guardando...", }, }, agents: { @@ -1661,10 +1665,12 @@ export const es: TranslationResources = { editLabel: "Editar etiqueta", title: "Cambiar nombre de host", placeholder: "MiHost", + submit: "Cambiar nombre", }, restart: { title: "Reiniciar demonio", hint: "Reinicia el proceso del demonio. La aplicación se volverá a conectar automáticamente", + confirm: "Reiniciar", confirmTitle: "Reiniciar{{name}}", confirmMessage: "Esto reiniciará el demonio. Los agentes que se ejecutan en él seguirán funcionando; la aplicación se volverá a conectar automáticamente.", @@ -1834,9 +1840,9 @@ export const es: TranslationResources = { actions: { reload: "Recargar", tryAgain: "Intentar otra vez", - save: "Ahorrar", + save: "Guardar", saved: "Proyecto guardado", - saving: "Ahorro...", + saving: "Guardando...", cancel: "Cancelar", }, }, diff --git a/packages/app/src/i18n/resources/fr.ts b/packages/app/src/i18n/resources/fr.ts index e16ca8637..5f21ebeaf 100644 --- a/packages/app/src/i18n/resources/fr.ts +++ b/packages/app/src/i18n/resources/fr.ts @@ -1332,7 +1332,7 @@ export const fr: TranslationResources = { }, renameModal: { rename: "Rebaptiser", - saving: "Économie...", + saving: "Sauvegarde...", }, sidebarCallout: { dismiss: "Rejeter", @@ -1654,6 +1654,10 @@ export const fr: TranslationResources = { sheetTitle: "Ajouter une invite système", accessibilityLabel: "Ajouter une invite système", placeholder: "Gardez toujours des réponses concises.", + edit: "Modifier", + reset: "Réinitialiser", + save: "Sauvegarder", + saving: "Sauvegarde...", }, }, agents: { @@ -1667,10 +1671,12 @@ export const fr: TranslationResources = { editLabel: "Modifier l'étiquette", title: "Renommer l'hôte", placeholder: "MonHost", + submit: "Renommer", }, restart: { title: "Redémarrer le démon", hint: "Redémarre le processus démon. L'application se reconnectera automatiquement", + confirm: "Redémarrer", confirmTitle: "Redémarrer{{name}}", confirmMessage: "Cela redémarrera le démon. Les agents qui s'y exécutent continueront à fonctionner; l'application se reconnectera automatiquement.", @@ -1844,7 +1850,7 @@ export const fr: TranslationResources = { tryAgain: "Essayer à nouveau", save: "Sauvegarder", saved: "Projet enregistré", - saving: "Économie...", + saving: "Sauvegarde...", cancel: "Annuler", }, }, diff --git a/packages/app/src/i18n/resources/ru.ts b/packages/app/src/i18n/resources/ru.ts index 88c460942..baa9152f6 100644 --- a/packages/app/src/i18n/resources/ru.ts +++ b/packages/app/src/i18n/resources/ru.ts @@ -1642,6 +1642,10 @@ export const ru: TranslationResources = { sheetTitle: "Добавить системное приглашение", accessibilityLabel: "Добавить системное приглашение", placeholder: "Всегда отвечайте кратко.", + edit: "Редактировать", + reset: "Сбросить", + save: "Сохранить", + saving: "Сохранение...", }, }, agents: { @@ -1655,10 +1659,12 @@ export const ru: TranslationResources = { editLabel: "Изменить ярлык", title: "Переименовать хост", placeholder: "Мой Host", + submit: "Переименовать", }, restart: { title: "Перезапустить демон", hint: "Перезапускает процесс демона. Приложение автоматически переподключится", + confirm: "Перезапустить", confirmTitle: "Перезапустите{{name}}", confirmMessage: "Это перезапустит демон. Агенты, работающие на нем, будут продолжать работать; приложение автоматически повторно подключится.", diff --git a/packages/app/src/i18n/resources/zh-CN.ts b/packages/app/src/i18n/resources/zh-CN.ts index c2687b79a..f9f3c702e 100644 --- a/packages/app/src/i18n/resources/zh-CN.ts +++ b/packages/app/src/i18n/resources/zh-CN.ts @@ -1593,6 +1593,10 @@ export const zhCN: TranslationResources = { sheetTitle: "追加 system prompt", accessibilityLabel: "追加 system prompt", placeholder: "始终保持回复简洁。", + edit: "编辑", + reset: "重置", + save: "保存", + saving: "保存中...", }, }, agents: { @@ -1606,10 +1610,12 @@ export const zhCN: TranslationResources = { editLabel: "编辑标签", title: "重命名 Host", placeholder: "我的 Host", + submit: "重命名", }, restart: { title: "重启 Daemon", hint: "重启 Daemon 进程。应用会自动重新连接", + confirm: "重启", confirmTitle: "重启 {{name}}", confirmMessage: "这会重启 Daemon。其上运行的 Agent 会继续运行;应用会自动重新连接。", restarting: "正在重启...",