mirror of
				https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
				synced 2025-11-04 16:23:41 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			607 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			607 lines
		
	
	
		
			20 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { SubmitKey } from "../store/config";
 | 
						||
import type { PartialLocaleType } from "./index";
 | 
						||
import { getClientConfig } from "../config/client";
 | 
						||
import { SAAS_CHAT_UTM_URL } from "@/app/constant";
 | 
						||
const isApp = !!getClientConfig()?.isApp;
 | 
						||
 | 
						||
const es: PartialLocaleType = {
 | 
						||
  WIP: "En construcción...",
 | 
						||
  Error: {
 | 
						||
    Unauthorized: isApp
 | 
						||
      ? `😆 La conversación encontró algunos problemas, no te preocupes:
 | 
						||
    \\ 1️⃣ Si deseas comenzar sin configuración, [haz clic aquí para empezar a chatear inmediatamente 🚀](${SAAS_CHAT_UTM_URL})
 | 
						||
    \\ 2️⃣ Si deseas usar tus propios recursos de OpenAI, haz clic [aquí](/#/settings) para modificar la configuración ⚙️`
 | 
						||
      : `😆 La conversación encontró algunos problemas, no te preocupes:
 | 
						||
    \ 1️⃣ Si deseas comenzar sin configuración, [haz clic aquí para empezar a chatear inmediatamente 🚀](${SAAS_CHAT_UTM_URL})
 | 
						||
    \ 2️⃣ Si estás utilizando una versión de implementación privada, haz clic [aquí](/#/auth) para ingresar la clave de acceso 🔑
 | 
						||
    \ 3️⃣ Si deseas usar tus propios recursos de OpenAI, haz clic [aquí](/#/settings) para modificar la configuración ⚙️
 | 
						||
 `,
 | 
						||
  },
 | 
						||
  Auth: {
 | 
						||
    Title: "Se requiere contraseña",
 | 
						||
    Tips: "El administrador ha habilitado la verificación de contraseña. Introduce el código de acceso a continuación",
 | 
						||
    SubTips: "O ingresa tu clave API de OpenAI o Google",
 | 
						||
    Input: "Introduce el código de acceso aquí",
 | 
						||
    Confirm: "Confirmar",
 | 
						||
    Later: "Más tarde",
 | 
						||
    Return: "Regresar",
 | 
						||
    SaasTips:
 | 
						||
      "La configuración es demasiado complicada, quiero usarlo de inmediato",
 | 
						||
    TopTips:
 | 
						||
      "🥳 Oferta de lanzamiento de NextChat AI, desbloquea OpenAI o1, GPT-4o, Claude-3.5 y los últimos grandes modelos",
 | 
						||
  },
 | 
						||
  ChatItem: {
 | 
						||
    ChatItemCount: (count: number) => `${count} conversaciones`,
 | 
						||
  },
 | 
						||
  Chat: {
 | 
						||
    SubTitle: (count: number) => `Total de ${count} conversaciones`,
 | 
						||
    EditMessage: {
 | 
						||
      Title: "Editar registro de mensajes",
 | 
						||
      Topic: {
 | 
						||
        Title: "Tema de la conversación",
 | 
						||
        SubTitle: "Cambiar el tema de la conversación actual",
 | 
						||
      },
 | 
						||
    },
 | 
						||
    Actions: {
 | 
						||
      ChatList: "Ver lista de mensajes",
 | 
						||
      CompressedHistory: "Ver historial de Prompts comprimidos",
 | 
						||
      Export: "Exportar historial de chat",
 | 
						||
      Copy: "Copiar",
 | 
						||
      Stop: "Detener",
 | 
						||
      Retry: "Reintentar",
 | 
						||
      Pin: "Fijar",
 | 
						||
      PinToastContent:
 | 
						||
        "Se ha fijado 1 conversación a los prompts predeterminados",
 | 
						||
      PinToastAction: "Ver",
 | 
						||
      Delete: "Eliminar",
 | 
						||
      Edit: "Editar",
 | 
						||
      RefreshTitle: "Actualizar título",
 | 
						||
      RefreshToast: "Se ha enviado la solicitud de actualización del título",
 | 
						||
    },
 | 
						||
    Commands: {
 | 
						||
      new: "Nueva conversación",
 | 
						||
      newm: "Nueva conversación desde la máscara",
 | 
						||
      next: "Siguiente conversación",
 | 
						||
      prev: "Conversación anterior",
 | 
						||
      clear: "Limpiar contexto",
 | 
						||
      del: "Eliminar conversación",
 | 
						||
    },
 | 
						||
    InputActions: {
 | 
						||
      Stop: "Detener respuesta",
 | 
						||
      ToBottom: "Ir al más reciente",
 | 
						||
      Theme: {
 | 
						||
        auto: "Tema automático",
 | 
						||
        light: "Modo claro",
 | 
						||
        dark: "Modo oscuro",
 | 
						||
      },
 | 
						||
      Prompt: "Comandos rápidos",
 | 
						||
      Masks: "Todas las máscaras",
 | 
						||
      Clear: "Limpiar chat",
 | 
						||
      Settings: "Configuración de conversación",
 | 
						||
      UploadImage: "Subir imagen",
 | 
						||
    },
 | 
						||
    Rename: "Renombrar conversación",
 | 
						||
    Typing: "Escribiendo…",
 | 
						||
    Input: (submitKey: string) => {
 | 
						||
      var inputHints = `${submitKey} para enviar`;
 | 
						||
      if (submitKey === String(SubmitKey.Enter)) {
 | 
						||
        inputHints += ",Shift + Enter para nueva línea";
 | 
						||
      }
 | 
						||
      return (
 | 
						||
        inputHints + ",/ para activar autocompletado,: para activar comandos"
 | 
						||
      );
 | 
						||
    },
 | 
						||
    Send: "Enviar",
 | 
						||
    Config: {
 | 
						||
      Reset: "Borrar memoria",
 | 
						||
      SaveAs: "Guardar como máscara",
 | 
						||
    },
 | 
						||
    IsContext: "Prompt predeterminado",
 | 
						||
  },
 | 
						||
  Export: {
 | 
						||
    Title: "Compartir historial de chat",
 | 
						||
    Copy: "Copiar todo",
 | 
						||
    Download: "Descargar archivo",
 | 
						||
    Share: "Compartir en ShareGPT",
 | 
						||
    MessageFromYou: "Usuario",
 | 
						||
    MessageFromChatGPT: "ChatGPT",
 | 
						||
    Format: {
 | 
						||
      Title: "Formato de exportación",
 | 
						||
      SubTitle: "Puedes exportar como texto Markdown o imagen PNG",
 | 
						||
    },
 | 
						||
    IncludeContext: {
 | 
						||
      Title: "Incluir contexto de máscara",
 | 
						||
      SubTitle: "Mostrar contexto de máscara en los mensajes",
 | 
						||
    },
 | 
						||
    Steps: {
 | 
						||
      Select: "Seleccionar",
 | 
						||
      Preview: "Vista previa",
 | 
						||
    },
 | 
						||
    Image: {
 | 
						||
      Toast: "Generando captura de pantalla",
 | 
						||
      Modal: "Mantén presionado o haz clic derecho para guardar la imagen",
 | 
						||
    },
 | 
						||
  },
 | 
						||
  Select: {
 | 
						||
    Search: "Buscar mensajes",
 | 
						||
    All: "Seleccionar todo",
 | 
						||
    Latest: "Últimos mensajes",
 | 
						||
    Clear: "Limpiar selección",
 | 
						||
  },
 | 
						||
  Memory: {
 | 
						||
    Title: "Resumen histórico",
 | 
						||
    EmptyContent:
 | 
						||
      "El contenido de la conversación es demasiado corto para resumir",
 | 
						||
    Send: "Comprimir automáticamente el historial de chat y enviarlo como contexto",
 | 
						||
    Copy: "Copiar resumen",
 | 
						||
    Reset: "[no usado]",
 | 
						||
    ResetConfirm: "¿Confirmar para borrar el resumen histórico?",
 | 
						||
  },
 | 
						||
  Home: {
 | 
						||
    NewChat: "Nueva conversación",
 | 
						||
    DeleteChat: "¿Confirmar la eliminación de la conversación seleccionada?",
 | 
						||
    DeleteToast: "Conversación eliminada",
 | 
						||
    Revert: "Deshacer",
 | 
						||
  },
 | 
						||
  Settings: {
 | 
						||
    Title: "Configuración",
 | 
						||
    SubTitle: "Todas las opciones de configuración",
 | 
						||
 | 
						||
    Danger: {
 | 
						||
      Reset: {
 | 
						||
        Title: "Restablecer todas las configuraciones",
 | 
						||
        SubTitle:
 | 
						||
          "Restablecer todas las configuraciones a los valores predeterminados",
 | 
						||
        Action: "Restablecer ahora",
 | 
						||
        Confirm: "¿Confirmar el restablecimiento de todas las configuraciones?",
 | 
						||
      },
 | 
						||
      Clear: {
 | 
						||
        Title: "Eliminar todos los datos",
 | 
						||
        SubTitle: "Eliminar todos los chats y datos de configuración",
 | 
						||
        Action: "Eliminar ahora",
 | 
						||
        Confirm:
 | 
						||
          "¿Confirmar la eliminación de todos los chats y datos de configuración?",
 | 
						||
      },
 | 
						||
    },
 | 
						||
    Lang: {
 | 
						||
      Name: "Language", // ATENCIÓN: si deseas agregar una nueva traducción, por favor no traduzcas este valor, déjalo como `Language`
 | 
						||
      All: "Todos los idiomas",
 | 
						||
    },
 | 
						||
    Avatar: "Avatar",
 | 
						||
    FontSize: {
 | 
						||
      Title: "Tamaño de fuente",
 | 
						||
      SubTitle: "Tamaño de la fuente del contenido del chat",
 | 
						||
    },
 | 
						||
    FontFamily: {
 | 
						||
      Title: "Fuente del Chat",
 | 
						||
      SubTitle:
 | 
						||
        "Fuente del contenido del chat, dejar vacío para aplicar la fuente predeterminada global",
 | 
						||
      Placeholder: "Nombre de la Fuente",
 | 
						||
    },
 | 
						||
    InjectSystemPrompts: {
 | 
						||
      Title: "Inyectar mensajes del sistema",
 | 
						||
      SubTitle:
 | 
						||
        "Forzar la adición de un mensaje del sistema simulado de ChatGPT al principio de cada lista de mensajes",
 | 
						||
    },
 | 
						||
    InputTemplate: {
 | 
						||
      Title: "Preprocesamiento de entrada del usuario",
 | 
						||
      SubTitle: "El último mensaje del usuario se rellenará en esta plantilla",
 | 
						||
    },
 | 
						||
 | 
						||
    Update: {
 | 
						||
      Version: (x: string) => `Versión actual: ${x}`,
 | 
						||
      IsLatest: "Ya estás en la última versión",
 | 
						||
      CheckUpdate: "Buscar actualizaciones",
 | 
						||
      IsChecking: "Buscando actualizaciones...",
 | 
						||
      FoundUpdate: (x: string) => `Nueva versión encontrada: ${x}`,
 | 
						||
      GoToUpdate: "Ir a actualizar",
 | 
						||
    },
 | 
						||
    SendKey: "Tecla de enviar",
 | 
						||
    Theme: "Tema",
 | 
						||
    TightBorder: "Modo sin borde",
 | 
						||
    SendPreviewBubble: {
 | 
						||
      Title: "Vista previa del globo",
 | 
						||
      SubTitle:
 | 
						||
        "Previsualiza el contenido Markdown en un globo de vista previa",
 | 
						||
    },
 | 
						||
    AutoGenerateTitle: {
 | 
						||
      Title: "Generar título automáticamente",
 | 
						||
      SubTitle: "Generar un título adecuado basado en el contenido del chat",
 | 
						||
    },
 | 
						||
    Sync: {
 | 
						||
      CloudState: "Datos en la nube",
 | 
						||
      NotSyncYet: "Aún no se ha sincronizado",
 | 
						||
      Success: "Sincronización exitosa",
 | 
						||
      Fail: "Sincronización fallida",
 | 
						||
 | 
						||
      Config: {
 | 
						||
        Modal: {
 | 
						||
          Title: "Configurar sincronización en la nube",
 | 
						||
          Check: "Verificar disponibilidad",
 | 
						||
        },
 | 
						||
        SyncType: {
 | 
						||
          Title: "Tipo de sincronización",
 | 
						||
          SubTitle: "Selecciona el servidor de sincronización preferido",
 | 
						||
        },
 | 
						||
        Proxy: {
 | 
						||
          Title: "Habilitar proxy",
 | 
						||
          SubTitle:
 | 
						||
            "Debes habilitar el proxy para sincronizar en el navegador y evitar restricciones de CORS",
 | 
						||
        },
 | 
						||
        ProxyUrl: {
 | 
						||
          Title: "Dirección del proxy",
 | 
						||
          SubTitle: "Solo para el proxy CORS incluido en este proyecto",
 | 
						||
        },
 | 
						||
 | 
						||
        WebDav: {
 | 
						||
          Endpoint: "Dirección WebDAV",
 | 
						||
          UserName: "Nombre de usuario",
 | 
						||
          Password: "Contraseña",
 | 
						||
        },
 | 
						||
 | 
						||
        UpStash: {
 | 
						||
          Endpoint: "URL de REST de UpStash Redis",
 | 
						||
          UserName: "Nombre de respaldo",
 | 
						||
          Password: "Token de REST de UpStash Redis",
 | 
						||
        },
 | 
						||
      },
 | 
						||
 | 
						||
      LocalState: "Datos locales",
 | 
						||
      Overview: (overview: any) => {
 | 
						||
        return `${overview.chat} conversaciones, ${overview.message} mensajes, ${overview.prompt} prompts, ${overview.mask} máscaras`;
 | 
						||
      },
 | 
						||
      ImportFailed: "Importación fallida",
 | 
						||
    },
 | 
						||
    Mask: {
 | 
						||
      Splash: {
 | 
						||
        Title: "Pantalla de inicio de máscara",
 | 
						||
        SubTitle:
 | 
						||
          "Mostrar la pantalla de inicio de la máscara al iniciar un nuevo chat",
 | 
						||
      },
 | 
						||
      Builtin: {
 | 
						||
        Title: "Ocultar máscaras integradas",
 | 
						||
        SubTitle:
 | 
						||
          "Ocultar las máscaras integradas en todas las listas de máscaras",
 | 
						||
      },
 | 
						||
    },
 | 
						||
    Prompt: {
 | 
						||
      Disable: {
 | 
						||
        Title: "Deshabilitar autocompletado de prompts",
 | 
						||
        SubTitle:
 | 
						||
          "Escribe / al principio del campo de entrada para activar el autocompletado",
 | 
						||
      },
 | 
						||
      List: "Lista de prompts personalizados",
 | 
						||
      ListCount: (builtin: number, custom: number) =>
 | 
						||
        `Integrados ${builtin}, definidos por el usuario ${custom}`,
 | 
						||
      Edit: "Editar",
 | 
						||
      Modal: {
 | 
						||
        Title: "Lista de prompts",
 | 
						||
        Add: "Nuevo",
 | 
						||
        Search: "Buscar prompts",
 | 
						||
      },
 | 
						||
      EditModal: {
 | 
						||
        Title: "Editar prompt",
 | 
						||
      },
 | 
						||
    },
 | 
						||
    HistoryCount: {
 | 
						||
      Title: "Número de mensajes históricos adjuntos",
 | 
						||
      SubTitle: "Número de mensajes históricos enviados con cada solicitud",
 | 
						||
    },
 | 
						||
    CompressThreshold: {
 | 
						||
      Title: "Umbral de compresión de mensajes históricos",
 | 
						||
      SubTitle:
 | 
						||
        "Cuando los mensajes históricos no comprimidos superan este valor, se realizará la compresión",
 | 
						||
    },
 | 
						||
 | 
						||
    Usage: {
 | 
						||
      Title: "Consulta de saldo",
 | 
						||
      SubTitle(used: any, total: any) {
 | 
						||
        return `Saldo usado este mes: $${used}, total suscrito: $${total}`;
 | 
						||
      },
 | 
						||
      IsChecking: "Verificando…",
 | 
						||
      Check: "Revisar de nuevo",
 | 
						||
      NoAccess:
 | 
						||
        "Introduce la clave API o la contraseña de acceso para ver el saldo",
 | 
						||
    },
 | 
						||
 | 
						||
    Access: {
 | 
						||
      SaasStart: {
 | 
						||
        Title: "Use NextChat AI",
 | 
						||
        Label: "(The most cost-effective solution)",
 | 
						||
        SubTitle:
 | 
						||
          "Officially maintained by NextChat, zero configuration ready to use, supports the latest large models like OpenAI o1, GPT-4o, and Claude-3.5",
 | 
						||
        ChatNow: "Chat Now",
 | 
						||
      },
 | 
						||
 | 
						||
      AccessCode: {
 | 
						||
        Title: "Contraseña de acceso",
 | 
						||
        SubTitle: "El administrador ha habilitado el acceso encriptado",
 | 
						||
        Placeholder: "Introduce la contraseña de acceso",
 | 
						||
      },
 | 
						||
      CustomEndpoint: {
 | 
						||
        Title: "Interfaz personalizada",
 | 
						||
        SubTitle: "¿Usar servicios personalizados de Azure u OpenAI?",
 | 
						||
      },
 | 
						||
      Provider: {
 | 
						||
        Title: "Proveedor de modelos",
 | 
						||
        SubTitle: "Cambiar entre diferentes proveedores",
 | 
						||
      },
 | 
						||
      OpenAI: {
 | 
						||
        ApiKey: {
 | 
						||
          Title: "Clave API",
 | 
						||
          SubTitle:
 | 
						||
            "Usa una clave API de OpenAI personalizada para omitir la restricción de acceso por contraseña",
 | 
						||
          Placeholder: "Clave API de OpenAI",
 | 
						||
        },
 | 
						||
 | 
						||
        Endpoint: {
 | 
						||
          Title: "Dirección del endpoint",
 | 
						||
          SubTitle:
 | 
						||
            "Debe incluir http(s):// además de la dirección predeterminada",
 | 
						||
        },
 | 
						||
      },
 | 
						||
      Azure: {
 | 
						||
        ApiKey: {
 | 
						||
          Title: "Clave de interfaz",
 | 
						||
          SubTitle:
 | 
						||
            "Usa una clave de Azure personalizada para omitir la restricción de acceso por contraseña",
 | 
						||
          Placeholder: "Clave API de Azure",
 | 
						||
        },
 | 
						||
 | 
						||
        Endpoint: {
 | 
						||
          Title: "Dirección del endpoint",
 | 
						||
          SubTitle: "Ejemplo:",
 | 
						||
        },
 | 
						||
 | 
						||
        ApiVerion: {
 | 
						||
          Title: "Versión de la interfaz (versión de api de azure)",
 | 
						||
          SubTitle: "Selecciona una versión específica",
 | 
						||
        },
 | 
						||
      },
 | 
						||
      Anthropic: {
 | 
						||
        ApiKey: {
 | 
						||
          Title: "Clave de interfaz",
 | 
						||
          SubTitle:
 | 
						||
            "Usa una clave de Anthropic personalizada para omitir la restricción de acceso por contraseña",
 | 
						||
          Placeholder: "Clave API de Anthropic",
 | 
						||
        },
 | 
						||
 | 
						||
        Endpoint: {
 | 
						||
          Title: "Dirección del endpoint",
 | 
						||
          SubTitle: "Ejemplo:",
 | 
						||
        },
 | 
						||
 | 
						||
        ApiVerion: {
 | 
						||
          Title: "Versión de la interfaz (versión de claude api)",
 | 
						||
          SubTitle: "Selecciona una versión específica de la API",
 | 
						||
        },
 | 
						||
      },
 | 
						||
      Google: {
 | 
						||
        ApiKey: {
 | 
						||
          Title: "Clave API",
 | 
						||
          SubTitle: "Obtén tu clave API de Google AI",
 | 
						||
          Placeholder: "Introduce tu clave API de Google AI Studio",
 | 
						||
        },
 | 
						||
 | 
						||
        Endpoint: {
 | 
						||
          Title: "Dirección del endpoint",
 | 
						||
          SubTitle: "Ejemplo:",
 | 
						||
        },
 | 
						||
 | 
						||
        ApiVersion: {
 | 
						||
          Title: "Versión de la API (solo para gemini-pro)",
 | 
						||
          SubTitle: "Selecciona una versión específica de la API",
 | 
						||
        },
 | 
						||
        GoogleSafetySettings: {
 | 
						||
          Title: "Nivel de filtrado de seguridad de Google",
 | 
						||
          SubTitle: "Configura el nivel de filtrado de contenido",
 | 
						||
        },
 | 
						||
      },
 | 
						||
      Baidu: {
 | 
						||
        ApiKey: {
 | 
						||
          Title: "Clave API",
 | 
						||
          SubTitle: "Usa una clave API de Baidu personalizada",
 | 
						||
          Placeholder: "Clave API de Baidu",
 | 
						||
        },
 | 
						||
        SecretKey: {
 | 
						||
          Title: "Clave secreta",
 | 
						||
          SubTitle: "Usa una clave secreta de Baidu personalizada",
 | 
						||
          Placeholder: "Clave secreta de Baidu",
 | 
						||
        },
 | 
						||
        Endpoint: {
 | 
						||
          Title: "Dirección del endpoint",
 | 
						||
          SubTitle:
 | 
						||
            "No admite personalización, dirígete a .env para configurarlo",
 | 
						||
        },
 | 
						||
      },
 | 
						||
      ByteDance: {
 | 
						||
        ApiKey: {
 | 
						||
          Title: "Clave de interfaz",
 | 
						||
          SubTitle: "Usa una clave API de ByteDance personalizada",
 | 
						||
          Placeholder: "Clave API de ByteDance",
 | 
						||
        },
 | 
						||
        Endpoint: {
 | 
						||
          Title: "Dirección del endpoint",
 | 
						||
          SubTitle: "Ejemplo:",
 | 
						||
        },
 | 
						||
      },
 | 
						||
      Alibaba: {
 | 
						||
        ApiKey: {
 | 
						||
          Title: "Clave de interfaz",
 | 
						||
          SubTitle: "Usa una clave API de Alibaba Cloud personalizada",
 | 
						||
          Placeholder: "Clave API de Alibaba Cloud",
 | 
						||
        },
 | 
						||
        Endpoint: {
 | 
						||
          Title: "Dirección del endpoint",
 | 
						||
          SubTitle: "Ejemplo:",
 | 
						||
        },
 | 
						||
      },
 | 
						||
      CustomModel: {
 | 
						||
        Title: "Nombre del modelo personalizado",
 | 
						||
        SubTitle:
 | 
						||
          "Agrega opciones de modelos personalizados, separados por comas",
 | 
						||
      },
 | 
						||
    },
 | 
						||
 | 
						||
    Model: "Modelo (model)",
 | 
						||
    CompressModel: {
 | 
						||
      Title: "Modelo de compresión",
 | 
						||
      SubTitle: "Modelo utilizado para comprimir el historial",
 | 
						||
    },
 | 
						||
    Temperature: {
 | 
						||
      Title: "Aleatoriedad (temperature)",
 | 
						||
      SubTitle: "Cuanto mayor sea el valor, más aleatorio será el resultado",
 | 
						||
    },
 | 
						||
    TopP: {
 | 
						||
      Title: "Muestreo por núcleo (top_p)",
 | 
						||
      SubTitle: "Similar a la aleatoriedad, pero no cambies ambos a la vez",
 | 
						||
    },
 | 
						||
    MaxTokens: {
 | 
						||
      Title: "Límite de tokens por respuesta (max_tokens)",
 | 
						||
      SubTitle: "Número máximo de tokens utilizados en una sola interacción",
 | 
						||
    },
 | 
						||
    PresencePenalty: {
 | 
						||
      Title: "Novedad de temas (presence_penalty)",
 | 
						||
      SubTitle:
 | 
						||
        "Cuanto mayor sea el valor, más probable es que se amplíen a nuevos temas",
 | 
						||
    },
 | 
						||
    FrequencyPenalty: {
 | 
						||
      Title: "Penalización de frecuencia (frequency_penalty)",
 | 
						||
      SubTitle:
 | 
						||
        "Cuanto mayor sea el valor, más probable es que se reduzcan las palabras repetidas",
 | 
						||
    },
 | 
						||
  },
 | 
						||
  Store: {
 | 
						||
    DefaultTopic: "Nuevo chat",
 | 
						||
    BotHello: "¿En qué puedo ayudarte?",
 | 
						||
    Error: "Hubo un error, inténtalo de nuevo más tarde",
 | 
						||
    Prompt: {
 | 
						||
      History: (content: string) =>
 | 
						||
        "Este es un resumen del chat histórico como referencia: " + content,
 | 
						||
      Topic:
 | 
						||
        "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'",
 | 
						||
      Summarize:
 | 
						||
        "Resume brevemente el contenido de la conversación para usar como un prompt de contexto, manteniéndolo dentro de 200 palabras",
 | 
						||
    },
 | 
						||
  },
 | 
						||
  Copy: {
 | 
						||
    Success: "Copiado al portapapeles",
 | 
						||
    Failed: "Error al copiar, por favor otorga permisos al portapapeles",
 | 
						||
  },
 | 
						||
  Download: {
 | 
						||
    Success: "Contenido descargado en tu directorio.",
 | 
						||
    Failed: "Error al descargar.",
 | 
						||
  },
 | 
						||
  Context: {
 | 
						||
    Toast: (x: any) => `Contiene ${x} prompts predefinidos`,
 | 
						||
    Edit: "Configuración del chat actual",
 | 
						||
    Add: "Agregar una conversación",
 | 
						||
    Clear: "Contexto borrado",
 | 
						||
    Revert: "Restaurar contexto",
 | 
						||
  },
 | 
						||
  Plugin: {
 | 
						||
    Name: "Complemento",
 | 
						||
  },
 | 
						||
  FineTuned: {
 | 
						||
    Sysmessage: "Eres un asistente",
 | 
						||
  },
 | 
						||
  SearchChat: {
 | 
						||
    Name: "Buscar",
 | 
						||
    Page: {
 | 
						||
      Title: "Buscar en el historial de chat",
 | 
						||
      Search: "Ingrese la palabra clave de búsqueda",
 | 
						||
      NoResult: "No se encontraron resultados",
 | 
						||
      NoData: "Sin datos",
 | 
						||
      Loading: "Cargando",
 | 
						||
 | 
						||
      SubTitle: (count: number) => `Se encontraron ${count} resultados`,
 | 
						||
    },
 | 
						||
    Item: {
 | 
						||
      View: "Ver",
 | 
						||
    },
 | 
						||
  },
 | 
						||
  Mask: {
 | 
						||
    Name: "Máscara",
 | 
						||
    Page: {
 | 
						||
      Title: "Máscaras de rol predefinidas",
 | 
						||
      SubTitle: (count: number) => `${count} definiciones de rol predefinidas`,
 | 
						||
      Search: "Buscar máscara de rol",
 | 
						||
      Create: "Crear nuevo",
 | 
						||
    },
 | 
						||
    Item: {
 | 
						||
      Info: (count: number) => `Contiene ${count} conversaciones predefinidas`,
 | 
						||
      Chat: "Chat",
 | 
						||
      View: "Ver",
 | 
						||
      Edit: "Editar",
 | 
						||
      Delete: "Eliminar",
 | 
						||
      DeleteConfirm: "¿Confirmar eliminación?",
 | 
						||
    },
 | 
						||
    EditModal: {
 | 
						||
      Title: (readonly: boolean) =>
 | 
						||
        `Editar máscara predefinida ${readonly ? "(solo lectura)" : ""}`,
 | 
						||
      Download: "Descargar predefinido",
 | 
						||
      Clone: "Clonar predefinido",
 | 
						||
    },
 | 
						||
    Config: {
 | 
						||
      Avatar: "Avatar del rol",
 | 
						||
      Name: "Nombre del rol",
 | 
						||
      Sync: {
 | 
						||
        Title: "Usar configuración global",
 | 
						||
        SubTitle:
 | 
						||
          "¿Usar la configuración global del modelo para la conversación actual?",
 | 
						||
        Confirm:
 | 
						||
          "La configuración personalizada de la conversación actual se sobrescribirá automáticamente, ¿confirmar habilitar la configuración global?",
 | 
						||
      },
 | 
						||
      HideContext: {
 | 
						||
        Title: "Ocultar conversaciones predefinidas",
 | 
						||
        SubTitle:
 | 
						||
          "Las conversaciones predefinidas ocultas no aparecerán en la interfaz de chat",
 | 
						||
      },
 | 
						||
      Share: {
 | 
						||
        Title: "Compartir esta máscara",
 | 
						||
        SubTitle: "Generar un enlace directo a esta máscara",
 | 
						||
        Action: "Copiar enlace",
 | 
						||
      },
 | 
						||
    },
 | 
						||
  },
 | 
						||
  NewChat: {
 | 
						||
    Return: "Regresar",
 | 
						||
    Skip: "Comenzar ahora",
 | 
						||
    NotShow: "No mostrar más",
 | 
						||
    ConfirmNoShow:
 | 
						||
      "¿Confirmar desactivación? Puedes reactivar en la configuración en cualquier momento.",
 | 
						||
    Title: "Selecciona una máscara",
 | 
						||
    SubTitle: "Comienza ahora y colisiona con la mente detrás de la máscara",
 | 
						||
    More: "Ver todo",
 | 
						||
  },
 | 
						||
 | 
						||
  URLCommand: {
 | 
						||
    Code: "Detectado un código de acceso en el enlace, ¿deseas autocompletarlo?",
 | 
						||
    Settings:
 | 
						||
      "Detectada configuración predefinida en el enlace, ¿deseas autocompletarla?",
 | 
						||
  },
 | 
						||
 | 
						||
  UI: {
 | 
						||
    Confirm: "Confirmar",
 | 
						||
    Cancel: "Cancelar",
 | 
						||
    Close: "Cerrar",
 | 
						||
    Create: "Crear",
 | 
						||
    Edit: "Editar",
 | 
						||
    Export: "Exportar",
 | 
						||
    Import: "Importar",
 | 
						||
    Sync: "Sincronizar",
 | 
						||
    Config: "Configurar",
 | 
						||
  },
 | 
						||
  Exporter: {
 | 
						||
    Description: {
 | 
						||
      Title: "Solo se mostrarán los mensajes después de borrar el contexto",
 | 
						||
    },
 | 
						||
    Model: "Modelo",
 | 
						||
    Messages: "Mensajes",
 | 
						||
    Topic: "Tema",
 | 
						||
    Time: "Hora",
 | 
						||
  },
 | 
						||
};
 | 
						||
 | 
						||
export default es;
 |