termux-dev 1.6.0 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +214 -166
- package/assets/banner.svg +23 -28
- package/assets/preview.png +0 -0
- package/assets/preview.svg +101 -10
- package/dist/cli/banner.js +3 -4
- package/dist/cli/clipboard-write.js +55 -0
- package/dist/cli/clipboard.js +182 -106
- package/dist/cli/colors.js +67 -0
- package/dist/cli/confirm.js +50 -0
- package/dist/cli/doctor.js +4 -4
- package/dist/cli/effort.js +80 -0
- package/dist/cli/export.js +3 -3
- package/dist/cli/files.js +19 -5
- package/dist/cli/finder.js +241 -0
- package/dist/cli/headless.js +23 -11
- package/dist/cli/index.js +1557 -744
- package/dist/cli/keys.js +69 -0
- package/dist/cli/liveblock.js +45 -0
- package/dist/cli/log.js +19 -0
- package/dist/cli/logo.js +30 -0
- package/dist/cli/markdown.js +174 -37
- package/dist/cli/mcp-panel.js +432 -0
- package/dist/cli/permission.js +84 -0
- package/dist/cli/picker.js +143 -0
- package/dist/cli/prompt.js +256 -56
- package/dist/cli/resume.js +15 -0
- package/dist/cli/rewind.js +51 -0
- package/dist/cli/runtime_errors.js +6 -0
- package/dist/cli/server.js +85 -24
- package/dist/cli/settings.js +307 -0
- package/dist/cli/statusline.js +1 -1
- package/dist/cli/theme.js +126 -108
- package/dist/cli/transcript.js +134 -0
- package/dist/cli/typeahead.js +371 -0
- package/dist/cli/ui.js +1022 -0
- package/dist/cli/updater.js +23 -21
- package/dist/cli/usage-panel.js +242 -0
- package/dist/cli/welcome.js +56 -0
- package/dist/cli/width.js +178 -0
- package/dist/core/capabilities.js +433 -0
- package/dist/core/catalog-util.js +27 -0
- package/dist/core/checkpoint.js +90 -0
- package/dist/core/context-stats.js +29 -0
- package/dist/core/cost.js +191 -0
- package/dist/core/formats.js +199 -0
- package/dist/core/history.js +51 -1
- package/dist/core/hooks.js +79 -0
- package/dist/core/i18n.js +42 -0
- package/dist/core/local-config.js +69 -0
- package/dist/core/locales/de.js +265 -0
- package/dist/core/locales/en.js +276 -0
- package/dist/core/locales/es.js +265 -0
- package/dist/core/locales/fr.js +265 -0
- package/dist/core/locales/ja.js +265 -0
- package/dist/core/locales/pt.js +265 -0
- package/dist/core/locales/ru.js +265 -0
- package/dist/core/locales/uk.js +265 -0
- package/dist/core/locales/zh.js +265 -0
- package/dist/core/loop.js +125 -49
- package/dist/core/memory.js +39 -12
- package/dist/core/models.js +33 -20
- package/dist/core/network.js +12 -11
- package/dist/core/notify.js +54 -0
- package/dist/core/planfile.js +43 -0
- package/dist/core/price-catalog.json +1 -0
- package/dist/core/prices.js +249 -0
- package/dist/core/reasoning-catalog.json +1 -0
- package/dist/core/reasoning.js +393 -0
- package/dist/core/redact.js +41 -0
- package/dist/core/secure-file.js +22 -0
- package/dist/core/session.js +16 -5
- package/dist/core/snapshot.js +14 -2
- package/dist/core/title.js +61 -0
- package/dist/core/types.js +1 -1
- package/dist/core/usage.js +43 -7
- package/dist/core/vision-catalog.json +1 -0
- package/dist/core/vision.js +123 -0
- package/dist/mcp/client.js +36 -5
- package/dist/mcp/http-client.js +174 -0
- package/dist/mcp/manager.js +330 -93
- package/dist/permissions/guard.js +385 -117
- package/dist/prompts/builder.js +46 -38
- package/dist/providers/anthropic.js +517 -0
- package/dist/providers/index.js +18 -1
- package/dist/providers/openai.js +138 -125
- package/dist/providers/shared.js +116 -0
- package/dist/providers/toolguard.js +101 -0
- package/dist/tools/bash.js +141 -51
- package/dist/tools/diagnostics.js +76 -48
- package/dist/tools/fs.js +77 -5
- package/dist/tools/index.js +2 -1
- package/dist/tools/mcp.js +72 -0
- package/dist/tools/packages.js +16 -1
- package/dist/tools/plan.js +8 -8
- package/dist/tools/questions.js +50 -54
- package/dist/tools/server.js +6 -0
- package/dist/tools/todo.js +20 -18
- package/dist/tools/web.js +143 -8
- package/package.json +1 -1
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
export const es = {
|
|
2
|
+
'net.unknown': 'Error de red desconocido',
|
|
3
|
+
'net.rateLimit': 'Se superó el límite de solicitudes de la API (429)',
|
|
4
|
+
'net.badGateway': 'La pasarela del proveedor no está disponible por ahora (502)',
|
|
5
|
+
'net.unavailable': 'El servidor del proveedor está sobrecargado (503)',
|
|
6
|
+
'net.gatewayTimeout': 'Tiempo de espera agotado en la pasarela del proveedor (504)',
|
|
7
|
+
'net.offline': 'Sin conexión de red o fallo de DNS (offline)',
|
|
8
|
+
'net.reset': 'Se restableció la conexión con el servidor',
|
|
9
|
+
'net.timeout': 'Tiempo de espera de la conexión de red agotado',
|
|
10
|
+
'net.refused': 'El servidor rechazó la conexión',
|
|
11
|
+
'net.fetchFailed': 'Falló la solicitud de red (conexión interrumpida)',
|
|
12
|
+
'net.generic': 'Fallo de la conexión a internet',
|
|
13
|
+
'net.failedAfter': 'Error de red: no se pudo restablecer la conexión tras {n} intentos ({reason}).',
|
|
14
|
+
'conn.unstable': 'conexión inestable ({reason})',
|
|
15
|
+
'conn.reconnecting': 'reconectando {attempt}/{max} · reintento en {delay} s',
|
|
16
|
+
'conn.restored': 'conexión restablecida',
|
|
17
|
+
'conn.classicUnstable': 'Conexión inestable ({reason})',
|
|
18
|
+
'conn.classicRetry': 'Reconectando [{attempt}/{max}] (pausa {delay} s)...',
|
|
19
|
+
'conn.classicWaiting': 'Esperando la red [{attempt}/{max}]...',
|
|
20
|
+
'conn.classicRestored': '✓ ¡Conexión restablecida! Se reanuda la generación...',
|
|
21
|
+
'stop.connection': 'conexión cancelada',
|
|
22
|
+
'stop.stopped': 'detenido',
|
|
23
|
+
'stop.interrupted': 'interrumpido, enviando tu mensaje',
|
|
24
|
+
'stop.classicConnection': 'Conexión cancelada (Ctrl+C).',
|
|
25
|
+
'stop.classicStopped': 'Generación detenida (Ctrl+C).',
|
|
26
|
+
'stop.classicInterrupted': 'Interrumpido: enviando tu mensaje.',
|
|
27
|
+
'status.waiting': 'Esperando al modelo',
|
|
28
|
+
'status.thinking': 'Pensando',
|
|
29
|
+
'status.writing': 'Escribiendo',
|
|
30
|
+
'status.running': 'Ejecutando',
|
|
31
|
+
'status.reconnecting': 'Reconectando',
|
|
32
|
+
'status.stop': 'ctrl+c para detener',
|
|
33
|
+
'status.thinkingLine': 'pensando',
|
|
34
|
+
'status.thoughtFor': 'pensó {sec} s',
|
|
35
|
+
'composer.placeholder': 'Describe una tarea o haz una pregunta…',
|
|
36
|
+
'composer.queued': 'en cola',
|
|
37
|
+
'composer.queuedMany': '{n} en cola',
|
|
38
|
+
'composer.queuedHint': 'ctrl+enter envía ya · ↓ editar',
|
|
39
|
+
'composer.hint1': 'enter en cola · ctrl+c detiene',
|
|
40
|
+
'composer.hint2': 'enter en cola',
|
|
41
|
+
'composer.hint3': 'enter en cola · ctrl+c detiene',
|
|
42
|
+
'composer.hint4': 'enter en cola',
|
|
43
|
+
'summary.toolOne': '{n} herramienta',
|
|
44
|
+
'summary.toolMany': '{n} herramientas',
|
|
45
|
+
'summary.in': '{n} entrada',
|
|
46
|
+
'summary.out': '{n} salida',
|
|
47
|
+
'summary.stopped': 'detenido',
|
|
48
|
+
'settings.title': 'ajustes',
|
|
49
|
+
'settings.section.appearance': 'Apariencia',
|
|
50
|
+
'settings.section.agent': 'Agente',
|
|
51
|
+
'settings.section.general': 'General',
|
|
52
|
+
'settings.section.about': 'Acerca de',
|
|
53
|
+
'settings.row.theme': 'Tema',
|
|
54
|
+
'settings.row.layout': 'Interfaz',
|
|
55
|
+
'settings.row.pureBlack': 'Fondo negro',
|
|
56
|
+
'settings.row.autoApprove': 'Autoaprobar (YOLO)',
|
|
57
|
+
'settings.row.maxIterations': 'Máx. pasos',
|
|
58
|
+
'settings.row.memory': 'Memoria del proyecto',
|
|
59
|
+
'settings.row.updates': 'Buscar actualizaciones',
|
|
60
|
+
'settings.row.language': 'Idioma',
|
|
61
|
+
'settings.row.about': 'Acerca de devx',
|
|
62
|
+
'settings.short.theme': 'Tema',
|
|
63
|
+
'settings.short.layout': 'Interfaz',
|
|
64
|
+
'settings.short.pureBlack': 'Fondo negro',
|
|
65
|
+
'settings.short.autoApprove': 'YOLO',
|
|
66
|
+
'settings.short.maxIterations': 'Pasos',
|
|
67
|
+
'settings.short.memory': 'Memoria',
|
|
68
|
+
'settings.short.updates': 'Actualiz.',
|
|
69
|
+
'settings.short.language': 'Idioma',
|
|
70
|
+
'settings.short.about': 'Acerca de',
|
|
71
|
+
'settings.value.on': 'sí',
|
|
72
|
+
'settings.value.off': 'no',
|
|
73
|
+
'settings.value.clean': 'Limpia',
|
|
74
|
+
'settings.value.classic': 'Clásica',
|
|
75
|
+
'settings.value.unlimited': 'sin límite',
|
|
76
|
+
'settings.value.steps': '{n} pasos',
|
|
77
|
+
'settings.hint.theme': 'Colores de toda la interfaz. Izquierda y derecha recorren los temas; el panel cambia de color al instante.',
|
|
78
|
+
'settings.hint.layout': 'Limpia: entrada enmarcada, tarjetas y líneas de herramientas discretas. Clásica: el diseño ASCII original.',
|
|
79
|
+
'settings.hint.pureBlack': 'Pone el fondo del terminal en negro OLED profundo (#0a0a0c). Desactivado conserva tu propio fondo.',
|
|
80
|
+
'settings.hint.autoApprove': 'Omite los permisos habituales. Los comandos peligrosos y los archivos de credenciales siguen preguntando. Solo dura esta sesión: al volver a iniciar devx vuelve a estar desactivado.',
|
|
81
|
+
'settings.hint.maxIterations': 'Cuántos pasos con herramientas (ediciones, comandos) puede dar el agente por solicitud.',
|
|
82
|
+
'settings.hint.memory': 'Carga las reglas de .devx/memory.md en cada sesión.',
|
|
83
|
+
'settings.hint.updates': 'Busca una nueva versión de devx en GitHub al iniciar. /update funciona en cualquier caso.',
|
|
84
|
+
'settings.hint.language': 'Idioma de la interfaz: mensajes, ajustes y consejos. El código y los nombres de herramientas siguen en inglés.',
|
|
85
|
+
'settings.hint.about': 'Agente de programación con IA para la terminal, de ApvCode. Licencia MIT. github.com/apvcode/Termux-Dev',
|
|
86
|
+
'settings.warnYolo': 'Activado: el agente ejecuta comandos y edita archivos sin preguntar.',
|
|
87
|
+
'settings.keys.move': 'mover',
|
|
88
|
+
'settings.keys.change': 'cambiar',
|
|
89
|
+
'settings.keys.toggle': 'alternar',
|
|
90
|
+
'settings.keys.close': 'cerrar',
|
|
91
|
+
// ── /mcp panel
|
|
92
|
+
'mcp.title': 'Servidores MCP',
|
|
93
|
+
'mcp.count': 'servidores: {n}',
|
|
94
|
+
'mcp.scope.user': 'Servidores del usuario',
|
|
95
|
+
'mcp.scope.project': 'Servidores del proyecto',
|
|
96
|
+
'mcp.toolsCount': 'herramientas: {n}',
|
|
97
|
+
'mcp.status.connected': 'conectado',
|
|
98
|
+
'mcp.status.connecting': 'conectando…',
|
|
99
|
+
'mcp.status.failed': 'falló',
|
|
100
|
+
'mcp.status.disabled': 'desactivado',
|
|
101
|
+
'mcp.empty': 'No hay servidores MCP configurados.',
|
|
102
|
+
'mcp.emptyHint': 'Usa /mcp import para tomar los servidores de Claude Code, o /mcp add <nombre> <comando> [args].',
|
|
103
|
+
'mcp.detail.status': 'Estado',
|
|
104
|
+
'mcp.detail.command': 'Comando',
|
|
105
|
+
'mcp.detail.config': 'Config',
|
|
106
|
+
'mcp.detail.capabilities': 'Capacidades',
|
|
107
|
+
'mcp.detail.tools': 'Herramientas',
|
|
108
|
+
'mcp.detail.error': 'Error',
|
|
109
|
+
'mcp.action.tools': 'Ver herramientas',
|
|
110
|
+
'mcp.action.reconnect': 'Reconectar',
|
|
111
|
+
'mcp.action.disable': 'Desactivar',
|
|
112
|
+
'mcp.action.enable': 'Activar',
|
|
113
|
+
'mcp.toolsTitle': 'Herramientas de {name}',
|
|
114
|
+
'mcp.noTools': 'Este servidor no ofrece herramientas.',
|
|
115
|
+
'mcp.tag.readOnly': 'solo lectura',
|
|
116
|
+
'mcp.tag.destructive': 'destructiva',
|
|
117
|
+
'mcp.tag.openWorld': 'mundo abierto',
|
|
118
|
+
'mcp.params': 'Parámetros',
|
|
119
|
+
'mcp.noParams': 'Sin parámetros.',
|
|
120
|
+
'mcp.required': 'obligatorio',
|
|
121
|
+
'mcp.more': '{n} más',
|
|
122
|
+
'mcp.keys.open': 'abrir',
|
|
123
|
+
'mcp.keys.back': 'atrás',
|
|
124
|
+
'mcp.keys.reload': 'recargar todo',
|
|
125
|
+
'mcp.keys.close': 'cerrar',
|
|
126
|
+
// ── questions from the agent
|
|
127
|
+
'questions.title': 'Pregunta',
|
|
128
|
+
'questions.custom': 'Escribir mi propia respuesta…',
|
|
129
|
+
'questions.skip': 'Omitir',
|
|
130
|
+
'questions.skipped': '(omitida)',
|
|
131
|
+
'questions.yourAnswer': 'Tu respuesta:',
|
|
132
|
+
'questions.empty': 'La respuesta no puede estar vacía',
|
|
133
|
+
// ── confirmations
|
|
134
|
+
'confirm.yes': 'Sí',
|
|
135
|
+
'confirm.no': 'No',
|
|
136
|
+
'confirm.exitTitle': 'salir',
|
|
137
|
+
'confirm.exit': '¿Salir de devx?',
|
|
138
|
+
'confirm.goodbye': 'Hasta pronto',
|
|
139
|
+
'confirm.deleteAll': '¿Borrar TODAS las {n} sesiones guardadas?',
|
|
140
|
+
'confirm.update': '¿Actualizar devx a v{version} ahora?',
|
|
141
|
+
'confirm.commit': '¿Hacer commit de los cambios con este mensaje?',
|
|
142
|
+
'trust.title': 'confianza en la carpeta',
|
|
143
|
+
'trust.question': 'Primera vez en esta carpeta. ¿Confiar en ella y dejar que el agente trabaje aquí?',
|
|
144
|
+
'trust.yes': 'Sí, confiar en esta carpeta',
|
|
145
|
+
'trust.no': 'No, salir',
|
|
146
|
+
'trust.wantsYolo': 'La configuración del proyecto pide autoaprobación (YOLO)',
|
|
147
|
+
'trust.wantsAllowlist': 'La configuración del proyecto permite estos comandos: {list}',
|
|
148
|
+
'trust.exiting': 'Carpeta no confiable, se cierra devx',
|
|
149
|
+
'trust.mcpQuestion': 'Este proyecto quiere iniciar servidores MCP (programas locales, listados arriba). ¿Permitir?',
|
|
150
|
+
// ── view switches
|
|
151
|
+
'view.expandThought': 'ctrl+p para expandir',
|
|
152
|
+
'view.expandOutput': 'ctrl+o para expandir',
|
|
153
|
+
'view.moreLines': '… +{n} líneas',
|
|
154
|
+
// ── plan approval
|
|
155
|
+
'plan.cardTitle': 'Plan',
|
|
156
|
+
'plan.files': 'Archivos',
|
|
157
|
+
'plan.ready': 'El plan está listo. ¿Empezar a trabajar en él?',
|
|
158
|
+
'plan.go': 'Go: pasar al modo AGENT y empezar',
|
|
159
|
+
'plan.edit': 'Cambiar el plan (seguir en modo PLAN)',
|
|
160
|
+
'plan.editHint': 'Di qué cambiar: el plan sigue en modo PLAN y se rehace.',
|
|
161
|
+
'plan.started': 'Modo AGENT: trabajando en el plan aprobado',
|
|
162
|
+
// ── undo
|
|
163
|
+
'undo.question': '¿Devolver {n} archivo(s) a como estaban antes del último turno?',
|
|
164
|
+
'undo.note': 'Incluye lo que hicieron los comandos de shell. Los archivos ignorados por git no se tocan.',
|
|
165
|
+
'undo.done': '{n} archivo(s) restaurado(s)',
|
|
166
|
+
// ── permissions
|
|
167
|
+
'permissions.title': 'Permitido sin preguntar',
|
|
168
|
+
'permissions.none': 'Aún nada se permite sin preguntar: responde «Session» o «Always» en una tarjeta de aprobación.',
|
|
169
|
+
'permissions.hint': '/permissions clear lo quita todo (también lo de la sesión).',
|
|
170
|
+
'permissions.cleared': 'Se quitó todo lo permitido sin preguntar',
|
|
171
|
+
// ── cost limit
|
|
172
|
+
'settings.row.costLimit': 'Límite de coste',
|
|
173
|
+
'settings.short.costLimit': 'Límite $',
|
|
174
|
+
'settings.hint.costLimit': 'Lo máximo que puede costar una sesión. Al 80 % devx avisa; en el límite detiene la tarea y pregunta antes de gastar más.',
|
|
175
|
+
'cost.title': 'límite de coste',
|
|
176
|
+
'cost.warn': '{spent} gastados: el 80 % del límite de {limit} de esta sesión',
|
|
177
|
+
'cost.stopped': 'Se alcanzó el límite de coste de {limit}: la tarea se detuvo',
|
|
178
|
+
'cost.reached': 'Esta sesión gastó {spent} de su límite de {limit}. ¿Gastar más?',
|
|
179
|
+
'cost.raise': 'Si continúas, el límite de esta sesión sube a {limit}.',
|
|
180
|
+
'cost.continue': 'Sí, continuar',
|
|
181
|
+
'cost.cancel': 'No, ahora no',
|
|
182
|
+
'cost.cancelled': 'No se envió nada. Tu mensaje volvió a la línea de entrada.',
|
|
183
|
+
// ── /copy and /rename
|
|
184
|
+
'copy.none': 'Aún no hay una respuesta que copiar.',
|
|
185
|
+
'copy.done': 'Última respuesta copiada ({n} caracteres)',
|
|
186
|
+
'copy.failed': 'No se pudo acceder al portapapeles (sin wl-copy, xclip, xsel, y la respuesta es demasiado larga para el terminal).',
|
|
187
|
+
'rename.done': 'Chat renombrado: {name}',
|
|
188
|
+
'rename.usage': 'Uso: /rename <nombre>. Sin nombre, la IA vuelve a nombrar el chat cuando haya una primera respuesta.',
|
|
189
|
+
'rename.failed': 'La IA no encontró un nombre. Inténtalo de nuevo o da uno: /rename <nombre>.',
|
|
190
|
+
// ── memory
|
|
191
|
+
'memory.capped': 'La memoria es larga: {n} de los hechos más antiguos no se envían al modelo (solo caben los nuevos). Quita los viejos de .devx/memory.md.',
|
|
192
|
+
'mcp.removeUsage': 'Uso: /mcp remove <nombre>',
|
|
193
|
+
'mcp.removeNotFound': '«{name}» no está en ~/.devx/mcp.json. Un servidor de otro archivo (el proyecto, ~/.devxrc.json) hay que quitarlo a mano de ese archivo.',
|
|
194
|
+
'mcp.removed': 'Servidor «{name}» eliminado',
|
|
195
|
+
// ── /rewind
|
|
196
|
+
'rewind.title': 'retroceder',
|
|
197
|
+
'rewind.count': '{n} mensajes',
|
|
198
|
+
'rewind.current': '(actual: quedarse aquí)',
|
|
199
|
+
'rewind.none': 'Aún no hay un mensaje tuyo al que volver.',
|
|
200
|
+
'rewind.later': '{n} después',
|
|
201
|
+
'rewind.ago.now': 'ahora mismo',
|
|
202
|
+
'rewind.ago.min': 'hace {n} min',
|
|
203
|
+
'rewind.ago.hour': 'hace {n} h',
|
|
204
|
+
'rewind.ago.day': 'hace {n} d',
|
|
205
|
+
'rewind.filesQuestion': '¿Devolver también los archivos ({n}) a como estaban entonces?',
|
|
206
|
+
'rewind.filesYes': 'Sí, también los archivos',
|
|
207
|
+
'rewind.filesNo': 'No, solo la conversación',
|
|
208
|
+
'rewind.done': 'De vuelta en tu mensaje. Lo que vino después desapareció, también para el modelo. Edita el mensaje y envíalo.',
|
|
209
|
+
'rewind.doneImages': 'De vuelta en tu mensaje (sus imágenes no se conservaron, adjúntalas de nuevo). Lo que vino después desapareció, también para el modelo.',
|
|
210
|
+
// ── first run and the prompts around it
|
|
211
|
+
'welcome.tagline': 'Un agente de programación con IA para la terminal',
|
|
212
|
+
'welcome.intro': 'Vamos a configurarlo todo. Lleva cerca de un minuto.',
|
|
213
|
+
'welcome.step.language': 'Idioma',
|
|
214
|
+
'welcome.step.provider': 'Proveedor',
|
|
215
|
+
'welcome.step.key': 'Clave de API',
|
|
216
|
+
'welcome.step.model': 'Modelo',
|
|
217
|
+
'welcome.keyNote': 'Tu clave se queda en este equipo, en ~/.devxrc.json.',
|
|
218
|
+
'onboard.language.title': 'idioma',
|
|
219
|
+
'onboard.language.note': 'Puedes cambiarlo más tarde en /settings.',
|
|
220
|
+
'onboard.provider.title': 'proveedor',
|
|
221
|
+
'onboard.provider.placeholder': 'escribe para buscar un proveedor',
|
|
222
|
+
'onboard.provider.note': 'El servicio que te da los modelos. ¿No está en la lista? Elige Dirección propia.',
|
|
223
|
+
'onboard.custom': 'Dirección propia',
|
|
224
|
+
'onboard.customDetail': 'Cualquier dirección compatible con OpenAI',
|
|
225
|
+
'onboard.baseUrl.title': 'dirección',
|
|
226
|
+
'onboard.baseUrl.label': 'URL base de la API',
|
|
227
|
+
'onboard.baseUrl.placeholder': 'https://api.example.com/v1',
|
|
228
|
+
'onboard.key.title': 'clave de api',
|
|
229
|
+
'onboard.key.label': 'Pega tu clave de API para {provider}',
|
|
230
|
+
'onboard.key.note': 'Lo que escribes está oculto. Esc vuelve atrás.',
|
|
231
|
+
'onboard.key.useSaved': 'Usar la clave guardada',
|
|
232
|
+
'onboard.key.enterNew': 'Introducir una clave nueva',
|
|
233
|
+
'onboard.key.savedTitle': 'hay una clave guardada para {provider}',
|
|
234
|
+
'onboard.model.title': 'modelo',
|
|
235
|
+
'onboard.model.placeholder': 'escribe para buscar un modelo',
|
|
236
|
+
'onboard.model.custom': 'Escribir el nombre de un modelo',
|
|
237
|
+
'onboard.model.customDetail': 'Cualquier id de modelo',
|
|
238
|
+
'onboard.model.label': 'Nombre del modelo (por ejemplo gpt-4o)',
|
|
239
|
+
'onboard.model.fetching': 'Obteniendo la lista de modelos...',
|
|
240
|
+
'onboard.model.manual': 'No se pudo obtener la lista de modelos, escribe el nombre del modelo.',
|
|
241
|
+
'onboard.model.context': 'contexto de {n}',
|
|
242
|
+
'onboard.model.anthropic': 'formato Anthropic',
|
|
243
|
+
'onboard.back': 'Atrás',
|
|
244
|
+
'onboard.back.detail': 'Mantener lo actual',
|
|
245
|
+
'onboard.done': 'Listo. Tu elección está guardada en ~/.devxrc.json.',
|
|
246
|
+
'finder.placeholder': 'escribe para filtrar',
|
|
247
|
+
'finder.empty': 'Nada coincide',
|
|
248
|
+
'finder.hint.filter': 'filtrar',
|
|
249
|
+
'picker.hint.move': 'mover',
|
|
250
|
+
'picker.hint.select': 'elegir',
|
|
251
|
+
'picker.hint.cancel': 'cancelar',
|
|
252
|
+
'picker.hint.confirm': 'confirmar',
|
|
253
|
+
'welcome.step.theme': 'Tema',
|
|
254
|
+
'onboard.theme.title': 'tema',
|
|
255
|
+
'onboard.theme.note': 'Los colores de la interfaz. Puedes cambiarlos cuando quieras con /theme.',
|
|
256
|
+
'resume.title': 'reanudar',
|
|
257
|
+
'resume.placeholder': 'escribe para filtrar sesiones',
|
|
258
|
+
'resume.msgs': '{n} msjs',
|
|
259
|
+
'sessions.deleteTitle': 'borrar sesiones',
|
|
260
|
+
'sessions.deleteAll': 'Borrar las {n} sesiones',
|
|
261
|
+
'commands.title': 'comandos',
|
|
262
|
+
'commands.placeholder': 'escribe para buscar un comando',
|
|
263
|
+
'compact.done': 'Contexto compactado, resumen guardado',
|
|
264
|
+
'compact.summary': 'lo que escribió el modelo',
|
|
265
|
+
};
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
export const fr = {
|
|
2
|
+
'net.unknown': 'Erreur réseau inconnue',
|
|
3
|
+
'net.rateLimit': 'Limite de requêtes de l’API dépassée (429)',
|
|
4
|
+
'net.badGateway': 'Passerelle du fournisseur momentanément indisponible (502)',
|
|
5
|
+
'net.unavailable': 'Serveur du fournisseur surchargé (503)',
|
|
6
|
+
'net.gatewayTimeout': 'Délai dépassé sur la passerelle du fournisseur (504)',
|
|
7
|
+
'net.offline': 'Pas de connexion réseau ou échec DNS (offline)',
|
|
8
|
+
'net.reset': 'La connexion au serveur a été réinitialisée',
|
|
9
|
+
'net.timeout': 'Délai de la connexion réseau dépassé',
|
|
10
|
+
'net.refused': 'Le serveur a refusé la connexion',
|
|
11
|
+
'net.fetchFailed': 'Échec de la requête réseau (connexion interrompue)',
|
|
12
|
+
'net.generic': 'Panne de la connexion internet',
|
|
13
|
+
'net.failedAfter': 'Erreur réseau : connexion non rétablie après {n} tentatives ({reason}).',
|
|
14
|
+
'conn.unstable': 'connexion instable ({reason})',
|
|
15
|
+
'conn.reconnecting': 'reconnexion {attempt}/{max} · nouvel essai dans {delay} s',
|
|
16
|
+
'conn.restored': 'connexion rétablie',
|
|
17
|
+
'conn.classicUnstable': 'Connexion instable ({reason})',
|
|
18
|
+
'conn.classicRetry': 'Reconnexion [{attempt}/{max}] (pause {delay} s)...',
|
|
19
|
+
'conn.classicWaiting': 'En attente du réseau [{attempt}/{max}]...',
|
|
20
|
+
'conn.classicRestored': '✓ Connexion rétablie ! La génération reprend...',
|
|
21
|
+
'stop.connection': 'connexion annulée',
|
|
22
|
+
'stop.stopped': 'arrêté',
|
|
23
|
+
'stop.interrupted': 'interrompu, envoi de votre message',
|
|
24
|
+
'stop.classicConnection': 'Connexion annulée (Ctrl+C).',
|
|
25
|
+
'stop.classicStopped': 'Génération arrêtée (Ctrl+C).',
|
|
26
|
+
'stop.classicInterrupted': 'Interrompu : envoi de votre message.',
|
|
27
|
+
'status.waiting': 'En attente du modèle',
|
|
28
|
+
'status.thinking': 'Réflexion',
|
|
29
|
+
'status.writing': 'Écriture',
|
|
30
|
+
'status.running': 'Exécution',
|
|
31
|
+
'status.reconnecting': 'Reconnexion',
|
|
32
|
+
'status.stop': 'ctrl+c pour arrêter',
|
|
33
|
+
'status.thinkingLine': 'réflexion',
|
|
34
|
+
'status.thoughtFor': 'réfléchi {sec} s',
|
|
35
|
+
'composer.placeholder': 'Décrivez une tâche ou posez une question…',
|
|
36
|
+
'composer.queued': 'en file',
|
|
37
|
+
'composer.queuedMany': '{n} en file',
|
|
38
|
+
'composer.queuedHint': 'ctrl+entrée envoie · ↓ modifier',
|
|
39
|
+
'composer.hint1': 'entrée en file · ctrl+c arrête',
|
|
40
|
+
'composer.hint2': 'entrée en file',
|
|
41
|
+
'composer.hint3': 'entrée en file · ctrl+c arrête',
|
|
42
|
+
'composer.hint4': 'entrée en file',
|
|
43
|
+
'summary.toolOne': '{n} outil',
|
|
44
|
+
'summary.toolMany': '{n} outils',
|
|
45
|
+
'summary.in': '{n} entrée',
|
|
46
|
+
'summary.out': '{n} sortie',
|
|
47
|
+
'summary.stopped': 'arrêté',
|
|
48
|
+
'settings.title': 'réglages',
|
|
49
|
+
'settings.section.appearance': 'Apparence',
|
|
50
|
+
'settings.section.agent': 'Agent',
|
|
51
|
+
'settings.section.general': 'Général',
|
|
52
|
+
'settings.section.about': 'À propos',
|
|
53
|
+
'settings.row.theme': 'Thème',
|
|
54
|
+
'settings.row.layout': 'Interface',
|
|
55
|
+
'settings.row.pureBlack': 'Fond noir',
|
|
56
|
+
'settings.row.autoApprove': 'Auto-approbation (YOLO)',
|
|
57
|
+
'settings.row.maxIterations': 'Étapes max.',
|
|
58
|
+
'settings.row.memory': 'Mémoire du projet',
|
|
59
|
+
'settings.row.updates': 'Mises à jour',
|
|
60
|
+
'settings.row.language': 'Langue',
|
|
61
|
+
'settings.row.about': 'À propos de devx',
|
|
62
|
+
'settings.short.theme': 'Thème',
|
|
63
|
+
'settings.short.layout': 'Interface',
|
|
64
|
+
'settings.short.pureBlack': 'Fond noir',
|
|
65
|
+
'settings.short.autoApprove': 'YOLO',
|
|
66
|
+
'settings.short.maxIterations': 'Étapes',
|
|
67
|
+
'settings.short.memory': 'Mémoire',
|
|
68
|
+
'settings.short.updates': 'MAJ',
|
|
69
|
+
'settings.short.language': 'Langue',
|
|
70
|
+
'settings.short.about': 'À propos',
|
|
71
|
+
'settings.value.on': 'oui',
|
|
72
|
+
'settings.value.off': 'non',
|
|
73
|
+
'settings.value.clean': 'Épurée',
|
|
74
|
+
'settings.value.classic': 'Classique',
|
|
75
|
+
'settings.value.unlimited': 'illimité',
|
|
76
|
+
'settings.value.steps': '{n} étapes',
|
|
77
|
+
'settings.hint.theme': 'Couleurs de toute l’interface. Gauche et droite parcourent les thèmes, le panneau change de couleur aussitôt.',
|
|
78
|
+
'settings.hint.layout': 'Épurée : saisie encadrée, cartes et lignes d’outils discrètes. Classique : la mise en page ASCII d’origine.',
|
|
79
|
+
'settings.hint.pureBlack': 'Met le fond du terminal en noir OLED profond (#0a0a0c). Désactivé : votre propre fond est conservé.',
|
|
80
|
+
'settings.hint.autoApprove': 'Saute les demandes d’autorisation courantes. Les commandes dangereuses et les fichiers d’identifiants demandent toujours. Valable pour cette session seulement : désactivé au prochain démarrage de devx.',
|
|
81
|
+
'settings.hint.maxIterations': 'Combien d’étapes avec outils (modifications, commandes) l’agent peut faire par demande.',
|
|
82
|
+
'settings.hint.memory': 'Charge les règles de .devx/memory.md dans chaque session.',
|
|
83
|
+
'settings.hint.updates': 'Cherche une nouvelle version de devx sur GitHub au démarrage. /update fonctionne dans tous les cas.',
|
|
84
|
+
'settings.hint.language': 'Langue de l’interface : messages, réglages et conseils. Le code et les noms d’outils restent en anglais.',
|
|
85
|
+
'settings.hint.about': 'Agent de programmation IA pour le terminal, par ApvCode. Licence MIT. github.com/apvcode/Termux-Dev',
|
|
86
|
+
'settings.warnYolo': 'Activé : l’agent exécute des commandes et modifie des fichiers sans demander.',
|
|
87
|
+
'settings.keys.move': 'choisir',
|
|
88
|
+
'settings.keys.change': 'modifier',
|
|
89
|
+
'settings.keys.toggle': 'basculer',
|
|
90
|
+
'settings.keys.close': 'fermer',
|
|
91
|
+
// ── /mcp panel
|
|
92
|
+
'mcp.title': 'Serveurs MCP',
|
|
93
|
+
'mcp.count': 'serveurs : {n}',
|
|
94
|
+
'mcp.scope.user': 'Serveurs de l’utilisateur',
|
|
95
|
+
'mcp.scope.project': 'Serveurs du projet',
|
|
96
|
+
'mcp.toolsCount': 'outils : {n}',
|
|
97
|
+
'mcp.status.connected': 'connecté',
|
|
98
|
+
'mcp.status.connecting': 'connexion…',
|
|
99
|
+
'mcp.status.failed': 'échec',
|
|
100
|
+
'mcp.status.disabled': 'désactivé',
|
|
101
|
+
'mcp.empty': 'Aucun serveur MCP configuré.',
|
|
102
|
+
'mcp.emptyHint': 'Utilisez /mcp import pour reprendre les serveurs de Claude Code, ou /mcp add <nom> <commande> [args].',
|
|
103
|
+
'mcp.detail.status': 'État',
|
|
104
|
+
'mcp.detail.command': 'Commande',
|
|
105
|
+
'mcp.detail.config': 'Config',
|
|
106
|
+
'mcp.detail.capabilities': 'Capacités',
|
|
107
|
+
'mcp.detail.tools': 'Outils',
|
|
108
|
+
'mcp.detail.error': 'Erreur',
|
|
109
|
+
'mcp.action.tools': 'Voir les outils',
|
|
110
|
+
'mcp.action.reconnect': 'Reconnecter',
|
|
111
|
+
'mcp.action.disable': 'Désactiver',
|
|
112
|
+
'mcp.action.enable': 'Activer',
|
|
113
|
+
'mcp.toolsTitle': 'Outils de {name}',
|
|
114
|
+
'mcp.noTools': 'Ce serveur n’offre aucun outil.',
|
|
115
|
+
'mcp.tag.readOnly': 'lecture seule',
|
|
116
|
+
'mcp.tag.destructive': 'destructif',
|
|
117
|
+
'mcp.tag.openWorld': 'monde ouvert',
|
|
118
|
+
'mcp.params': 'Paramètres',
|
|
119
|
+
'mcp.noParams': 'Aucun paramètre.',
|
|
120
|
+
'mcp.required': 'requis',
|
|
121
|
+
'mcp.more': '{n} de plus',
|
|
122
|
+
'mcp.keys.open': 'ouvrir',
|
|
123
|
+
'mcp.keys.back': 'retour',
|
|
124
|
+
'mcp.keys.reload': 'tout recharger',
|
|
125
|
+
'mcp.keys.close': 'fermer',
|
|
126
|
+
// ── questions from the agent
|
|
127
|
+
'questions.title': 'Question',
|
|
128
|
+
'questions.custom': 'Saisir ma réponse…',
|
|
129
|
+
'questions.skip': 'Passer',
|
|
130
|
+
'questions.skipped': '(passée)',
|
|
131
|
+
'questions.yourAnswer': 'Votre réponse :',
|
|
132
|
+
'questions.empty': 'La réponse ne peut pas être vide',
|
|
133
|
+
// ── confirmations
|
|
134
|
+
'confirm.yes': 'Oui',
|
|
135
|
+
'confirm.no': 'Non',
|
|
136
|
+
'confirm.exitTitle': 'quitter',
|
|
137
|
+
'confirm.exit': 'Quitter devx ?',
|
|
138
|
+
'confirm.goodbye': 'À bientôt',
|
|
139
|
+
'confirm.deleteAll': 'Supprimer TOUTES les {n} sessions enregistrées ?',
|
|
140
|
+
'confirm.update': 'Mettre à jour devx vers v{version} maintenant ?',
|
|
141
|
+
'confirm.commit': 'Valider les changements avec ce message ?',
|
|
142
|
+
'trust.title': 'confiance dans le dossier',
|
|
143
|
+
'trust.question': 'Première fois dans ce dossier. Lui faire confiance et laisser l’agent y travailler ?',
|
|
144
|
+
'trust.yes': 'Oui, faire confiance à ce dossier',
|
|
145
|
+
'trust.no': 'Non, quitter',
|
|
146
|
+
'trust.wantsYolo': 'La config du projet demande l’auto-approbation (YOLO)',
|
|
147
|
+
'trust.wantsAllowlist': 'La config du projet autorise ces commandes : {list}',
|
|
148
|
+
'trust.exiting': 'Dossier non approuvé, devx se ferme',
|
|
149
|
+
'trust.mcpQuestion': 'Ce projet veut démarrer des serveurs MCP (programmes locaux, listés ci-dessus). Autoriser ?',
|
|
150
|
+
// ── view switches
|
|
151
|
+
'view.expandThought': 'ctrl+p pour déplier',
|
|
152
|
+
'view.expandOutput': 'ctrl+o pour déplier',
|
|
153
|
+
'view.moreLines': '… +{n} lignes',
|
|
154
|
+
// ── plan approval
|
|
155
|
+
'plan.cardTitle': 'Plan',
|
|
156
|
+
'plan.files': 'Fichiers',
|
|
157
|
+
'plan.ready': 'Le plan est prêt. Commencer le travail ?',
|
|
158
|
+
'plan.go': 'Go : passer en mode AGENT et commencer',
|
|
159
|
+
'plan.edit': 'Modifier le plan (rester en mode PLAN)',
|
|
160
|
+
'plan.editHint': 'Dites quoi changer : le plan reste en mode PLAN et sera refait.',
|
|
161
|
+
'plan.started': 'Mode AGENT : travail sur le plan approuvé',
|
|
162
|
+
// ── undo
|
|
163
|
+
'undo.question': 'Remettre {n} fichier(s) dans l’état d’avant le dernier tour ?',
|
|
164
|
+
'undo.note': 'Inclut ce que les commandes shell ont fait. Les fichiers ignorés par git ne sont pas touchés.',
|
|
165
|
+
'undo.done': '{n} fichier(s) restauré(s)',
|
|
166
|
+
// ── permissions
|
|
167
|
+
'permissions.title': 'Autorisé sans demander',
|
|
168
|
+
'permissions.none': 'Rien n’est encore autorisé sans demander : répondez « Session » ou « Always » sur une carte d’approbation.',
|
|
169
|
+
'permissions.hint': '/permissions clear supprime tout (aussi ce qui est pour la session).',
|
|
170
|
+
'permissions.cleared': 'Tout ce qui était autorisé sans demander a été supprimé',
|
|
171
|
+
// ── cost limit
|
|
172
|
+
'settings.row.costLimit': 'Limite de coût',
|
|
173
|
+
'settings.short.costLimit': 'Limite $',
|
|
174
|
+
'settings.hint.costLimit': 'Le maximum qu’une session peut coûter. À 80 % devx prévient, à la limite il arrête la tâche et demande avant de dépenser plus.',
|
|
175
|
+
'cost.title': 'limite de coût',
|
|
176
|
+
'cost.warn': '{spent} dépensés : 80 % de la limite de {limit} de cette session',
|
|
177
|
+
'cost.stopped': 'Limite de coût de {limit} atteinte : la tâche est arrêtée',
|
|
178
|
+
'cost.reached': 'Cette session a dépensé {spent} sur sa limite de {limit}. Dépenser plus ?',
|
|
179
|
+
'cost.raise': 'Continuer porte la limite de cette session à {limit}.',
|
|
180
|
+
'cost.continue': 'Oui, continuer',
|
|
181
|
+
'cost.cancel': 'Non, pas maintenant',
|
|
182
|
+
'cost.cancelled': 'Rien n’a été envoyé. Votre message est revenu dans la ligne de saisie.',
|
|
183
|
+
// ── /copy and /rename
|
|
184
|
+
'copy.none': 'Il n’y a pas encore de réponse à copier.',
|
|
185
|
+
'copy.done': 'Dernière réponse copiée ({n} caractères)',
|
|
186
|
+
'copy.failed': 'Presse-papiers inaccessible (ni wl-copy, xclip, xsel, et la réponse est trop longue pour le terminal).',
|
|
187
|
+
'rename.done': 'Chat renommé : {name}',
|
|
188
|
+
'rename.usage': 'Usage : /rename <nom>. Sans nom, l’IA renomme le chat dès qu’il y a une première réponse.',
|
|
189
|
+
'rename.failed': 'L’IA n’a pas trouvé de nom. Réessayez ou donnez-en un : /rename <nom>.',
|
|
190
|
+
// ── memory
|
|
191
|
+
'memory.capped': 'La mémoire est longue : {n} des faits les plus anciens ne sont pas envoyés au modèle (seuls les récents tiennent). Supprimez les anciens de .devx/memory.md.',
|
|
192
|
+
'mcp.removeUsage': 'Usage : /mcp remove <nom>',
|
|
193
|
+
'mcp.removeNotFound': '« {name} » n’est pas dans ~/.devx/mcp.json. Un serveur d’un autre fichier (le projet, ~/.devxrc.json) doit être retiré à la main de ce fichier.',
|
|
194
|
+
'mcp.removed': 'Serveur « {name} » supprimé',
|
|
195
|
+
// ── /rewind
|
|
196
|
+
'rewind.title': 'revenir en arrière',
|
|
197
|
+
'rewind.count': '{n} messages',
|
|
198
|
+
'rewind.current': '(actuel : rester ici)',
|
|
199
|
+
'rewind.none': 'Il n’y a pas encore de message de vous auquel revenir.',
|
|
200
|
+
'rewind.later': '{n} après',
|
|
201
|
+
'rewind.ago.now': 'à l’instant',
|
|
202
|
+
'rewind.ago.min': 'il y a {n} min',
|
|
203
|
+
'rewind.ago.hour': 'il y a {n} h',
|
|
204
|
+
'rewind.ago.day': 'il y a {n} j',
|
|
205
|
+
'rewind.filesQuestion': 'Remettre aussi les fichiers ({n}) dans leur état d’alors ?',
|
|
206
|
+
'rewind.filesYes': 'Oui, les fichiers aussi',
|
|
207
|
+
'rewind.filesNo': 'Non, seulement la conversation',
|
|
208
|
+
'rewind.done': 'De retour à votre message. Ce qui a suivi a disparu, pour le modèle aussi. Modifiez le message et envoyez-le.',
|
|
209
|
+
'rewind.doneImages': 'De retour à votre message (ses images n’ont pas été gardées, joignez-les de nouveau). Ce qui a suivi a disparu, pour le modèle aussi.',
|
|
210
|
+
// ── first run and the prompts around it
|
|
211
|
+
'welcome.tagline': 'Un agent de programmation IA pour le terminal',
|
|
212
|
+
'welcome.intro': 'Configurons tout. Cela prend environ une minute.',
|
|
213
|
+
'welcome.step.language': 'Langue',
|
|
214
|
+
'welcome.step.provider': 'Fournisseur',
|
|
215
|
+
'welcome.step.key': 'Clé API',
|
|
216
|
+
'welcome.step.model': 'Modèle',
|
|
217
|
+
'welcome.keyNote': 'Ta clé reste sur cet ordinateur, dans ~/.devxrc.json.',
|
|
218
|
+
'onboard.language.title': 'langue',
|
|
219
|
+
'onboard.language.note': 'Tu pourras la changer plus tard dans /settings.',
|
|
220
|
+
'onboard.provider.title': 'fournisseur',
|
|
221
|
+
'onboard.provider.placeholder': 'tape pour trouver un fournisseur',
|
|
222
|
+
'onboard.provider.note': 'Le service qui te donne les modèles. Pas dans la liste ? Choisis Adresse personnalisée.',
|
|
223
|
+
'onboard.custom': 'Adresse personnalisée',
|
|
224
|
+
'onboard.customDetail': 'Toute adresse compatible OpenAI',
|
|
225
|
+
'onboard.baseUrl.title': 'adresse',
|
|
226
|
+
'onboard.baseUrl.label': 'URL de base de l’API',
|
|
227
|
+
'onboard.baseUrl.placeholder': 'https://api.example.com/v1',
|
|
228
|
+
'onboard.key.title': 'clé api',
|
|
229
|
+
'onboard.key.label': 'Colle ta clé API pour {provider}',
|
|
230
|
+
'onboard.key.note': 'Ce que tu tapes est masqué. Échap revient en arrière.',
|
|
231
|
+
'onboard.key.useSaved': 'Utiliser la clé enregistrée',
|
|
232
|
+
'onboard.key.enterNew': 'Saisir une nouvelle clé',
|
|
233
|
+
'onboard.key.savedTitle': 'une clé est enregistrée pour {provider}',
|
|
234
|
+
'onboard.model.title': 'modèle',
|
|
235
|
+
'onboard.model.placeholder': 'tape pour trouver un modèle',
|
|
236
|
+
'onboard.model.custom': 'Saisir un nom de modèle',
|
|
237
|
+
'onboard.model.customDetail': 'Tout identifiant de modèle',
|
|
238
|
+
'onboard.model.label': 'Nom du modèle (par exemple gpt-4o)',
|
|
239
|
+
'onboard.model.fetching': 'Récupération de la liste des modèles...',
|
|
240
|
+
'onboard.model.manual': 'La liste des modèles n’a pas pu être récupérée, saisis le nom du modèle.',
|
|
241
|
+
'onboard.model.context': 'contexte de {n}',
|
|
242
|
+
'onboard.model.anthropic': 'format Anthropic',
|
|
243
|
+
'onboard.back': 'Retour',
|
|
244
|
+
'onboard.back.detail': 'Garder le réglage actuel',
|
|
245
|
+
'onboard.done': 'Terminé. Tes choix sont enregistrés dans ~/.devxrc.json.',
|
|
246
|
+
'finder.placeholder': 'tape pour filtrer',
|
|
247
|
+
'finder.empty': 'Aucun résultat',
|
|
248
|
+
'finder.hint.filter': 'filtrer',
|
|
249
|
+
'picker.hint.move': 'déplacer',
|
|
250
|
+
'picker.hint.select': 'choisir',
|
|
251
|
+
'picker.hint.cancel': 'annuler',
|
|
252
|
+
'picker.hint.confirm': 'confirmer',
|
|
253
|
+
'welcome.step.theme': 'Thème',
|
|
254
|
+
'onboard.theme.title': 'thème',
|
|
255
|
+
'onboard.theme.note': 'Les couleurs de l’interface. Tu peux les changer à tout moment avec /theme.',
|
|
256
|
+
'resume.title': 'reprendre',
|
|
257
|
+
'resume.placeholder': 'tape pour filtrer les sessions',
|
|
258
|
+
'resume.msgs': '{n} msgs',
|
|
259
|
+
'sessions.deleteTitle': 'supprimer des sessions',
|
|
260
|
+
'sessions.deleteAll': 'Supprimer les {n} sessions',
|
|
261
|
+
'commands.title': 'commandes',
|
|
262
|
+
'commands.placeholder': 'tape pour trouver une commande',
|
|
263
|
+
'compact.done': 'Contexte compacté, résumé conservé',
|
|
264
|
+
'compact.summary': 'ce que le modèle a écrit',
|
|
265
|
+
};
|