fix(app): add missing i18n keys for host settings (#1478)

* 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) <noreply@anthropic.com>

* 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) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
维她命@
2026-06-12 05:10:24 +00:00
committed by GitHub
co-authored by Claude Opus 4.8
parent f05544ef8f
commit e4c966b21e
7 changed files with 45 additions and 9 deletions
@@ -14,7 +14,7 @@ const SNAP_POINTS: string[] = ["82%", "94%"];
export function PairDeviceModal({ visible, onClose, testID }: PairDeviceModalProps) {
const { t } = useTranslation();
const header = useMemo<SheetHeader>(
() => ({ title: t("settings.integrations.pairDevices.rowTitle") }),
() => ({ title: t("settings.host.pairDevices.rowTitle") }),
[t],
);
+9 -3
View File
@@ -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: "يلغي",
},
},
+6
View File
@@ -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.",
+9 -3
View File
@@ -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",
},
},
+8 -2
View File
@@ -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",
},
},
+6
View File
@@ -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:
"Это перезапустит демон. Агенты, работающие на нем, будут продолжать работать; приложение автоматически повторно подключится.",
+6
View File
@@ -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: "正在重启...",