diff --git a/public/locales/es/about.json b/public/locales/es/about.json new file mode 100644 index 0000000..24aa933 --- /dev/null +++ b/public/locales/es/about.json @@ -0,0 +1,27 @@ +{ + "description": "¡Free ChatGPT es una aplicación web de código abierto que te permite usar la API de OpenAI totalmente gratis!", + "sourceCode": "Comprueba el <0>código fuente en GitHub y dale una ⭐️", + "initiative": { + "description": "¡Tómate un minuto para leer <0>La iniciativa de Open ChatGPT (inglés)!", + "link": "https://medium.com/@ayaka_45434/the-open-chatgpt-initiative-e76b0b62a3ae" + }, + "support": { + "title": "Apoya el proyecto", + "paragraph1": "Aquí, en FreeChatGPT, nos esforzamos mucho para brindarte mejoras y nuevas funcionalidades lo antes posible. Y, al igual que en todos los proyectos, ¡tu apoyo y motivación mantiene a FreeChatGPT vivo!", + "paragraph2": "Si disfrutas usando nuestra aplicación, te pedimos por favor que des una ⭐️ a este <0>proyecto. Tu apoyo significa mucho para nosotros y nos ayuda a trabajar lo máximo posible para ofrecerte las mejores experencias posibles.", + "paragraph3": "Si deseas apoyar al equipo, considera patrocinarnos mediante alguno de los métodos a continuación. Toda contribución, aunque sea pequeña, nos ayuda a mantener y mejorar el servicio.", + "paragraph4": "Gracias por ser parte de nuestra comunidad. Estamos deseando servirte de la mejor manera posible en el futuro.", + "alipay": "Alipay", + "wechatPay": "WeChat" + }, + "discordServer": { + "title": "Servidor de Discord", + "paragraph1": "¡Te invitamos a unirte a nuestra comunidad de Discord! Nuestro servidor de Discord es genial para intercambiar temas relacionados con ChatGPT, como ideas y consejos, y solicitar nuevas funcionalidades para Free ChatGPT. También tendrás la oportunidad de hablar con los desarrolladores así como otros entusiastas de la IA.", + "paragraph2": "Para unirte al servidor, pulsa sobre el siguiente enlace: <0>https://discord.gg/g3Qnwy4V6A. ¡Te esperamos!" + }, + "privacyStatement": { + "title": "Declaración de privacidad", + "paragraph1": "Valoramos mucho su privacidad y nos comprometemos a proteger la privacidad de nuestros usuarios. No recogemos ni almacenamos ningún dato que usted introduzca o reciba del servidor OpenAI de ninguna forma. Nuestro código fuente está disponible para su inspección para verificar esta declaración.", + "paragraph2": "Prioritamos la seguridad de su clave API y la tratamos con sumo cuidado. Si utiliza su propia clave de API, ésta se almacena exclusivamente en su navegador y nunca se comparte con ninguna entidad de terceros. Se utiliza únicamente para el fin exclusivo de acceder a la API de OpenAI y no para ningún otro uso no autorizado." + } +} diff --git a/public/locales/es/api.json b/public/locales/es/api.json new file mode 100644 index 0000000..67689b9 --- /dev/null +++ b/public/locales/es/api.json @@ -0,0 +1,15 @@ +{ + "securityMessage": "Prioritamos la seguridad de su clave API y la tratamos con sumo cuidado. Si utiliza su propia clave de API, ésta se almacena exclusivamente en su navegador y nunca se comparte con ninguna entidad de terceros. Se utiliza únicamente para el fin exclusivo de acceder a la API de OpenAI y no para ningún otro uso no autorizado.", + "apiEndpoint": { + "option": "Uso gratuito", + "inputLabel": "Punto final de acceso de la API", + "description": "Gracias a <0>Ayaka por proveer el punto final de acceso gratuito: https://chatgpt-api.shn.hk/v1/" + }, + "apiKey": { + "option": "Usa tu propia clave API", + "howTo": "Obtén tu clave personal <0>aquí.", + "inputLabel": "Clave API" + }, + "customEndpoint": "Usar un punto final de acceso personalizado", + "shareGPT": "Echa un vistazo a <0>ShareGPT, una herramienta que permite compartir claves API: https://sharegpt.churchless.tech/share/v1/chat" +} diff --git a/public/locales/es/main.json b/public/locales/es/main.json new file mode 100644 index 0000000..f858b76 --- /dev/null +++ b/public/locales/es/main.json @@ -0,0 +1,32 @@ +{ + "save": "Guardar", + "saveAndSubmit": "Guardar y enviar", + "cancel": "Cancelar", + "confirm": "Aceptar", + "warning": "Aviso", + "clearMessageWarning": "Al enviar este mensaje, todos los mensajes siguientes serán eliminados. ¿Está seguro que quiere continuar?", + "clearConversationWarning": "Al hacer clic en 'Aceptar', todos los mensajes de esta conversación serán eliminados.", + "clearConversation": "Limpiar conversación", + "import": "Importar", + "export": "Exportar", + "author": "Hecho por Jing Hua", + "about": "Acerca de y Patrocinadores", + "api": "API", + "personal": "Personal", + "free": "Gratuito", + "downloadChat": "Descargar conversación", + "user": "Usuario", + "assistant": "Asistente", + "system": "Sistema", + "newChat": "Nuevo Chat", + "lightMode": "Modo claro", + "darkMode": "Modo oscuro", + "setting": "Ajustes", + "image": "Imagen", + "autoTitle": "Generar automáticamente el título de la conversación.", + "prompt": "Prompt", + "promptLibrary": "Librería de Prompts", + "name": "Nombre", + "search": "Buscar", + "morePrompts": "Puedes encontrar más prompts aquí: " +} diff --git a/public/locales/es/model.json b/public/locales/es/model.json new file mode 100644 index 0000000..c5cf13b --- /dev/null +++ b/public/locales/es/model.json @@ -0,0 +1,28 @@ +{ + "configuration": "Configuración", + "model": "Modelo", + "token": { + "label": "Máximo número de tokens", + "description": "El máximo número de tokens que se utilizan para generar la respuesta. La longitud total de los tokens de entrada y los tokens generados está limitada por la longitud de contexto del modelo." + }, + "default": "Valores por defecto", + "temperature": { + "label": "Temperatura", + "description": "Qué temperatura a usar (valores entre 0 y 2). Si se elige un valor alto, por ejemplo 0.8, la salida será más aleatoria, mientras que un valor bajo, como 0.2, hará que la salida sea más enfocada y predecible. Como recomendación general, se sugiere ajustar este parámetro o el top p, pero no ambos al mismo tiempo. Por defecto, el valor es 1." + }, + "presencePenalty": { + "label": "Sanción por presencia", + "description": "Este parámetro permite controlar el nivel de repetición del modelo. La diferencia entre este parámetro y las sanciones por frecuencia, es que este se centra en evitar repeticiones de temas mientras que las sanciones por frecuencia en evitar repeticiones de palabras. Los valores positivos incrementan la probabilidad de que el modelo sea menos repetitivo y que hable sobre nuevos temas. Su valor de por defecto es 0." + }, + "topP": { + "label": "Top-p (P máxima)", + "description": "Este argumento es una forma alternativa de controlar la aleatoridad y creatividad del texto. Por ejemplo, si establecemos su valor a 0.1, significa que solo se consideran los tokens que están comprendidos entre el 10% de la masa de probabilidad." + }, + "frequencyPenalty": { + "label": "Sanción por frecuencia", + "description": "Este argumento controla el nivel de repetición que permite usar al modelo en sus respuestas. Los valores positivos decrementan la probabilidad de que el modelo se repita. Su valor de por defecto es 0." + }, + "defaultChatConfig": "Configuración de chat de por defecto", + "defaultSystemMessage": "Mensaje de por defecto del sistema", + "resetToDefault": "Restablecer a los valores predeterminados" +} diff --git a/src/i18n.ts b/src/i18n.ts index 09eac6d..3a33f7b 100644 --- a/src/i18n.ts +++ b/src/i18n.ts @@ -4,7 +4,16 @@ import { initReactI18next } from 'react-i18next'; import Backend from 'i18next-http-backend'; import LanguageDetector from 'i18next-browser-languagedetector'; -export const i18nLanguages = ['da', 'en', 'nb', 'sv', 'zh-CN', 'zh-HK', 'zh-TW']; +export const i18nLanguages = [ + 'da', + 'en', + 'es', + 'nb', + 'sv', + 'zh-CN', + 'zh-HK', + 'zh-TW', +]; i18n .use(Backend)