es.ts 18 KB

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