Files
paseo/packages/app/src/i18n/resources/plugin-settings.ts
T
fxlelouarnandClaude Opus 5.5 b6e8ca8974 fix(app): correct the French translation (#6004)
The French locale was machine-translated word by word, without context:
"Back" became "Dos" (the body part), CI "Checks" became "Chèques" (bank
cheques), "Starting" became "Départ", "Connecting" became "De liaison",
and many interpolation placeholders were glued to neighboring words
("{{label}}copié", "Daemonindisponible").

Review every client-owned French string against its English source and
call site, apply one glossary across the file, and use French
typography (’, …, non-breaking space before high punctuation).

Add regression tests for the reported labels and for placeholders glued
to French words.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-06 04:19:45 +02:00

453 lines
19 KiB
TypeScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const shared = {
logs: {
action: "Logs",
title: "Logs: {{id}}",
loading: "Loading logs…",
refresh: "Refresh",
refreshing: "Refreshing…",
errorTitle: "Unable to load plugin logs",
empty: "No plugin output yet",
},
} as const;
export const pluginSettings = {
ar: {
...shared,
screens: {
open: "فتح",
offline: "اتصل بهذا المضيف لفتح إعدادات الإضافة.",
update: "حدّث هذا المضيف لاستخدام إعدادات الإضافة.",
unavailable: "شاشة إعدادات الإضافة هذه غير متاحة.",
backToPlugins: "العودة إلى الإضافات",
},
title: "الإضافات",
trustedTitle: "الإضافات تعليمات برمجية موثوقة",
trustedDescription:
"تعمل على هذا المضيف وداخل التطبيق دون عزل. ثبّت فقط التعليمات البرمجية التي تثق بها.",
globalTitle: "تفعيل الإضافات",
globalHint: "مفتاح عام لكل الإضافات المضبوطة",
sourceLabel: "مصدر الإضافة",
sourcePlaceholder: "مجلد أو رابط Git أو حزمة npm",
docs: "الوثائق",
install: "تثبيت الإضافة",
installing: "جارٍ التثبيت…",
status: { running: "قيد التشغيل", disabled: "معطّلة", failed: "فشلت" },
actions: {
menu: "إجراءات {{id}}",
reload: "إعادة تحميل",
reloading: "جارٍ إعادة التحميل…",
enable: "تفعيل",
enabling: "جارٍ التفعيل…",
disable: "تعطيل",
disabling: "جارٍ التعطيل…",
remove: "إزالة",
removing: "جارٍ الإزالة…",
},
feedback: {
installed: "تم تثبيت {{id}}",
reload: "تمت إعادة تحميل {{id}}",
enable: "تم تفعيل {{id}}",
disable: "تم تعطيل {{id}}",
remove: "تمت إزالة {{id}}",
kept: "تم الإبقاء على {{id}}",
globalEnabled: "تم تفعيل الإضافات",
globalDisabled: "تم تعطيل الإضافات",
},
removeConfirmTitle: "إزالة {{id}}؟",
removeConfirmMessage: "يؤدي هذا إلى إزالة الإعداد فقط. لن يُحذف مجلد المصدر.",
states: {
offlineTitle: "مضيف الإضافات غير متصل",
offlineDescription: "أعد الاتصال بهذا المضيف لإدارة إضافاته.",
updateTitle: "حدّث هذا المضيف لإدارة الإضافات",
sourceUpdateTitle: "حدّث هذا المضيف لتثبيت الإضافات",
loading: "جارٍ تحميل الإضافات…",
errorTitle: "تعذّر تحميل الإضافات",
retry: "إعادة المحاولة",
empty: "لا توجد إضافات مضبوطة",
},
},
es: {
...shared,
screens: {
open: "Abrir",
offline: "Conéctate a este host para abrir los ajustes del plugin.",
update: "Actualiza este host para usar los ajustes del plugin.",
unavailable: "Esta pantalla de ajustes del plugin no está disponible.",
backToPlugins: "Volver a plugins",
},
title: "Plugins",
trustedTitle: "Los plugins son código de confianza",
trustedDescription:
"Se ejecutan en este host y dentro de la app sin aislamiento. Instala solo código de confianza.",
globalTitle: "Activar plugins",
globalHint: "Interruptor global para todos los plugins configurados",
sourceLabel: "Fuente del plugin",
sourcePlaceholder: "Directorio, URL de Git o paquete npm",
docs: "Documentación",
install: "Instalar plugin",
installing: "Instalando…",
status: { running: "en ejecución", disabled: "desactivado", failed: "fallido" },
actions: {
menu: "Acciones para {{id}}",
reload: "Recargar",
reloading: "Recargando…",
enable: "Activar",
enabling: "Activando…",
disable: "Desactivar",
disabling: "Desactivando…",
remove: "Eliminar",
removing: "Eliminando…",
},
feedback: {
installed: "{{id}} instalado",
reload: "{{id}} recargado",
enable: "{{id}} activado",
disable: "{{id}} desactivado",
remove: "{{id}} eliminado",
kept: "Se conservó {{id}}",
globalEnabled: "Plugins activados",
globalDisabled: "Plugins desactivados",
},
removeConfirmTitle: "¿Eliminar {{id}}?",
removeConfirmMessage: "Esto elimina la configuración. El directorio de origen no se borra.",
states: {
offlineTitle: "El host de plugins está sin conexión",
offlineDescription: "Vuelve a conectar este host para gestionar sus plugins.",
updateTitle: "Actualiza este host para gestionar plugins",
sourceUpdateTitle: "Actualiza este host para instalar plugins",
loading: "Cargando plugins…",
errorTitle: "No se pudieron cargar los plugins",
retry: "Reintentar",
empty: "No hay plugins configurados",
},
},
fr: {
...shared,
screens: {
open: "Ouvrir",
offline: "Connectez-vous à cet hôte pour ouvrir les paramètres du plugin.",
update: "Mettez à jour cet hôte pour utiliser les paramètres du plugin.",
unavailable: "Cet écran de paramètres du plugin est indisponible.",
backToPlugins: "Retour aux plugins",
},
title: "Plugins",
trustedTitle: "Les plugins sont du code de confiance",
trustedDescription:
"Ils s’exécutent sur cet hôte et dans l’app sans isolation. N’installez que du code fiable.",
globalTitle: "Activer les plugins",
globalHint: "Interrupteur global pour tous les plugins configurés",
sourceLabel: "Source du plugin",
sourcePlaceholder: "Dossier, URL Git ou paquet npm",
docs: "Documentation",
install: "Installer le plugin",
installing: "Installation…",
status: { running: "actif", disabled: "désactivé", failed: "échec" },
actions: {
menu: "Actions pour {{id}}",
reload: "Recharger",
reloading: "Rechargement…",
enable: "Activer",
enabling: "Activation…",
disable: "Désactiver",
disabling: "Désactivation…",
remove: "Supprimer",
removing: "Suppression…",
},
feedback: {
installed: "{{id}} installé",
reload: "{{id}} rechargé",
enable: "{{id}} activé",
disable: "{{id}} désactivé",
remove: "{{id}} supprimé",
kept: "{{id}} conservé",
globalEnabled: "Plugins activés",
globalDisabled: "Plugins désactivés",
},
removeConfirmTitle: "Supprimer {{id}} ?",
removeConfirmMessage: "La configuration sera supprimée. Le dossier source ne sera pas effacé.",
states: {
offlineTitle: "L’hôte des plugins est hors ligne",
offlineDescription: "Reconnectez cet hôte pour gérer ses plugins.",
updateTitle: "Mettez cet hôte à jour pour gérer les plugins",
sourceUpdateTitle: "Mettez cet hôte à jour pour installer des plugins",
loading: "Chargement des plugins…",
errorTitle: "Impossible de charger les plugins",
retry: "Réessayer",
empty: "Aucun plugin configuré",
},
},
ja: {
...shared,
screens: {
open: "開く",
offline: "このホストに接続してプラグイン設定を開いてください。",
update: "プラグイン設定を使用するには、このホストを更新してください。",
unavailable: "このプラグイン設定画面は利用できません。",
backToPlugins: "プラグインに戻る",
},
title: "プラグイン",
trustedTitle: "プラグインは信頼済みコードです",
trustedDescription:
"ホストとアプリ内で分離されずに実行されます。信頼できるコードのみインストールしてください。",
globalTitle: "プラグインを有効化",
globalHint: "設定済みプラグインすべての共通スイッチ",
sourceLabel: "プラグインソース",
sourcePlaceholder: "ディレクトリ、Git URL、npm パッケージ",
docs: "ドキュメント",
install: "プラグインをインストール",
installing: "インストール中…",
status: { running: "実行中", disabled: "無効", failed: "失敗" },
actions: {
menu: "{{id}} のアクション",
reload: "再読み込み",
reloading: "再読み込み中…",
enable: "有効化",
enabling: "有効化中…",
disable: "無効化",
disabling: "無効化中…",
remove: "削除",
removing: "削除中…",
},
feedback: {
installed: "{{id}} をインストールしました",
reload: "{{id}} を再読み込みしました",
enable: "{{id}} を有効にしました",
disable: "{{id}} を無効にしました",
remove: "{{id}} を削除しました",
kept: "{{id}} を保持しました",
globalEnabled: "プラグインを有効にしました",
globalDisabled: "プラグインを無効にしました",
},
removeConfirmTitle: "{{id}} を削除しますか?",
removeConfirmMessage: "設定のみを削除します。ソースディレクトリは削除されません。",
states: {
offlineTitle: "プラグインホストはオフラインです",
offlineDescription: "プラグインを管理するにはホストに再接続してください。",
updateTitle: "プラグインを管理するにはホストを更新してください",
sourceUpdateTitle: "プラグインをインストールするにはこのホストを更新してください",
loading: "プラグインを読み込み中…",
errorTitle: "プラグインを読み込めません",
retry: "再試行",
empty: "設定済みプラグインはありません",
},
},
ko: {
...shared,
screens: {
open: "열기",
offline: "플러그인 설정을 열려면 이 호스트에 연결하세요.",
update: "플러그인 설정을 사용하려면 이 호스트를 업데이트하세요.",
unavailable: "이 플러그인 설정 화면을 사용할 수 없습니다.",
backToPlugins: "플러그인으로 돌아가기",
},
title: "플러그인",
trustedTitle: "플러그인은 신뢰하는 코드입니다",
trustedDescription: "호스트와 앱 안에서 격리 없이 실행됩니다. 신뢰하는 코드만 설치하세요.",
globalTitle: "플러그인 활성화",
globalHint: "설정된 모든 플러그인의 전역 스위치",
sourceLabel: "플러그인 소스",
sourcePlaceholder: "디렉터리, Git URL 또는 npm 패키지",
docs: "문서",
install: "플러그인 설치",
installing: "설치 중…",
status: { running: "실행 중", disabled: "비활성화", failed: "실패" },
actions: {
menu: "{{id}} 작업",
reload: "다시 로드",
reloading: "다시 로드 중…",
enable: "활성화",
enabling: "활성화 중…",
disable: "비활성화",
disabling: "비활성화 중…",
remove: "제거",
removing: "제거 중…",
},
feedback: {
installed: "{{id}} 설치됨",
reload: "{{id}} 다시 로드됨",
enable: "{{id}} 활성화됨",
disable: "{{id}} 비활성화됨",
remove: "{{id}} 제거됨",
kept: "{{id}} 유지됨",
globalEnabled: "플러그인 활성화됨",
globalDisabled: "플러그인 비활성화됨",
},
removeConfirmTitle: "{{id}}을(를) 제거할까요?",
removeConfirmMessage: "설정만 제거합니다. 소스 디렉터리는 삭제되지 않습니다.",
states: {
offlineTitle: "플러그인 호스트가 오프라인입니다",
offlineDescription: "플러그인을 관리하려면 호스트에 다시 연결하세요.",
updateTitle: "플러그인을 관리하려면 호스트를 업데이트하세요",
sourceUpdateTitle: "플러그인을 설치하려면 이 호스트를 업데이트하세요",
loading: "플러그인 로드 중…",
errorTitle: "플러그인을 로드할 수 없습니다",
retry: "다시 시도",
empty: "설정된 플러그인이 없습니다",
},
},
"pt-BR": {
...shared,
screens: {
open: "Abrir",
offline: "Conecte-se a este host para abrir as configurações do plugin.",
update: "Atualize este host para usar as configurações do plugin.",
unavailable: "Esta tela de configurações do plugin está indisponível.",
backToPlugins: "Voltar para plugins",
},
title: "Plugins",
trustedTitle: "Plugins são código confiável",
trustedDescription:
"Eles rodam neste host e dentro do app sem isolamento. Instale apenas código confiável.",
globalTitle: "Ativar plugins",
globalHint: "Controle global para todos os plugins configurados",
sourceLabel: "Fonte do plugin",
sourcePlaceholder: "Diretório, URL Git ou pacote npm",
docs: "Documentação",
install: "Instalar plugin",
installing: "Instalando…",
status: { running: "em execução", disabled: "desativado", failed: "falhou" },
actions: {
menu: "Ações para {{id}}",
reload: "Recarregar",
reloading: "Recarregando…",
enable: "Ativar",
enabling: "Ativando…",
disable: "Desativar",
disabling: "Desativando…",
remove: "Remover",
removing: "Removendo…",
},
feedback: {
installed: "{{id}} instalado",
reload: "{{id}} recarregado",
enable: "{{id}} ativado",
disable: "{{id}} desativado",
remove: "{{id}} removido",
kept: "{{id}} mantido",
globalEnabled: "Plugins ativados",
globalDisabled: "Plugins desativados",
},
removeConfirmTitle: "Remover {{id}}?",
removeConfirmMessage: "Isso remove a configuração. O diretório de origem não será excluído.",
states: {
offlineTitle: "O host de plugins está offline",
offlineDescription: "Reconecte este host para gerenciar seus plugins.",
updateTitle: "Atualize este host para gerenciar plugins",
sourceUpdateTitle: "Atualize este host para instalar plugins",
loading: "Carregando plugins…",
errorTitle: "Não foi possível carregar os plugins",
retry: "Tentar novamente",
empty: "Nenhum plugin configurado",
},
},
ru: {
...shared,
screens: {
open: "Открыть",
offline: "Подключитесь к этому хосту, чтобы открыть настройки плагина.",
update: "Обновите этот хост, чтобы использовать настройки плагина.",
unavailable: "Этот экран настроек плагина недоступен.",
backToPlugins: "Вернуться к плагинам",
},
title: "Плагины",
trustedTitle: "Плагины — доверенный код",
trustedDescription:
"Они выполняются на хосте и в приложении без изоляции. Устанавливайте только доверенный код.",
globalTitle: "Включить плагины",
globalHint: "Общий переключатель для всех настроенных плагинов",
sourceLabel: "Источник плагина",
sourcePlaceholder: "Каталог, URL Git или пакет npm",
docs: "Документация",
install: "Установить плагин",
installing: "Установка…",
status: { running: "работает", disabled: "отключён", failed: "ошибка" },
actions: {
menu: "Действия для {{id}}",
reload: "Перезагрузить",
reloading: "Перезагрузка…",
enable: "Включить",
enabling: "Включение…",
disable: "Отключить",
disabling: "Отключение…",
remove: "Удалить",
removing: "Удаление…",
},
feedback: {
installed: "{{id}} установлен",
reload: "{{id}} перезагружен",
enable: "{{id}} включён",
disable: "{{id}} отключён",
remove: "{{id}} удалён",
kept: "{{id}} сохранён",
globalEnabled: "Плагины включены",
globalDisabled: "Плагины отключены",
},
removeConfirmTitle: "Удалить {{id}}?",
removeConfirmMessage: "Конфигурация будет удалена. Исходный каталог останется на месте.",
states: {
offlineTitle: "Хост плагинов не в сети",
offlineDescription: "Подключите хост снова, чтобы управлять плагинами.",
updateTitle: "Обновите хост для управления плагинами",
sourceUpdateTitle: "Обновите этот хост для установки плагинов",
loading: "Загрузка плагинов…",
errorTitle: "Не удалось загрузить плагины",
retry: "Повторить",
empty: "Нет настроенных плагинов",
},
},
"zh-CN": {
...shared,
screens: {
open: "打开",
offline: "连接到此主机以打开插件设置。",
update: "更新此主机以使用插件设置。",
unavailable: "此插件设置页面不可用。",
backToPlugins: "返回插件",
},
title: "插件",
trustedTitle: "插件是受信任的代码",
trustedDescription: "它们会在此主机和应用内运行,且没有隔离。请仅安装你信任的代码。",
globalTitle: "启用插件",
globalHint: "所有已配置插件的全局开关",
sourceLabel: "插件来源",
sourcePlaceholder: "目录、Git URL 或 npm 包",
docs: "文档",
install: "安装插件",
installing: "正在安装…",
status: { running: "运行中", disabled: "已禁用", failed: "失败" },
actions: {
menu: "{{id}} 的操作",
reload: "重新加载",
reloading: "正在重新加载…",
enable: "启用",
enabling: "正在启用…",
disable: "禁用",
disabling: "正在禁用…",
remove: "移除",
removing: "正在移除…",
},
feedback: {
installed: "已安装 {{id}}",
reload: "已重新加载 {{id}}",
enable: "已启用 {{id}}",
disable: "已禁用 {{id}}",
remove: "已移除 {{id}}",
kept: "已保留 {{id}}",
globalEnabled: "插件已启用",
globalDisabled: "插件已禁用",
},
removeConfirmTitle: "移除 {{id}}?",
removeConfirmMessage: "这会移除配置,但不会删除源目录。",
states: {
offlineTitle: "插件主机离线",
offlineDescription: "重新连接此主机以管理其插件。",
updateTitle: "更新此主机以管理插件",
sourceUpdateTitle: "更新此主机以安装插件",
loading: "正在加载插件…",
errorTitle: "无法加载插件",
retry: "重试",
empty: "没有已配置的插件",
},
},
} as const;