@things-factory/ai-assistant 10.1.142 → 10.1.146
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/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/test/assistant-session-manager.test.ts +1 -1
- package/test/entry-proposal.test.ts +2 -2
- package/translations/es.json +321 -0
- package/translations/ja.json +9 -1
- package/translations/ms.json +9 -1
- package/translations/zh.json +9 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@things-factory/ai-assistant",
|
|
3
|
-
"version": "10.1.
|
|
3
|
+
"version": "10.1.146",
|
|
4
4
|
"main": "dist-server/index.js",
|
|
5
5
|
"things-factory": true,
|
|
6
6
|
"author": "heartyoh",
|
|
@@ -34,11 +34,11 @@
|
|
|
34
34
|
"@operato/shell": "^10.0.0",
|
|
35
35
|
"@operato/styles": "^10.0.0",
|
|
36
36
|
"@things-factory/ai-client-base": "^10.1.129",
|
|
37
|
-
"@things-factory/apptool-base": "^10.1.
|
|
38
|
-
"@things-factory/attachment-base": "^10.1.
|
|
39
|
-
"@things-factory/auth-base": "^10.1.
|
|
37
|
+
"@things-factory/apptool-base": "^10.1.146",
|
|
38
|
+
"@things-factory/attachment-base": "^10.1.146",
|
|
39
|
+
"@things-factory/auth-base": "^10.1.146",
|
|
40
40
|
"@things-factory/env": "^10.1.20",
|
|
41
|
-
"@things-factory/shell": "^10.1.
|
|
41
|
+
"@things-factory/shell": "^10.1.146",
|
|
42
42
|
"dompurify": "^3.0.0",
|
|
43
43
|
"exceljs": "4.2.0",
|
|
44
44
|
"graphql-scalars": "^1.22.0",
|
|
@@ -52,5 +52,5 @@
|
|
|
52
52
|
"copyfiles": "^2.4.1",
|
|
53
53
|
"rimraf": "^5.0.0"
|
|
54
54
|
},
|
|
55
|
-
"gitHead": "
|
|
55
|
+
"gitHead": "7aeb3de935ec913d271866b27d931b2278259c13"
|
|
56
56
|
}
|
|
@@ -110,7 +110,7 @@ describe('every word is in every locale', () => {
|
|
|
110
110
|
assert.ok(keys.length >= 20, `found only ${keys.length}`)
|
|
111
111
|
})
|
|
112
112
|
|
|
113
|
-
for (const locale of ['en', 'ko', 'ja', 'zh', 'ms']) {
|
|
113
|
+
for (const locale of ['en', 'ko', 'ja', 'zh', 'ms', 'es']) {
|
|
114
114
|
it(locale, () => {
|
|
115
115
|
const dictionary = JSON.parse(read(`../translations/${locale}.json`))
|
|
116
116
|
assert.deepEqual(keys.filter(key => !dictionary[key]), [])
|
|
@@ -35,10 +35,10 @@ describe('the entry card', () => {
|
|
|
35
35
|
/* The framework's own declarers; the applications hold the same rule in their translations. */
|
|
36
36
|
const offending: string[] = []
|
|
37
37
|
for (const root of ['../../ops-master', '../../organization', '../../i18n-base'])
|
|
38
|
-
for (const lang of ['ko', 'ja', 'zh', 'ms']) {
|
|
38
|
+
for (const lang of ['ko', 'ja', 'zh', 'ms', 'es']) {
|
|
39
39
|
const table: Record<string, string> = JSON.parse(readFileSync(join(__dirname, root, 'translations', `${lang}.json`), 'utf8'))
|
|
40
40
|
for (const [key, value] of Object.entries(table))
|
|
41
|
-
if (/^label\.[a-z0-9-]+-entry-/.test(key) && /입력안|수정안|入力案|录入方案|cadangan/.test(value)) offending.push(`${root}/${lang}: ${key}`)
|
|
41
|
+
if (/^label\.[a-z0-9-]+-entry-/.test(key) && /입력안|수정안|入力案|录入方案|cadangan|propuesta/.test(value)) offending.push(`${root}/${lang}: ${key}`)
|
|
42
42
|
}
|
|
43
43
|
expect(offending).toEqual([])
|
|
44
44
|
})
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
{
|
|
2
|
+
"ai-assistant.dock.wait-before-switch": "Espere a que termine la respuesta actual antes de cambiar de conversación.",
|
|
3
|
+
"ai-assistant.dock.switch-title": "¿Cambiar de conversación?",
|
|
4
|
+
"ai-assistant.dock.switch-draft": "El texto no enviado y los archivos adjuntos no se trasladarán a la otra conversación.",
|
|
5
|
+
"ai-assistant.dock.switch-confirm": "Descartar borrador y cambiar",
|
|
6
|
+
"ai-assistant.dock.stay": "Seguir escribiendo",
|
|
7
|
+
"ai-assistant.dock.now-about": "Tema de la conversación: {name}",
|
|
8
|
+
"ai-assistant.dock.ask-kept-current": "Se mantuvo la conversación actual. Cambie al tema deseado antes de volver a preguntar.",
|
|
9
|
+
"ai-assistant.dock.return-to-subject": "Vuelva al tema de la conversación antes de enviar o aplicar cambios.",
|
|
10
|
+
"ai-assistant.dock.screen-and-conversation": "Pantalla: {screen}. Conversación: {conversation}. Se ha mantenido su conversación.",
|
|
11
|
+
"ai-assistant.dock.no-subject": "Sin tema",
|
|
12
|
+
"ai-assistant.dock.switch-to-screen": "Hablar sobre esta pantalla",
|
|
13
|
+
"ai-assistant.session.filters": "Filtros",
|
|
14
|
+
"ai-assistant.session.reset-filters": "Borrar búsqueda y filtros",
|
|
15
|
+
"ai-assistant.session.filtered-empty": "Ninguna conversación coincide aquí con estos filtros.",
|
|
16
|
+
"ai-assistant.session.scope-empty": "Aún no hay conversaciones sobre este tema.",
|
|
17
|
+
"ai-assistant.session.audience-private": "Solo participantes",
|
|
18
|
+
"ai-assistant.session.audience-open": "Todos en este dominio",
|
|
19
|
+
"ai-assistant.session.manage": "Gestionar conversación",
|
|
20
|
+
"ai-assistant.session.list": "Conversaciones",
|
|
21
|
+
"ai-assistant.dock.conversation-scope": "Conversaciones · {name}",
|
|
22
|
+
"ai-assistant.session.search-too-broad": "Hay demasiados mensajes para buscar aquí. Acote los filtros de conversación e inténtelo de nuevo.",
|
|
23
|
+
"ai-assistant.session.new": "Nueva conversación",
|
|
24
|
+
"ai-assistant.session.history": "Historial de conversaciones",
|
|
25
|
+
"ai-assistant.session.reset": "Nueva conversación",
|
|
26
|
+
"ai-assistant.session.reset-help": "Conserva el historial anterior y su trabajo, e inicia una nueva conversación. Los mensajes anteriores se excluyen de las solicitudes siguientes.",
|
|
27
|
+
"ai-assistant.session.loading": "Cargando historial de conversaciones…",
|
|
28
|
+
"ai-assistant.session.retry": "Reintentar",
|
|
29
|
+
"ai-assistant.label.ai": "operato",
|
|
30
|
+
"ai-assistant.label.participant": "participante",
|
|
31
|
+
"ai-assistant.label.create": "Crear",
|
|
32
|
+
"ai-assistant.label.edit": "Editar",
|
|
33
|
+
"ai-assistant.label.style": "Estilo",
|
|
34
|
+
"ai-assistant.label.korean-supported": "Coreano / inglés",
|
|
35
|
+
"ai-assistant.label.multi-command": "Comandos por lotes",
|
|
36
|
+
"ai-assistant.label.review-able": "Revisable",
|
|
37
|
+
"ai-assistant.text.empty-title": "Diseñe un tablero junto con la IA",
|
|
38
|
+
"ai-assistant.text.empty-subtitle": "Descríbalo en lenguaje natural y la IA creará, editará y aplicará estilo al tablero. Haga clic en un ejemplo de abajo para empezar.",
|
|
39
|
+
"ai-assistant.text.input-placeholder": "Describa lo que desea — # componente · @ catálogo · / autocompletar plantilla",
|
|
40
|
+
"ai-assistant.text.triggers-heading": "O empiece con el autocompletado",
|
|
41
|
+
"ai-assistant.text.trigger-component-tooltip": "Mencionar un componente del tablero",
|
|
42
|
+
"ai-assistant.text.trigger-user-tooltip": "Mencionar a un compañero del dominio",
|
|
43
|
+
"ai-assistant.text.trigger-insert-tooltip": "Insertar plantilla de prefab / paleta / diseño / comando",
|
|
44
|
+
"ai-assistant.text.send-tooltip": "Enviar (Enter)",
|
|
45
|
+
"ai-assistant.text.show-examples-tooltip": "Mostrar ejemplos de comandos habituales",
|
|
46
|
+
"ai-assistant.text.applied-changes": "Aplicado.",
|
|
47
|
+
"ai-assistant.text.reverted": "Revertido",
|
|
48
|
+
"ai-assistant.text.failed-to-load-history": "No se pudo cargar el historial",
|
|
49
|
+
"ai-assistant.text.empty-response": "Respuesta vacía.",
|
|
50
|
+
"ai-assistant.example.create-monitoring-dashboard": "Panel de supervisión con 3 indicadores (utilización, temperatura, presión) y un gráfico de líneas de 24 horas",
|
|
51
|
+
"ai-assistant.example.create-welcome-screen": "Pantalla de bienvenida con un título grande 'OPERATO', un reloj y un subtítulo",
|
|
52
|
+
"ai-assistant.example.edit-align-distribute": "Centrar los componentes seleccionados y distribuirlos uniformemente",
|
|
53
|
+
"ai-assistant.example.edit-resize-board": "Cambiar el tamaño del tablero a 1920x1080 y centrar los componentes",
|
|
54
|
+
"ai-assistant.example.style-dark-mode": "Modo oscuro — fondo azul marino oscuro, texto blanco, acentos verde azulado",
|
|
55
|
+
"ai-assistant.example.style-rounded-shadow": "Redondear las esquinas de todas las formas y añadir una sombra de tarjeta suave",
|
|
56
|
+
"ai-assistant.button.new-chat": "Nuevo chat",
|
|
57
|
+
"ai-assistant.label.trigger-component": "Componente",
|
|
58
|
+
"ai-assistant.label.trigger-user": "Usuario",
|
|
59
|
+
"ai-assistant.label.trigger-insert": "Insertar",
|
|
60
|
+
"ai-assistant.button.examples": "Ejemplos",
|
|
61
|
+
"ai-assistant.button.close": "Cerrar",
|
|
62
|
+
"ai-assistant.button.revert": "Revertir",
|
|
63
|
+
"ai-assistant.button.retry": "Reintentar",
|
|
64
|
+
"ai-assistant.button.copy": "Copiar",
|
|
65
|
+
"ai-assistant.button.regenerate": "Regenerar",
|
|
66
|
+
"ai-assistant.button.edit": "Editar",
|
|
67
|
+
"ai-assistant.text.copied": "Copiado",
|
|
68
|
+
"ai-assistant.text.mention-not-found": "No se encontró #{token}",
|
|
69
|
+
"ai-assistant.text.session-tab-label": "Sesión {n}",
|
|
70
|
+
"ai-assistant.text.tools-used": "Herramientas usadas",
|
|
71
|
+
"ai-assistant.text.tool-turn": "decisión {n}",
|
|
72
|
+
"ai-assistant.text.tool-rejected-count": "rechazadas {count}",
|
|
73
|
+
"ai-assistant.text.tool-folded-count": "plegadas {count}",
|
|
74
|
+
"ai-assistant.text.outcome-applied": "aplicado",
|
|
75
|
+
"ai-assistant.text.outcome-ok": "consultado",
|
|
76
|
+
"ai-assistant.text.outcome-rejected": "rechazado",
|
|
77
|
+
"ai-assistant.text.outcome-queued": "por aplicar",
|
|
78
|
+
"ai-assistant.text.outcome-proposed": "propuesto",
|
|
79
|
+
"ai-assistant.text.outcome-folded": "duplicado",
|
|
80
|
+
"ai-assistant.text.outcome-error": "error",
|
|
81
|
+
"ai-assistant.text.ungrounded-mention": "Menciona un objetivo no verificado que no existe en los datos reales:",
|
|
82
|
+
"ai-assistant.text.toggle-system-note": "haga clic para ampliar",
|
|
83
|
+
"ai-assistant.button.run-proposal": "ejecutar",
|
|
84
|
+
"ai-assistant.text.history-folded": "esta conversación se ha alargado: se omitieron los {count} mensajes anteriores. para otro tema es mejor una nueva conversación.",
|
|
85
|
+
"ai-assistant.text.history-folded-summarized": "esta conversación se ha alargado: los {count} mensajes anteriores se resumieron. para otro tema es mejor una nueva conversación.",
|
|
86
|
+
"ai-assistant.button.attach": "Adjuntar",
|
|
87
|
+
"ai-assistant.tooltip.attach-file": "adjuntar una imagen (admite arrastrar y soltar o pegar)",
|
|
88
|
+
"ai-assistant.text.drop-files-here": "Suelte aquí imágenes o archivos",
|
|
89
|
+
"ai-assistant.button.remove-attachment": "Quitar archivo adjunto",
|
|
90
|
+
"ai-assistant.session.all": "Todo el historial",
|
|
91
|
+
"ai-assistant.notice.stopped": "la solicitud se detuvo a mitad, por lo que solo se completó una parte.",
|
|
92
|
+
"ai-assistant.notice.provider-busy": "el servicio de IA no respondió en este momento. inténtelo de nuevo en un momento.",
|
|
93
|
+
"ai-assistant.notice.provider-error": "algo salió mal al procesar esto. avise a un administrador si sigue ocurriendo.",
|
|
94
|
+
"ai-assistant.notice.too-long": "se detuvo tras {iter} consultas sin obtener una respuesta.",
|
|
95
|
+
"ai-assistant.notice.tool-kept-failing": "{tool} falló {count} veces seguidas, así que se detuvo. intente decirlo de otra forma.",
|
|
96
|
+
"ai-assistant.text.no-match": "sin coincidencias",
|
|
97
|
+
"ai-assistant.text.messages-unreadable": "no se pudo leer esta conversación.",
|
|
98
|
+
"ai-assistant.text.sessions-unreadable": "no se pudo cargar la lista de conversaciones.",
|
|
99
|
+
"ai-assistant.text.session-not-created": "no se pudo iniciar una conversación.",
|
|
100
|
+
"ai-assistant.text.proposal-choices": "opciones para continuar",
|
|
101
|
+
"ai-assistant.text.attached-image-ask": "aquí tiene una imagen; básese en ella.",
|
|
102
|
+
"ai-assistant.text.attached-file-ask": "aquí tiene un archivo; échele un vistazo.",
|
|
103
|
+
"ai-assistant.text.other-figure-history": "esta conversación pertenece a otra figura. abra la conversación del modelo que tiene abierto.",
|
|
104
|
+
"ai-assistant.text.application-vs-model-history": "esta conversación trata sobre la aplicación, no sobre un modelo. abra la que desee.",
|
|
105
|
+
"ai-assistant.text.other-station-history": "esta conversación pertenece a otra pantalla de estación. abra la conversación de la pantalla en la que está.",
|
|
106
|
+
"ai-assistant.text.unknown-mode": "esta pantalla solicitó una conversación que este servidor no tiene ({kind}). recargue la página.",
|
|
107
|
+
"ai-assistant.session.default-name": "conversación {n}",
|
|
108
|
+
"ai-assistant.match.id": "ID",
|
|
109
|
+
"ai-assistant.match.name": "Nombre",
|
|
110
|
+
"ai-assistant.match.tag": "Etiqueta",
|
|
111
|
+
"ai-assistant.match.type": "Tipo",
|
|
112
|
+
"ai-assistant.match.class": "Clase",
|
|
113
|
+
"ai-assistant.match.text": "Texto",
|
|
114
|
+
"ai-assistant.match.data": "Datos",
|
|
115
|
+
"ai-assistant.match.property": "Prop.",
|
|
116
|
+
"ai-assistant.match.description": "Desc.",
|
|
117
|
+
"ai-assistant.candidate.template": "frase",
|
|
118
|
+
"ai-assistant.candidate.user": "persona",
|
|
119
|
+
"ai-assistant.text.match-count": "{shown} / {all} coincidencias",
|
|
120
|
+
"ai-assistant.text.match-overflow": "+{count} más; acote la búsqueda",
|
|
121
|
+
"ai-assistant.verdict.accepted": "hecho",
|
|
122
|
+
"ai-assistant.verdict.refused": "rechazado",
|
|
123
|
+
"ai-assistant.verdict.unavailable": "no se pudo ejecutar",
|
|
124
|
+
"ai-assistant.verdict.declined": "cancelado",
|
|
125
|
+
"ai-assistant.text.proposal-waiting": "enviando — {seconds} s, aún sin respuesta",
|
|
126
|
+
"ai-assistant.text.proposal-unconfirmed": "enviado antes — no se recibió respuesta",
|
|
127
|
+
"ai-assistant.button.check-proposal": "comprobar resultado",
|
|
128
|
+
"ai-assistant.dock.proposal-result-uncheckable": "esta pantalla no puede comprobar ese resultado. abra la pantalla donde se aplicó.",
|
|
129
|
+
"ai-assistant.dock.proposal-result-unknown": "el resultado aún se desconoce. no se volvió a aplicar.",
|
|
130
|
+
"ai-assistant.text.proposal-applied-count": " {applied} de {total}",
|
|
131
|
+
"ai-assistant.text.say-to-room-tooltip": "decírselo a las personas presentes; el asistente no responde",
|
|
132
|
+
"ai-assistant.text.no-room-yet": "esta conversación aún no se ha guardado, así que no hay nadie más en ella con quien hablar",
|
|
133
|
+
"ai-assistant.text.will-be-invited": "{names} se unirá a esta conversación cuando envíe el mensaje",
|
|
134
|
+
"ai-assistant.text.cannot-invite": "{names} no se unirá: solo las personas que ya están en esta conversación pueden incorporar a alguien",
|
|
135
|
+
"ai-assistant.text.answer-needs-permission": "no tiene permiso para ver esta respuesta. solicite acceso a un administrador.",
|
|
136
|
+
"ai-assistant.label.conversation": "conversación",
|
|
137
|
+
"ai-assistant.text.switch-conversation": "cambiar a {name}",
|
|
138
|
+
"ai-assistant.text.session-kind-mismatch": "esta conversación es {sessionKind} y usted está escribiendo como {requested}. abra la conversación que desea.",
|
|
139
|
+
"ai-assistant.session.search": "Buscar en nombres y mensajes de conversaciones",
|
|
140
|
+
"ai-assistant.session.filter": "Qué conversaciones",
|
|
141
|
+
"ai-assistant.session.filter-all": "Todas",
|
|
142
|
+
"ai-assistant.session.filter-mine": "Iniciadas por mí",
|
|
143
|
+
"ai-assistant.session.filter-hidden": "Incluir ocultas",
|
|
144
|
+
"ai-assistant.session.failed": "no se pudo cargar la lista de conversaciones.",
|
|
145
|
+
"ai-assistant.session.no-match": "Ninguna conversación coincide con \"{q}\".",
|
|
146
|
+
"ai-assistant.session.none": "Aún no hay conversaciones.",
|
|
147
|
+
"ai-assistant.session.load-more": "Mostrar más ({rest})",
|
|
148
|
+
"ai-assistant.session.hidden-count": "{count} ocultas",
|
|
149
|
+
"ai-assistant.session.untitled": "Conversación sin título",
|
|
150
|
+
"ai-assistant.session.private": "Privada: solo la leen sus participantes",
|
|
151
|
+
"ai-assistant.session.open": "Pública: la puede leer todo el dominio",
|
|
152
|
+
"ai-assistant.session.rename": "Cambiar nombre",
|
|
153
|
+
"ai-assistant.session.make-open": "Hacer pública",
|
|
154
|
+
"ai-assistant.session.make-private": "Hacer privada",
|
|
155
|
+
"ai-assistant.session.hide": "Ocultar de mi lista",
|
|
156
|
+
"ai-assistant.session.unhide": "Mostrar en mi lista",
|
|
157
|
+
"ai-assistant.session.remove": "Eliminar",
|
|
158
|
+
"ai-assistant.session.cancel": "Cancelar",
|
|
159
|
+
"ai-assistant.session.confirm-remove": "¿Eliminar \"{name}\"? Desaparecerá para todos los participantes y no se podrá recuperar.",
|
|
160
|
+
"ai-assistant.session.confirm-open": "¿Hacer pública \"{name}\"? Todos en este dominio podrán leer lo que ya se ha escrito.",
|
|
161
|
+
"ai-assistant.session.rename-refused": "no se pudo cambiar el nombre de esta conversación.",
|
|
162
|
+
"ai-assistant.session.hide-refused": "no se pudo ocultar esta conversación.",
|
|
163
|
+
"ai-assistant.session.visibility-refused": "solo el propietario de esta conversación puede cambiar quién la lee.",
|
|
164
|
+
"ai-assistant.session.remove-refused": "no se pudo eliminar esta conversación.",
|
|
165
|
+
"ai-assistant.text.attachments-not-accepted": "esta conversación no admite archivos adjuntos.",
|
|
166
|
+
"ai-assistant.text.attachment-kind-not-accepted": "{name} no se puede adjuntar aquí; esta conversación admite {kinds}.",
|
|
167
|
+
"ai-assistant.text.attachment-too-large": "{name} supera los {max} MB.",
|
|
168
|
+
"ai-assistant.text.too-many-attachments": "se pueden enviar como máximo {max} archivos a la vez.",
|
|
169
|
+
"ai-assistant.text.attachments-need-session": "los archivos adjuntos requieren una conversación guardada.",
|
|
170
|
+
"ai-assistant.text.attachment-not-in-session": "un archivo adjunto no pertenece a esta conversación.",
|
|
171
|
+
"ai-assistant.dock.title": "Asistente",
|
|
172
|
+
"ai-assistant.dock.open": "Preguntar a la IA",
|
|
173
|
+
"ai-assistant.dock.no-conversation": "no hay ninguna conversación para esta pantalla.",
|
|
174
|
+
"ai-assistant.dock.no-user": "no se pudo leer su inicio de sesión. vuelva a iniciar sesión.",
|
|
175
|
+
"ai-assistant.dock.confirm": "Aceptar",
|
|
176
|
+
"ai-assistant.dock.cancel": "Cancelar",
|
|
177
|
+
"ai-assistant.dock.proposal-not-runnable": "esta propuesta no se puede ejecutar en esta pantalla.",
|
|
178
|
+
"ai-assistant.dock.patch-missed": "no se pudieron aplicar {missed} de los cambios.",
|
|
179
|
+
"ai-assistant.dock.not-configured": "no hay ninguna IA configurada para este sitio. un administrador puede configurarla en la configuración de IA.",
|
|
180
|
+
"ai-assistant.dock.capability-unknown": "no se pudo comprobar si la IA está configurada aquí.",
|
|
181
|
+
"ai-assistant.dock.no-surface": "esta pantalla no tiene conversación.",
|
|
182
|
+
"ai-assistant.dock.to-home": "volver a la conversación de esta aplicación",
|
|
183
|
+
"ai-assistant.dock.back-to-conversation": "volver a la conversación",
|
|
184
|
+
"ai-assistant.dock.conversations": "conversaciones",
|
|
185
|
+
"ai-assistant.dock.rebind": "volver a seguir esta pantalla",
|
|
186
|
+
"ai-assistant.dock.close": "cerrar",
|
|
187
|
+
"ai-assistant.dock.screen-changed": "la pantalla cambió mientras escribía. vuelva a enviarlo.",
|
|
188
|
+
"ai-assistant.dock.retry": "reintentar",
|
|
189
|
+
"ai-assistant.session.filter-kind": "Qué tipo",
|
|
190
|
+
"ai-assistant.session.filter-this-kind": "Esta conversación",
|
|
191
|
+
"ai-assistant.session.filter-all-kinds": "Todos los tipos aquí",
|
|
192
|
+
"ai-assistant.session.filter-whose": "De quién",
|
|
193
|
+
"ai-assistant.session.filter-participant": "En las que participo",
|
|
194
|
+
"ai-assistant.session.filter-visibility": "Visibilidad",
|
|
195
|
+
"ai-assistant.session.filter-any-visibility": "Públicas y privadas",
|
|
196
|
+
"ai-assistant.session.filter-open": "Públicas",
|
|
197
|
+
"ai-assistant.session.filter-private": "Privadas",
|
|
198
|
+
"ai-assistant.session.filter-unread": "No leídas",
|
|
199
|
+
"ai-assistant.dock.ask-needs-conversation": "la pregunta no se envió.",
|
|
200
|
+
"ai-assistant.dock.audience-open-band": "Conversación pública: todos en este dominio pueden leer y escribir aquí.",
|
|
201
|
+
"ai-assistant.entry.rows": "{count} filas",
|
|
202
|
+
"ai-assistant.entry.ready": "{count} listas",
|
|
203
|
+
"ai-assistant.entry.blocked": "{count} no se introducirán",
|
|
204
|
+
"ai-assistant.entry.cut": "{count} omitidas por superar el límite",
|
|
205
|
+
"ai-assistant.entry.source": "origen",
|
|
206
|
+
"ai-assistant.entry.missing": "falta",
|
|
207
|
+
"ai-assistant.entry.more-rows": "no se muestran {count} filas más; también se introducen.",
|
|
208
|
+
"ai-assistant.entry.check-failed": "la aplicación no pudo comprobar estas filas; se vuelven a comprobar al introducirlas.",
|
|
209
|
+
"ai-assistant.entry.replaced": "sustituida por una tarjeta más reciente",
|
|
210
|
+
"ai-assistant.entry.enter": "introducir {count} filas",
|
|
211
|
+
"ai-assistant.entry.nothing-to-enter": "nada que introducir",
|
|
212
|
+
"ai-assistant.entry.entered": "se introdujeron {count} filas.",
|
|
213
|
+
"ai-assistant.entry.entered-none": "no se introdujo ninguna fila.",
|
|
214
|
+
"ai-assistant.entry.row-refused": "fila {n}: {reason}",
|
|
215
|
+
"ai-assistant.entry.more-refused": "no se introdujeron {count} filas más.",
|
|
216
|
+
"ai-assistant.entry.issue.required": "sin valor",
|
|
217
|
+
"ai-assistant.entry.issue.not-a-number": "no es un número",
|
|
218
|
+
"ai-assistant.entry.issue.not-an-integer": "no es un número entero",
|
|
219
|
+
"ai-assistant.entry.issue.not-a-date": "no es una fecha",
|
|
220
|
+
"ai-assistant.entry.issue.not-a-boolean": "no es sí o no",
|
|
221
|
+
"ai-assistant.entry.issue.not-in-list": "no es uno de {values}",
|
|
222
|
+
"ai-assistant.entry.issue.unknown-field": "no es un campo de este registro; se omitió",
|
|
223
|
+
"ai-assistant.entry.issue.no-source": "no se indicó el origen",
|
|
224
|
+
"ai-assistant.entry.verified": "{count} encontradas en su archivo",
|
|
225
|
+
"ai-assistant.entry.unmatched": "{count} con un valor que su archivo no tiene",
|
|
226
|
+
"ai-assistant.entry.evidence": "encontrado en la línea {line} del archivo",
|
|
227
|
+
"ai-assistant.entry.total": "total de {field}: {sum}",
|
|
228
|
+
"ai-assistant.entry.total-ready": "introducido {sum}",
|
|
229
|
+
"ai-assistant.entry.total-declared": "el material indica {sum}",
|
|
230
|
+
"ai-assistant.entry.total-not-found": "no se encontró en el archivo",
|
|
231
|
+
"ai-assistant.entry.total-differs": "difiere en {sum}",
|
|
232
|
+
"ai-assistant.entry.total-matches": "coincide",
|
|
233
|
+
"ai-assistant.entry.issue.not-in-source": "el archivo no tiene este valor",
|
|
234
|
+
"ai-assistant.entry.issue.source-scattered": "los valores no están en una misma línea del archivo",
|
|
235
|
+
"ai-assistant.entry.issue.source-not-checked": "una foto no se puede comprobar aquí",
|
|
236
|
+
"ai-assistant.workspace.title": "Espacio de trabajo de IA",
|
|
237
|
+
"ai-assistant.workspace.unreadable": "un bloque que no se puede dibujar ({reason})",
|
|
238
|
+
"ai-assistant.workspace.rows": "{count} filas",
|
|
239
|
+
"ai-assistant.workspace.csv": "CSV",
|
|
240
|
+
"ai-assistant.workspace.cut": "se omitieron {count} filas más por superar el límite.",
|
|
241
|
+
"ai-assistant.workspace.other": "otro",
|
|
242
|
+
"ai-assistant.workspace.as-chart": "gráfico",
|
|
243
|
+
"ai-assistant.workspace.as-table": "tabla",
|
|
244
|
+
"ai-assistant.workspace.loading": "cargando el espacio de trabajo…",
|
|
245
|
+
"ai-assistant.workspace.unreadable-page": "no se pudo leer este espacio de trabajo: {reason}",
|
|
246
|
+
"ai-assistant.workspace.not-found": "aquí no hay ningún espacio de trabajo que pueda ver.",
|
|
247
|
+
"ai-assistant.workspace.newer": "hay una versión más reciente ({version}) disponible.",
|
|
248
|
+
"ai-assistant.workspace.show-newer": "mostrarla",
|
|
249
|
+
"ai-assistant.workspace.versions": "versiones",
|
|
250
|
+
"ai-assistant.workspace.version": "versión {version} de {of}",
|
|
251
|
+
"ai-assistant.workspace.open": "abrir en el espacio de trabajo",
|
|
252
|
+
"ai-assistant.screen.open": "abrir la pantalla",
|
|
253
|
+
"ai-assistant.screen.not-applied": "la pantalla no admite: {conditions}",
|
|
254
|
+
"ai-assistant.read.count": "filas",
|
|
255
|
+
"ai-assistant.read.from": "desde",
|
|
256
|
+
"ai-assistant.read.to": "hasta",
|
|
257
|
+
"ai-assistant.read.year": "año",
|
|
258
|
+
"ai-assistant.read.month": "mes",
|
|
259
|
+
"ai-assistant.read.flow": "entrada o salida",
|
|
260
|
+
"ai-assistant.read.period": "mes",
|
|
261
|
+
"ai-assistant.read.status": "estado",
|
|
262
|
+
"ai-assistant.read.min-amount": "importe mínimo",
|
|
263
|
+
"ai-assistant.read.max-amount": "importe máximo",
|
|
264
|
+
"ai-assistant.read.text": "palabras de búsqueda",
|
|
265
|
+
"ai-assistant.read.id": "registro",
|
|
266
|
+
"ai-assistant.workspace.contains-table": "{count} tablas",
|
|
267
|
+
"ai-assistant.workspace.contains-chart": "{count} gráficos",
|
|
268
|
+
"ai-assistant.workspace.contains-metrics": "{count} cifras",
|
|
269
|
+
"ai-assistant.workspace.contains-steps": "{count} progreso",
|
|
270
|
+
"ai-assistant.entry.change": "modificar {count} registros",
|
|
271
|
+
"ai-assistant.entry.title-create": "{name} por introducir",
|
|
272
|
+
"ai-assistant.entry.title-update": "{name} por modificar",
|
|
273
|
+
"ai-assistant.entry.changed": "se modificaron {count} registros.",
|
|
274
|
+
"ai-assistant.entry.changed-none": "no se modificó ningún registro.",
|
|
275
|
+
"ai-assistant.entry.changes": "{count} registros",
|
|
276
|
+
"ai-assistant.entry.not-changed": "{count} no se modificarán",
|
|
277
|
+
"ai-assistant.entry.record": "registro",
|
|
278
|
+
"ai-assistant.entry.picked": "elegido",
|
|
279
|
+
"ai-assistant.entry.via-current": "el registro en pantalla",
|
|
280
|
+
"ai-assistant.entry.via-selected": "seleccionado en pantalla",
|
|
281
|
+
"ai-assistant.entry.via-id": "encontrado en la conversación",
|
|
282
|
+
"ai-assistant.entry.issue.record-not-found": "no es un registro que pueda ver",
|
|
283
|
+
"ai-assistant.entry.issue.changed-since": "ha cambiado desde que se creó la tarjeta",
|
|
284
|
+
"ai-assistant.entry.issue.no-change": "ya tiene ese valor",
|
|
285
|
+
"ai-assistant.entry.issue.nothing-to-change": "nada que modificar",
|
|
286
|
+
"ai-assistant.entry.issue.not-changeable": "este campo no se puede modificar; se omitió",
|
|
287
|
+
"ai-assistant.entry.source-person": "dicho en la conversación",
|
|
288
|
+
"ai-assistant.entry.total-declared-file": "línea de total del archivo {sum}",
|
|
289
|
+
"ai-assistant.entry.issue.reference-not-found": "\"{text}\": no se encontró",
|
|
290
|
+
"ai-assistant.entry.issue.reference-ambiguous": "\"{text}\": coincide con varios: {candidates}",
|
|
291
|
+
"ai-assistant.entry.issue.reference-unreadable": "\"{text}\": no se pudo consultar",
|
|
292
|
+
"ai-assistant.entry.issue.not-a-reference": "no es un registro al que pueda hacer referencia",
|
|
293
|
+
"ai-assistant.entry.groups": "{count} registros",
|
|
294
|
+
"ai-assistant.entry.groups-kept-out": "{count} registros excluidos por completo",
|
|
295
|
+
"ai-assistant.entry.issue.check-failed": "no se pudo comprobar; no se modificó",
|
|
296
|
+
"ai-assistant.text.attachment-xls-not-read": "{name} es un archivo de Excel antiguo (.xls) y no se lee. Guárdelo como .xlsx en Excel y vuelva a adjuntarlo.",
|
|
297
|
+
"ai-assistant.text.attachment-sheet-too-long": "La hoja {name} supera los {maxChars} caracteres como texto y no se envió. Divídala y adjunte las partes.",
|
|
298
|
+
"ai-assistant.text.attachment-paste-too-long": "La tabla pegada supera los {maxChars} caracteres como texto y no se envió. Péguela por partes.",
|
|
299
|
+
"ai-assistant.text.pasted-table-name": "tabla pegada ({rows} filas)",
|
|
300
|
+
"ai-assistant.text.attachment-sheet-unreadable": "{name} no se puede leer como archivo de Excel.",
|
|
301
|
+
"ai-assistant.text.attachment-sheet-empty": "{name} no tiene ninguna hoja con contenido.",
|
|
302
|
+
"ai-assistant.entry.review-in-workspace": "revisar en el espacio de trabajo",
|
|
303
|
+
"ai-assistant.entry.review-stale": "esta propuesta cambió después de revisarse en el espacio de trabajo; revísela de nuevo antes de introducirla.",
|
|
304
|
+
"ai-assistant.workspace.entry-not-found": "aquí no hay ninguna propuesta que pueda ver.",
|
|
305
|
+
"ai-assistant.workspace.entry-superseded": "una tarjeta más reciente sustituyó a esta en la conversación; revise esa.",
|
|
306
|
+
"ai-assistant.workspace.entry-press-in-dock": "esto es una revisión. Introduzca las filas con el botón de la tarjeta en el panel de IA.",
|
|
307
|
+
"ai-assistant.button.write-wide": "Escribir en ancho",
|
|
308
|
+
"ai-assistant.button.write-narrow": "Estrechar",
|
|
309
|
+
"ai-assistant.text.send-shortcut": "{key} para enviar",
|
|
310
|
+
"ai-assistant.text.send-tooltip-wide": "Enviar ({key})",
|
|
311
|
+
"ai-assistant.text.table-shape": "{rows} filas × {columns} columnas",
|
|
312
|
+
"ai-assistant.button.table-to-words": "Insertar como texto",
|
|
313
|
+
"ai-assistant.text.invite-checking": "Comprobando la identidad de los participantes antes de mostrar si se pueden invitar.",
|
|
314
|
+
"ai-assistant.text.participant-unavailable": "Usuario no disponible",
|
|
315
|
+
"ai-assistant.text.send-to-people": "A las personas",
|
|
316
|
+
"ai-assistant.text.send-to-ai": "A la IA",
|
|
317
|
+
"ai-assistant.text.room-attachments-unavailable": "Aún no se admite enviar archivos adjuntos a los participantes. Quite los archivos adjuntos antes de enviar.",
|
|
318
|
+
"ai-assistant.button.reply": "Responder",
|
|
319
|
+
"ai-assistant.button.cancel-reply": "Cancelar respuesta",
|
|
320
|
+
"ai-assistant.text.reply-to": "Responder a {name}"
|
|
321
|
+
}
|
package/translations/ja.json
CHANGED
|
@@ -309,5 +309,13 @@
|
|
|
309
309
|
"ai-assistant.text.send-shortcut": "{key} で送信",
|
|
310
310
|
"ai-assistant.text.send-tooltip-wide": "送信 ({key})",
|
|
311
311
|
"ai-assistant.text.table-shape": "{rows}行 × {columns}列",
|
|
312
|
-
"ai-assistant.button.table-to-words": "文字で入れる"
|
|
312
|
+
"ai-assistant.button.table-to-words": "文字で入れる",
|
|
313
|
+
"ai-assistant.text.invite-checking": "参加者の情報を確認しています。確認できると招待できるかどうかを表示します。",
|
|
314
|
+
"ai-assistant.text.participant-unavailable": "ユーザー情報なし",
|
|
315
|
+
"ai-assistant.text.send-to-people": "参加者へ",
|
|
316
|
+
"ai-assistant.text.send-to-ai": "AI へ",
|
|
317
|
+
"ai-assistant.text.room-attachments-unavailable": "参加者への添付ファイル送信はまだ対応していません。添付ファイルを外してから送信してください。",
|
|
318
|
+
"ai-assistant.button.reply": "返信",
|
|
319
|
+
"ai-assistant.button.cancel-reply": "返信を取り消す",
|
|
320
|
+
"ai-assistant.text.reply-to": "{name} への返信"
|
|
313
321
|
}
|
package/translations/ms.json
CHANGED
|
@@ -309,5 +309,13 @@
|
|
|
309
309
|
"ai-assistant.text.send-shortcut": "{key} untuk hantar",
|
|
310
310
|
"ai-assistant.text.send-tooltip-wide": "Hantar ({key})",
|
|
311
311
|
"ai-assistant.text.table-shape": "{rows} baris × {columns} lajur",
|
|
312
|
-
"ai-assistant.button.table-to-words": "Masukkan sebagai teks"
|
|
312
|
+
"ai-assistant.button.table-to-words": "Masukkan sebagai teks",
|
|
313
|
+
"ai-assistant.text.invite-checking": "Sedang menyemak maklumat peserta. Kelayakan jemputan akan dipaparkan selepas disahkan.",
|
|
314
|
+
"ai-assistant.text.participant-unavailable": "Maklumat pengguna tiada",
|
|
315
|
+
"ai-assistant.text.send-to-people": "Kepada peserta",
|
|
316
|
+
"ai-assistant.text.send-to-ai": "Kepada AI",
|
|
317
|
+
"ai-assistant.text.room-attachments-unavailable": "Lampiran kepada peserta belum disokong. Buang lampiran sebelum menghantar.",
|
|
318
|
+
"ai-assistant.button.reply": "Balas",
|
|
319
|
+
"ai-assistant.button.cancel-reply": "Batal balasan",
|
|
320
|
+
"ai-assistant.text.reply-to": "Balas kepada {name}"
|
|
313
321
|
}
|
package/translations/zh.json
CHANGED
|
@@ -309,5 +309,13 @@
|
|
|
309
309
|
"ai-assistant.text.send-shortcut": "{key} 发送",
|
|
310
310
|
"ai-assistant.text.send-tooltip-wide": "发送 ({key})",
|
|
311
311
|
"ai-assistant.text.table-shape": "{rows}行 × {columns}列",
|
|
312
|
-
"ai-assistant.button.table-to-words": "作为文字放入"
|
|
312
|
+
"ai-assistant.button.table-to-words": "作为文字放入",
|
|
313
|
+
"ai-assistant.text.invite-checking": "正在确认参与者信息,确认后将显示是否可以邀请。",
|
|
314
|
+
"ai-assistant.text.participant-unavailable": "无用户信息",
|
|
315
|
+
"ai-assistant.text.send-to-people": "发给参与者",
|
|
316
|
+
"ai-assistant.text.send-to-ai": "发给 AI",
|
|
317
|
+
"ai-assistant.text.room-attachments-unavailable": "暂不支持向参与者发送附件。请先移除附件再发送。",
|
|
318
|
+
"ai-assistant.button.reply": "回复",
|
|
319
|
+
"ai-assistant.button.cancel-reply": "取消回复",
|
|
320
|
+
"ai-assistant.text.reply-to": "回复 {name}"
|
|
313
321
|
}
|