diff --git a/next-i18next.config.js b/next-i18next.config.js index 5cd3728..7220637 100644 --- a/next-i18next.config.js +++ b/next-i18next.config.js @@ -3,7 +3,7 @@ const path = require('path') module.exports = { i18n: { defaultLocale: 'en', - locales: ['en', 'zh-CN', 'hi', 'tr-TR', 'zh-TW'] + locales: ['en', 'es', 'zh-CN', 'hi', 'tr-TR', 'zh-TW'] }, localePath: path.resolve('public/locales'), reloadOnPrerender: process.env.NODE_ENV === 'development', diff --git a/public/locales/es/common.json b/public/locales/es/common.json new file mode 100644 index 0000000..1e6fb4e --- /dev/null +++ b/public/locales/es/common.json @@ -0,0 +1,122 @@ +{ + "- showing {{count}} page(s) ——one": "- mostrando {{count}} página ", + "- showing {{count}} page(s) ——other": "- mostrando{{count}} páginas ", + "{{count}} item(s)——one": "{{count}} elemento", + "{{count}} item(s)——other": "{{count}} elementos", + "<0> If you are not the owner of this website, stop now, as continuing with this process may expose your personal files in OneDrive.": "<0> Si no eres el propietario de este sitio web, detente ahora, ya que continuar con este proceso puede exponer tus archivos personales en OneDrive.", + "<0> If you have not specified a REDIS_URL inside your Vercel env variable, go initialise one at <3>Upstash. Docs: <6>Vercel Integration - Upstash.": "<0> Si no has especificado una URL REDIS dentro de tu variable Vercel env, ve a inicializar una en <3>Upstash. Documentación: <6>Integración Vercel - Upstash.", + "<0> If you see anything missing or incorrect, you need to reconfigure <3>/config/api.config.js and redeploy this instance.": "<0> Si ves algo que falte o esté incorrecto, debes reconfigurar <3>/config/api.config.js y volver a lanzar esta instancia.", + "✅ You can now proceed onto the next step: requesting your access token and refresh token.": "✅ Ahora puedes avanzar al siguiente paso: solicitar tu token de acceso y token de actualización.", + "❌ No valid code extracted.": "❌ No se ha extraído ningún código válido.", + "Acquired access_token: ": "access_token adquirido: ", + "Acquired refresh_token: ": "refresh_token adquirido: ", + "Actions": "Acciones", + "Authorisation is required as no valid <2>access_token or <5>refresh_token is present on this deployed instance. Check the following configurations before proceeding with authorising onedrive-vercel-index with your own Microsoft account.": "Autorización requerida ya que no hay un <2>token de acceso válido o un <5>token de actualización presente en esta instancia desplegada. Verifica las siguientes configuraciones antes de continuar autorizando onedrive-vercel-index con tu propia cuenta de Microsoft.", + "Cancel": "Cancelar", + "Cannot preview {{path}}": "No se puede previsualizar {{path}}", + "Change the raw file direct link to a URL ending with the extension of the file.": "Cambia el enlace directo del archivo sin formato a una URL que termine con la extensión del archivo.", + "Check out <2>Microsoft's official explanation on the error message.": "Consulta la <2>explicación oficial de Microsoft sobre el mensaje de error.", + "Clear all": "Limpiar todo", + "Clear all tokens?": "¿Borrar todos los tokens?", + "Cleared all tokens": "Se han borrado todos los tokens", + "clearing them means that you will need to re-enter the passwords again.": "borrarlos significa que tendrás que volver a ingresar las contraseñas de nuevo.", + "Copied direct link to clipboard.": "Enlace directo copiado al portapapeles.", + "Copied folder permalink.": "Permalink de la carpeta copiado.", + "Copied raw file permalink.": "Permalink del archivo sin formato copiado.", + "Copy direct link": "Copiar enlace directo", + "Copy folder permalink": "Copiar permalink de la carpeta", + "Copy raw file permalink": "Copiar permalink del archivo sin formato", + "Copy the permalink to the file to the clipboard": "Copiar el permalink del archivo al portapapeles", + "Customise direct link": "Personalizar enlace directo", + "Customise link": "Personalizar enlace", + "Customised": "Personalizado", + "Customised and encoded": "Personalizado y codificado", + "Copy selected files permalink": "Copiar permalink de archivos seleccionados", + "Copied selected files permalink.": "Permalink de archivos seleccionados copiado.", + "Default": "Por defecto", + "Do not pretend to be the site owner": "No fingir ser el propietario del sitio", + "Don't worry, after storing them, onedrive-vercel-index will take care of token refreshes and updates after your site goes live.": "No te preocupes, después de almacenarlos, onedrive-vercel-index se encargará de actualizar y refrescar los tokens después de que tu sitio sea publicado.", + "Download": "Descargar", + "Download file": "Descargar archivo", + "Download folder": "Descargar carpeta", + "Download selected files": "Descargar archivos seleccionados", + "Download the file directly through OneDrive": "Descargar el archivo directamente a través de OneDrive", + "Downloading {{progress}}%": "Descargando {{progress}}%", + "Downloading folder, refresh page to cancel": "Descargando carpeta, actualice la página para cancelar", + "Downloading selected files, refresh page to cancel": "Descargando archivos seleccionados, actualice la página para cancelar", + "Downloading selected files...": "Descargando archivos seleccionados...", + "Email": "Correo electrónico", + "Enter Password": "Ingrese la contraseña", + "Error storing the token": "Error al almacenar el token", + "Error validating identify, restart": "Error al validar la identidad, reinicie", + "Error: {{message}}": "Error: {{message}}", + "Failed to download folder {{path}}: {{status}} {{message}} Skipped it to continue.": "Error al descargar la carpeta {{path}}: {{status}} {{message}} Se saltó para continuar.", + "Failed to download folder.": "Error al descargar la carpeta.", + "Failed to download selected files.": "Error al descargar los archivos seleccionados.", + "File is empty.": "El archivo está vacío.", + "File size": "Tamaño del archivo", + "Filename": "Nombre de archivo", + "Final step, click the button below to store these tokens persistently before they expire after {{minutes}} minutes {{seconds}} seconds. ": "Paso final, haz clic en el botón a continuación para almacenar estos tokens de manera persistente antes de que expire después de {{minutes}} minutos {{seconds}} segundos. ", + "Finished downloading folder.": "Finalizó la descarga de la carpeta.", + "Finished downloading selected files.": "Archivos seleccionados descargados completados.", + "Get tokens": "Obtener tokens", + "Grid": "Cuadrícula", + "Hashes": "Hashes", + "Home": "Inicio", + "If you go back home and still see the welcome page telling you to re-authenticate, ": "Si vuelves a la página de inicio y aún ves la página de bienvenida que te dice que vuelvas a autenticarte, ", + "If you know the password, please enter it below.": "Si conoces la contraseña, ingrésala debajo.", + "Last modified": "Última modificación", + "Last Modified": "Última modificación", + "Last modified:": "Última modificación:", + "List": "Lista", + "Load more": "Cargar más", + "Loading ...": "Cargando ...", + "Loading EPUB ...": "Cargando EPUB ...", + "Loading file content...": "Cargando contenido del archivo...", + "Loading FLV extension...": "Cargando extensión FLV...", + "Logout": "Cerrar sesión", + "MIME type": "Tipo MIME", + "Name": "Nombre", + "No more files": "No hay más archivos", + "Nothing here.": "Nada aquí.", + "OAuth Step 1 - {{title}}": "OAuth Paso 1 - {{title}}", + "OAuth Step 2 - {{title}}": "OAuth Paso 2 - {{title}}", + "OAuth Step 3 - {{title}}": "OAuth Paso 3 - {{title}}", + "of {{count}} file(s) -——loaded——one": "de {{count}} archivo -", + "of {{count}} file(s) -——loaded——other": "de {{count}} archivos -", + "of {{count}} file(s) -——loading——one": "de ... archivo(s) -", + "of {{count}} file(s) -——loading——other": "de ... archivo(s) -", + "Oops, that's a <1>four-oh-four.": "Vaya, es un <1>cuatro-cero-cuatro.", + "Open URL": "Abrir URL", + "Open URL{{url}}": "Abrir URL{{url}}", + "Press <2>F12 and open devtools for more details, or seek help at <6>onedrive-vercel-index discussions.": "Presiona <2>F12 y abre devtools para más detalles o busca ayuda en <6>discusiones onedrive-vercel-index.", + "Proceed to OAuth": "Proceder a OAuth", + "Requesting tokens": "Solicitando tokens", + "Restart": "Reiniciar", + "revisit home and do a hard refresh.": "vuelve a la página principal y haz una recarga completa.", + "Search ...": "Buscar ...", + "Select all files": "Seleccionar todos los archivos", + "Select file": "Seleccionar archivo", + "Select files": "Seleccionar archivos", + "Size": "Tamaño", + "Step 1/3: Preparations": "Paso 1/3: Preparativos", + "Step 2/3: Get authorisation code": "Obtener código de autorización - Paso 2/3", + "Step 3/3: Get access and refresh tokens": "Obtener tokens de acceso y actualización - Paso 3/3", + "Store tokens": "Almacenar tokens", + "Stored! Going home...": "¡Almacenados! Regresando a Inicio...", + "Storing tokens": "Almacenando tokens", + "Success! The API returned what we needed.": "¡Éxito! La API devolvió lo que necesitábamos.", + "The authorisation code extracted is:": "El código de autorización extraído es:", + "The OAuth link for getting the authorisation code has been created. Click on the link above to get the <2>authorisation code. Your browser willopen a new tab to Microsoft's account login page. After logging in and authenticating with your Microsoft account, you will be redirected to a blank page on localhost. Paste <6>the entire redirected URL down below.": "El enlace OAuth para obtener el código de autorización se ha creado. Haz clic en el enlace anterior para obtener el <2>código de autorización. Tu navegador abrirá una nueva pestaña en la página de inicio de sesión de la cuenta de Microsoft. Después de iniciar sesión y autenticarse con tu cuenta de Microsoft, serás redirigido a una página en blanco en localhost. Pega <6>toda la URL redirigida a continuación.", + "These tokens are used to authenticate yourself into password protected folders, ": "Estos tokens se utilizan para autenticarse en carpetas protegidas con contraseña,", + "These tokens may take a few seconds to populate after you click the button below. ": "Estos tokens pueden demorar unos segundos en ser llenados después de hacer clic en el botón de abajo. ", + "This route (the folder itself and the files inside) is password protected. ": "Esta ruta (la carpeta y los archivos dentro de ella) está protegida por contraseña.", + "Unavailable": "No disponible", + "URL encoded": "Codificado en URL", + "Waiting for code...": "Esperando código...", + "Weibo": "Weibo", + "Welcome to your new onedrive-vercel-index 🎉": "Bienvenido a tu nuevo onedrive-vercel-index 🎉", + "What is this?": "¿Qué es esto?", + "Where is the auth code? Did you follow step 2 you silly donut?": "¿Dónde está el código de autorización? ¿Siguiste el paso 2, bobo?", + "Whoops, looks like we got a problem: {{error}}.": "¡Vaya, parece que tenemos un problema: {{error}}." +} \ No newline at end of file diff --git a/src/components/SwitchLang.tsx b/src/components/SwitchLang.tsx index 67530ef..e2a1132 100644 --- a/src/components/SwitchLang.tsx +++ b/src/components/SwitchLang.tsx @@ -19,6 +19,8 @@ const localeText = (locale: string): string => { switch (locale) { case 'en': return '🇬🇧 English' + case 'es': + return '🇪🇸 Español' case 'zh-CN': return '🇨🇳 简体中文' case 'hi':