es.ts 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583
  1. import { SubmitKey } from "../store/config";
  2. import type { PartialLocaleType } from "./index";
  3. import { getClientConfig } from "../config/client";
  4. const isApp = !!getClientConfig()?.isApp;
  5. const es: PartialLocaleType = {
  6. WIP: "En construcción...",
  7. Error: {
  8. Unauthorized: isApp
  9. ? "Se detectó una clave API inválida. Por favor, ve a la página de [Configuración](/#/settings) para verificar si la clave API está configurada correctamente."
  10. : "La contraseña de acceso es incorrecta o está vacía. Por favor, ve a la página de [Iniciar sesión](/#/auth) para ingresar la contraseña correcta, o en la página de [Configuración](/#/settings) para introducir tu propia clave API de OpenAI.",
  11. },
  12. Auth: {
  13. Title: "Se requiere contraseña",
  14. Tips: "El administrador ha habilitado la verificación de contraseña. Introduce el código de acceso a continuación",
  15. SubTips: "O ingresa tu clave API de OpenAI o Google",
  16. Input: "Introduce el código de acceso aquí",
  17. Confirm: "Confirmar",
  18. Later: "Más tarde",
  19. },
  20. ChatItem: {
  21. ChatItemCount: (count: number) => `${count} conversaciones`,
  22. },
  23. Chat: {
  24. SubTitle: (count: number) => `Total de ${count} conversaciones`,
  25. EditMessage: {
  26. Title: "Editar registro de mensajes",
  27. Topic: {
  28. Title: "Tema de la conversación",
  29. SubTitle: "Cambiar el tema de la conversación actual",
  30. },
  31. },
  32. Actions: {
  33. ChatList: "Ver lista de mensajes",
  34. CompressedHistory: "Ver historial de Prompts comprimidos",
  35. Export: "Exportar historial de chat",
  36. Copy: "Copiar",
  37. Stop: "Detener",
  38. Retry: "Reintentar",
  39. Pin: "Fijar",
  40. PinToastContent:
  41. "Se ha fijado 1 conversación a los prompts predeterminados",
  42. PinToastAction: "Ver",
  43. Delete: "Eliminar",
  44. Edit: "Editar",
  45. RefreshTitle: "Actualizar título",
  46. RefreshToast: "Se ha enviado la solicitud de actualización del título",
  47. },
  48. Commands: {
  49. new: "Nueva conversación",
  50. newm: "Nueva conversación desde la máscara",
  51. next: "Siguiente conversación",
  52. prev: "Conversación anterior",
  53. clear: "Limpiar contexto",
  54. del: "Eliminar conversación",
  55. },
  56. InputActions: {
  57. Stop: "Detener respuesta",
  58. ToBottom: "Ir al más reciente",
  59. Theme: {
  60. auto: "Tema automático",
  61. light: "Modo claro",
  62. dark: "Modo oscuro",
  63. },
  64. Prompt: "Comandos rápidos",
  65. Masks: "Todas las máscaras",
  66. Clear: "Limpiar chat",
  67. Settings: "Configuración de conversación",
  68. UploadImage: "Subir imagen",
  69. },
  70. Rename: "Renombrar conversación",
  71. Typing: "Escribiendo…",
  72. Input: (submitKey: string) => {
  73. var inputHints = `${submitKey} para enviar`;
  74. if (submitKey === String(SubmitKey.Enter)) {
  75. inputHints += ",Shift + Enter para nueva línea";
  76. }
  77. return (
  78. inputHints + ",/ para activar autocompletado,: para activar comandos"
  79. );
  80. },
  81. Send: "Enviar",
  82. Config: {
  83. Reset: "Borrar memoria",
  84. SaveAs: "Guardar como máscara",
  85. },
  86. IsContext: "Prompt predeterminado",
  87. },
  88. Export: {
  89. Title: "Compartir historial de chat",
  90. Copy: "Copiar todo",
  91. Download: "Descargar archivo",
  92. Share: "Compartir en ShareGPT",
  93. MessageFromYou: "Usuario",
  94. MessageFromChatGPT: "ChatGPT",
  95. Format: {
  96. Title: "Formato de exportación",
  97. SubTitle: "Puedes exportar como texto Markdown o imagen PNG",
  98. },
  99. IncludeContext: {
  100. Title: "Incluir contexto de máscara",
  101. SubTitle: "Mostrar contexto de máscara en los mensajes",
  102. },
  103. Steps: {
  104. Select: "Seleccionar",
  105. Preview: "Vista previa",
  106. },
  107. Image: {
  108. Toast: "Generando captura de pantalla",
  109. Modal: "Mantén presionado o haz clic derecho para guardar la imagen",
  110. },
  111. },
  112. Select: {
  113. Search: "Buscar mensajes",
  114. All: "Seleccionar todo",
  115. Latest: "Últimos mensajes",
  116. Clear: "Limpiar selección",
  117. },
  118. Memory: {
  119. Title: "Resumen histórico",
  120. EmptyContent:
  121. "El contenido de la conversación es demasiado corto para resumir",
  122. Send: "Comprimir automáticamente el historial de chat y enviarlo como contexto",
  123. Copy: "Copiar resumen",
  124. Reset: "[no usado]",
  125. ResetConfirm: "¿Confirmar para borrar el resumen histórico?",
  126. },
  127. Home: {
  128. NewChat: "Nueva conversación",
  129. DeleteChat: "¿Confirmar la eliminación de la conversación seleccionada?",
  130. DeleteToast: "Conversación eliminada",
  131. Revert: "Deshacer",
  132. },
  133. Settings: {
  134. Title: "Configuración",
  135. SubTitle: "Todas las opciones de configuración",
  136. Danger: {
  137. Reset: {
  138. Title: "Restablecer todas las configuraciones",
  139. SubTitle:
  140. "Restablecer todas las configuraciones a los valores predeterminados",
  141. Action: "Restablecer ahora",
  142. Confirm: "¿Confirmar el restablecimiento de todas las configuraciones?",
  143. },
  144. Clear: {
  145. Title: "Eliminar todos los datos",
  146. SubTitle: "Eliminar todos los chats y datos de configuración",
  147. Action: "Eliminar ahora",
  148. Confirm:
  149. "¿Confirmar la eliminación de todos los chats y datos de configuración?",
  150. },
  151. },
  152. Lang: {
  153. Name: "Language", // ATENCIÓN: si deseas agregar una nueva traducción, por favor no traduzcas este valor, déjalo como `Language`
  154. All: "Todos los idiomas",
  155. },
  156. Avatar: "Avatar",
  157. FontSize: {
  158. Title: "Tamaño de fuente",
  159. SubTitle: "Tamaño de la fuente del contenido del chat",
  160. },
  161. FontFamily: {
  162. Title: "Fuente del Chat",
  163. SubTitle:
  164. "Fuente del contenido del chat, dejar vacío para aplicar la fuente predeterminada global",
  165. Placeholder: "Nombre de la Fuente",
  166. },
  167. InjectSystemPrompts: {
  168. Title: "Inyectar mensajes del sistema",
  169. SubTitle:
  170. "Forzar la adición de un mensaje del sistema simulado de ChatGPT al principio de cada lista de mensajes",
  171. },
  172. InputTemplate: {
  173. Title: "Preprocesamiento de entrada del usuario",
  174. SubTitle: "El último mensaje del usuario se rellenará en esta plantilla",
  175. },
  176. Update: {
  177. Version: (x: string) => `Versión actual: ${x}`,
  178. IsLatest: "Ya estás en la última versión",
  179. CheckUpdate: "Buscar actualizaciones",
  180. IsChecking: "Buscando actualizaciones...",
  181. FoundUpdate: (x: string) => `Nueva versión encontrada: ${x}`,
  182. GoToUpdate: "Ir a actualizar",
  183. },
  184. SendKey: "Tecla de enviar",
  185. Theme: "Tema",
  186. TightBorder: "Modo sin borde",
  187. SendPreviewBubble: {
  188. Title: "Vista previa del globo",
  189. SubTitle:
  190. "Previsualiza el contenido Markdown en un globo de vista previa",
  191. },
  192. AutoGenerateTitle: {
  193. Title: "Generar título automáticamente",
  194. SubTitle: "Generar un título adecuado basado en el contenido del chat",
  195. },
  196. Sync: {
  197. CloudState: "Datos en la nube",
  198. NotSyncYet: "Aún no se ha sincronizado",
  199. Success: "Sincronización exitosa",
  200. Fail: "Sincronización fallida",
  201. Config: {
  202. Modal: {
  203. Title: "Configurar sincronización en la nube",
  204. Check: "Verificar disponibilidad",
  205. },
  206. SyncType: {
  207. Title: "Tipo de sincronización",
  208. SubTitle: "Selecciona el servidor de sincronización preferido",
  209. },
  210. Proxy: {
  211. Title: "Habilitar proxy",
  212. SubTitle:
  213. "Debes habilitar el proxy para sincronizar en el navegador y evitar restricciones de CORS",
  214. },
  215. ProxyUrl: {
  216. Title: "Dirección del proxy",
  217. SubTitle: "Solo para el proxy CORS incluido en este proyecto",
  218. },
  219. WebDav: {
  220. Endpoint: "Dirección WebDAV",
  221. UserName: "Nombre de usuario",
  222. Password: "Contraseña",
  223. },
  224. UpStash: {
  225. Endpoint: "URL de REST de UpStash Redis",
  226. UserName: "Nombre de respaldo",
  227. Password: "Token de REST de UpStash Redis",
  228. },
  229. },
  230. LocalState: "Datos locales",
  231. Overview: (overview: any) => {
  232. return `${overview.chat} conversaciones, ${overview.message} mensajes, ${overview.prompt} prompts, ${overview.mask} máscaras`;
  233. },
  234. ImportFailed: "Importación fallida",
  235. },
  236. Mask: {
  237. Splash: {
  238. Title: "Pantalla de inicio de máscara",
  239. SubTitle:
  240. "Mostrar la pantalla de inicio de la máscara al iniciar un nuevo chat",
  241. },
  242. Builtin: {
  243. Title: "Ocultar máscaras integradas",
  244. SubTitle:
  245. "Ocultar las máscaras integradas en todas las listas de máscaras",
  246. },
  247. },
  248. Prompt: {
  249. Disable: {
  250. Title: "Deshabilitar autocompletado de prompts",
  251. SubTitle:
  252. "Escribe / al principio del campo de entrada para activar el autocompletado",
  253. },
  254. List: "Lista de prompts personalizados",
  255. ListCount: (builtin: number, custom: number) =>
  256. `Integrados ${builtin}, definidos por el usuario ${custom}`,
  257. Edit: "Editar",
  258. Modal: {
  259. Title: "Lista de prompts",
  260. Add: "Nuevo",
  261. Search: "Buscar prompts",
  262. },
  263. EditModal: {
  264. Title: "Editar prompt",
  265. },
  266. },
  267. HistoryCount: {
  268. Title: "Número de mensajes históricos adjuntos",
  269. SubTitle: "Número de mensajes históricos enviados con cada solicitud",
  270. },
  271. CompressThreshold: {
  272. Title: "Umbral de compresión de mensajes históricos",
  273. SubTitle:
  274. "Cuando los mensajes históricos no comprimidos superan este valor, se realizará la compresión",
  275. },
  276. Usage: {
  277. Title: "Consulta de saldo",
  278. SubTitle(used: any, total: any) {
  279. return `Saldo usado este mes: $${used}, total suscrito: $${total}`;
  280. },
  281. IsChecking: "Verificando…",
  282. Check: "Revisar de nuevo",
  283. NoAccess:
  284. "Introduce la clave API o la contraseña de acceso para ver el saldo",
  285. },
  286. Access: {
  287. AccessCode: {
  288. Title: "Contraseña de acceso",
  289. SubTitle: "El administrador ha habilitado el acceso encriptado",
  290. Placeholder: "Introduce la contraseña de acceso",
  291. },
  292. CustomEndpoint: {
  293. Title: "Interfaz personalizada",
  294. SubTitle: "¿Usar servicios personalizados de Azure u OpenAI?",
  295. },
  296. Provider: {
  297. Title: "Proveedor de modelos",
  298. SubTitle: "Cambiar entre diferentes proveedores",
  299. },
  300. OpenAI: {
  301. ApiKey: {
  302. Title: "Clave API",
  303. SubTitle:
  304. "Usa una clave API de OpenAI personalizada para omitir la restricción de acceso por contraseña",
  305. Placeholder: "Clave API de OpenAI",
  306. },
  307. Endpoint: {
  308. Title: "Dirección del endpoint",
  309. SubTitle:
  310. "Debe incluir http(s):// además de la dirección predeterminada",
  311. },
  312. },
  313. Azure: {
  314. ApiKey: {
  315. Title: "Clave de interfaz",
  316. SubTitle:
  317. "Usa una clave de Azure personalizada para omitir la restricción de acceso por contraseña",
  318. Placeholder: "Clave API de Azure",
  319. },
  320. Endpoint: {
  321. Title: "Dirección del endpoint",
  322. SubTitle: "Ejemplo:",
  323. },
  324. ApiVerion: {
  325. Title: "Versión de la interfaz (versión de api de azure)",
  326. SubTitle: "Selecciona una versión específica",
  327. },
  328. },
  329. Anthropic: {
  330. ApiKey: {
  331. Title: "Clave de interfaz",
  332. SubTitle:
  333. "Usa una clave de Anthropic personalizada para omitir la restricción de acceso por contraseña",
  334. Placeholder: "Clave API de Anthropic",
  335. },
  336. Endpoint: {
  337. Title: "Dirección del endpoint",
  338. SubTitle: "Ejemplo:",
  339. },
  340. ApiVerion: {
  341. Title: "Versión de la interfaz (versión de claude api)",
  342. SubTitle: "Selecciona una versión específica de la API",
  343. },
  344. },
  345. Google: {
  346. ApiKey: {
  347. Title: "Clave API",
  348. SubTitle: "Obtén tu clave API de Google AI",
  349. Placeholder: "Introduce tu clave API de Google AI Studio",
  350. },
  351. Endpoint: {
  352. Title: "Dirección del endpoint",
  353. SubTitle: "Ejemplo:",
  354. },
  355. ApiVersion: {
  356. Title: "Versión de la API (solo para gemini-pro)",
  357. SubTitle: "Selecciona una versión específica de la API",
  358. },
  359. GoogleSafetySettings: {
  360. Title: "Nivel de filtrado de seguridad de Google",
  361. SubTitle: "Configura el nivel de filtrado de contenido",
  362. },
  363. },
  364. Baidu: {
  365. ApiKey: {
  366. Title: "Clave API",
  367. SubTitle: "Usa una clave API de Baidu personalizada",
  368. Placeholder: "Clave API de Baidu",
  369. },
  370. SecretKey: {
  371. Title: "Clave secreta",
  372. SubTitle: "Usa una clave secreta de Baidu personalizada",
  373. Placeholder: "Clave secreta de Baidu",
  374. },
  375. Endpoint: {
  376. Title: "Dirección del endpoint",
  377. SubTitle:
  378. "No admite personalización, dirígete a .env para configurarlo",
  379. },
  380. },
  381. ByteDance: {
  382. ApiKey: {
  383. Title: "Clave de interfaz",
  384. SubTitle: "Usa una clave API de ByteDance personalizada",
  385. Placeholder: "Clave API de ByteDance",
  386. },
  387. Endpoint: {
  388. Title: "Dirección del endpoint",
  389. SubTitle: "Ejemplo:",
  390. },
  391. },
  392. Alibaba: {
  393. ApiKey: {
  394. Title: "Clave de interfaz",
  395. SubTitle: "Usa una clave API de Alibaba Cloud personalizada",
  396. Placeholder: "Clave API de Alibaba Cloud",
  397. },
  398. Endpoint: {
  399. Title: "Dirección del endpoint",
  400. SubTitle: "Ejemplo:",
  401. },
  402. },
  403. CustomModel: {
  404. Title: "Nombre del modelo personalizado",
  405. SubTitle:
  406. "Agrega opciones de modelos personalizados, separados por comas",
  407. },
  408. },
  409. Model: "Modelo (model)",
  410. Temperature: {
  411. Title: "Aleatoriedad (temperature)",
  412. SubTitle: "Cuanto mayor sea el valor, más aleatorio será el resultado",
  413. },
  414. TopP: {
  415. Title: "Muestreo por núcleo (top_p)",
  416. SubTitle: "Similar a la aleatoriedad, pero no cambies ambos a la vez",
  417. },
  418. MaxTokens: {
  419. Title: "Límite de tokens por respuesta (max_tokens)",
  420. SubTitle: "Número máximo de tokens utilizados en una sola interacción",
  421. },
  422. PresencePenalty: {
  423. Title: "Novedad de temas (presence_penalty)",
  424. SubTitle:
  425. "Cuanto mayor sea el valor, más probable es que se amplíen a nuevos temas",
  426. },
  427. FrequencyPenalty: {
  428. Title: "Penalización de frecuencia (frequency_penalty)",
  429. SubTitle:
  430. "Cuanto mayor sea el valor, más probable es que se reduzcan las palabras repetidas",
  431. },
  432. },
  433. Store: {
  434. DefaultTopic: "Nuevo chat",
  435. BotHello: "¿En qué puedo ayudarte?",
  436. Error: "Hubo un error, inténtalo de nuevo más tarde",
  437. Prompt: {
  438. History: (content: string) =>
  439. "Este es un resumen del chat histórico como referencia: " + content,
  440. Topic:
  441. "Devuelve un tema breve de esta frase en cuatro a cinco palabras, sin explicación, sin puntuación, sin muletillas, sin texto adicional, sin negritas. Si no hay tema, devuelve 'charlas casuales'",
  442. Summarize:
  443. "Resume brevemente el contenido de la conversación para usar como un prompt de contexto, manteniéndolo dentro de 200 palabras",
  444. },
  445. },
  446. Copy: {
  447. Success: "Copiado al portapapeles",
  448. Failed: "Error al copiar, por favor otorga permisos al portapapeles",
  449. },
  450. Download: {
  451. Success: "Contenido descargado en tu directorio.",
  452. Failed: "Error al descargar.",
  453. },
  454. Context: {
  455. Toast: (x: any) => `Contiene ${x} prompts predefinidos`,
  456. Edit: "Configuración del chat actual",
  457. Add: "Agregar una conversación",
  458. Clear: "Contexto borrado",
  459. Revert: "Restaurar contexto",
  460. },
  461. Plugin: {
  462. Name: "Complemento",
  463. },
  464. FineTuned: {
  465. Sysmessage: "Eres un asistente",
  466. },
  467. SearchChat: {
  468. Name: "Buscar",
  469. Page: {
  470. Title: "Buscar en el historial de chat",
  471. Search: "Ingrese la palabra clave de búsqueda",
  472. NoResult: "No se encontraron resultados",
  473. NoData: "Sin datos",
  474. Loading: "Cargando",
  475. SubTitle: (count: number) => `Se encontraron ${count} resultados`,
  476. },
  477. Item: {
  478. View: "Ver",
  479. },
  480. },
  481. Mask: {
  482. Name: "Máscara",
  483. Page: {
  484. Title: "Máscaras de rol predefinidas",
  485. SubTitle: (count: number) => `${count} definiciones de rol predefinidas`,
  486. Search: "Buscar máscara de rol",
  487. Create: "Crear nuevo",
  488. },
  489. Item: {
  490. Info: (count: number) => `Contiene ${count} conversaciones predefinidas`,
  491. Chat: "Chat",
  492. View: "Ver",
  493. Edit: "Editar",
  494. Delete: "Eliminar",
  495. DeleteConfirm: "¿Confirmar eliminación?",
  496. },
  497. EditModal: {
  498. Title: (readonly: boolean) =>
  499. `Editar máscara predefinida ${readonly ? "(solo lectura)" : ""}`,
  500. Download: "Descargar predefinido",
  501. Clone: "Clonar predefinido",
  502. },
  503. Config: {
  504. Avatar: "Avatar del rol",
  505. Name: "Nombre del rol",
  506. Sync: {
  507. Title: "Usar configuración global",
  508. SubTitle:
  509. "¿Usar la configuración global del modelo para la conversación actual?",
  510. Confirm:
  511. "La configuración personalizada de la conversación actual se sobrescribirá automáticamente, ¿confirmar habilitar la configuración global?",
  512. },
  513. HideContext: {
  514. Title: "Ocultar conversaciones predefinidas",
  515. SubTitle:
  516. "Las conversaciones predefinidas ocultas no aparecerán en la interfaz de chat",
  517. },
  518. Share: {
  519. Title: "Compartir esta máscara",
  520. SubTitle: "Generar un enlace directo a esta máscara",
  521. Action: "Copiar enlace",
  522. },
  523. },
  524. },
  525. NewChat: {
  526. Return: "Regresar",
  527. Skip: "Comenzar ahora",
  528. NotShow: "No mostrar más",
  529. ConfirmNoShow:
  530. "¿Confirmar desactivación? Puedes reactivar en la configuración en cualquier momento.",
  531. Title: "Selecciona una máscara",
  532. SubTitle: "Comienza ahora y colisiona con la mente detrás de la máscara",
  533. More: "Ver todo",
  534. },
  535. URLCommand: {
  536. Code: "Detectado un código de acceso en el enlace, ¿deseas autocompletarlo?",
  537. Settings:
  538. "Detectada configuración predefinida en el enlace, ¿deseas autocompletarla?",
  539. },
  540. UI: {
  541. Confirm: "Confirmar",
  542. Cancel: "Cancelar",
  543. Close: "Cerrar",
  544. Create: "Crear",
  545. Edit: "Editar",
  546. Export: "Exportar",
  547. Import: "Importar",
  548. Sync: "Sincronizar",
  549. Config: "Configurar",
  550. },
  551. Exporter: {
  552. Description: {
  553. Title: "Solo se mostrarán los mensajes después de borrar el contexto",
  554. },
  555. Model: "Modelo",
  556. Messages: "Mensajes",
  557. Topic: "Tema",
  558. Time: "Hora",
  559. },
  560. };
  561. export default es;