From a0e5a131248a45408f5449500c112f18e9fe2400 Mon Sep 17 00:00:00 2001 From: Innobasque <148876951+Innobasque-git@users.noreply.github.com> Date: Tue, 16 Sep 2025 12:09:20 +0200 Subject: [PATCH 01/12] Traduccion al Castellano completa.... --- i18n/es.json | 464 +++++++++++++++++++++++++-------------------------- 1 file changed, 231 insertions(+), 233 deletions(-) diff --git a/i18n/es.json b/i18n/es.json index a792b5ab..89d90a02 100644 --- a/i18n/es.json +++ b/i18n/es.json @@ -1,233 +1,231 @@ -{ - "PrivateBin": "PrivateBin", - "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s es un \"pastebin\" en línea minimalista de código abierto, donde el servidor no tiene ningún conocimiento de los datos guardados. Los datos son cifrados/descifrados %sen el navegador%s usando 256 bits AES.", - "More information on the project page.": "Más información en la página del proyecto.", - "Because ignorance is bliss": "Porque la ignorancia es felicidad", - "Document does not exist, has expired or has been deleted.": "El documento no existe, ha caducado o ha sido eliminado.", - "%s requires php %s or above to work. Sorry.": "%s requiere php %s o superior para funcionar. Lo siento.", - "%s requires configuration section [%s] to be present in configuration file.": "%s requiere que la sección de configuración [%s] esté presente en el archivo de configuración.", - "Please wait %d seconds between each post.": [ - "Por favor espere %d segundo entre cada publicación.", - "Por favor espere %d segundos entre cada publicación.", - "Por favor espere %d segundos entre cada publicación.", - "Por favor espere %d segundos entre cada publicación.", - "Por favor espere %d segundos entre cada publicación.", - "Por favor espere %d segundos entre cada publicación." - ], - "Document is limited to %s of encrypted data.": "El documento está limitado a %s de datos cifrados.", - "Invalid data.": "Datos inválidos.", - "You are unlucky. Try again.": "Tienes mala suerte. Inténtalo de nuevo", - "Error saving comment. Sorry.": "Error al guardar el comentario. Lo siento.", - "Error saving document. Sorry.": "Error al guardar el documento. Lo siento", - "Invalid document ID.": "ID del documento inválido.", - "Document is not of burn-after-reading type.": "El documento no es del tipo \"destruir despues de leer\".", - "Wrong deletion token. Document was not deleted.": "Token de eliminación erróneo. El documento no fue eliminado.", - "Document was properly deleted.": "El documento se ha eliminado correctamente.", - "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript es necesario para que %s funcione. Sentimos los inconvenientes ocasionados.", - "%s requires a modern browser to work.": "%s requiere un navegador moderno para funcionar.", - "New": "Nuevo", - "Create": "Crear", - "Clone": "Clonar", - "Raw text": "Texto sin formato", - "Expires": "Caducar en", - "Burn after reading": "Destruir después de leer", - "Open discussion": "Discusión abierta", - "Password (recommended)": "Contraseña (recomendado)", - "Discussion": "Discusión", - "Toggle navigation": "Cambiar navegación", - "%d seconds": [ - "%d segundo", - "%d segundos", - "%d segundos", - "%d segundos", - "%d segundos", - "%d segundos" - ], - "%d minutes": [ - "%d minuto", - "%d minutos", - "%d minutos", - "%d minutos", - "%d minutos", - "%d minutos" - ], - "%d hours": [ - "%d hora", - "%d horas", - "%d horas", - "%d horas", - "%d horas", - "%d horas" - ], - "%d days": [ - "%d día", - "%d días", - "%d días", - "%d días", - "%d días", - "%d días" - ], - "%d weeks": [ - "%d semana", - "%d semanas", - "%d semanas", - "%d semanas", - "%d semanas", - "%d semanas" - ], - "%d months": [ - "%d mes", - "%d meses", - "%d meses", - "%d meses", - "%d meses", - "%d meses" - ], - "%d years": [ - "%d año", - "%d años", - "%d años", - "%d años", - "%d años", - "%d años" - ], - "Never": "Nunca", - "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Nota: Este es un servicio de prueba. Los datos pueden ser eliminados en cualquier momento. Morirán gatitos si abusas de este servicio.", - "This document will expire in %d seconds.": [ - "Este documento caducará en un segundo.", - "Este documento caducará en %d segundos.", - "Este documento caducará en %d segundos", - "Este documento caducará en %d segundos", - "Este documento caducará en %d segundos", - "Este documento caducará en %d segundos" - ], - "This document will expire in %d minutes.": [ - "Este documento caducará en un minuto.", - "Este documento caducará en %d minutos.", - "Este documento caducará en %d minutos", - "Este documento caducará en %d minutos", - "Este documento caducará en %d minutos", - "Este documento caducará en %d minutos" - ], - "This document will expire in %d hours.": [ - "Este documento caducará en una hora.", - "Este documento caducará en %d horas.", - "Este documento caducará en %d horas", - "Este documento caducará en %d horas", - "Este documento caducará en %d horas", - "Este documento caducará en %d horas" - ], - "This document will expire in %d days.": [ - "Este documento caducará en un día.", - "Este documento caducará en %d días.", - "Este documento caducará en %d días", - "Este documento caducará en %d días", - "Este documento caducará en %d días", - "Este documento caducará en %d días" - ], - "This document will expire in %d months.": [ - "Este documento caducará en un mes.", - "Este documento caducará en %d meses.", - "Este documento caducará en %d meses", - "Este documento caducará en %d meses", - "Este documento caducará en %d meses", - "Este documento caducará en %d meses" - ], - "Please enter the password for this document:": "Por favor ingrese la contraseña para este documento:", - "Could not decrypt data (Wrong key?)": "No fue posible descifrar los datos (¿Clave errónea?)", - "Could not delete the document, it was not stored in burn after reading mode.": "No fue posible eliminar el documento, no fue guardado en modo \"destruir despues de leer\".", - "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "SÓLO PARA TUS OJOS. No cierres esta ventana, este mensaje no se puede volver a mostrar.", - "Could not decrypt comment; Wrong key?": "No se pudo descifrar el comentario; ¿Llave incorrecta?", - "Reply": "Responder", - "Anonymous": "Anónimo", - "Avatar generated from IP address": "Avatar generado a partir de la dirección IP", - "Add comment": "Añadir comentario", - "Optional nickname…": "Seudónimo opcional…", - "Post comment": "Publicar comentario", - "Sending comment…": "Enviando comentario…", - "Comment posted.": "Comentario publicado.", - "Could not refresh display: %s": "No se pudo actualizar la vista: %s", - "unknown status": "Estado desconocido", - "server error or not responding": "Error del servidor o el servidor no responde", - "Could not post comment: %s": "No fue posible publicar comentario: %s", - "Sending document…": "Enviando documento…", - "Your document is %s (Hit Ctrl+c to copy)": "Su texto está en %s (Presione Ctrl+c para copiar)", - "Delete data": "Eliminar datos", - "Could not create document: %s": "No fue posible crear el archivo: %s", - "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "No es posible descifrar el documento: Falta la clave de descifrado en la URL (¿Utilizó un redirector o un acortador de URL que quite parte de la URL?)", - "B": "B", - "kB": "kB", - "MB": "MB", - "GB": "GB", - "TB": "TB", - "PB": "PB", - "EB": "EB", - "ZB": "ZB", - "YB": "YB", - "Format": "Formato", - "Plain Text": "Texto sin formato", - "Source Code": "Código fuente", - "Markdown": "Markdown", - "Download attachment": "Descargar adjunto", - "Cloned: '%s'": "Clonado: '%s'.", - "The cloned file '%s' was attached to this document.": "El archivo clonado '%s' ha sido adjuntado a este texto.", - "Attach a file": "Adjuntar archivo", - "alternatively drag & drop a file or paste an image from the clipboard": "alternativamente, arrastre y suelte un archivo o pegue una imagen desde el portapapeles", - "File too large, to display a preview. Please download the attachment.": "Archivo demasiado grande para mostrar una vista previa. Por favor, descargue el archivo adjunto.", - "Remove attachment": "Remover adjunto", - "Your browser does not support uploading encrypted files. Please use a newer browser.": "Tu navegador no admite la carga de archivos cifrados. Utilice un navegador más reciente.", - "Invalid attachment.": "Adjunto inválido.", - "Options": "Opciones", - "Shorten URL": "Acortar URL", - "Editor": "Editor", - "Preview": "Previsualización", - "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s requiere que el PATH termine en \"%s\". Por favor, actualice el PATH en su index.php.", - "Decrypt": "Descifrar", - "Enter password": "Ingrese contraseña", - "Loading…": "Cargando…", - "Decrypting document…": "Descifrando documento…", - "Preparing new document…": "Preparando documento nuevo…", - "In case this message never disappears please have a look at this FAQ for information to troubleshoot.": "En caso de que este mensaje nunca desaparezca por favor revise este FAQ para obtener información para solucionar problemas.", - "+++ no document text +++": "+++ documento sin texto +++", - "Could not get document data: %s": "No se pudieron obtener los datos: %s", - "QR code": "Código QR", - "This website is using an insecure HTTP connection! Please use it only for testing.": "¡Este sitio está usando una conexión HTTP insegura! Por favor úselo solo para pruebas.", - "For more information see this FAQ entry.": "Para más información consulte esta entrada de las preguntas frecuentes.", - "Your browser may require an HTTPS connection to support the WebCrypto API. Try switching to HTTPS.": "Su navegador puede requerir una conexión HTTPS para soportar la API de WebCrypto. Intente cambiar a HTTPS.", - "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Su navegador no es compatible con WebAssembly, que se utiliza para la compresión zlib. Puede crear documentos sin comprimir, pero no puede leer los comprimidos.", - "waiting on user to provide a password": "esperando que el usuario proporcione una contraseña", - "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "No se pudieron descifrar los datos. ¿Ingresó una contraseña incorrecta? Vuelva a intentarlo con el botón de la parte superior.", - "Retry": "Reintentar", - "Showing raw text…": "Mostrando texto sin formato…", - "Notice:": "Aviso:", - "This link will expire after %s.": "Este enlace expirará después de %s.", - "This link can only be accessed once, do not use back or refresh button in your browser.": "Solo se puede acceder a este enlace una vez, no use el botón Atrás o Actualizar en su navegador.", - "Link:": "Enlace:", - "Recipient may become aware of your timezone, convert time to UTC?": "El destinatario puede descubrir su zona horaria, ¿convertir la hora a UTC?", - "Use Current Timezone": "Usar Zona Horaria Actual", - "Convert To UTC": "Convertir A UTC", - "Close": "Cerrar", - "Encrypted note on %s": "Nota cifrada en %s", - "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visite este enlace para ver la nota. Dar la URL a cualquier persona también les permite acceder a la nota.", - "URL shortener may expose your decrypt key in URL.": "El acortador de URL puede exponer su clave de descifrado en el URL.", - "URL shortener is enabled by default.": "URL shortener is enabled by default.", - "Save document": "Guardar documento", - "Your IP is not authorized to create documents.": "Tu IP no está autorizada para crear contenido.", - "Trying to shorten a URL that isn't pointing at our instance.": "Intentando acortar una URL que no apunta a nuestra instancia.", - "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Error llamando a YOURLS. Probablemente un problema de configuración, como error o falta \"apiurl\" o \"signature\".", - "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Error al analizar la respuesta de YOURLS.", - "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.", - "This secret message can only be displayed once. Would you like to see it now?": "Este mensaje secreto sólo se puede mostrar una vez. ¿Quieres verlo ahora?", - "Yes, see it": "Sí, verlo", - "Dark Mode": "Modo nocturno", - "Error compressing document, due to missing WebAssembly support.": "Error compressing document, due to missing WebAssembly support.", - "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.", - "Start over": "Start over", - "Document copied to clipboard": "Document copied to clipboard", - "To copy document press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "To copy document press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c", - "Copy link": "Copy link", - "Link copied to clipboard": "Link copied to clipboard", - "Document text": "Document text", - "Tabulator key serves as character (Hit Ctrl+m or Esc to toggle)": "Tabulator key serves as character (Hit Ctrl+m or Esc to toggle)", - "Theme": "Theme" -} +{ + "PrivateBin": "PrivateBin", + "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s es un \"pastebin\" en línea minimalista de código abierto, donde el servidor no tiene ningún conocimiento de los datos guardados. Los datos son cifrados/descifrados %sen el navegador%s usando 256 bits AES.", + "More information on the project page.": "Más información en la página del proyecto.", + "Because ignorance is bliss": "Porque la ignorancia es felicidad", + "Document does not exist, has expired or has been deleted.": "El documento no existe, ha caducado o ha sido eliminado.", + "%s requires php %s or above to work. Sorry.": "%s requiere php %s o superior para funcionar. Lo siento.", + "%s requires configuration section [%s] to be present in configuration file.": "%s requiere que la sección de configuración [%s] esté presente en el archivo de configuración.", + "Please wait %d seconds between each post.": [ + "Por favor espere %d segundo entre cada publicación.", + "Por favor espere %d segundos entre cada publicación.", + "Por favor espere %d segundos entre cada publicación.", + "Por favor espere %d segundos entre cada publicación.", + "Por favor espere %d segundos entre cada publicación.", + "Por favor espere %d segundos entre cada publicación." + ], + "Document is limited to %s of encrypted data.": "El documento está limitado a %s de datos cifrados.", + "Invalid data.": "Datos inválidos.", + "You are unlucky. Try again.": "Tienes mala suerte. Inténtalo de nuevo", + "Error saving comment. Sorry.": "Error al guardar el comentario. Lo siento.", + "Error saving document. Sorry.": "Error al guardar el documento. Lo siento", + "Invalid document ID.": "ID del documento inválido.", + "Document is not of burn-after-reading type.": "El documento no es del tipo \"destruir despues de leer\".", + "Wrong deletion token. Document was not deleted.": "Token de eliminación erróneo. El documento no fue eliminado.", + "Document was properly deleted.": "El documento se ha eliminado correctamente.", + "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript es necesario para que %s funcione. Sentimos los inconvenientes ocasionados.", + "%s requires a modern browser to work.": "%s requiere un navegador moderno para funcionar.", + "New": "Nuevo", + "Create": "Crear", + "Clone": "Clonar", + "Raw text": "Texto sin formato", + "Expires": "Caducar en", + "Burn after reading": "Destruir después de leer", + "Open discussion": "Discusión abierta", + "Password (recommended)": "Contraseña (recomendado)", + "Discussion": "Discusión", + "Toggle navigation": "Cambiar navegación", + "%d seconds": [ + "%d segundo", + "%d segundos", + "%d segundos", + "%d segundos", + "%d segundos", + "%d segundos" + ], + "%d minutes": [ + "%d minuto", + "%d minutos", + "%d minutos", + "%d minutos", + "%d minutos", + "%d minutos" + ], + "%d hours": [ + "%d hora", + "%d horas", + "%d horas", + "%d horas", + "%d horas", + "%d horas" + ], + "%d days": [ + "%d día", + "%d días", + "%d días", + "%d días", + "%d días", + "%d días" + ], + "%d weeks": [ + "%d semana", + "%d semanas", + "%d semanas", + "%d semanas", + "%d semanas", + "%d semanas" + ], + "%d months": [ + "%d mes", + "%d meses", + "%d meses", + "%d meses", + "%d meses", + "%d meses" + ], + "%d years": [ + "%d año", + "%d años", + "%d años", + "%d años", + "%d años", + "%d años" + ], + "Never": "Nunca", + "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Nota: Este es un servicio de prueba. Los datos pueden ser eliminados en cualquier momento. Morirán gatitos si abusas de este servicio.", + "This document will expire in %d seconds.": [ + "Este documento caducará en un segundo.", + "Este documento caducará en %d segundos.", + "Este documento caducará en %d segundos", + "Este documento caducará en %d segundos", + "Este documento caducará en %d segundos", + "Este documento caducará en %d segundos" + ], + "This document will expire in %d minutes.": [ + "Este documento caducará en un minuto.", + "Este documento caducará en %d minutos.", + "Este documento caducará en %d minutos", + "Este documento caducará en %d minutos", + "Este documento caducará en %d minutos", + "Este documento caducará en %d minutos" + ], + "This document will expire in %d hours.": [ + "Este documento caducará en una hora.", + "Este documento caducará en %d horas.", + "Este documento caducará en %d horas", + "Este documento caducará en %d horas", + "Este documento caducará en %d horas", + "Este documento caducará en %d horas" + ], + "This document will expire in %d days.": [ + "Este documento caducará en un día.", + "Este documento caducará en %d días.", + "Este documento caducará en %d días", + "Este documento caducará en %d días", + "Este documento caducará en %d días", + "Este documento caducará en %d días" + ], + "This document will expire in %d months.": [ + "Este documento caducará en un mes.", + "Este documento caducará en %d meses.", + "Este documento caducará en %d meses", + "Este documento caducará en %d meses", + "Este documento caducará en %d meses", + "Este documento caducará en %d meses" + ], + "Please enter the password for this document:": "Por favor ingrese la contraseña para este documento:", + "Could not decrypt data (Wrong key?)": "No fue posible descifrar los datos (¿Clave errónea?)", + "Could not delete the document, it was not stored in burn after reading mode.": "No fue posible eliminar el documento, no fue guardado en modo \"destruir despues de leer\".", + "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "SÓLO PARA TUS OJOS. No cierres esta ventana, este mensaje no se puede volver a mostrar.", + "Could not decrypt comment; Wrong key?": "No se pudo descifrar el comentario; ¿Llave incorrecta?", + "Reply": "Responder", + "Anonymous": "Anónimo", + "Avatar generated from IP address": "Avatar generado a partir de la dirección IP", + "Add comment": "Añadir comentario", + "Optional nickname…": "Seudónimo opcional…", + "Post comment": "Publicar comentario", + "Sending comment…": "Enviando comentario…", + "Comment posted.": "Comentario publicado.", + "Could not refresh display: %s": "No se pudo actualizar la vista: %s", + "unknown status": "Estado desconocido", + "server error or not responding": "Error del servidor o el servidor no responde", + "Could not post comment: %s": "No fue posible publicar comentario: %s", + "Sending document…": "Enviando documento…", + "Your document is %s (Hit Ctrl+c to copy)": "Su texto está en %s (Presione Ctrl+c para copiar)", + "Delete data": "Eliminar datos", + "Could not create document: %s": "No fue posible crear el archivo: %s", + "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "No es posible descifrar el documento: Falta la clave de descifrado en la URL (¿Utilizó un redirector o un acortador de URL que quite parte de la URL?)", + "B": "B", + "kB": "kB", + "MB": "MB", + "GB": "GB", + "TB": "TB", + "PB": "PB", + "EB": "EB", + "ZB": "ZB", + "YB": "YB", + "Format": "Formato", + "Plain Text": "Texto sin formato", + "Source Code": "Código fuente", + "Markdown": "Markdown", + "Download attachment": "Descargar adjunto", + "Cloned: '%s'": "Clonado: '%s'.", + "The cloned file '%s' was attached to this document.": "El archivo clonado '%s' ha sido adjuntado a este texto.", + "Attach a file": "Adjuntar archivo", + "alternatively drag & drop a file or document an image from the clipboard": "alternativamente, arrastre y suelte un archivo o pegue una imagen desde el portapapeles", + "File too large, to display a preview. Please download the attachment.": "Archivo demasiado grande para mostrar una vista previa. Por favor, descargue el archivo adjunto.", + "Remove attachment": "Remover adjunto", + "Your browser does not support uploading encrypted files. Please use a newer browser.": "Tu navegador no admite la carga de archivos cifrados. Utilice un navegador más reciente.", + "Invalid attachment.": "Adjunto inválido.", + "Options": "Opciones", + "Shorten URL": "Acortar URL", + "Editor": "Editor", + "Preview": "Previsualización", + "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s requiere que el PATH termine en \"%s\". Por favor, actualice el PATH en su index.php.", + "Decrypt": "Descifrar", + "Enter password": "Ingrese contraseña", + "Loading…": "Cargando…", + "Decrypting document…": "Descifrando documento…", + "Preparing new document…": "Preparando documento nuevo…", + "In case this message never disappears please have a look at this FAQ for information to troubleshoot.": "En caso de que este mensaje nunca desaparezca por favor revise este FAQ para obtener información para solucionar problemas.", + "+++ no document text +++": "+++ documento sin texto +++", + "Could not get document data: %s": "No se pudieron obtener los datos: %s", + "QR code": "Código QR", + "This website is using an insecure HTTP connection! Please use it only for testing.": "¡Este sitio está usando una conexión HTTP insegura! Por favor úselo solo para pruebas.", + "For more information see this FAQ entry.": "Para más información consulte esta entrada de las preguntas frecuentes.", + "Your browser may require an HTTPS connection to support the WebCrypto API. Try switching to HTTPS.": "Su navegador puede requerir una conexión HTTPS para soportar la API de WebCrypto. Intente cambiar a HTTPS.", + "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Su navegador no es compatible con WebAssembly, que se utiliza para la compresión zlib. Puede crear documentos sin comprimir, pero no puede leer los comprimidos.", + "waiting on user to provide a password": "esperando que el usuario proporcione una contraseña", + "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "No se pudieron descifrar los datos. ¿Ingresó una contraseña incorrecta? Vuelva a intentarlo con el botón de la parte superior.", + "Retry": "Reintentar", + "Showing raw text…": "Mostrando texto sin formato…", + "Notice:": "Aviso:", + "This link will expire after %s.": "Este enlace expirará después de %s.", + "This link can only be accessed once, do not use back or refresh button in your browser.": "Solo se puede acceder a este enlace una vez, no use el botón Atrás o Actualizar en su navegador.", + "Link:": "Enlace:", + "Recipient may become aware of your timezone, convert time to UTC?": "El destinatario puede descubrir su zona horaria, ¿convertir la hora a UTC?", + "Use Current Timezone": "Usar Zona Horaria Actual", + "Convert To UTC": "Convertir A UTC", + "Close": "Cerrar", + "Encrypted note on %s": "Nota cifrada en %s", + "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visite este enlace para ver la nota. Dar la URL a cualquier persona también les permite acceder a la nota.", + "URL shortener may expose your decrypt key in URL.": "El acortador de URL puede exponer su clave de descifrado en el URL.", + "Save document": "Guardar documento", + "Your IP is not authorized to create documents.": "Tu IP no está autorizada para crear contenido.", + "Trying to shorten a URL that isn't pointing at our instance.": "Intentando acortar una URL que no apunta a nuestra instancia.", + "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error llamando a YOURLS. Probablemente un problema de configuración, como error o falta \"apiurl\" o \"signature\".", + "Error parsing YOURLS response.": "Error al analizar la respuesta de YOURLS.", + "This secret message can only be displayed once. Would you like to see it now?": "Este mensaje secreto sólo se puede mostrar una vez. ¿Quieres verlo ahora?", + "Yes, see it": "Sí, verlo", + "Dark Mode": "Modo nocturno", + "Error compressing document, due to missing WebAssembly support.": "Error al comprimir el documento debido a la falta de compatibilidad con WebAssembly.", + "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Error al descomprimir el documento. Su navegador no es compatible con WebAssembly. Utilice otro navegador para ver este documento.", + "Start over": "Empezar de nuevo", + "Document copied to clipboard": "Documento copiado al portapapeles", + "To copy document press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "Para copiar el documento presione el botón copiar o use el atajo del portapapeles Ctrl+c/Cmd+c", + "Copy link": "Copiar enlace", + "Link copied to clipboard": "Enlace copiado al portapapeles", + "Document text": "Texto del documento", + "Tabulator key serves as character (Hit Ctrl+m or Esc to toggle)": "La tecla de tabulación funciona como carácter (presione Ctrl+m o Esc para alternar)", + "Theme": "Tema" +} From df81f6dc448c49745748338fb8dd23a5a1bc21f8 Mon Sep 17 00:00:00 2001 From: El RIDO Date: Sun, 5 Oct 2025 10:12:43 +0200 Subject: [PATCH 02/12] re-add missing message IDs, reusing YOURLs translations --- i18n/es.json | 464 ++++++++++++++++++++++++++------------------------- 1 file changed, 233 insertions(+), 231 deletions(-) diff --git a/i18n/es.json b/i18n/es.json index 89d90a02..4d530078 100644 --- a/i18n/es.json +++ b/i18n/es.json @@ -1,231 +1,233 @@ -{ - "PrivateBin": "PrivateBin", - "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s es un \"pastebin\" en línea minimalista de código abierto, donde el servidor no tiene ningún conocimiento de los datos guardados. Los datos son cifrados/descifrados %sen el navegador%s usando 256 bits AES.", - "More information on the project page.": "Más información en la página del proyecto.", - "Because ignorance is bliss": "Porque la ignorancia es felicidad", - "Document does not exist, has expired or has been deleted.": "El documento no existe, ha caducado o ha sido eliminado.", - "%s requires php %s or above to work. Sorry.": "%s requiere php %s o superior para funcionar. Lo siento.", - "%s requires configuration section [%s] to be present in configuration file.": "%s requiere que la sección de configuración [%s] esté presente en el archivo de configuración.", - "Please wait %d seconds between each post.": [ - "Por favor espere %d segundo entre cada publicación.", - "Por favor espere %d segundos entre cada publicación.", - "Por favor espere %d segundos entre cada publicación.", - "Por favor espere %d segundos entre cada publicación.", - "Por favor espere %d segundos entre cada publicación.", - "Por favor espere %d segundos entre cada publicación." - ], - "Document is limited to %s of encrypted data.": "El documento está limitado a %s de datos cifrados.", - "Invalid data.": "Datos inválidos.", - "You are unlucky. Try again.": "Tienes mala suerte. Inténtalo de nuevo", - "Error saving comment. Sorry.": "Error al guardar el comentario. Lo siento.", - "Error saving document. Sorry.": "Error al guardar el documento. Lo siento", - "Invalid document ID.": "ID del documento inválido.", - "Document is not of burn-after-reading type.": "El documento no es del tipo \"destruir despues de leer\".", - "Wrong deletion token. Document was not deleted.": "Token de eliminación erróneo. El documento no fue eliminado.", - "Document was properly deleted.": "El documento se ha eliminado correctamente.", - "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript es necesario para que %s funcione. Sentimos los inconvenientes ocasionados.", - "%s requires a modern browser to work.": "%s requiere un navegador moderno para funcionar.", - "New": "Nuevo", - "Create": "Crear", - "Clone": "Clonar", - "Raw text": "Texto sin formato", - "Expires": "Caducar en", - "Burn after reading": "Destruir después de leer", - "Open discussion": "Discusión abierta", - "Password (recommended)": "Contraseña (recomendado)", - "Discussion": "Discusión", - "Toggle navigation": "Cambiar navegación", - "%d seconds": [ - "%d segundo", - "%d segundos", - "%d segundos", - "%d segundos", - "%d segundos", - "%d segundos" - ], - "%d minutes": [ - "%d minuto", - "%d minutos", - "%d minutos", - "%d minutos", - "%d minutos", - "%d minutos" - ], - "%d hours": [ - "%d hora", - "%d horas", - "%d horas", - "%d horas", - "%d horas", - "%d horas" - ], - "%d days": [ - "%d día", - "%d días", - "%d días", - "%d días", - "%d días", - "%d días" - ], - "%d weeks": [ - "%d semana", - "%d semanas", - "%d semanas", - "%d semanas", - "%d semanas", - "%d semanas" - ], - "%d months": [ - "%d mes", - "%d meses", - "%d meses", - "%d meses", - "%d meses", - "%d meses" - ], - "%d years": [ - "%d año", - "%d años", - "%d años", - "%d años", - "%d años", - "%d años" - ], - "Never": "Nunca", - "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Nota: Este es un servicio de prueba. Los datos pueden ser eliminados en cualquier momento. Morirán gatitos si abusas de este servicio.", - "This document will expire in %d seconds.": [ - "Este documento caducará en un segundo.", - "Este documento caducará en %d segundos.", - "Este documento caducará en %d segundos", - "Este documento caducará en %d segundos", - "Este documento caducará en %d segundos", - "Este documento caducará en %d segundos" - ], - "This document will expire in %d minutes.": [ - "Este documento caducará en un minuto.", - "Este documento caducará en %d minutos.", - "Este documento caducará en %d minutos", - "Este documento caducará en %d minutos", - "Este documento caducará en %d minutos", - "Este documento caducará en %d minutos" - ], - "This document will expire in %d hours.": [ - "Este documento caducará en una hora.", - "Este documento caducará en %d horas.", - "Este documento caducará en %d horas", - "Este documento caducará en %d horas", - "Este documento caducará en %d horas", - "Este documento caducará en %d horas" - ], - "This document will expire in %d days.": [ - "Este documento caducará en un día.", - "Este documento caducará en %d días.", - "Este documento caducará en %d días", - "Este documento caducará en %d días", - "Este documento caducará en %d días", - "Este documento caducará en %d días" - ], - "This document will expire in %d months.": [ - "Este documento caducará en un mes.", - "Este documento caducará en %d meses.", - "Este documento caducará en %d meses", - "Este documento caducará en %d meses", - "Este documento caducará en %d meses", - "Este documento caducará en %d meses" - ], - "Please enter the password for this document:": "Por favor ingrese la contraseña para este documento:", - "Could not decrypt data (Wrong key?)": "No fue posible descifrar los datos (¿Clave errónea?)", - "Could not delete the document, it was not stored in burn after reading mode.": "No fue posible eliminar el documento, no fue guardado en modo \"destruir despues de leer\".", - "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "SÓLO PARA TUS OJOS. No cierres esta ventana, este mensaje no se puede volver a mostrar.", - "Could not decrypt comment; Wrong key?": "No se pudo descifrar el comentario; ¿Llave incorrecta?", - "Reply": "Responder", - "Anonymous": "Anónimo", - "Avatar generated from IP address": "Avatar generado a partir de la dirección IP", - "Add comment": "Añadir comentario", - "Optional nickname…": "Seudónimo opcional…", - "Post comment": "Publicar comentario", - "Sending comment…": "Enviando comentario…", - "Comment posted.": "Comentario publicado.", - "Could not refresh display: %s": "No se pudo actualizar la vista: %s", - "unknown status": "Estado desconocido", - "server error or not responding": "Error del servidor o el servidor no responde", - "Could not post comment: %s": "No fue posible publicar comentario: %s", - "Sending document…": "Enviando documento…", - "Your document is %s (Hit Ctrl+c to copy)": "Su texto está en %s (Presione Ctrl+c para copiar)", - "Delete data": "Eliminar datos", - "Could not create document: %s": "No fue posible crear el archivo: %s", - "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "No es posible descifrar el documento: Falta la clave de descifrado en la URL (¿Utilizó un redirector o un acortador de URL que quite parte de la URL?)", - "B": "B", - "kB": "kB", - "MB": "MB", - "GB": "GB", - "TB": "TB", - "PB": "PB", - "EB": "EB", - "ZB": "ZB", - "YB": "YB", - "Format": "Formato", - "Plain Text": "Texto sin formato", - "Source Code": "Código fuente", - "Markdown": "Markdown", - "Download attachment": "Descargar adjunto", - "Cloned: '%s'": "Clonado: '%s'.", - "The cloned file '%s' was attached to this document.": "El archivo clonado '%s' ha sido adjuntado a este texto.", - "Attach a file": "Adjuntar archivo", - "alternatively drag & drop a file or document an image from the clipboard": "alternativamente, arrastre y suelte un archivo o pegue una imagen desde el portapapeles", - "File too large, to display a preview. Please download the attachment.": "Archivo demasiado grande para mostrar una vista previa. Por favor, descargue el archivo adjunto.", - "Remove attachment": "Remover adjunto", - "Your browser does not support uploading encrypted files. Please use a newer browser.": "Tu navegador no admite la carga de archivos cifrados. Utilice un navegador más reciente.", - "Invalid attachment.": "Adjunto inválido.", - "Options": "Opciones", - "Shorten URL": "Acortar URL", - "Editor": "Editor", - "Preview": "Previsualización", - "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s requiere que el PATH termine en \"%s\". Por favor, actualice el PATH en su index.php.", - "Decrypt": "Descifrar", - "Enter password": "Ingrese contraseña", - "Loading…": "Cargando…", - "Decrypting document…": "Descifrando documento…", - "Preparing new document…": "Preparando documento nuevo…", - "In case this message never disappears please have a look at this FAQ for information to troubleshoot.": "En caso de que este mensaje nunca desaparezca por favor revise este FAQ para obtener información para solucionar problemas.", - "+++ no document text +++": "+++ documento sin texto +++", - "Could not get document data: %s": "No se pudieron obtener los datos: %s", - "QR code": "Código QR", - "This website is using an insecure HTTP connection! Please use it only for testing.": "¡Este sitio está usando una conexión HTTP insegura! Por favor úselo solo para pruebas.", - "For more information see this FAQ entry.": "Para más información consulte esta entrada de las preguntas frecuentes.", - "Your browser may require an HTTPS connection to support the WebCrypto API. Try switching to HTTPS.": "Su navegador puede requerir una conexión HTTPS para soportar la API de WebCrypto. Intente cambiar a HTTPS.", - "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Su navegador no es compatible con WebAssembly, que se utiliza para la compresión zlib. Puede crear documentos sin comprimir, pero no puede leer los comprimidos.", - "waiting on user to provide a password": "esperando que el usuario proporcione una contraseña", - "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "No se pudieron descifrar los datos. ¿Ingresó una contraseña incorrecta? Vuelva a intentarlo con el botón de la parte superior.", - "Retry": "Reintentar", - "Showing raw text…": "Mostrando texto sin formato…", - "Notice:": "Aviso:", - "This link will expire after %s.": "Este enlace expirará después de %s.", - "This link can only be accessed once, do not use back or refresh button in your browser.": "Solo se puede acceder a este enlace una vez, no use el botón Atrás o Actualizar en su navegador.", - "Link:": "Enlace:", - "Recipient may become aware of your timezone, convert time to UTC?": "El destinatario puede descubrir su zona horaria, ¿convertir la hora a UTC?", - "Use Current Timezone": "Usar Zona Horaria Actual", - "Convert To UTC": "Convertir A UTC", - "Close": "Cerrar", - "Encrypted note on %s": "Nota cifrada en %s", - "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visite este enlace para ver la nota. Dar la URL a cualquier persona también les permite acceder a la nota.", - "URL shortener may expose your decrypt key in URL.": "El acortador de URL puede exponer su clave de descifrado en el URL.", - "Save document": "Guardar documento", - "Your IP is not authorized to create documents.": "Tu IP no está autorizada para crear contenido.", - "Trying to shorten a URL that isn't pointing at our instance.": "Intentando acortar una URL que no apunta a nuestra instancia.", - "Error calling YOURLS. Probably a configuration issue, like wrong or missing \"apiurl\" or \"signature\".": "Error llamando a YOURLS. Probablemente un problema de configuración, como error o falta \"apiurl\" o \"signature\".", - "Error parsing YOURLS response.": "Error al analizar la respuesta de YOURLS.", - "This secret message can only be displayed once. Would you like to see it now?": "Este mensaje secreto sólo se puede mostrar una vez. ¿Quieres verlo ahora?", - "Yes, see it": "Sí, verlo", - "Dark Mode": "Modo nocturno", - "Error compressing document, due to missing WebAssembly support.": "Error al comprimir el documento debido a la falta de compatibilidad con WebAssembly.", - "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Error al descomprimir el documento. Su navegador no es compatible con WebAssembly. Utilice otro navegador para ver este documento.", - "Start over": "Empezar de nuevo", - "Document copied to clipboard": "Documento copiado al portapapeles", - "To copy document press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "Para copiar el documento presione el botón copiar o use el atajo del portapapeles Ctrl+c/Cmd+c", - "Copy link": "Copiar enlace", - "Link copied to clipboard": "Enlace copiado al portapapeles", - "Document text": "Texto del documento", - "Tabulator key serves as character (Hit Ctrl+m or Esc to toggle)": "La tecla de tabulación funciona como carácter (presione Ctrl+m o Esc para alternar)", - "Theme": "Tema" -} +{ + "PrivateBin": "PrivateBin", + "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s es un \"pastebin\" en línea minimalista de código abierto, donde el servidor no tiene ningún conocimiento de los datos guardados. Los datos son cifrados/descifrados %sen el navegador%s usando 256 bits AES.", + "More information on the project page.": "Más información en la página del proyecto.", + "Because ignorance is bliss": "Porque la ignorancia es felicidad", + "Document does not exist, has expired or has been deleted.": "El documento no existe, ha caducado o ha sido eliminado.", + "%s requires php %s or above to work. Sorry.": "%s requiere php %s o superior para funcionar. Lo siento.", + "%s requires configuration section [%s] to be present in configuration file.": "%s requiere que la sección de configuración [%s] esté presente en el archivo de configuración.", + "Please wait %d seconds between each post.": [ + "Por favor espere %d segundo entre cada publicación.", + "Por favor espere %d segundos entre cada publicación.", + "Por favor espere %d segundos entre cada publicación.", + "Por favor espere %d segundos entre cada publicación.", + "Por favor espere %d segundos entre cada publicación.", + "Por favor espere %d segundos entre cada publicación." + ], + "Document is limited to %s of encrypted data.": "El documento está limitado a %s de datos cifrados.", + "Invalid data.": "Datos inválidos.", + "You are unlucky. Try again.": "Tienes mala suerte. Inténtalo de nuevo", + "Error saving comment. Sorry.": "Error al guardar el comentario. Lo siento.", + "Error saving document. Sorry.": "Error al guardar el documento. Lo siento", + "Invalid document ID.": "ID del documento inválido.", + "Document is not of burn-after-reading type.": "El documento no es del tipo \"destruir despues de leer\".", + "Wrong deletion token. Document was not deleted.": "Token de eliminación erróneo. El documento no fue eliminado.", + "Document was properly deleted.": "El documento se ha eliminado correctamente.", + "JavaScript is required for %s to work. Sorry for the inconvenience.": "JavaScript es necesario para que %s funcione. Sentimos los inconvenientes ocasionados.", + "%s requires a modern browser to work.": "%s requiere un navegador moderno para funcionar.", + "New": "Nuevo", + "Create": "Crear", + "Clone": "Clonar", + "Raw text": "Texto sin formato", + "Expires": "Caducar en", + "Burn after reading": "Destruir después de leer", + "Open discussion": "Discusión abierta", + "Password (recommended)": "Contraseña (recomendado)", + "Discussion": "Discusión", + "Toggle navigation": "Cambiar navegación", + "%d seconds": [ + "%d segundo", + "%d segundos", + "%d segundos", + "%d segundos", + "%d segundos", + "%d segundos" + ], + "%d minutes": [ + "%d minuto", + "%d minutos", + "%d minutos", + "%d minutos", + "%d minutos", + "%d minutos" + ], + "%d hours": [ + "%d hora", + "%d horas", + "%d horas", + "%d horas", + "%d horas", + "%d horas" + ], + "%d days": [ + "%d día", + "%d días", + "%d días", + "%d días", + "%d días", + "%d días" + ], + "%d weeks": [ + "%d semana", + "%d semanas", + "%d semanas", + "%d semanas", + "%d semanas", + "%d semanas" + ], + "%d months": [ + "%d mes", + "%d meses", + "%d meses", + "%d meses", + "%d meses", + "%d meses" + ], + "%d years": [ + "%d año", + "%d años", + "%d años", + "%d años", + "%d años", + "%d años" + ], + "Never": "Nunca", + "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Nota: Este es un servicio de prueba. Los datos pueden ser eliminados en cualquier momento. Morirán gatitos si abusas de este servicio.", + "This document will expire in %d seconds.": [ + "Este documento caducará en un segundo.", + "Este documento caducará en %d segundos.", + "Este documento caducará en %d segundos", + "Este documento caducará en %d segundos", + "Este documento caducará en %d segundos", + "Este documento caducará en %d segundos" + ], + "This document will expire in %d minutes.": [ + "Este documento caducará en un minuto.", + "Este documento caducará en %d minutos.", + "Este documento caducará en %d minutos", + "Este documento caducará en %d minutos", + "Este documento caducará en %d minutos", + "Este documento caducará en %d minutos" + ], + "This document will expire in %d hours.": [ + "Este documento caducará en una hora.", + "Este documento caducará en %d horas.", + "Este documento caducará en %d horas", + "Este documento caducará en %d horas", + "Este documento caducará en %d horas", + "Este documento caducará en %d horas" + ], + "This document will expire in %d days.": [ + "Este documento caducará en un día.", + "Este documento caducará en %d días.", + "Este documento caducará en %d días", + "Este documento caducará en %d días", + "Este documento caducará en %d días", + "Este documento caducará en %d días" + ], + "This document will expire in %d months.": [ + "Este documento caducará en un mes.", + "Este documento caducará en %d meses.", + "Este documento caducará en %d meses", + "Este documento caducará en %d meses", + "Este documento caducará en %d meses", + "Este documento caducará en %d meses" + ], + "Please enter the password for this document:": "Por favor ingrese la contraseña para este documento:", + "Could not decrypt data (Wrong key?)": "No fue posible descifrar los datos (¿Clave errónea?)", + "Could not delete the document, it was not stored in burn after reading mode.": "No fue posible eliminar el documento, no fue guardado en modo \"destruir despues de leer\".", + "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "SÓLO PARA TUS OJOS. No cierres esta ventana, este mensaje no se puede volver a mostrar.", + "Could not decrypt comment; Wrong key?": "No se pudo descifrar el comentario; ¿Llave incorrecta?", + "Reply": "Responder", + "Anonymous": "Anónimo", + "Avatar generated from IP address": "Avatar generado a partir de la dirección IP", + "Add comment": "Añadir comentario", + "Optional nickname…": "Seudónimo opcional…", + "Post comment": "Publicar comentario", + "Sending comment…": "Enviando comentario…", + "Comment posted.": "Comentario publicado.", + "Could not refresh display: %s": "No se pudo actualizar la vista: %s", + "unknown status": "Estado desconocido", + "server error or not responding": "Error del servidor o el servidor no responde", + "Could not post comment: %s": "No fue posible publicar comentario: %s", + "Sending document…": "Enviando documento…", + "Your document is %s (Hit Ctrl+c to copy)": "Su texto está en %s (Presione Ctrl+c para copiar)", + "Delete data": "Eliminar datos", + "Could not create document: %s": "No fue posible crear el archivo: %s", + "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "No es posible descifrar el documento: Falta la clave de descifrado en la URL (¿Utilizó un redirector o un acortador de URL que quite parte de la URL?)", + "B": "B", + "kB": "kB", + "MB": "MB", + "GB": "GB", + "TB": "TB", + "PB": "PB", + "EB": "EB", + "ZB": "ZB", + "YB": "YB", + "Format": "Formato", + "Plain Text": "Texto sin formato", + "Source Code": "Código fuente", + "Markdown": "Markdown", + "Download attachment": "Descargar adjunto", + "Cloned: '%s'": "Clonado: '%s'.", + "The cloned file '%s' was attached to this document.": "El archivo clonado '%s' ha sido adjuntado a este texto.", + "Attach a file": "Adjuntar archivo", + "alternatively drag & drop a file or paste an image from the clipboard": "alternativamente, arrastre y suelte un archivo o pegue una imagen desde el portapapeles", + "File too large, to display a preview. Please download the attachment.": "Archivo demasiado grande para mostrar una vista previa. Por favor, descargue el archivo adjunto.", + "Remove attachment": "Remover adjunto", + "Your browser does not support uploading encrypted files. Please use a newer browser.": "Tu navegador no admite la carga de archivos cifrados. Utilice un navegador más reciente.", + "Invalid attachment.": "Adjunto inválido.", + "Options": "Opciones", + "Shorten URL": "Acortar URL", + "Editor": "Editor", + "Preview": "Previsualización", + "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s requiere que el PATH termine en \"%s\". Por favor, actualice el PATH en su index.php.", + "Decrypt": "Descifrar", + "Enter password": "Ingrese contraseña", + "Loading…": "Cargando…", + "Decrypting document…": "Descifrando documento…", + "Preparing new document…": "Preparando documento nuevo…", + "In case this message never disappears please have a look at this FAQ for information to troubleshoot.": "En caso de que este mensaje nunca desaparezca por favor revise este FAQ para obtener información para solucionar problemas.", + "+++ no document text +++": "+++ documento sin texto +++", + "Could not get document data: %s": "No se pudieron obtener los datos: %s", + "QR code": "Código QR", + "This website is using an insecure HTTP connection! Please use it only for testing.": "¡Este sitio está usando una conexión HTTP insegura! Por favor úselo solo para pruebas.", + "For more information see this FAQ entry.": "Para más información consulte esta entrada de las preguntas frecuentes.", + "Your browser may require an HTTPS connection to support the WebCrypto API. Try switching to HTTPS.": "Su navegador puede requerir una conexión HTTPS para soportar la API de WebCrypto. Intente cambiar a HTTPS.", + "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Su navegador no es compatible con WebAssembly, que se utiliza para la compresión zlib. Puede crear documentos sin comprimir, pero no puede leer los comprimidos.", + "waiting on user to provide a password": "esperando que el usuario proporcione una contraseña", + "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "No se pudieron descifrar los datos. ¿Ingresó una contraseña incorrecta? Vuelva a intentarlo con el botón de la parte superior.", + "Retry": "Reintentar", + "Showing raw text…": "Mostrando texto sin formato…", + "Notice:": "Aviso:", + "This link will expire after %s.": "Este enlace expirará después de %s.", + "This link can only be accessed once, do not use back or refresh button in your browser.": "Solo se puede acceder a este enlace una vez, no use el botón Atrás o Actualizar en su navegador.", + "Link:": "Enlace:", + "Recipient may become aware of your timezone, convert time to UTC?": "El destinatario puede descubrir su zona horaria, ¿convertir la hora a UTC?", + "Use Current Timezone": "Usar Zona Horaria Actual", + "Convert To UTC": "Convertir A UTC", + "Close": "Cerrar", + "Encrypted note on %s": "Nota cifrada en %s", + "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Visite este enlace para ver la nota. Dar la URL a cualquier persona también les permite acceder a la nota.", + "URL shortener may expose your decrypt key in URL.": "El acortador de URL puede exponer su clave de descifrado en el URL.", + "URL shortener is enabled by default.": "URL shortener is enabled by default.", + "Save document": "Guardar documento", + "Your IP is not authorized to create documents.": "Tu IP no está autorizada para crear contenido.", + "Trying to shorten a URL that isn't pointing at our instance.": "Intentando acortar una URL que no apunta a nuestra instancia.", + "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Proxy URL is empty. Probablemente un problema de configuración, como error o falta \"apiurl\" o \"signature\".", + "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Proxy error: Error al analizar la respuesta de proxy. Probablemente un problema de configuración, como error o falta \"apiurl\" o \"signature\".", + "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Error llamando a proxy. Probablemente un problema de configuración, como error o falta \"apiurl\" o \"signature\".", + "This secret message can only be displayed once. Would you like to see it now?": "Este mensaje secreto sólo se puede mostrar una vez. ¿Quieres verlo ahora?", + "Yes, see it": "Sí, verlo", + "Dark Mode": "Modo nocturno", + "Error compressing document, due to missing WebAssembly support.": "Error al comprimir el documento debido a la falta de compatibilidad con WebAssembly.", + "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Error al descomprimir el documento. Su navegador no es compatible con WebAssembly. Utilice otro navegador para ver este documento.", + "Start over": "Empezar de nuevo", + "Document copied to clipboard": "Documento copiado al portapapeles", + "To copy document press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "Para copiar el documento presione el botón copiar o use el atajo del portapapeles Ctrl+c/Cmd+c", + "Copy link": "Copiar enlace", + "Link copied to clipboard": "Enlace copiado al portapapeles", + "Document text": "Texto del documento", + "Tabulator key serves as character (Hit Ctrl+m or Esc to toggle)": "La tecla de tabulación funciona como carácter (presione Ctrl+m o Esc para alternar)", + "Theme": "Tema" +} From 8ec0e7f766868fe5f3296b2720bc2d50411b3208 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Kami=C5=84ski?= Date: Sun, 5 Oct 2025 22:24:13 +0200 Subject: [PATCH 03/12] Coorected polish translation --- i18n/pl.json | 226 +++++++++++++++++++++------------------------------ 1 file changed, 92 insertions(+), 134 deletions(-) diff --git a/i18n/pl.json b/i18n/pl.json index 68fcf2c6..7ae1be4b 100644 --- a/i18n/pl.json +++ b/i18n/pl.json @@ -1,160 +1,118 @@ { "PrivateBin": "PrivateBin", - "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s jest minimalistycznym, otwartoźródłowym serwisem typu pastebin, w którym serwer nie ma żadnej wiedzy o przechowywanych danych. Dane są szyfrowane i deszyfrowane %sw przeglądarce%s z użyciem 256-bitowego klucza AES.", - "More information on the project page.": "Więcej informacji na stronie projektu.", - "Because ignorance is bliss": "Ponieważ ignorancja jest cnotą", + "%s is a minimalist, open source online pastebin where the server has zero knowledge of stored data. Data is encrypted/decrypted %sin the browser%s using 256 bits AES.": "%s to minimalistyczny, otwartoźródłowy serwis typu pastebin, w którym serwer nie posiada żadnej wiedzy o przechowywanych danych. Dane są szyfrowane i deszyfrowywane %sw przeglądarce%s przy użyciu 256-bitowego klucza AES.", + "More information on the project page.": "Więcej informacji znajdziesz na stronie projektu.", + "Because ignorance is bliss": "Bo niewiedza to błogosławieństwo", "Document does not exist, has expired or has been deleted.": "Dokument nie istnieje, wygasł lub został usunięty.", - "%s requires php %s or above to work. Sorry.": "%s wymaga PHP w wersji %s lub nowszej. Przykro mi.", + "%s requires php %s or above to work. Sorry.": "%s wymaga PHP w wersji %s lub nowszej.", "%s requires configuration section [%s] to be present in configuration file.": "%s wymaga obecności sekcji [%s] w pliku konfiguracyjnym.", "Please wait %d seconds between each post.": [ - "Poczekaj %d sekundę pomiędzy każdą wklejką.", - "Poczekaj %d sekund pomiędzy każdą wklejką.", - "Poczekaj %d sekund pomiędzy każdą wklejką.", - "Poczekaj %d sekund pomiędzy każdą wklejką.", - "Poczekaj %d sekund pomiędzy każdą wklejką.", - "Poczekaj %d sekund pomiędzy każdą wklejką." + "Poczekaj %d sekundę przed kolejnym wklejeniem.", + "Poczekaj %d sekundy przed kolejnym wklejeniem.", + "Poczekaj %d sekund przed kolejnym wklejeniem." ], - "Document is limited to %s of encrypted data.": "Dokument jest ograniczony do %s zaszyfrowanych danych.", +"Document is limited to %s of encrypted data.": "Dokument jest ograniczony do %s zaszyfrowanych danych.", "Invalid data.": "Nieprawidłowe dane.", - "You are unlucky. Try again.": "Miałeś pecha. Spróbuj ponownie.", - "Error saving comment. Sorry.": "Błąd przy zapisywaniu komentarza, sorry.", - "Error saving document. Sorry.": "Błąd podczas zapisywania dokumentu. Przepraszamy.", - "Invalid document ID.": "Nieprawidłowy ID dokumentu.", - "Document is not of burn-after-reading type.": "Dokument nie ulega autodestrukcji po przeczytaniu.", - "Wrong deletion token. Document was not deleted.": "Nieprawidłowy token usuwania. Dokument nie został usunięty.", - "Document was properly deleted.": "Dokument został prawidłowo usunięty.", - "JavaScript is required for %s to work. Sorry for the inconvenience.": "Do działania %sa jest wymagany JavaScript. Przepraszamy za tę niedogodność.", - "%s requires a modern browser to work.": "%s wymaga do działania nowoczesnej przeglądarki.", - "New": "Nowa", - "Create": "Dodaj", + "You are unlucky. Try again.": "Miałeś pecha — spróbuj ponownie.", + "Error saving comment. Sorry.": "Błąd podczas zapisywania komentarza.", + "Error saving document. Sorry.": "Błąd podczas zapisywania dokumentu.", + "Invalid document ID.": "Nieprawidłowy identyfikator dokumentu.", + "Document is not of burn-after-reading type.": "Dokument nie jest typu „zniszcz po przeczytaniu”.", + "Wrong deletion token. Document was not deleted.": "Nieprawidłowy token usunięcia. Dokument nie został usunięty.", + "Document was properly deleted.": "Dokument został pomyślnie usunięty.", + "JavaScript is required for %s to work. Sorry for the inconvenience.": "Do działania %s wymagany jest JavaScript. Przepraszamy za niedogodność.", + "%s requires a modern browser to work.": "%s wymaga nowoczesnej przeglądarki internetowej.", + "New": "Nowy", + "Create": "Utwórz", "Clone": "Sklonuj", - "Raw text": "Czysty tekst", + "Raw text": "Tekst niesformatowany", "Expires": "Wygasa za", "Burn after reading": "Zniszcz po przeczytaniu", "Open discussion": "Otwarta dyskusja", - "Password (recommended)": "Hasło (zalecane)", + "Password (recommended)": "Hasło (opcjonalnie, zalecane)", "Discussion": "Dyskusja", "Toggle navigation": "Przełącz nawigację", "%d seconds": [ - "%d second", - "%d second", - "%d second", - "%d second", - "%d second", - "%d second" + "%d sekunda", + "%d sekundy", + "%d sekund" ], "%d minutes": [ - "%d minut", - "%d minut", - "%d minut", - "%d minut", - "%d minut", + "%d minuta", + "%d minuty", "%d minut" ], "%d hours": [ "%d godzina", - "%d godzina", - "%d godzinę", - "%d godzinę", - "%d godzinę", - "%d godzinę" + "%d godziny", + "%d godzin" ], "%d days": [ "%d dzień", - "%d dzień", - "%d dzień", - "%d dzień", - "%d dzień", - "%d dzień" + "%d dni" ], "%d weeks": [ "%d tydzień", - "%d tydzień", - "%d tydzień", - "%d tydzień", - "%d tydzień", - "%d tydzień" + "%d tygodni" ], "%d months": [ "%d miesiąc", - "%d miesiąc", - "%d miesiąc", - "%d miesiąc", - "%d miesiąc", - "%d miesiąc" + "%d miesiące", + "%d miesięcy" ], "%d years": [ "%d rok", - "%d rok", - "%d rok", - "%d rok", - "%d rok", - "%d rok" + "%d lata", + "%d lat" ], - "Never": "nigdy", - "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Notka: To jest usługa testowa. Dane mogą zostać usunięte w dowolnym momencie. Kociątka umrą, jeśli nadużyjesz tej usługi.", + "Never": "Nigdy", + "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Uwaga: to usługa testowa — dane mogą zostać usunięte w dowolnym momencie. Nie nadużywaj jej, bo ucierpią kotki 🐱.", "This document will expire in %d seconds.": [ "Ten dokument wygaśnie za %d sekundę.", - "Ten dokument wygaśnie za %d sekund.", - "Ten dokument wygaśnie za %d sekund.", - "Ten dokument wygaśnie za %d sekund.", - "Ten dokument wygaśnie za %d sekund.", + "Ten dokument wygaśnie za %d sekundy.", "Ten dokument wygaśnie za %d sekund." ], "This document will expire in %d minutes.": [ "Ten dokument wygaśnie za %d minutę.", - "Ten dokument wygaśnie za %d minut.", - "Ten dokument wygaśnie za %d minut.", - "Ten dokument wygaśnie za %d minut.", - "Ten dokument wygaśnie za %d minut.", + "Ten dokument wygaśnie za %d minuty.", "Ten dokument wygaśnie za %d minut." ], "This document will expire in %d hours.": [ "Ten dokument wygaśnie za godzinę.", - "Ten dokument wygaśnie za %d godzin.", - "Ten dokument wygaśnie za %d godzin.", - "Ten dokument wygaśnie za %d godzin.", - "Ten dokument wygaśnie za %d godzin.", + "Ten dokument wygaśnie za %d godziny.", "Ten dokument wygaśnie za %d godzin." ], "This document will expire in %d days.": [ "Ten dokument wygaśnie za %d dzień.", - "Ten dokument wygaśnie za %d dni.", - "Ten dokument wygaśnie za %d dni.", - "Ten dokument wygaśnie za %d dni.", - "Ten dokument wygaśnie za %d dni.", "Ten dokument wygaśnie za %d dni." ], "This document will expire in %d months.": [ "Ten dokument wygaśnie za miesiąc.", - "Ten dokument wygaśnie za %d miesięcy.", - "Ten dokument wygaśnie za %d miesięcy.", - "Ten dokument wygaśnie za %d miesięcy.", - "Ten dokument wygaśnie za %d miesięcy.", + "Ten dokument wygaśnie za %d miesiące.", "Ten dokument wygaśnie za %d miesięcy." ], - "Please enter the password for this document:": "Wprowadź hasło dla tego dokumentu:", + "Please enter the password for this document:": "Podaj hasło do tego dokumentu:", "Could not decrypt data (Wrong key?)": "Nie udało się odszyfrować danych (zły klucz?)", - "Could not delete the document, it was not stored in burn after reading mode.": "Nie można usunąć dokumentu, nie została zapisana w trybie zniszczenia po przeczytaniu.", - "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "TYLKO DO TWOJEGO WGLĄDU. Nie zamykaj tego okna, ta wiadomość nie będzie mogła być wyświetlona ponownie.", - "Could not decrypt comment; Wrong key?": "Nie udało się odszyfrować komentarza; zły klucz?", + "Could not delete the document, it was not stored in burn after reading mode.": "Nie można usunąć dokumentu — nie był zapisany w trybie autodestrukcji po przeczytaniu.", + "FOR YOUR EYES ONLY. Don't close this window, this message can't be displayed again.": "TYLKO DO TWOJEGO WGLĄDU. Nie zamykaj tego okna — tej wiadomości nie będzie można ponownie wyświetlić.", + "Could not decrypt comment; Wrong key?": "Nie udało się odszyfrować komentarza (zły klucz?)", "Reply": "Odpowiedz", - "Anonymous": "Anonim", - "Avatar generated from IP address": "Anonimowy avatar (Vizhash z adresu IP)", + "Anonymous": "Anonimowy użytkownik", + "Avatar generated from IP address": "Awatar wygenerowany z adresu IP", "Add comment": "Dodaj komentarz", - "Optional nickname…": "Opcjonalny nick…", + "Optional nickname…": "Opcjonalny pseudonim…", "Post comment": "Wyślij komentarz", "Sending comment…": "Wysyłanie komentarza…", - "Comment posted.": "Wysłano komentarz.", + "Comment posted.": "Komentarz został dodany.", "Could not refresh display: %s": "Nie można odświeżyć widoku: %s", "unknown status": "nieznany status", "server error or not responding": "błąd serwera lub brak odpowiedzi", "Could not post comment: %s": "Nie udało się wysłać komentarza: %s", "Sending document…": "Wysyłanie dokumentu…", - "Your document is %s (Hit Ctrl+c to copy)": "Twój dokument to %s (wciśnij Ctrl+c aby skopiować)", - "Delete data": "Skasuj dane", + "Your document is %s (Użyj Ctrl+c, aby skopiować)": "Twój dokument: %s (Użyj Ctrl+c, aby skopiować)", + "Delete data": "Usuń dane", "Could not create document: %s": "Nie można utworzyć dokumentu: %s", - "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Nie można odszyfrować dokumentu: Brak klucza deszyfrującego w adresie URL (Czy użyto przekierowania lub skracacza adresów URL, który usuwa część adresu URL?)", + "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Nie można odszyfrować dokumentu — brakuje klucza deszyfrującego w adresie URL (czy użyto przekierowania lub skracacza adresów, który usuwa część linku?)", "B": "B", "kB": "kB", "MB": "MB", @@ -165,69 +123,69 @@ "ZB": "ZB", "YB": "YB", "Format": "Format", - "Plain Text": "Czysty tekst", - "Source Code": "Kod źródłowy", - "Markdown": "Znakowanie", + "Plain Text": "Tekst niesformatowany", + "Source Code": "Kod źródłowy (source code)", + "Markdown": "Markdown", "Download attachment": "Pobierz załącznik", "Cloned: '%s'": "Sklonowano: '%s'", - "The cloned file '%s' was attached to this document.": "Sklonowany plik '%s' był dołączony do tego dokumentu.", + "The cloned file '%s' was attached to this document.": "Sklonowany plik '%s' został dołączony do tego dokumentu.", "Attach a file": "Załącz plik", - "alternatively drag & drop a file or paste an image from the clipboard": "Alternatywnie przeciągnij i upuść plik albo wklej obraz ze schowka", - "File too large, to display a preview. Please download the attachment.": "Plik zbyt duży aby wyświetlić podgląd. Proszę pobrać załącznik.", + "alternatively drag & drop a file or paste an image from the clipboard": "Lub przeciągnij i upuść plik, albo wklej obraz ze schowka.", + "File too large, to display a preview. Please download the attachment.": "Plik jest zbyt duży, by wyświetlić podgląd. Pobierz załącznik.", "Remove attachment": "Usuń załącznik", - "Your browser does not support uploading encrypted files. Please use a newer browser.": "Twoja przeglądarka nie wspiera wysyłania zaszyfrowanych plików. Użyj nowszej przeglądarki.", + "Your browser does not support uploading encrypted files. Please use a newer browser.": "Twoja przeglądarka nie obsługuje wysyłania zaszyfrowanych plików. Użyj nowszej wersji przeglądarki.", "Invalid attachment.": "Nieprawidłowy załącznik.", "Options": "Opcje", "Shorten URL": "Skróć adres URL", - "Editor": "Edytować", + "Editor": "Edytor", "Preview": "Podgląd", - "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s wymaga zmiennej PATH zakończonej w \"%s\". Zaktualizuj zmienną PATH w index.php.", + "%s requires the PATH to end in a \"%s\". Please update the PATH in your index.php.": "%s wymaga, aby zmienna PATH kończyła się na \"%s\". Zaktualizuj PATH w pliku index.php.", "Decrypt": "Odszyfruj", "Enter password": "Wpisz hasło", - "Loading…": "Wczytywanie…", + "Loading…": "Ładowanie…", "Decrypting document…": "Odszyfrowywanie dokumentu…", "Preparing new document…": "Przygotowywanie nowego dokumentu…", - "In case this message never disappears please have a look at this FAQ for information to troubleshoot.": "W przypadku gdy ten komunikat nigdy nie znika, proszę spójrz na to FAQ aby rozwiązać problem (po angielsku).", - "+++ no document text +++": "+++ brak tekstu dokumentu +++", - "Could not get document data: %s": "Nie można uzyskać danych dokumentu: %s", + "In case this message never disappears please have a look at this FAQ for information to troubleshoot.": "Jeśli ten komunikat nie znika, zajrzyj do FAQ, aby znaleźć rozwiązanie problemu.", + "+++ no document text +++": "+++ brak treści dokumentu +++", + "Could not get document data: %s": "Nie można pobrać danych dokumentu: %s", "QR code": "Kod QR", - "This website is using an insecure HTTP connection! Please use it only for testing.": "Ta witryna używa niezabezpieczonego połączenia HTTP! Używaj jej wyłącznie do testowania.", - "For more information see this FAQ entry.": "Aby uzyskać więcej informacji, sprawdź to często zadawane pytanie.", - "Your browser may require an HTTPS connection to support the WebCrypto API. Try switching to HTTPS.": "Twoja przeglądarka może wymagać połączenia HTTPS, aby obsługiwać API WebCrypto. Spróbuj przełączyć się na HTTPS.", - "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Twoja przeglądarka nie obsługuje WebAssembly używanego do kompresji zlib. Możesz utworzyć nieskompresowane dokumenty, ale nie możesz odczytać skompresowanych.", + "This website is using an insecure HTTP connection! Please use it only for testing.": "Ta strona korzysta z niezabezpieczonego połączenia HTTP! Używaj jej tylko do testów.", + "For more information see this FAQ entry.": "Więcej informacji znajdziesz w tym wpisie FAQ.", + "Your browser may require an HTTPS connection to support the WebCrypto API. Try switching to HTTPS.": "Twoja przeglądarka może wymagać połączenia HTTPS, aby obsługiwać WebCrypto API. Spróbuj przełączyć się na HTTPS.", + "Your browser doesn't support WebAssembly, used for zlib compression. You can create uncompressed documents, but can't read compressed ones.": "Twoja przeglądarka nie obsługuje WebAssembly (używanego do kompresji zlib). Możesz tworzyć nieskompresowane dokumenty, ale nie odczytasz skompresowanych.", "waiting on user to provide a password": "oczekiwanie na podanie hasła przez użytkownika", - "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Błąd odszyfrowywania danych. Czy wprowadzono niepoprawne hasło? Spróbuj ponownie, używając przycisku na górze.", - "Retry": "Ponów", - "Showing raw text…": "Pokazywanie nieprzetworzonego tekstu…", + "Could not decrypt data. Did you enter a wrong password? Retry with the button at the top.": "Nie udało się odszyfrować danych. Czy podałeś błędne hasło? Spróbuj ponownie, używając przycisku u góry.", + "Retry": "Spróbuj ponownie", + "Showing raw text…": "Wyświetlanie surowego tekstu…", "Notice:": "Uwaga:", - "This link will expire after %s.": "Ten odnośnik wygaśnie po %s.", - "This link can only be accessed once, do not use back or refresh button in your browser.": "Tego odnośnika można użyć tylko jeden raz. Nie cofaj ani nie odświeżaj strony w przeglądarce.", - "Link:": "Odnośnik:", - "Recipient may become aware of your timezone, convert time to UTC?": "Odbiorca może uzyskać informację o twojej strefie czasowej. Zamienić czas na UTC?", + "This link will expire after %s.": "Ten link wygaśnie po %s.", + "This link can only be accessed once, do not use back or refresh button in your browser.": "Tego linku można użyć tylko raz — nie cofaj ani nie odświeżaj strony.", + "Link:": "Link:", + "Recipient may become aware of your timezone, convert time to UTC?": "Odbiorca może poznać Twoją strefę czasową. Czy chcesz zamienić czas na UTC?", "Use Current Timezone": "Użyj bieżącej strefy czasowej", "Convert To UTC": "Zamień na UTC", "Close": "Zamknij", "Encrypted note on %s": "Zaszyfrowana notatka na %s", - "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Naciśnij tej odnośnik, aby zobaczyć notatkę. Każda osoba z dostępem do tego adresu URL również może zobaczyć tę notatkę.", - "URL shortener may expose your decrypt key in URL.": "Skrócenie adresu URL może ujawnić Twój klucz odszyfrowujący w adresie URL.", - "URL shortener is enabled by default.": "URL shortener is enabled by default.", + "Visit this link to see the note. Giving the URL to anyone allows them to access the note, too.": "Odwiedź ten link, aby zobaczyć notatkę. Każdy, kto ma ten adres URL, również będzie mógł ją zobaczyć.", + "URL shortener may expose your decrypt key in URL.": "Skracacz adresów może ujawnić Twój klucz deszyfrujący w URL.", + "URL shortener is enabled by default.": "Skracacz adresów URL jest domyślnie włączony.", "Save document": "Zapisz dokument", - "Your IP is not authorized to create documents.": "Twój adres IP nie jest autoryzowany do tworzenia dokumentów.", - "Trying to shorten a URL that isn't pointing at our instance.": "Próba skrócenia adresu URL wskazującego na inną instancję.", - "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Błąd wywoływania YOURLS. Możliwy błąd konfiguracji, taki jak błędne lub brakujące \"apiurl\" lub \"signature\".", - "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Błąd przetwarzania odpowiedzi YOURLS.", - "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.", - "This secret message can only be displayed once. Would you like to see it now?": "Tę tajną wiadomość możesz zobaczyć tylko jeden raz. Czy chcesz to zrobić teraz?", + "Your IP is not authorized to create documents.": "Twój adres IP nie jest uprawniony do tworzenia dokumentów.", + "Trying to shorten a URL that isn't pointing at our instance.": "Próba skrócenia adresu URL, który nie wskazuje na nasz serwer.", + "Proxy error: Proxy URL is empty. This can be a configuration issue, like wrong or missing config keys.": "Błąd proxy: adres URL proxy jest pusty. Może to wynikać z błędnej konfiguracji (brak lub błędne klucze).", + "Proxy error: Error parsing proxy response. This can be a configuration issue, like wrong or missing config keys.": "Błąd proxy: problem z przetwarzaniem odpowiedzi. Sprawdź konfigurację (brakujące lub błędne klucze).", + "Proxy error: Bad response. This can be a configuration issue, like wrong or missing config keys or a temporary outage.": "Błąd proxy: nieprawidłowa odpowiedź. Możliwy problem z konfiguracją lub chwilowa awaria.", + "This secret message can only be displayed once. Would you like to see it now?": "Tę tajną wiadomość można wyświetlić tylko raz. Czy chcesz ją zobaczyć teraz?", "Yes, see it": "Tak, pokaż", - "Dark Mode": "Ciemny motyw", - "Error compressing document, due to missing WebAssembly support.": "Wystąpił błąd podczas kompresji dokumentu z powodu braku obsługi WebAssembly.", - "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Wystąpił błąd podczas dekompresji dokumentu. Twoja przeglądarka nie obsługuje WebAssembly. Użyj innej przeglądarki, aby wyświetlić ten dokument.", + "Dark Mode": "Tryb ciemny", + "Error compressing document, due to missing WebAssembly support.": "Błąd kompresji dokumentu z powodu braku obsługi WebAssembly.", + "Error decompressing document, your browser does not support WebAssembly. Please use another browser to view this document.": "Błąd dekompresji dokumentu — Twoja przeglądarka nie obsługuje WebAssembly. Użyj innej przeglądarki, aby go otworzyć.", "Start over": "Zacznij od nowa", - "Document copied to clipboard": "Dokument został skopiowany do schowka", - "To copy document press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "Aby skopiować dokument, naciśnij przycisk kopiowania lub użyj skrótu do schowka Ctrl+c/Cmd+c", + "Document copied to clipboard": "Dokument skopiowany do schowka", + "To copy document press on the copy button or use the clipboard shortcut Ctrl+c/Cmd+c": "Aby skopiować dokument, kliknij przycisk kopiowania lub użyj skrótu Ctrl+c/Cmd+c", "Copy link": "Kopiuj link", - "Link copied to clipboard": "Link został skopiowany do schowka", - "Document text": "Tekst dokumentu", - "Tabulator key serves as character (Hit Ctrl+m or Esc to toggle)": "Klawisz Tabulatora służy jako znak (przytrzymaj Ctrl+m lub Esc aby przełączać)", + "Link copied to clipboard": "Link skopiowany do schowka", + "Document text": "Treść dokumentu", + "Tabulator key serves as character (Hit Ctrl+m or Esc to toggle)": "Klawisz Tabulatora służy jako znak (użyj Ctrl+m lub Esc, aby przełączyć tryb)", "Theme": "Motyw" } From ca8ef80bab403b5efd684d3ab989481ab23fba0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Kami=C5=84ski?= Date: Sun, 5 Oct 2025 22:46:45 +0200 Subject: [PATCH 04/12] Fixed missing forms --- i18n/pl.json | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/i18n/pl.json b/i18n/pl.json index 7ae1be4b..dbf75b08 100644 --- a/i18n/pl.json +++ b/i18n/pl.json @@ -35,34 +35,57 @@ "%d seconds": [ "%d sekunda", "%d sekundy", + "%d sekund", + "%d sekund", + "%d sekund", "%d sekund" ], "%d minutes": [ "%d minuta", "%d minuty", + "%d minut", + "%d minut", + "%d minut", "%d minut" ], "%d hours": [ + "%d godzin", "%d godzina", - "%d godziny", + "%d godzin", + "%d godzin", + "%d godzin", "%d godzin" ], "%d days": [ "%d dzień", + "%d dni", + "%d dni", + "%d dni", + "%d dni", "%d dni" ], "%d weeks": [ "%d tydzień", + "%d tygodni", + "%d tygodni", + "%d tygodni", + "%d tygodni", "%d tygodni" ], "%d months": [ "%d miesiąc", "%d miesiące", + "%d miesięcy", + "%d miesięcy", + "%d miesięcy", "%d miesięcy" ], "%d years": [ "%d rok", "%d lata", + "%d lat", + "%d lat", + "%d lat", "%d lat" ], "Never": "Nigdy", @@ -109,7 +132,7 @@ "server error or not responding": "błąd serwera lub brak odpowiedzi", "Could not post comment: %s": "Nie udało się wysłać komentarza: %s", "Sending document…": "Wysyłanie dokumentu…", - "Your document is %s (Użyj Ctrl+c, aby skopiować)": "Twój dokument: %s (Użyj Ctrl+c, aby skopiować)", + "Your document is %s (Hit Ctrl+c to copy)": "Twój dokument: %s (Użyj Ctrl+c, aby skopiować)", "Delete data": "Usuń dane", "Could not create document: %s": "Nie można utworzyć dokumentu: %s", "Cannot decrypt document: Decryption key missing in URL (Did you use a redirector or an URL shortener which strips part of the URL?)": "Nie można odszyfrować dokumentu — brakuje klucza deszyfrującego w adresie URL (czy użyto przekierowania lub skracacza adresów, który usuwa część linku?)", From 6c70fde86b32423fc702a0990edaa07bbc4da8cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Kami=C5=84ski?= Date: Sun, 5 Oct 2025 22:51:45 +0200 Subject: [PATCH 05/12] Another fix ;) --- i18n/pl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/i18n/pl.json b/i18n/pl.json index dbf75b08..3f6b33ee 100644 --- a/i18n/pl.json +++ b/i18n/pl.json @@ -49,8 +49,8 @@ "%d minut" ], "%d hours": [ - "%d godzin", "%d godzina", + "%d godziny", "%d godzin", "%d godzin", "%d godzin", From 99324575c7a1c54875145f017b064fde2ec135ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Kami=C5=84ski?= Date: Sun, 5 Oct 2025 22:57:22 +0200 Subject: [PATCH 06/12] Hours fix --- i18n/pl.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/i18n/pl.json b/i18n/pl.json index 3f6b33ee..e6da811c 100644 --- a/i18n/pl.json +++ b/i18n/pl.json @@ -50,9 +50,9 @@ ], "%d hours": [ "%d godzina", - "%d godziny", - "%d godzin", + "%d godzina", "%d godzin", + "%d godzina", "%d godzin", "%d godzin" ], From 1f86981a00aba0f2cdd19bfbc61e001b1006add3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Kami=C5=84ski?= Date: Sun, 5 Oct 2025 23:01:56 +0200 Subject: [PATCH 07/12] Fix --- i18n/pl.json | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/i18n/pl.json b/i18n/pl.json index e6da811c..62ddaf43 100644 --- a/i18n/pl.json +++ b/i18n/pl.json @@ -51,18 +51,18 @@ "%d hours": [ "%d godzina", "%d godzina", - "%d godzin", - "%d godzina", - "%d godzin", - "%d godzin" + "%d godzinę", + "%d godzinę", + "%d godzinę", + "%d godzinę" ], "%d days": [ "%d dzień", - "%d dni", - "%d dni", - "%d dni", - "%d dni", - "%d dni" + "%d dzień", + "%d dzień", + "%d dzień", + "%d dzień", + "%d dzień" ], "%d weeks": [ "%d tydzień", From 9a5ddac5c431bf2b1813df64d53bb4de90cc4632 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Kami=C5=84ski?= Date: Sun, 5 Oct 2025 23:05:50 +0200 Subject: [PATCH 08/12] Changed forms --- i18n/pl.json | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/i18n/pl.json b/i18n/pl.json index 62ddaf43..91dc35ff 100644 --- a/i18n/pl.json +++ b/i18n/pl.json @@ -33,39 +33,39 @@ "Discussion": "Dyskusja", "Toggle navigation": "Przełącz nawigację", "%d seconds": [ - "%d sekunda", - "%d sekundy", + "%d sekund", + "%d sekund", "%d sekund", "%d sekund", "%d sekund", "%d sekund" ], "%d minutes": [ - "%d minuta", - "%d minuty", + "%d minut", + "%d minut", "%d minut", "%d minut", "%d minut", "%d minut" ], "%d hours": [ - "%d godzina", - "%d godzina", - "%d godzinę", - "%d godzinę", - "%d godzinę", - "%d godzinę" + "%d godzin", + "%d godzin", + "%d godzin", + "%d godzin", + "%d godzin", + "%d godzin" ], "%d days": [ - "%d dzień", - "%d dzień", - "%d dzień", - "%d dzień", - "%d dzień", - "%d dzień" + "%d dni", + "%d dni", + "%d dni", + "%d dni", + "%d dni", + "%d dni" ], "%d weeks": [ - "%d tydzień", + "%d tygodni", "%d tygodni", "%d tygodni", "%d tygodni", @@ -73,16 +73,16 @@ "%d tygodni" ], "%d months": [ - "%d miesiąc", - "%d miesiące", + "%d miesięcy", + "%d miesięcy", "%d miesięcy", "%d miesięcy", "%d miesięcy", "%d miesięcy" ], "%d years": [ - "%d rok", - "%d lata", + "%d lat", + "%d lat", "%d lat", "%d lat", "%d lat", From 6df08f3e6c50e60fe2fbf4a61296f41fffc20382 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Kami=C5=84ski?= Date: Sun, 5 Oct 2025 23:11:29 +0200 Subject: [PATCH 09/12] Fix errors in translation --- i18n/pl.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/i18n/pl.json b/i18n/pl.json index 91dc35ff..6249d9ef 100644 --- a/i18n/pl.json +++ b/i18n/pl.json @@ -33,7 +33,7 @@ "Discussion": "Dyskusja", "Toggle navigation": "Przełącz nawigację", "%d seconds": [ - "%d sekund", + "%d sekunda", "%d sekund", "%d sekund", "%d sekund", @@ -41,7 +41,7 @@ "%d sekund" ], "%d minutes": [ - "%d minut", + "%d minuta", "%d minut", "%d minut", "%d minut", @@ -49,7 +49,7 @@ "%d minut" ], "%d hours": [ - "%d godzin", + "%d godzina", "%d godzin", "%d godzin", "%d godzin", From d27f4fd2e42e77d47206fc99ad91bed1df462dc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Kami=C5=84ski?= Date: Sun, 5 Oct 2025 23:16:24 +0200 Subject: [PATCH 10/12] Corrected pl translations --- i18n/pl.json | 72 ++++++++++++++++++++++++++-------------------------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/i18n/pl.json b/i18n/pl.json index 6249d9ef..5815a7ac 100644 --- a/i18n/pl.json +++ b/i18n/pl.json @@ -32,13 +32,13 @@ "Password (recommended)": "Hasło (opcjonalnie, zalecane)", "Discussion": "Dyskusja", "Toggle navigation": "Przełącz nawigację", - "%d seconds": [ - "%d sekunda", - "%d sekund", - "%d sekund", - "%d sekund", - "%d sekund", - "%d sekund" + "%d seconds": [ + "%d second", + "%d second", + "%d second", + "%d second", + "%d second", + "%d second" ], "%d minutes": [ "%d minuta", @@ -50,43 +50,43 @@ ], "%d hours": [ "%d godzina", - "%d godzin", - "%d godzin", - "%d godzin", - "%d godzin", - "%d godzin" + "%d godzina", + "%d godzinę", + "%d godzinę", + "%d godzinę", + "%d godzinę" ], "%d days": [ - "%d dni", - "%d dni", - "%d dni", - "%d dni", - "%d dni", - "%d dni" + "%d dzień", + "%d dzień", + "%d dzień", + "%d dzień", + "%d dzień", + "%d dzień" ], "%d weeks": [ - "%d tygodni", - "%d tygodni", - "%d tygodni", - "%d tygodni", - "%d tygodni", - "%d tygodni" + "%d tydzień", + "%d tydzień", + "%d tydzień", + "%d tydzień", + "%d tydzień", + "%d tydzień" ], "%d months": [ - "%d miesięcy", - "%d miesięcy", - "%d miesięcy", - "%d miesięcy", - "%d miesięcy", - "%d miesięcy" + "%d miesiąc", + "%d miesiąc", + "%d miesiąc", + "%d miesiąc", + "%d miesiąc", + "%d miesiąc" ], "%d years": [ - "%d lat", - "%d lat", - "%d lat", - "%d lat", - "%d lat", - "%d lat" + "%d rok", + "%d rok", + "%d rok", + "%d rok", + "%d rok", + "%d rok" ], "Never": "Nigdy", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Uwaga: to usługa testowa — dane mogą zostać usunięte w dowolnym momencie. Nie nadużywaj jej, bo ucierpią kotki 🐱.", From 4cd1770c76aae3ef7a95e13011fdca1198dec250 Mon Sep 17 00:00:00 2001 From: El RIDO Date: Mon, 6 Oct 2025 11:40:28 +0200 Subject: [PATCH 11/12] fix indentation, tests & unify plural forms command used was: jq --indent 4 '(.. | select(type=="array")) |= . + [(.[-1:][] | sub("3rd";"4th")),(.[-1:][] | sub("3rd";"5th"))]' i18n/pl.json > /tmp/pl.json test fix & plural unification was done manually, also cross-checking with online translation services --- i18n/pl.json | 99 ++++++++++++++++++++++++++++++------------------ tst/I18nTest.php | 12 +++--- 2 files changed, 69 insertions(+), 42 deletions(-) diff --git a/i18n/pl.json b/i18n/pl.json index 5815a7ac..a4384613 100644 --- a/i18n/pl.json +++ b/i18n/pl.json @@ -9,9 +9,11 @@ "Please wait %d seconds between each post.": [ "Poczekaj %d sekundę przed kolejnym wklejeniem.", "Poczekaj %d sekundy przed kolejnym wklejeniem.", + "Poczekaj %d sekund przed kolejnym wklejeniem.", + "Poczekaj %d sekund przed kolejnym wklejeniem.", "Poczekaj %d sekund przed kolejnym wklejeniem." ], -"Document is limited to %s of encrypted data.": "Dokument jest ograniczony do %s zaszyfrowanych danych.", + "Document is limited to %s of encrypted data.": "Dokument jest ograniczony do %s zaszyfrowanych danych.", "Invalid data.": "Nieprawidłowe dane.", "You are unlucky. Try again.": "Miałeś pecha — spróbuj ponownie.", "Error saving comment. Sorry.": "Błąd podczas zapisywania komentarza.", @@ -32,16 +34,20 @@ "Password (recommended)": "Hasło (opcjonalnie, zalecane)", "Discussion": "Dyskusja", "Toggle navigation": "Przełącz nawigację", - "%d seconds": [ - "%d second", - "%d second", - "%d second", - "%d second", - "%d second", - "%d second" + "%d seconds": [ + "%d sekonda", + "%d sekondy", + "%d sekond", + "%d sekond", + "%d sekond", + "%d sekond", + "%d sekond", + "%d sekond" ], "%d minutes": [ "%d minuta", + "%d minuty", + "%d minut", "%d minut", "%d minut", "%d minut", @@ -50,68 +56,89 @@ ], "%d hours": [ "%d godzina", - "%d godzina", - "%d godzinę", - "%d godzinę", - "%d godzinę", - "%d godzinę" + "%d godziny", + "%d godzin", + "%d godzin", + "%d godzin", + "%d godzin", + "%d godzin", + "%d godzin" ], "%d days": [ "%d dzień", - "%d dzień", - "%d dzień", - "%d dzień", - "%d dzień", - "%d dzień" + "%d dni", + "%d dni", + "%d dni", + "%d dni", + "%d dni", + "%d dni", + "%d dni" ], "%d weeks": [ "%d tydzień", - "%d tydzień", - "%d tydzień", - "%d tydzień", - "%d tydzień", - "%d tydzień" + "%d tydgodnie", + "%d tydgodni", + "%d tydgodni", + "%d tydgodni", + "%d tydgodni", + "%d tydgodni", + "%d tydgodni" ], "%d months": [ "%d miesiąc", - "%d miesiąc", - "%d miesiąc", - "%d miesiąc", - "%d miesiąc", - "%d miesiąc" + "%d miesiące", + "%d miesiący", + "%d miesiący", + "%d miesiący", + "%d miesiący", + "%d miesiący", + "%d miesiący" ], "%d years": [ "%d rok", - "%d rok", - "%d rok", - "%d rok", - "%d rok", - "%d rok" + "%d lata", + "%d lat", + "%d lat", + "%d lat", + "%d lat", + "%d lat", + "%d lat" ], "Never": "Nigdy", "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service.": "Uwaga: to usługa testowa — dane mogą zostać usunięte w dowolnym momencie. Nie nadużywaj jej, bo ucierpią kotki 🐱.", "This document will expire in %d seconds.": [ - "Ten dokument wygaśnie za %d sekundę.", + "Ten dokument wygaśnie za sekundę.", "Ten dokument wygaśnie za %d sekundy.", + "Ten dokument wygaśnie za %d sekund.", + "Ten dokument wygaśnie za %d sekund.", "Ten dokument wygaśnie za %d sekund." ], "This document will expire in %d minutes.": [ - "Ten dokument wygaśnie za %d minutę.", + "Ten dokument wygaśnie za minutę.", "Ten dokument wygaśnie za %d minuty.", + "Ten dokument wygaśnie za %d minut.", + "Ten dokument wygaśnie za %d minut.", "Ten dokument wygaśnie za %d minut." ], "This document will expire in %d hours.": [ "Ten dokument wygaśnie za godzinę.", "Ten dokument wygaśnie za %d godziny.", + "Ten dokument wygaśnie za %d godzin.", + "Ten dokument wygaśnie za %d godzin.", "Ten dokument wygaśnie za %d godzin." ], "This document will expire in %d days.": [ - "Ten dokument wygaśnie za %d dzień.", + "Ten dokument wygaśnie za dzień.", + "Ten dokument wygaśnie za %d dni.", + "Ten dokument wygaśnie za %d dni.", + "Ten dokument wygaśnie za %d dni.", "Ten dokument wygaśnie za %d dni." ], "This document will expire in %d months.": [ "Ten dokument wygaśnie za miesiąc.", "Ten dokument wygaśnie za %d miesiące.", + "Ten dokument wygaśnie za %d miesięcy.", + "Ten dokument wygaśnie za %d miesięcy.", "Ten dokument wygaśnie za %d miesięcy." ], "Please enter the password for this document:": "Podaj hasło do tego dokumentu:", diff --git a/tst/I18nTest.php b/tst/I18nTest.php index af0acfb0..9e196103 100644 --- a/tst/I18nTest.php +++ b/tst/I18nTest.php @@ -114,13 +114,13 @@ class I18nTest extends TestCase I18n::loadTranslations(); $this->assertEquals('pl', I18n::getLanguage(), 'browser language pl'); $this->assertEquals('1 godzina', I18n::_('%d hours', 1), '1 hour in Polish'); - $this->assertEquals('2 godzina', I18n::_('%d hours', 2), '2 hours in Polish'); - $this->assertEquals('12 godzinę', I18n::_('%d hours', 12), '12 hours in Polish'); - $this->assertEquals('22 godzina', I18n::_('%d hours', 22), '22 hours in Polish'); - $this->assertEquals('1 minut', I18n::_('%d minutes', 1), '1 minute in Polish'); - $this->assertEquals('3 minut', I18n::_('%d minutes', 3), '3 minutes in Polish'); + $this->assertEquals('2 godziny', I18n::_('%d hours', 2), '2 hours in Polish'); + $this->assertEquals('12 godzin', I18n::_('%d hours', 12), '12 hours in Polish'); + $this->assertEquals('22 godziny', I18n::_('%d hours', 22), '22 hours in Polish'); + $this->assertEquals('1 minuta', I18n::_('%d minutes', 1), '1 minute in Polish'); + $this->assertEquals('3 minuty', I18n::_('%d minutes', 3), '3 minutes in Polish'); $this->assertEquals('13 minut', I18n::_('%d minutes', 13), '13 minutes in Polish'); - $this->assertEquals('23 minut', I18n::_('%d minutes', 23), '23 minutes in Polish'); + $this->assertEquals('23 minuty', I18n::_('%d minutes', 23), '23 minutes in Polish'); } public function testBrowserLanguageRuDetection() From 8c06cecf5625db0f7f4332abf4aa003c32103218 Mon Sep 17 00:00:00 2001 From: galindosarah Date: Sun, 5 Oct 2025 21:38:21 -0400 Subject: [PATCH 12/12] Added emailTemplateTest --- js/test/emailTemplateTest.js | 137 +++++++++++++++++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 js/test/emailTemplateTest.js diff --git a/js/test/emailTemplateTest.js b/js/test/emailTemplateTest.js new file mode 100644 index 00000000..ce56ab8f --- /dev/null +++ b/js/test/emailTemplateTest.js @@ -0,0 +1,137 @@ +'use strict'; +var common = require('../common'); +const assert = require('assert'); + +// DOM builder that mirrors bootstrap5.php navbar +function buildEmailDomNoShortUrl() { + $('body').html( + // TopNav expects initially hidden #emaillink BUTTON. + '' + + '' + ); +} + +// DOM builder that adds the shortener result block +function buildEmailDomWithShortUrl() { + buildEmailDomNoShortUrl(); + $('body').html( + // TopNav expectsinitially hidden #emaillink BUTTON. + '' + + '' + + '' + ); +} + + +function stubWinOpen($element) { + const win = $element[0].ownerDocument.defaultView; + + // Some helpers in privatebin.js expect a global document. + global.document = win.document; + + let openedUrl = null; + const origOpen = win.open; + + // Prefer simple assignment; if blocked, fall back to defineProperty. + try { + win.open = function (url) { + openedUrl = url; + return {}; + }; + } catch { + Object.defineProperty(win, 'open', { + value: function (url) { + openedUrl = url; + return {}; + }, + configurable: true, + writable: true + }); + } + + return { + getUrl: () => openedUrl, + restore: () => { try { win.open = origOpen; } catch {} }, + win + }; +} + + +// Extract and decode the body from a "mailto:?body=..." URL. +function extractMailtoBody(mailtoUrl) { + assert.ok(/^mailto:\?body=/.test(mailtoUrl), 'expected a mailto:?body= URL'); + return decodeURIComponent(mailtoUrl.replace(/^mailto:\?body=/, '')); +} + +describe('Email - mail body content (short URL vs. fallback)', function () { + before(function () { + cleanup(); // provided by common + }); + + it('Uses the short URL when #pasteurl is present and never includes "undefined"', function () { + buildEmailDomWithShortUrl(); // with #pastelink/#pasteurl + $.PrivateBin.TopNav.init(); + $.PrivateBin.TopNav.showEmailButton(0); + + const $emailBtn = $('#emaillink'); + assert.ok(!$emailBtn.hasClass('hidden'), '#emaillink should be visible after showEmailButton'); + + const { getUrl, restore } = stubWinOpen($emailBtn); + try { + $emailBtn.trigger('click'); + const openedUrl = getUrl(); + assert.ok(openedUrl, 'window.open should have been called'); + + const body = extractMailtoBody(openedUrl); + assert.ok(body.includes('https://short.example/xYz'), 'email body should include the short URL'); + assert.ok(!body.includes('undefined'), 'email body must not contain "undefined"'); + } finally { + restore(); + cleanup(); + } + }); + + it('Falls back to window.location.href when #pasteurl is absent and never includes "undefined"', function () { + buildEmailDomNoShortUrl(); // No #pasteurl + $.PrivateBin.TopNav.init(); + $.PrivateBin.TopNav.showEmailButton(0); + + const $emailBtn = $('#emaillink'); + assert.ok(!$emailBtn.hasClass('hidden'), '#emaillink should be visible after showEmailButton'); + + const { getUrl, restore, win } = stubWinOpen($emailBtn); + try { + $emailBtn.trigger('click'); + const openedUrl = getUrl(); + assert.ok(openedUrl, 'window.open should have been called'); + + const body = extractMailtoBody(openedUrl); + assert.ok(body.includes(win.location.href), 'email body should include the fallback page URL'); + assert.ok(!body.includes('undefined'), 'email body must not contain "undefined"'); + } finally { + restore(); + cleanup(); + } + }); +});